PresenceJam-ohjelmasta on luettelossa 33 versiota, ensimmäinen 24. huhtikuuta 2026 ja uusin 5.0.0. Jokainen versio linkittää julkaisijan omiin asennustiedostoihin.
| Versio | Päivämäärä | Koko | Tiedostot |
|---|---|---|---|
| 5.0.0Uusin | 12. lokakuuta 2026 | — | 64-bittinen MSI MuutoslokiPresenceJam now knows more about whether you are busy than you do.
That is the whole release, really. In 4.7 the app watched Spotify and wrote a
status. In 5.0 it watches a calendar, a meeting, a full-screen slide deck, your
idle timer, a profile you switched from the tray, and a rule set you can
interrogate after the fact — and it can tell you which of those fired, and
why.
─────────────────────────────┬────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Profiles │Named overlays of every rule, gate and format setting. Switch from the tray, a hotkey, or presencejam --profile <id>.
─────────────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Rules that explain themselves│Match on album, show, device, playlist or duration; act with suppress / replace / snooze / profile / presence; then ask why did this not fire? and get a per-rule reason chain.
─────────────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
A calendar that can veto │Outlook busy blocks the write, and the un-gate lands within one poll of the meeting ending instead of whenever the cadence next elapses. Working hours import straight into quiet-hours rules, previewed before anything is written.
─────────────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Headless │--daemon runs the same poller with no window and no tray, supervised, with packaging units for systemd, launchd and Task Scheduler.
─────────────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
An Activity feed │Every presence decision is recorded, shown on the Dashboard, and pasteable into a diagnostics snapshot.
─────────────────────────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Polish plurals │few and many render as themselves, not as other.
─────────────────────────────┴────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
What it cost to build
lib.rs was 4,900 lines. It is now four modules and a 34-line registry.
poll_once.rs was 11,988 lines. It is now ten files sharing one PollState.
config.rs was 8,313. It is now seven slices behind a re-export header that
kept every crate::config::X path stable, so nothing downstream had to move.
You will not notice any of that. It is the reason the things above were
possible without a rewrite, and it is why the next four of these releases will
be boring in the way this one was not.
One thing 5.0.0 does not yet have
A localhost control API. --serve exists and is documented in
docs/API.md, but two of its four mutating routes accept a
request, validate it, and change nothing, and the bearer token that guards all
four has no supported way to be read back. Rather than headline a control
surface that cannot be driven, --serve is documented as a preview in 5.0.0
an |
| 4.7.0 | 17. syyskuuta 2026 | — | 64-bittinen MSI MuutoslokiWhat's Changed
- ci: drop the ignored rust-toolchain input from all setup steps by @Carme99 in #663
- fix(polling): exit-cleanup snapshot, gate-before-dedup clears, self-exit announcement, playback-state change and clock generation guard (#669) by @Carme99 in #702
- fix(presence): capture presence and sync state outside the Dashboard by @Carme99 in #700
- fix: tray mode dedup, same-track pause, log listener teardown, teams persist warning by @Carme99 in #701
- feat(rules): schedule track rules, pause polling in quiet hours, editable status texts (#672) by @Carme99 in #709
- feat: rotate logs, add Settings logging and backup cards (#673) by @Carme99 in #705
- feat(i18n): localize the tray and native app menu via config.locale (#674) by @Carme99 in #703
- feat(notifications): per-class desktop notifications, dispatched from the always-mounted layout (#675) by @Carme99 in #706
- feat(updater): configurable release channel with beta fall-through (#678) by @Carme99 in #707
- feat(shortcuts): global hotkeys for playback and sync, with a rebinding UI by @Carme99 in #710
- feat(cli): headless --status, --sync-once and --help flags (#679) by @Carme99 in #713
- feat(ui): follow-system theme option, compact density, MSRV enforcement (#680) by @Carme99 in #708
- test: frontend coverage ratchet + behavioural tests for polling/loop.rs and polling/state.rs (#681) by @Carme99 in #714
- docs: split ARCHITECTURE.md into six pages, add docs index and RELEASING guide by @Carme99 in #712
- feat(snooze): tray pause-sync submenu + Dashboard countdown chip (#677) by @Carme99 in #715
- test(polling): pin the driver's wait sites + correct the coverage-set claim (#681 round-2 follow-up) by @Carme99 in #716
- test(polling): fix the red main — count the snooze pause among the driver's wait sites, and drive the offset sweep through the dispatch by @Carme99 in #717
- docs: 4.7.0 truth pass — re-verify every claim against the merged tree (#683) by @Carme99 in #718
- chore(release): 4.7.0 by @Carme99 in #719
Full Changelog: v4.6.0...v4.7.0 |
| 4.6.0 | 16. syyskuuta 2026 | — | 64-bittinen MSI MuutoslokiWhat's Changed
- docs: truth pass — real log paths, status rules, stale counts and anchors by @Carme99 in #639
- fix(windows): detached panes can close, log viewer stickiness, update banner, a11y by @Carme99 in #638
- fix(spotify): reuse the HTTP client, drop the 304 allocation, tighten the profanity filter by @Carme99 in #641
- fix(ui): dashboard presence hydration, settings edit guarding, detached guards, a11y by @Carme99 in #643
- fix(diagnostics): redaction gaps, honest save-to-file, render the collected fields by @Carme99 in #640
- fix(shell): window lifecycle, refresh-aware tray playback, updater staging UX by @Carme99 in #644
- ci: tag/version consistency gate, release verification job, EOL Node, packaging fixes by @Carme99 in #646
- fix(tray): stop the dashboard sending a stale tray-state claim (#592) by @Carme99 in #647
- fix(polling): auth-only failure exit, mid-track rule evaluation, cadence correctness by @Carme99 in #648
- fix(auth): reconnect must re-authorize, not destroy credentials by @Carme99 in #645
- fix(auth): token store and keychain hardening by @Carme99 in #649
- feat(updater): live stage progress and cancel for install-on-quit (#590) by @Carme99 in #650
- fix(config): config integrity — merge instead of replace, schema authority, quarantine surfacing by @Carme99 in #651
- chore(deps): bump vitest to 4.1.11 for GHSA-82fw-gwwq-j7x9 (#642) by @Carme99 in #652
- feat(logs): backfill the log viewer from the on-disk log tail (#595) by @Carme99 in #653
- fix(deeplink): re-claim the presencejam:// scheme on macOS at every launch (#628) by @Carme99 in #654
- refactor(fe): one listener disposer, CLDR plural/number formatting, real auth-flow tests by @Carme99 in #655
- feat(spotify): richer status placeholders, podcast episodes and tray mode toggles by @Carme99 in #656
- fix(auth): surface a locked system keychain instead of "not configured" (#560) by @Carme99 in #657
- feat(diagnostics): warn when a corrupt config was quarantined and settings reset (#537) by @Carme99 in #658
- feat(presence): rule-driven availability, manual-status respect, bounded sessions, out-of-office gating by @Carme99 in #659
- fix(profanity,polling): consume the extra-word lexicon and the pause-backoff ceiling (#538) by @Carme99 in #661
- docs: 4.6 feature and behaviour pass by @Carme99 in #660
- chore(release): 4.6.0 by @Carme99 in #662
Full Changelog: v4.5.2...v4.6.0 |
| 4.5.2 | 16. syyskuuta 2026 | — | 64-bittinen MSI MuutoslokiWhat's Changed
- fix(auth): don't auto-start Spotify OAuth when only Teams needs re-auth (#530) by @Carme99 in #533
Full Changelog: v4.5.1...v4.5.2 |
| 4.5.1 | 16. syyskuuta 2026 | — | 64-bittinen MSI MuutoslokiWhat's Changed
- fix(auth): refresh expired tokens at launch instead of forcing re-onboarding (#530) by @Carme99 in #532
Full Changelog: v4.5.0...v4.5.1 |
| 4.5.0 | 16. syyskuuta 2026 | — | 64-bittinen MSI MuutoslokiWhat's Changed
- release: 4.5.0 — status rules, detached polish, UX sweep, test waves, CI modernization by @Carme99 in #529
Full Changelog: v4.4.0...v4.5.0 |
| 4.4.0 | 14. syyskuuta 2026 | — | 64-bittinen MSI MuutoslokiWhat's Changed
- test: pin spotify token client builder, timeout, UA, client_id validator by @Carme99 in #524
- fix: close ph/fuk/fux/z-plural profanity evasions by @Carme99 in #521
- fix: close redact_sensitive allowlist gaps by @Carme99 in #522
- fix: polling lifecycle hardenings and playback source guards by @Carme99 in #526
- fix: tray quit lifecycle, menu quit race, off-thread playback, stable device ids by @Carme99 in #523
- fix: frontend small fixes (boot, diagnostics retry, dismiss, timers, trace, popout) by @Carme99 in #525
- fix: close frontend auth race conditions and harden device-code flows by @Carme99 in #527
- chore: release 4.4.0 by @Carme99 in #528
Full Changelog: v4.3.0...v4.4.0 |
| 4.3.0 | 14. syyskuuta 2026 | — | 64-bittinen MSI MuutoslokiWhat's Changed
- docs: narrow RunMode OneShot contract to parking sleeps by @Carme99 in #514
- fix: harden Spotify auth exchange, manual-code retry, legacy keychain order, secret validation by @Carme99 in #515
- fix: debounce preserves change, shared Teams refresh, first-iteration clear, gate re-check, identical-write skip by @Carme99 in #516
- feat: config schema_version with unknown-field retention and corrupt quarantine by @Carme99 in #517
- fix: extend profanity strong-stem set to cover bitch by @Carme99 in #518
- fix: LogViewer render-window, scroll stickiness, Jump-to-latest by @Carme99 in #519
- chore: release 4.3.0 by @Carme99 in #520
Full Changelog: v4.2.1...v4.3.0 |
| 4.2.1 | 13. syyskuuta 2026 | — | 64-bittinen MSI MuutoslokiWhat's Changed
- docs: fix 9 outbound links in scope-3.3 by @Carme99 in #510
- docs: fix README/USAGE/SETUP/CONTRIBUTING/SECURITY drift by @Carme99 in #511
- docs: repair CHANGELOG link defs + lint by @Carme99 in #512
- chore: release 4.2.1 by @Carme99 in #513
Full Changelog: v4.2.0...v4.2.1 |
| 4.2.0 | 12. syyskuuta 2026 | — | 64-bittinen MSI MuutoslokiWhat's Changed
- fix: drop unused ts-expect-error in vite.config.js by @Carme99 in #501
- fix: Spotify client timeout+UA and redirect_uri allowlist by @Carme99 in #502
- fix: plug device_code and log-path secret leaks by @Carme99 in #503
- feat: never-re-auth refresh-and-retry on Teams write and playback by @Carme99 in #504
- fix: surface keychain secret conflict to the user by @Carme99 in #505
- feat: device-code expiry countdown with one-click fresh code by @Carme99 in #506
- feat: quit-time deferred-update confirmation with version check by @Carme99 in #507
- feat: wire spotify-secret-conflict event into setup and Settings by @Carme99 in #508
- chore: release 4.2.0 by @Carme99 in #509
Full Changelog: v4.1.1...v4.2.0 |
| 4.1.1 | 12. syyskuuta 2026 | — | 64-bittinen MSI MuutoslokiWhat's Changed
- docs: close the doc-vs-code gaps left after the 4.1.0 sweep by @Carme99 in #320
- docs: bring STATE-OF-FEATURES and ARCHITECTURE up to v4.1.0 by @Carme99 in #321
- docs: correct the guarded-command count and complete the event table by @Carme99 in #322
- docs: correct four event payload shapes in the bus table by @Carme99 in #323
- docs: document the full presence-gated payload by @Carme99 in #324
- docs: correct the AppHandle::exit platform claim in the quit handler by @Carme99 in #326
- docs: drop the rot-prone vendor line number from the exit comment by @Carme99 in #327
- fix: overhaul profanity matcher boundaries, evasions, and placeholders by @Carme99 in #345
- fix: close profanity integration gaps #341-#344 by @Carme99 in #346
Full Changelog: v4.1.0...v4.1.1 |
| 4.1.0 | 12. syyskuuta 2026 | — | 64-bittinen MSI MuutoslokiWhat's Changed
- fix: reject a truncated tokens.json instead of panicking at startup by @Carme99 in #303
- docs: correct tokens.json location to bundle-id folder, not config dir by @Carme99 in #308
- docs: rewrite phantom Disconnect flows around Reconnect buttons by @Carme99 in #315
- deps(frontend)(deps): bump the npm-minor-and-patch group across 1 directory with 8 updates by @dependabot[bot] in #247
- deps(backend)(deps): bump the cargo-minor-and-patch group across 1 directory with 10 updates by @dependabot[bot] in #248
- chore: gate rustfmt in CI by @Carme99 in #274
- chore: fix Dependabot scope doubling and a phantom lint script by @Carme99 in #276
- fix: drop unused opener permission from detached and default capabilities by @Carme99 in #250
- fix: route full-state OAuth compares through pkce::ct_eq by @Carme99 in #249
- fix: enforce main-window-only guards on sensitive app commands by @Carme99 in #251
- fix: keep idle 304 ETag valid and advance pause backoff by @Carme99 in #252
- fix: treat the documented focusing presence state as gated by @Carme99 in #258
- fix: derive max-interval input min from the backend clamp by @Carme99 in #253
- fix: do not set the auth phase until an auth flow actually starts by @Carme99 in #290
- fix: make Settings save work, and show failed Spotify reconnects by @Carme99 in #292
- fix: stop Dashboard leaking listeners, and surface sync-toggle failures by @Carme99 in #293
- fix: only a dead credential forces Teams re-auth; surface cold-keychain Spotify by @Carme99 in #302
- fix: sync package-lock.json root version to 4.0.0 by @Carme99 in #307
- feat: surface failed exit-time update installs on next launch by @Carme99 in #255
- chore: make CodeRabbit and Sourcery reviews opt-in by @Carme99 in #259
- test: assert profanity detection is case-insensitive by @Carme99 in #273
- test: assert tokens.json is created 0600 by @Carme99 in #272
- fix: harden the release re-cut path (wrong-tag publish, concurrency collision, stale tap sha) by @Carme99 in #275
- docs: correct the reconnect diagram and the dependency credits by @Carme99 in #306
- docs: separate the 5-minute presence timeout from expirationDuration by @Carme99 in #257
- style: rustfmt the main-window-guard test array (unblocks all CI) by @Carme99 in #316
- docs: correct five claims that drifted from the code by @Carme99 in #291
- docs: describe the real Dashboard controls and polling cadence by @Carme99 in #318
- fix: stop returning and emitting OAuth tokens to the webview by @Carme99 in #301
- fix: persist the clamped polling config in memory too, not just on disk by @Carme99 in #305
- docs: correct internals drift (playback submodule, authFlow, versions, deps, Linux) by @Carme99 in #317
- test: close three poll_once coverage gaps (transient threshold, expiry arithmetic, vacuous guard) by @Carme99 in #284
- chore: release 4.1.0 by @Carme99 in #319
Full Changelog: v4.0.0...v4.1.0 |
| 4.0.0 | 23. elokuuta 2026 | — | 64-bittinen MSI MuutoslokiFull Changelog: v3.2.0...v4.0.0 |
| 3.2.0 | 22. elokuuta 2026 | — | 64-bittinen MSI MuutoslokiWhat's Changed
- fix(release): align build/release/docs for v3.2.0 by @Carme99 in #232
- fix(tray): avoid holding tray/cache locks across HTTP and fix Play/Pause staleness by @Carme99 in #233
- fix(teams): async poll with clamped interval, RFC 8628 pacing and teams-auth-failed emits by @Carme99 in #236
- fix(sync): handle-gated drain + async commands and InvalidGrant hardening by @Carme99 in #234
- fix(security): bind per-launch secret into OAuth state, redact logs, drop store/shell by @Carme99 in #235
- fix(svelte): batch hygiene + lift reconnect handlers to layout by @Carme99 in #237
- chore(release): 3.2.0 Stratus by @Carme99 in #238
Full Changelog: v3.1.0...v3.2.0 |
| 3.1.0 | 20. elokuuta 2026 | — | 64-bittinen MSI MuutoslokiWhat's Changed
- deps(frontend)(deps-dev): bump svelte-check from 4.7.4 to 4.7.5 in the npm-minor-and-patch group by @dependabot[bot] in #199
- deps(ci)(deps): bump Swatinem/rust-cache from 2.9.1 to 2.9.2 in the github-actions-minor-and-patch group by @dependabot[bot] in #198
- deps(frontend)(deps-dev): bump the npm-minor-and-patch group with 2 updates by @dependabot[bot] in #201
- fix(teams): request openid scope and fix onboarding empty-URL startup failure by @Carme99 in #202
- chore(release): bump version to 3.1.0 by @Carme99 in #203
Full Changelog: v3.0.0...v3.1.0 |
| 3.0.0 | 9. elokuuta 2026 | — | 64-bittinen MSI MuutoslokiWhat's Changed
- deps(frontend)(deps-dev): bump the npm-minor-and-patch group with 2 updates by @dependabot[bot] in #150
- fix(polling): drop write guard before persisting refreshed tokens (#180) by @Carme99 in #183
- feat(security): encrypt tokens.json at rest with keychain-stored AES key (#140) by @Carme99 in #184
- feat(tray): Spotify playback control, device picker and queue by @Carme99 in #185
- deps(security): resolve postcss + quinn-proto Dependabot alerts by @Carme99 in #186
- feat(presence): availability sync + meeting/call-aware status gating by @Carme99 in #187
- feat(updater): tauri-plugin-updater auto-update wired to GitHub Releases by @Carme99 in #188
- docs: 3.0 sweep — features, storage, presence, updater by @Carme99 in #189
- chore(release): bump version to 3.0.0 by @Carme99 in #190
- fix(updater): switch to password-encrypted signing key by @Carme99 in #191
- ci(winget): submit via Carme99/winget-pkgs fork by @Carme99 in #192
- fix(ci): add app target so macOS builds updater artifacts by @Carme99 in #193
- fix(ci): gh release upload needs --repo in the release job by @Carme99 in #194
- fix(ci): bump winget-releaser pin to add komac sync-fork (#182) by @Carme99 in #195
- fix(ci): gh release upload --clobber latest.json by @Carme99 in #196
- docs(ci): document workflow-scope requirement for WINGET_TOKEN (#182) by @Carme99 in #197
Full Changelog: v2.10.0...v3.0.0 |
| 2.9.1 | 23. heinäkuuta 2026 | — | 64-bittinen MSI MuutoslokiWhat's Changed
- deps(ci)(deps): bump actions/setup-node from 6.4.0 to 6.5.0 in the github-actions-minor-and-patch group by @dependabot[bot] in #144
- deps(backend)(deps): bump the cargo-minor-and-patch group across 1 directory with 6 updates by @dependabot[bot] in #146
- deps(frontend)(deps): bump the npm-minor-and-patch group across 1 directory with 5 updates by @dependabot[bot] in #145
- chore(release): bump version to 2.9.1 by @Carme99 in #147
Full Changelog: v2.9.0...v2.9.1 |
| 2.9.0 | 12. heinäkuuta 2026 | — | 64-bittinen MSI MuutoslokiWhat's Changed
- docs(architecture): rewrite to reflect v2.7.0–v2.8.0 codebase reality by @Carme99 in #132
- fix(security): drop redundant remove_file in atomic_write_json + honest SECURITY.md rewording by @Carme99 in #133
- docs(state-of-features): new doc answering 'does this work in my setup?' by @Carme99 in #134
- docs(security): correct two historical-tense claims about tokens.json storage by @Carme99 in #136
- deps(frontend)(deps-dev): bump @sveltejs/kit from 2.68.0 to 2.69.1 in the npm-minor-and-patch group by @dependabot[bot] in #137
- deps(backend)(deps): bump tauri from 2.11.3 to 2.11.5 in /src-tauri in the cargo-minor-and-patch group by @dependabot[bot] in #138
- fix(security): tighten tokens.json + config.json to mode 0600 (issue #135 path A) by @Carme99 in #139
- feat(ui): visual refresh — design system, light/dark themes, new brand mark by @Carme99 in #141
Full Changelog: v2.8.0...v2.9.0 |
| 2.8.0 | 4. heinäkuuta 2026 | — | 64-bittinen MSI MuutoslokiWhat's Changed
- deps(frontend)(deps-dev): bump @tauri-apps/cli from 2.11.3 to 2.11.4 in the npm-minor-and-patch group by @dependabot[bot] in #127
- docs(changelog): drop stale #71 Show/Hide follow-up note from v2.7.0 by @Carme99 in #128
- ci: refresh pinned GitHub Action SHAs (checkout v7, setup-node v6, upload/download-artifact v7/v8) by @Carme99 in #130
- docs: refresh stale version references in README/SETUP/USAGE + v2.8.0 changelog stub by @Carme99 in #131
- fix(security): re-register presencejam:// scheme at every launch (further mitigates #66) by @Carme99 in #129
Full Changelog: v2.7.5...v2.8.0 |
| 2.7.5 | 26. kesäkuuta 2026 | — | 64-bittinen MSI MuutoslokiWhat's Changed
- ci(frontend): run cargo test --lib to materialise ts-rs codegen before svelte-check by @Carme99 in #124
- refactor(commands): split commands.rs into 7 per-workflow modules (#76, #79) by @Carme99 in #122
- ci(frontend): clear stale ts-rs generated files before cargo test by @Carme99 in #125
- refactor: extract Tokens/Polling/PendingAuths/Config sub-structs (#80 step 2) by @Carme99 in #120
- refactor(polling): dedup into poll_once/state/loop modules (#72) by @Carme99 in #123
- refactor: ts-rs codegen for SpotifyTokens/TeamsTokens/SyncStatus/AppConfig (#78) by @Carme99 in #121
- chore(release): bump version to 2.7.5 by @Carme99 in #126
Full Changelog: v2.7.4...v2.7.5 |
| 2.7.4 | 25. kesäkuuta 2026 | — | 64-bittinen MSI MuutoslokiWhat's Changed
- deps(npm): pin cookie >= 0.7.0 via package.json overrides (GHSA-pxg6-pf52-xh8x) by @Carme99 in #113
- security(ci): switch homebrew job to credential helper, document 90-day PAT rotation (#68) by @Carme99 in #114
- refactor(frontend): type the 5 invoke / listen call sites (#78 part 1) by @Carme99 in #116
- refactor: error handling — drop eprintln! + severity field + frontend gating (#79) by @Carme99 in #117
- refactor: extract OnboardingCache sub-struct with lock encapsulation (#80 step 1) by @Carme99 in #118
- chore(release): bump version to 2.7.4 by @Carme99 in #119
Full Changelog: v2.7.3...v2.7.4 |
| 2.7.3 | 25. kesäkuuta 2026 | — | 64-bittinen MSI MuutoslokiWhat's Changed
- fix: per-install keychain namespacing, polling reliability, dep cleanup by @Carme99 in #97
- feat: macOS ActivationPolicy + actionable keychain errors (recovery) by @Carme99 in #101
- chore: User-Agent from CARGO_PKG_VERSION + 3 mechanical nits (recovery) by @Carme99 in #102
- fix: single-instance argv forwarding + Teams refresh_token null-aware (recovery) by @Carme99 in #103
- chore(ci): add dependabot config (weekly, grouped, ignore majors) by @Carme99 in #96
- fix(ci): complete github-actions block in dependabot.yml by @Carme99 in #111
- deps(frontend)(deps): bump the npm-minor-and-patch group with 11 updates by @dependabot[bot] in #110
- deps(backend)(deps): bump the cargo-minor-and-patch group in /src-tauri with 3 updates by @dependabot[bot] in #109
- chore(deps): update dtolnay/rust-toolchain requirement to 6190aa5fb88a88ee71c12769924bbe63a9ab152e by @dependabot[bot] in #104
- chore(release): bump version to 2.7.3 by @Carme99 in #112
New Contributors
- @dependabot[bot] made their first contribution in #110
Full Changelog: v2.7.2...v2.7.3 |
| 2.7.2 | 20. kesäkuuta 2026 | — | 64-bittinen MSI MuutoslokiWhat's Changed
- refactor: delete frontend dead stores, extract shared types by @Carme99 in #91
- fix(v2.7.2): verifier-flagged nits + release-hygiene catch by @Carme99 in #92
- chore(v2.7.2): a11y fix + project-wide rustfmt pass by @Carme99 in #93
- feat(ci): add Linux (.deb + .AppImage) to release matrix by @Carme99 in #94
Full Changelog: v2.7.1...v2.7.2 |
| 2.7.1 | 19. kesäkuuta 2026 | — | 64-bittinen MSI MuutoslokiWhat's Changed
- fix: add start_spotify_reconnect IPC for keychain-backed re-auth by @Carme99 in #88
Full Changelog: v2.7.0...v2.7.1 |
| 2.7.0 | 19. kesäkuuta 2026 | — | 64-bittinen MSI MuutoslokiWhat's Changed
- ci: run cargo test and npm run check on PRs (#81) by @Carme99 in #83
- ci: pin third-party action SHAs and document token scoping (#68) by @Carme99 in #84
- refactor: single source of truth for status-format placeholder substitution (#74) by @Carme99 in #86
- refactor: dedup auth-listener setup across 3 components (#73) by @Carme99 in #87
- refactor: extract pkce module, dedup helpers (#75) by @Carme99 in #85
Full Changelog: v2.6.4...v2.7.0 |
| 2.6.4 | 15. kesäkuuta 2026 | — | 64-bittinen MSI MuutoslokiWhat's Changed
- chore(release): v2.6.4 — security hardening & concurrency fixes by @Carme99 in #82
Full Changelog: v2.6.3...v2.6.4 |
| 2.6.3 | 10. kesäkuuta 2026 | — | 64-bittinen MSI MuutoslokiWhat's Changed
- fix: v2.6.3 — onboarding race, autostart ENOENT, JWT log leak, build version by @Carme99 in #64
Full Changelog: v2.6.2...v2.6.3 |
| 2.6.2 | 9. kesäkuuta 2026 | — | 64-bittinen MSI MuutoslokiFull Changelog: v2.6.1...v2.6.2 |
| 2.6.0 | 8. kesäkuuta 2026 | — | 64-bittinen MSI MuutoslokiWhat's Changed
- fix: quick wins from v2.5.0 code review by @Carme99 in #44
- fix: token-refresh lost-update races (Spotify and Teams) by @Carme99 in #43
- fix: polling cadence cleanup (config wiring, backoff, presence-clearing, expires_at check) by @Carme99 in #45
- refactor: make is_onboarding_complete async with 30s result cache by @Carme99 in #47
- fix(perf): use spawn_blocking for OAuth callback HTTP calls by @Carme99 in #46
- chore: address 4 outstanding issues (#9, #12, #13, #16) by @Carme99 in #49
- chore(release): 2.5.1 — doc and changelog pass by @Carme99 in #48
- chore(release): bump version to 2.6.0 by @Carme99 in #50
Full Changelog: v2.5.0...v2.6.0 |
| 2.5.0 | 30. toukokuuta 2026 | — | 64-bittinen MSI |
| 2.4.1 | 28. huhtikuuta 2026 | — | 64-bittinen MSI |
| 2.3.6 | 24. huhtikuuta 2026 | — | 64-bittinen MSI |
| 2.3.5 | 24. huhtikuuta 2026 | — | 64-bittinen MSI |