Summary
Triggering an update from the PWA appears to do nothing on macOS. The API accepts the request, but the detached updater exits before handing off to the new version. Running collie update interactively on the host succeeds.
Environment
- macOS arm64
- Updating from Collie 1.11.0 to 1.12.1
- Collie running through its LaunchAgent
Observed behavior
- Press the update button in the PWA.
- The request returns successfully.
- No update progress or failure appears in the PWA.
- Collie remains on the old version.
- Running
collie update in a host shell completes the update.
Three PWA attempts were accepted. Each staging log ended at:
checking that 1.12.1 runs here
No LaunchAgent restart followed those attempts.
At the same timestamps, macOS AMFI/Gatekeeper logged that the downloaded candidate was ad-hoc signed or had an unknown certificate chain. spctl --assess --type execute also rejected the candidate.
The later interactive update reached the service handoff and successfully restarted Collie.
Likely cause
The detached updater fails while smoke-testing the freshly downloaded macOS binary. The release binary is ad-hoc signed and not notarized, and its execution behavior differs between the LaunchAgent/background context and an interactive shell.
This attribution is high confidence, but the exact subprocess failure cannot be recovered because the initial detached updater discards stdout and stderr.
Additional issue: failure is invisible
POST /api/update returns 202 once the updater process is spawned. The process is detached with stdout and stderr ignored. If it exits before creating a run record, the PWA receives no durable error and returns to an idle state.
Expected behavior
- A PWA-triggered update should complete under the same conditions as
collie update.
- If the updater exits early, its error should be retained and displayed in the PWA.
- The API should not report a successfully started update until a run record or equivalent acknowledgement exists.
Suggested fixes
- Sign and notarize macOS release binaries.
- Persist early detached-updater failures.
- Require an updater acknowledgement before returning a successful start response.
The separate amber path-link doctor warning did not block these requests and does not appear to be the cause.
Summary
Triggering an update from the PWA appears to do nothing on macOS. The API accepts the request, but the detached updater exits before handing off to the new version. Running
collie updateinteractively on the host succeeds.Environment
Observed behavior
collie updatein a host shell completes the update.Three PWA attempts were accepted. Each staging log ended at:
No LaunchAgent restart followed those attempts.
At the same timestamps, macOS AMFI/Gatekeeper logged that the downloaded candidate was ad-hoc signed or had an unknown certificate chain.
spctl --assess --type executealso rejected the candidate.The later interactive update reached the service handoff and successfully restarted Collie.
Likely cause
The detached updater fails while smoke-testing the freshly downloaded macOS binary. The release binary is ad-hoc signed and not notarized, and its execution behavior differs between the LaunchAgent/background context and an interactive shell.
This attribution is high confidence, but the exact subprocess failure cannot be recovered because the initial detached updater discards stdout and stderr.
Additional issue: failure is invisible
POST /api/updatereturns202once the updater process is spawned. The process is detached with stdout and stderr ignored. If it exits before creating a run record, the PWA receives no durable error and returns to an idle state.Expected behavior
collie update.Suggested fixes
The separate amber
path-linkdoctor warning did not block these requests and does not appear to be the cause.