Aquí hi ha 33 versions de PresenceJam, des de 24 d’abril del 2026 fins a l’actual, 5.0.0. Cadascuna enllaça amb els instal·ladors del mateix desenvolupador.
| Versió | Data | Mida | Fitxers |
|---|---|---|---|
| 5.0.0Darrera versió | 12 d’octubre del 2026 | — | 64 bits MSI Notes de la versióPresenceJam 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 de setembre del 2026 | — | 64 bits MSI Notes de la versióWhat'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 de setembre del 2026 | — | 64 bits MSI Notes de la versióWhat'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 de setembre del 2026 | — | 64 bits MSI Notes de la versióWhat'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 de setembre del 2026 | — | 64 bits MSI Notes de la versióWhat'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 de setembre del 2026 | — | 64 bits MSI Notes de la versióWhat'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 de setembre del 2026 | — | 64 bits MSI Notes de la versióWhat'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 de setembre del 2026 | — | 64 bits MSI Notes de la versióWhat'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 de setembre del 2026 | — | 64 bits MSI Notes de la versióWhat'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 de setembre del 2026 | — | 64 bits MSI Notes de la versióWhat'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 de setembre del 2026 | — | 64 bits MSI Notes de la versióWhat'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 de setembre del 2026 | — | 64 bits MSI Notes de la versióWhat'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 d’agost del 2026 | — | 64 bits MSI Notes de la versióFull Changelog: v3.2.0...v4.0.0 |
| 3.2.0 | 22 d’agost del 2026 | — | 64 bits MSI Notes de la versióWhat'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 d’agost del 2026 | — | 64 bits MSI Notes de la versióWhat'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 d’agost del 2026 | — | 64 bits MSI Notes de la versióWhat'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 de juliol del 2026 | — | 64 bits MSI Notes de la versióWhat'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 de juliol del 2026 | — | 64 bits MSI Notes de la versióWhat'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 de juliol del 2026 | — | 64 bits MSI Notes de la versióWhat'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 de juny del 2026 | — | 64 bits MSI Notes de la versióWhat'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 de juny del 2026 | — | 64 bits MSI Notes de la versióWhat'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 de juny del 2026 | — | 64 bits MSI Notes de la versióWhat'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 de juny del 2026 | — | 64 bits MSI Notes de la versióWhat'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 de juny del 2026 | — | 64 bits MSI Notes de la versióWhat'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 de juny del 2026 | — | 64 bits MSI Notes de la versióWhat'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 de juny del 2026 | — | 64 bits MSI Notes de la versióWhat'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 de juny del 2026 | — | 64 bits MSI Notes de la versióWhat'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 de juny del 2026 | — | 64 bits MSI Notes de la versióFull Changelog: v2.6.1...v2.6.2 |
| 2.6.0 | 8 de juny del 2026 | — | 64 bits MSI Notes de la versióWhat'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 de maig del 2026 | — | 64 bits MSI |
| 2.4.1 | 28 d’abril del 2026 | — | 64 bits MSI |
| 2.3.6 | 24 d’abril del 2026 | — | 64 bits MSI |
| 2.3.5 | 24 d’abril del 2026 | — | 64 bits MSI |