Skip to content

v0.0.50

Choose a tag to compare

@gyng gyng released this 09 Jul 20:00
· 4 commits to main since this release
7ce96f0

Fixes

  • The app no longer silently exits when its last window closes. widgetsack is a tray app, but a layout whose widgets all live on one secondary monitor runs on a single overlay window (an empty primary reclaims its renderer) — so any transient failure to spawn that overlay (monitor not yet enumerated at logon, the display DDC-switched to another input, a WebView2 hiccup) ended the process with no trace: the "didn't start at login" mystery. The exit is now prevented and a hidden primary respawns on a gentle 30-second retry until a monitor returns. Quit from the tray still quits.
  • Overlays come back instantly when a monitor returns. A native display-change watcher re-runs overlay reconcile the moment the display topology changes while no window is alive — no waiting out the retry timer after flipping a monitor input back.
  • A transient layout-read failure no longer closes every overlay. "Couldn't read widgets.json" was treated as "the layout is empty" and tore down working overlays; the reconcile pass is now skipped instead. Reconcile is also single-flight, so concurrent passes can't race to create the same overlay window.
  • Overlay failures now land in the log file. Frontend lifecycle errors (reconcile / spawn / self-fit) used to vanish with the webview console; they now persist to the rotating log (target `client`) so postmortems don't take hours.
  • Media-session (GSMTC) failure no longer prevents startup. The app starts with the now-playing pipeline disabled instead of crashing on a startup assert.

Maintenance

  • TypeScript 7 (native compiler) — full type-check drops from ~8.0s to ~1.7s with zero code changes.
  • oxlint + oxfmt replace ESLint + Prettier (typescript-eslint does not support TS7). Same style rules, same zero-warnings gate. Note: most react-hooks v7 (React Compiler) rules aren't implemented in oxlint yet, so their enforcement is paused — the 0.0.49 code fixes remain in place.
  • Rust dependencies refreshed within semver (`cargo update`, 24 crates).

Verified: `cargo test` (200) / `clippy` / `fmt`, `tsc`, oxlint+oxfmt (0 warnings), 2768 unit tests, build, `check:docs`, 34 Playwright e2e — plus live runtime verification of zero-window survival and monitor-return recovery.