Files
vdm/docs/07-packaging.md
T
samiandClaude Opus 5 8bb683b09d scaffold: project structure, wire contract, roadmap and agent briefs
Lays out Velox Download Manager (IDM-class download manager for Ubuntu
26.04) as a monorepo ready for parallel lane development. No implementation
code by design.

- docs/: architecture, roadmap M0-M7, IDM-parity GUI spec, engine design,
  Firefox extension spec, risks/spikes, packaging
- contracts/: wire-contract skeleton (JSON Schema + fixture templates) —
  the single synchronization point between lanes
- docs/agents/: one brief per lane (PROTO, CORE, DAEMON, GUI, EXT, PKG/QA)
  with owned directories, build order and definition of done
- CLAUDE.md: rules of engagement — lane ownership, layering, non-negotiables
- CMake scaffolding with dev/tsan/release/ci presets

Two environment findings shape the design: Firefox here is the Mozilla snap
(native-messaging risk, so the extension carries a loopback-WebSocket
fallback), and Wayland forbids passive clipboard monitoring (so clipboard
capture is explicit-action-first).

Co-Authored-By: Claude Opus 5 <[email protected]>
2026-09-09 18:21:11 +04:00

2.5 KiB

07 — Packaging & install layout

Owner: lane PKG/QA. Target: Ubuntu 26.04 LTS.

Install layout (.deb)

/usr/bin/veloxd
/usr/bin/velox-gui
/usr/bin/velox                       # CLI
/usr/libexec/velox/velox-nmhost      # native messaging host
/usr/lib/x86_64-linux-gnu/libveloxcore.so.1
/usr/share/applications/velox.desktop
/usr/share/icons/hicolor/*/apps/velox.png
/usr/share/man/man1/velox.1.gz
/usr/lib/systemd/user/velox.service
/usr/lib/systemd/user/velox.socket   # socket activation
/usr/lib/mozilla/native-messaging-hosts/com.velox.host.json
/etc/xdg/autostart/velox-gui.desktop # optional, off by default

postinst additionally drops per-user native-messaging manifests for the packaging formats that need them, and detects whether Firefox is a snap — if so it prints (and the GUI's first-run wizard shows) a one-line note that the extension will pair over loopback.

Package matrix

Format Priority Notes
.deb via PPA Primary The only format where native messaging, systemd user units and Secret Service all behave predictably
Flatpak Secondary The sandbox changes native messaging again; test explicitly, don't assume. Needs --filesystem=xdg-download and a portal-based folder picker
AppImage Optional Convenient for testing; if it bundles Qt, honour LGPLv3 relink terms (docs/06 R5)
Snap Not planned Confinement fights both native messaging and arbitrary download destinations. Revisit only if there's demand

Firefox extension distribution

Signed XPI on addons.mozilla.org. Ship the source with a reproducible build script (AMO requires it for minified/bundled submissions). The .deb does not bundle the XPI — it links to AMO from the first-run wizard, so extension updates flow through Firefox's own update channel rather than through apt.

Release checklist

  • lintian clean
  • Fresh 26.04 VM: install → install extension → M2 vertical slice passes with snap Firefox
  • Upgrade from N-1: DB migrates, in-flight .veloxpart files still resume
  • Uninstall: manifests, units and sockets removed; user data untouched unless purged
  • systemctl --user units enabled and socket-activation verified from cold boot
  • Protocol VERSION matches between the shipped daemon and the shipped extension, and a deliberate mismatch produces the "Velox needs updating" message rather than a hang
  • Licence audit: Qt (LGPLv3, dynamic), libcurl, SQLite, ffmpeg, icon set