Skip to content

v4.0.0: the app-id the Flathub submission will carry

Choose a tag to compare

@VirInvictus VirInvictus released this 15 Sep 00:30
· 29 commits to main since this release

v4.0.0: the app-id the Flathub submission will carry (2026-09-14)

The decided-but-never-executed identity change lands together with the packaging fix that unblocks the submission it was decided for. Both verify end to end on real runs, not inspection. 226 tests; clippy -D warnings clean.

  • The application id is now io.github.virinvictus.Viaduct (decision 64, which v3.8.0 shipped without executing). All fifteen sites move together: the desktop file, metainfo, gschema (id and path), D-Bus service template, Flatpak manifest, meson's application_id, the four hicolor icon files, and every code literal. preferences.rs's constant is renamed SCHEMA_ID to APP_ID and the GTK application_id, tray id and icon name, and preferences schema lookups all route through it, so the next identity change is a one-line edit. The Wayland app_id (window class) was verified live on a throwaway profile. Upgrade note: the GSettings path moved, so preferences set under the old id are orphaned; carry them over once with dconf dump /org/virinvictus/Viaduct/ | dconf load /io/github/virinvictus/Viaduct/ (then dconf reset -r /org/virinvictus/Viaduct/), and update any Hyprland windowrulev2 matching the old class.
  • The Flatpak builds offline (the Flathub blocker no prior audit had seen). The manifest declared --share=network and let cargo fetch every crate plus the vir-gtk git dependency at build time; Flathub builds have no network, so the submission could never have built. The Atrium pattern ports over whole: scripts/flatpak-cargo-generator.py vendored, data/cargo-sources.json generated from Cargo.lock (425 crate archives plus the vir-gtk checkout at the locked rev), CARGO_NET_OFFLINE=true, and the network build-arg gone. One deliberate divergence from the audit's suggestion: pinning the vir-gtk rev in Cargo.toml rewrites the dep URL to the ?rev= form, which no longer matches the vendored-source replacement and kills the offline build (the first attempt failed exactly that way), so the lockfile plus a new CI freshness guard is the deliberate-bump mechanism, the shape Atrium already ships. Verified end to end: a full flatpak-builder download, build, and export completes with no sandbox network.
  • CI hardening: the container pins fedora:43 instead of fedora:latest, actions/checkout and rust-cache pin their major tags by SHA, and the job gains a concurrency group and a 30-minute timeout.
  • Screenshot: docs/screenshots/main-sepia.png retaken on the current build (the old capture predated the de-adwaita redesign; its caption described chrome that no longer exists). The metainfo caption matches. Force-light rendering trouble observed while staging light variants is recorded in the Phase 20f hands-on pass, not patched blind.