Audit finding. Up's honest refusals (e.g. 'an instance is already serving on port 33000') go to log.Println — stderr, which a Finder-launched .app discards — while the tray shows 'Update restart failed — see the native logs' and run/app.log/bifrost.log contain only child output, not launcher decisions. The user is pointed at files that structurally cannot hold the answer, and checkNativeUpdate re-offers the failing update every 6h.
Fix direction: a run/launcher.log (or appending launcher decisions to the run dir) + the tray status carrying the actual refusal reason text.
Status (re-triaged 2026-08-28)
Still valid: no run-dir log sink (log.Println goes to stderr, which a tray launcher on GNOME doesn't capture); setStatus("Update restart failed — see the native logs") points at logs that never contain the reason. The v0.9.28 download-failure notification covers the download path only. Self-contained.
Done means: A refused Up writes its reason to native/run/launcher.log and the tray status contains the refusal text, not "see the native logs".
Audit finding. Up's honest refusals (e.g. 'an instance is already serving on port 33000') go to
log.Println— stderr, which a Finder-launched .app discards — while the tray shows 'Update restart failed — see the native logs' andrun/app.log/bifrost.logcontain only child output, not launcher decisions. The user is pointed at files that structurally cannot hold the answer, and checkNativeUpdate re-offers the failing update every 6h.Fix direction: a
run/launcher.log(or appending launcher decisions to the run dir) + the tray status carrying the actual refusal reason text.Status (re-triaged 2026-08-28)
Still valid: no run-dir log sink (log.Println goes to stderr, which a tray launcher on GNOME doesn't capture);
setStatus("Update restart failed — see the native logs")points at logs that never contain the reason. The v0.9.28 download-failure notification covers the download path only. Self-contained.Done means: A refused Up writes its reason to native/run/launcher.log and the tray status contains the refusal text, not "see the native logs".