refactor progress

This commit is contained in:
Hampus Kraft
2026-02-17 12:22:36 +00:00
parent cb31608523
commit d5abd1a7e4
8257 changed files with 1190207 additions and 761040 deletions

View File

@@ -0,0 +1,51 @@
# Maintainer: Fluxer Contributors <developers@fluxer.app>
pkgname=fluxer-bin
pkgver=PLACEHOLDER_VERSION
pkgrel=1
pkgdesc='Instant messaging and VoIP application'
arch=('x86_64' 'aarch64')
url='https://fluxer.app'
license=('AGPL-3.0-or-later')
depends=('gtk3' 'libnotify' 'nss' 'libxss' 'libxtst' 'xdg-utils'
'at-spi2-core' 'util-linux-libs' 'libsecret' 'libappindicator-gtk3')
optdepends=('libpipewire: screen sharing via PipeWire')
provides=('fluxer')
conflicts=('fluxer')
options=('!strip' '!debug')
_filename_x86_64="fluxer-stable-${pkgver}-x86_64.tar.gz"
_filename_aarch64="fluxer-stable-${pkgver}-aarch64.tar.gz"
source_x86_64=("${_filename_x86_64}::https://api.fluxer.app/dl/desktop/stable/linux/x64/${pkgver}/tar_gz")
source_aarch64=("${_filename_aarch64}::https://api.fluxer.app/dl/desktop/stable/linux/arm64/${pkgver}/tar_gz")
sha256sums_x86_64=('PLACEHOLDER_SHA256_X64')
sha256sums_aarch64=('PLACEHOLDER_SHA256_ARM64')
package() {
install -d "${pkgdir}/opt/fluxer"
cp -r "${srcdir}/"* "${pkgdir}/opt/fluxer/"
chmod +x "${pkgdir}/opt/fluxer/fluxer"
install -d "${pkgdir}/usr/bin"
ln -s /opt/fluxer/fluxer "${pkgdir}/usr/bin/fluxer"
install -Dm644 /dev/stdin "${pkgdir}/usr/share/applications/fluxer.desktop" <<EOF
[Desktop Entry]
Name=Fluxer
Comment=Instant messaging and VoIP application
Exec=/opt/fluxer/fluxer %U
Icon=fluxer
Type=Application
Categories=Network;InstantMessaging;
StartupWMClass=fluxer
MimeType=x-scheme-handler/fluxer;
Terminal=false
EOF
for size in 16 32 48 64 128 256 512; do
if [ -f "${srcdir}/resources/icons/${size}x${size}.png" ]; then
install -Dm644 "${srcdir}/resources/icons/${size}x${size}.png" \
"${pkgdir}/usr/share/icons/hicolor/${size}x${size}/apps/fluxer.png"
fi
done
}

View File

@@ -0,0 +1,24 @@
# Fluxer AUR package
PKGBUILD for the `fluxer-bin` AUR binary package. This installs pre-built binaries rather than building from source, since Electron apps are impractical to compile within the AUR build system.
## Placeholders
The `pkgver` and `sha256sums` fields are set to placeholder values. Update them before publishing:
- Run `updpkgsums` to fetch and fill checksums automatically.
- Alternatively, query the latest version from the API and update manually.
## Testing locally
```bash
makepkg -si
```
## Fetching the latest version
```bash
curl -s https://api.fluxer.app/dl/desktop/stable/linux/x64/latest | jq
```
This returns a JSON object containing `version`, `pub_date`, and `files` with download URLs and SHA256 checksums for each format.

View File

@@ -0,0 +1,48 @@
# Fluxer Flatpak packaging
These files are for submitting Fluxer to [Flathub](https://flathub.org), the centralised Flatpak application repository.
## Files
- **`app.fluxer.json`** -- Flatpak manifest defining the build, runtime, permissions, and sources.
- **`app.fluxer.metainfo.xml`** -- AppStream metadata for the app store listing (description, categories, content rating, etc.).
- **`app.fluxer.desktop`** -- XDG desktop entry so the app appears in desktop launchers.
- **`icon-256.png`** -- Application icon (256x256). This file must be extracted from the build resources or provided separately; it is not checked in.
## Placeholder SHA256 hashes
The `sha256` values in `app.fluxer.json` are set to `PLACEHOLDER_SHA256_X64` and `PLACEHOLDER_SHA256_ARM64`. These are updated automatically by [flatpak-external-data-checker](https://github.com/nickvdp/flatpak-external-data-checker) via the `x-checker-data` configuration on each source. When preparing a manual build, replace them with the actual SHA256 checksums of the downloaded tar.gz archives.
## Icon
The `icon-256.png` file needs to be provided before building. You can extract it from the Electron build resources:
```sh
cp ../../build_resources/icons/256x256.png icon-256.png
```
Or generate it from the source SVG/PNG in the build resources directory.
## Testing locally
Install the required runtime and base app if you haven't already:
```sh
flatpak install flathub org.freedesktop.Platform//24.08 org.freedesktop.Sdk//24.08 org.electronjs.Electron2.BaseApp//24.08
```
Then build and install:
```sh
flatpak-builder --user --install build-dir app.fluxer.json
```
Run the app:
```sh
flatpak run app.fluxer
```
## Flathub submission
To submit to Flathub, fork the [flathub/flathub](https://github.com/flathub/flathub) repository and open a pull request adding `app.fluxer.json` along with the supporting files. Refer to the [Flathub submission guide](https://docs.flathub.org/docs/for-app-authors/submission/) for current requirements.

View File

@@ -0,0 +1,10 @@
[Desktop Entry]
Name=Fluxer
Comment=Instant messaging and VoIP application
Exec=fluxer %U
Icon=app.fluxer
Type=Application
Categories=Network;InstantMessaging;
StartupWMClass=fluxer
MimeType=x-scheme-handler/fluxer;
Terminal=false

View File

@@ -0,0 +1,78 @@
{
"id": "app.fluxer",
"runtime": "org.freedesktop.Platform",
"runtime-version": "24.08",
"sdk": "org.freedesktop.Sdk",
"base": "org.electronjs.Electron2.BaseApp",
"base-version": "24.08",
"command": "fluxer",
"separate-locales": false,
"finish-args": [
"--share=ipc",
"--share=network",
"--socket=x11",
"--socket=wayland",
"--socket=pulseaudio",
"--device=all",
"--talk-name=org.freedesktop.Notifications",
"--talk-name=org.kde.StatusNotifierWatcher",
"--talk-name=org.freedesktop.secrets",
"--filesystem=xdg-run/pipewire-0",
"--env=XCURSOR_PATH=/run/host/user-share/icons:/run/host/share/icons"
],
"modules": [
{
"name": "fluxer",
"buildsystem": "simple",
"build-commands": [
"install -d /app/lib/fluxer",
"cp -r ./* /app/lib/fluxer/",
"chmod +x /app/lib/fluxer/fluxer",
"install -Dm644 /app/lib/fluxer/resources/app.asar.unpacked/node_modules/electron/dist/chrome-sandbox /app/lib/fluxer/chrome-sandbox || true",
"install -d /app/bin",
"ln -s /app/lib/fluxer/fluxer /app/bin/fluxer",
"install -Dm644 app.fluxer.metainfo.xml /app/share/metainfo/app.fluxer.metainfo.xml",
"install -Dm644 app.fluxer.desktop /app/share/applications/app.fluxer.desktop",
"install -Dm644 icon-256.png /app/share/icons/hicolor/256x256/apps/app.fluxer.png"
],
"sources": [
{
"type": "archive",
"only-arches": ["x86_64"],
"url": "https://api.fluxer.app/dl/desktop/stable/linux/x64/latest/tar_gz",
"sha256": "PLACEHOLDER_SHA256_X64",
"x-checker-data": {
"type": "json",
"url": "https://api.fluxer.app/dl/desktop/stable/linux/x64/latest",
"version-query": ".version",
"url-query": ".files.tar_gz.url"
}
},
{
"type": "archive",
"only-arches": ["aarch64"],
"url": "https://api.fluxer.app/dl/desktop/stable/linux/arm64/latest/tar_gz",
"sha256": "PLACEHOLDER_SHA256_ARM64",
"x-checker-data": {
"type": "json",
"url": "https://api.fluxer.app/dl/desktop/stable/linux/arm64/latest",
"version-query": ".version",
"url-query": ".files.tar_gz.url"
}
},
{
"type": "file",
"path": "app.fluxer.metainfo.xml"
},
{
"type": "file",
"path": "app.fluxer.desktop"
},
{
"type": "file",
"path": "icon-256.png"
}
]
}
]
}

View File

@@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8"?>
<component type="desktop-application">
<id>app.fluxer</id>
<name>Fluxer</name>
<summary>Instant messaging and VoIP application</summary>
<metadata_license>CC0-1.0</metadata_license>
<project_license>AGPL-3.0-or-later</project_license>
<description>
<p>Fluxer is a free and open-source instant messaging and voice-over-IP application. It provides text chat, voice calls, video calls, and screen sharing in a modern interface.</p>
<p>Features include:</p>
<ul>
<li>Text messaging with rich formatting and media support</li>
<li>Voice and video calls</li>
<li>Screen sharing</li>
<li>Communities with channels</li>
<li>Direct messages and group chats</li>
<li>Custom emoji and reactions</li>
</ul>
</description>
<url type="homepage">https://fluxer.app</url>
<url type="bugtracker">https://github.com/fluxerapp/fluxer/issues</url>
<url type="help">https://fluxer.app/help</url>
<launchable type="desktop-id">app.fluxer.desktop</launchable>
<categories>
<category>Network</category>
<category>InstantMessaging</category>
</categories>
<provides>
<binary>fluxer</binary>
</provides>
<content_rating type="oars-1.1">
<content_attribute id="social-chat">intense</content_attribute>
<content_attribute id="social-audio">intense</content_attribute>
<content_attribute id="social-contacts">intense</content_attribute>
<content_attribute id="social-info">moderate</content_attribute>
</content_rating>
<supports>
<control>pointing</control>
<control>keyboard</control>
</supports>
</component>

View File

@@ -0,0 +1,25 @@
# Fluxer Homebrew cask
Homebrew cask definition for installing Fluxer on macOS.
## Placeholders
The `version` and `sha256` fields are set to placeholder values. Update them before publishing or submitting to a tap.
## Livecheck
The cask includes a `livecheck` block that queries the Fluxer download API for the latest stable version. Homebrew's automated tooling uses this to detect new releases.
## Testing locally
```bash
brew install --cask ./fluxer.rb
```
## Fetching the latest version
```bash
curl -s https://api.fluxer.app/dl/desktop/stable/darwin/arm64/latest | jq
```
This returns a JSON object containing `version`, `pub_date`, and `files` with download URLs and SHA256 checksums for each format.

View File

@@ -0,0 +1,37 @@
cask "fluxer" do
arch arm: "arm64", intel: "x64"
version "PLACEHOLDER_VERSION"
on_arm do
sha256 "PLACEHOLDER_SHA256_ARM64"
end
on_intel do
sha256 "PLACEHOLDER_SHA256_X64"
end
url "https://api.fluxer.app/dl/desktop/stable/darwin/#{arch}/#{version}/dmg"
name "Fluxer"
desc "Instant messaging and VoIP application"
homepage "https://fluxer.app"
livecheck do
url "https://api.fluxer.app/dl/desktop/stable/darwin/arm64/latest"
strategy :json do |json|
json["version"]
end
end
auto_updates true
depends_on macos: ">= :catalina"
app "Fluxer.app"
zap trash: [
"~/Library/Application Support/Fluxer",
"~/Library/Caches/app.fluxer",
"~/Library/Caches/app.fluxer.ShipIt",
"~/Library/Preferences/app.fluxer.plist",
"~/Library/Saved Application State/app.fluxer.savedState",
]
end

View File

@@ -0,0 +1,19 @@
PackageIdentifier: Fluxer.Fluxer
PackageVersion: PLACEHOLDER_VERSION
MinimumOSVersion: 10.0.17763.0
InstallerType: nullsoft
Scope: user
InstallModes:
- interactive
- silent
- silentWithProgress
UpgradeBehavior: install
Installers:
- Architecture: x64
InstallerUrl: https://api.fluxer.app/dl/desktop/stable/win32/x64/PLACEHOLDER_VERSION/setup
InstallerSha256: PLACEHOLDER_SHA256_X64
- Architecture: arm64
InstallerUrl: https://api.fluxer.app/dl/desktop/stable/win32/arm64/PLACEHOLDER_VERSION/setup
InstallerSha256: PLACEHOLDER_SHA256_ARM64
ManifestType: installer
ManifestVersion: 1.6.0

View File

@@ -0,0 +1,22 @@
PackageIdentifier: Fluxer.Fluxer
PackageVersion: PLACEHOLDER_VERSION
PackageLocale: en-US
Publisher: Fluxer Contributors
PublisherUrl: https://fluxer.app
PublisherSupportUrl: https://github.com/fluxerapp/fluxer/issues
PackageName: Fluxer
PackageUrl: https://fluxer.app
License: AGPL-3.0-or-later
LicenseUrl: https://github.com/fluxerapp/fluxer/blob/main/LICENCE
ShortDescription: Instant messaging and VoIP application
Description: Fluxer is a free and open-source instant messaging and voice-over-IP application. It provides text chat, voice calls, video calls, and screen sharing in a modern, privacy-respecting interface.
Tags:
- chat
- messaging
- voip
- voice
- video
- communication
- open-source
ManifestType: defaultLocale
ManifestVersion: 1.6.0

View File

@@ -0,0 +1,5 @@
PackageIdentifier: Fluxer.Fluxer
PackageVersion: PLACEHOLDER_VERSION
DefaultLocale: en-US
ManifestType: version
ManifestVersion: 1.6.0

View File

@@ -0,0 +1,33 @@
# Fluxer Winget manifest
Windows Package Manager (winget) manifest for installing Fluxer on Windows.
## Placeholders
The `PackageVersion` and `InstallerSha256` fields are set to placeholder values across all three manifest files. Update them before submitting to the winget-pkgs repository.
## Manifest files
- `Fluxer.Fluxer.yaml` -- version manifest (required)
- `Fluxer.Fluxer.installer.yaml` -- installer details for x64 and arm64
- `Fluxer.Fluxer.locale.en-US.yaml` -- default locale metadata
## Validating
```bash
winget validate --manifest .
```
## Testing locally
```bash
winget install --manifest .
```
## Fetching the latest version
```bash
curl -s https://api.fluxer.app/dl/desktop/stable/win32/x64/latest | jq
```
This returns a JSON object containing `version`, `pub_date`, and `files` with download URLs and SHA256 checksums for each format.