mirror of
https://github.com/nimbold/Firelink.git
synced 2026-08-06 17:38:06 +00:00
f603b74a99
Add target-aware engine provisioning, platform package configs, and CI/release verification for macOS arm64, Windows x64, and Linux AppImage.
141 lines
6.7 KiB
Markdown
141 lines
6.7 KiB
Markdown
# 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:
|
|
|
|
```text
|
|
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 `.app` build, packaged-resource verification, notice layout, and outside-repository launch smoke passed.
|
|
- Workflow YAML parsing and `git diff --check` passed.
|
|
|
|
## 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.
|