mirror of
https://github.com/nimbold/Firelink.git
synced 2026-07-26 12:08:27 +00:00
f603b74a99
Add target-aware engine provisioning, platform package configs, and CI/release verification for macOS arm64, Windows x64, and Linux AppImage.
6.7 KiB
6.7 KiB
Firelink Cross-Platform Release Checklist
Audit date: 2026-06-23
Targets:
- macOS arm64
- Windows x64
- Linux x64 AppImage
Current status
| Target | Implementation | Validation |
|---|---|---|
| macOS arm64 | Complete | Native build, packaged-engine verification, and packaged launch smoke passed |
| Windows x64 | Complete | Payload provision/static verification passed; native CI and clean-machine QA pending |
| Linux x64 AppImage | Complete | Payload provision/static verification passed; native CI and desktop-matrix QA pending |
Windows/Linux publication remains blocked until native GitHub Actions and clean-machine QA pass. macOS distribution is intentionally unsigned and unnotarized because no Apple Developer account is planned.
Implemented foundations
- Central target triple, executable suffix, trusted system
PATH, engine naming, and path-comparison helpers. - Target-aware engine resolver for development and packaged resources.
- Absolute yt-dlp downloader/tool paths. Unix symlink staging removed.
- Official PyInstaller onedir yt-dlp payloads retained for every target.
- Checksum-pinned source archives, payload manifests, target-only staging, and packaged-resource verification.
- macOS Keychain, Windows Credential Manager, and Linux Secret Service keyring backends.
- Session-only browser pairing fallback when native credential storage is unavailable.
- OS standard directories plus synchronously persisted user-approved download roots.
- Windows reserved filename sanitization and platform-correct duplicate path comparison.
- Platform-specific Tauri window and bundle configuration.
- Native CI matrix and release jobs for unsigned macOS DMG, unsigned Windows NSIS, and Linux AppImage.
- Linux deep-link registration without native messaging.
- Platform-aware scheduler permissions, tray/menu labels, dock badge, notifications, proxy behavior, and sleep prevention.
- Cancellable delayed post-queue system actions with active-transfer recheck.
- Bounded local logging enabled by default, secret/home-path redaction, and safe export naming.
- Third-party notices and engine provenance locks included in packages.
Engine payloads
Required names:
macOS arm64
aria2c-aarch64-apple-darwin
yt-dlp-aarch64-apple-darwin
ffmpeg-aarch64-apple-darwin
deno-aarch64-apple-darwin
Windows x64
aria2c-x86_64-pc-windows-msvc.exe
yt-dlp-x86_64-pc-windows-msvc.exe
ffmpeg-x86_64-pc-windows-msvc.exe
deno-x86_64-pc-windows-msvc.exe
Linux x64
aria2c-x86_64-unknown-linux-gnu
yt-dlp-x86_64-unknown-linux-gnu
ffmpeg-x86_64-unknown-linux-gnu
deno-x86_64-unknown-linux-gnu
Supply-chain files:
engines.lock.json: committed macOS payload hashes.engine-sources.lock.json: Windows/Linux archive URLs and hashes.scripts/provision-engines.js: download, checksum, extract, normalize, and manifest.scripts/stage-engines.js: verify and stage one target.scripts/verify-binaries.js: architecture, runtime layout, linkage, version, startup, and aria2 RPC checks.
yt-dlp must remain launcher plus adjacent _internal. Onefile builds are rejected. Warm startup target remains below eight seconds; current macOS warm --version measured about 0.23 seconds.
Filesystem and permissions
- Download authorization uses canonical paths and approved roots; no hardcoded
/Volumes. - Folder-dialog selections are approved synchronously in backend before enqueue, avoiding settings-persistence races.
- Open, reveal, replace, and delete operations remain constrained to Firelink-owned paths.
~, Windows separators, missing leaf components, symlinks, and case rules are handled per platform.- Scheduler automation permission controls appear only on macOS. Windows/Linux show honest system-policy behavior.
- Sleep prevention uses platform backend behavior and surfaces errors.
- Browser pairing survives credential-store failure only for current session and reports that state.
Desktop integration
- macOS: dock badge, menu-bar wording, transparent sidebar window, unsigned/unnotarized release.
- Windows: system tray wording, Mica window config, NSIS installer, SmartScreen warning expected while unsigned.
- Linux: system tray wording, opaque decorated window, AppImage, runtime deep-link registration.
- Notifications request permission and surface denial/errors. Sound names are platform-specific where verified.
- Post-queue sleep/shutdown/restart waits ten seconds, can be cancelled, and aborts if transfers resume.
Logging and privacy
- Logging starts enabled and rotates at 10 MB with three retained files.
- Authorization, cookies, signed URL queries, tokens, and home paths are redacted.
- Export avoids exposing source log directory paths.
- Logs remain local unless user explicitly exports them.
Browser integration
- Existing authenticated loopback HTTP integration remains.
- Responses identify Firelink through
X-Firelink-Server. - Pairing tokens use native credential storage where available.
- No native-messaging dependency is introduced.
Validation completed
- Frontend: 31 tests passed.
- Rust: 82 unit tests passed, 1 network-dependent test ignored.
- Download engine: 5 integration tests passed.
- Queue manager: 17 integration tests passed.
- TypeScript/Vite production build passed.
- Rust/TypeScript binding generation passed.
- Windows and Linux payload provisioning plus static architecture/runtime-layout verification passed.
- macOS target staging, engine runtime/RPC verification, release
.appbuild, packaged-resource verification, notice layout, and outside-repository launch smoke passed. - Workflow YAML parsing and
git diff --checkpassed.
Native QA still required
Windows x64
- Run CI/release jobs on
windows-latest. - Install NSIS output on clean Windows 11 x64.
- Verify SmartScreen flow, tray, notifications, sleep prevention, file dialogs, path case behavior, Credential Manager persistence, browser handoff, media download, pause/resume, replace/delete, scheduler, and uninstall.
Linux x64
- Run CI/release jobs on Ubuntu 22.04.
- Launch extracted AppImage under X11 and Wayland desktops.
- Verify Secret Service present and absent behavior, tray support variance, notifications, sleep inhibition, file dialogs, deep links, browser handoff, media download, pause/resume, replace/delete, scheduler, and AppImage portability.
macOS arm64
- Test downloaded unsigned artifact on a clean machine.
- Confirm documented Finder/Privacy & Security approval flow.
- Verify first-launch unsigned-engine delay, notifications, menu bar, sleep prevention, scheduler automation permission, browser handoff, and media download.
Release decision
Implementation phase is complete. Release certification is not complete until native Windows/Linux workflows and clean-machine QA pass. Failures found there must be fixed at root before publication.