Skip to content

0.9.8

Choose a tag to compare

@Proxify Proxify released this 25 Aug 15:44
· 2 commits to main since this release

Two operator-reported desktop bugs, both reproduced before the fix and verified after.

Fixed

Fresh install skipped onboarding. The tray opened the app window as soon as the web port was listening, without waiting for the API server. AuthGuard's single /api/auth/me probe lost that race, and its .catch(() => {}) failed open — the app rendered as system@ccc.local and never offered cloud sign-in until the user quit and relaunched. Fixed on both layers: the guard now retries (8 attempts, ~14s) before failing open, and the tray waits on the API port as well as the web port.

Cloud sign-in dropped the provider profile (name + avatar). Discord's handle lives in user_metadata.user_name, which the name chain never checked, and createUser() had no avatarUrl parameter at all — so users landed with an email-prefix name and no avatar. Both are now extracted and refreshed on every sign-in across all three identity branches. The provider metadata is treated as untrusted: type-checked, length-capped, and the avatar restricted to http(s) URLs.

Changes since v0.9.7

Fixes

  • df82681ea first-run: close the first-launch race that silently skipped onboarding
  • 5c60b66c6 auth: carry the provider profile (name + avatar) through cloud sign-in
  • 02f9672e3 auth: resolve the browser cookie on public paths so setup writes stop 403ing admins
  • b9cdc84a1 pipeline: single-node watchdog no longer force-succeeds unfinished nodes (#2038)

CI / tests

  • c966af7be e2e: install the claude CLI on the runner — 55 failures shared one cause
  • 53b4e3adc wal: assert the drained WAL at block end, not a load-sensitive poll count

How far the verification goes

Both fixes were reproduced-before and verified-after in an isolated instance, and the tray half of the first-run fix was exercised under a real Electron shell (Xvfb, with the API port unbound).

Not verified: the packaged installer on a fresh machine, and a live Discord sign-in round-trip. No gate in this pipeline covers either.

Known limitations

  • macOS is arm64-only. No Intel build.
  • Windows installers may trip SmartScreen. No Authenticode certificate is wired through electron-builder.yml. Something on the Windows build host does invoke signtool.exe, but that certificate has not been identified — treat Windows signing as unconfirmed rather than assuming either way.
  • .deb installs do not auto-update — the client detects a package-manager install and defers to it. Upgrade with your package manager. The AppImage does auto-update.
  • Linux has no packaging QA gate. macOS is verified against the shipped bytes (verify-mac); Windows and Linux are not.
  • LICENSE.md:1 still links a private repo, which 404s for the public.

macOS is signed, notarized and stapled (app, zip and dmg) and auto-updates via the Squirrel.Mac .zip. Windows and the Linux AppImage self-update.