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]>
52 lines
2.5 KiB
Markdown
52 lines
2.5 KiB
Markdown
# 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
|