Quiver 2.1.2
Bug-fix and polish release. Fixes launcher self-update cache handling, startup thread errors, GitHub rate-limit guidance, and adds an empty-library onboarding state.
Fixes
Launcher self-update
- Empty
LastKnownVersionno longer blocks conditional requests forever; a 304 with no cached version retries withoutIf-None-Matchso the release tag is learned - Partial cache writes removed —
LastCheckTimeandLastKnownVersionare saved only after a valid release tag is parsed; network/parse failures no longer corruptupdate_check.json - Concurrent update checks are serialized with a semaphore so startup and manual checks cannot race
- Shared GitHub fetch logic uses
LauncherUpdateServicefor client setup, conditional requests, and JSON parsing - “Up to date” dialog no longer shows a double
vin the version string (e.g.vv2.1.2)
GitHub rate limits
- Update check failures from a 403 / rate limit now show the same guided dialog as game downloads, with steps to create a token
- Open Settings on that dialog takes you directly to Settings → Advanced → GitHub API Token
Startup stability
- “Call from invalid thread” on startup is fixed — library loading and empty-state UI updates are marshaled to the UI thread
- Update icon progress bar no longer appears stuck on launch when bindings were pointed at the wrong data context
Improvements
Empty library
- When your library has no apps, the main view shows guidance and two actions:
- Add App Manually — opens the new app entry form
- Browse Community Catalog — opens the Quiver Community App Catalog review view (New filter)
UI
- App Catalog sidebar badge has slightly more spacing from the label
Tests
- Added unit tests for release JSON parsing, conditional request rules, and tag extraction from sample GitHub responses