Repository navigation
build: unsigned macOS zip + Linux tar.gz in the rolling dev build (#215) - #673
Conversation
Slice B of the platform breakdown, in-repo piece. scripts/build-posix.sh assembles a self-contained bundle shaped like the Windows one - the Node runtime, the app sources with production node_modules, docs, and a nowplaying launcher that resolves the bundle from its own location - and archives it with a stable dev name (nowplaying-dev-linux-x64.tar.gz, nowplaying-dev-macos-arm64.zip). The launcher gets --version/--help checks plus a boot smoke: the bundle must answer on its settings route (the first-run route; /healthz only exists once configured) before any archive is written. Verified locally on Linux: build + smoke pass, and the tarball extracts to an arbitrary directory and serves Settings from there. macOS uses the same code path and is exercised by the macOS CI job once the rolling dev build picks the script up (workflow content goes through the arbiter's push). Sequencing: dev-build artifacts only - no stable release involvement - so this does not jump the issue's 'blocked behind the Windows v0.2.0 testable release' note.
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
Covers checksum verification, the unsigned-app quarantine step on macOS, portable-bundle layout, first-launch Settings flow, and the start-at-login toggle backed by the slice A adapters (LaunchAgent / XDG autostart), plus removal steps.
|
New head dc8c0ff: docs/testing-dev-build.md gains macOS (section 8) and |
|
CHANGES REQUESTED at exact head The macOS checklist also says I checked the two-commit PR diff, shell syntax ( |
Review rework on dc8c0ff: the hardcoded probe port 47839 let any stray listener pass for bundle readiness. The smoke is now scripts/smoke-bundle.sh: the OS assigns the probe port, and after a /settings answer the listener PID must be the spawned child (the launcher execs node, so the child PID is the server PID). Collision regression tests cover both directions with a decoy serving 47839: a dead bundle fails, a healthy bundle passes. Also: the macOS checklist's quarantine step is now recursive (xattr -dr) or clears the verified ZIP before extraction - unpacked files inherit the quarantine flag.
|
Rework, new head e55805a:
End-to-end: bash scripts/build-posix.sh linux passes with the new |
|
CHANGES STILL REQUESTED at exact head I found a packaging layout break introduced by this PR: The review checkout lacks |
…utes (#215) Review rework on e55805a: the Info modal handler reads ../NOTICE, ../README.md and ../LICENSE relative to app/src, but the build only copied them to the bundle root - every /api/info/* answered 503 in the packaged layout. They now copy into bundle/app too, mirroring the Windows bundle's layout. The smoke checks the routes: a full configured boot is fatal headless (the OS keychain read fails), so scripts/smoke-bundle.sh exercises the bundle's own settings route handler in-process after the child-verified server check, requiring 200 from /api/info/NOTICE, /api/info/README.md and /api/info/LICENSE. Regression test: a bundle missing the packaged files fails the smoke with the reviewer's exact 503.
|
Rework, new head 9299ce1: packaged Info-modal fix + route-level
End-to-end: bash scripts/build-posix.sh linux passes, tarball produced. |
|
APPROVE for this dev-build packaging slice at exact head I did not run the full archive builder in this checkout because |
What
Adds
scripts/build-posix.sh <macos|linux>, producing self-contained unsigned dev-build bundles:nowplaying-dev-macos-arm64.zipandnowplaying-dev-linux-x64.tar.gz, each containingruntime/nodeplusapp/{src,scripts,package.json,node_modules}, docs, and a portable launcher script - mirroring the shape of the existing Windows bundle (build-windows.ps1).--version/--helpplus an HTTP poll ofhttp://127.0.0.1:47839/settings(the Settings page is the reliable first-run probe;/healthz404s in first-run mode).Sequencing context (ship gate)
This is slice B of the #215 breakdown and is dev-build only: the artifacts land in the existing ROLLING
devprerelease alongside the Windows artifacts. No stable release workflow is touched. The companionbeta.ymlrestructure (per-platform build jobs uploading workflow artifacts + a single release job that assembles the combined prerelease and SHA256SUMS) is a workflow file and is being delivered separately for the arbiter's push, per lane rules.Verification
bash scripts/build-posix.sh linux: build + smoke pass locally on this container.