Files
VoiceStudio/docs/superpowers
Palash DebnathandClaude Opus 4.8 8690833137 feat(update): move update pill into status bar + Updates panel (changelog/channel/history) (#240)
* docs(spec): updates-in-status-bar design (move pill to LogsFooter + Updates panel)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* docs(plan): updates-in-status-bar implementation plan (11 tasks, TDD)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* docs(plan): pin i18n task to scripts/translate_all.py backfill

* feat(update): pure chip + release presentation helpers

* feat(update): listReleases + fetchAppVersion wrappers

* feat(update): transient releasesSlice composed into store

* feat(update): app version + channel in updaterSlice

* feat(update): list_releases Tauri command (GitHub releases)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat(update): UpdateStatusChip bar indicator

* feat(update): UpdatesPanel (live row + channel + releases list)

* feat(update): mount chip+panel in LogsFooter, retire floating UpdateBadge

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat(update): Settings channel switcher shares store value (auto-sync)

* i18n(update): add updates.* keys across 21 locales

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* chore(deps): lock reqwest for list_releases command

* polish(update): a11y radiogroup on channel switch, safer release key, drop dead test seam

Addresses final-review nits (non-blocking): role=radiogroup/radio + aria-checked
on the channel Segmented; key={r.name||r.version} to avoid collisions; remove the
unused vi import + __loader seam in releasesSlice.test.ts.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* fix(update): i18n the channel-set error + correct flagged updates.* translations (PR #240 review)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* fix(update): add 10s timeout to list_releases HTTP client (PR #240 review)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* fix(update): guard chip Restart against in-flight dub job (greptile P1, PR #240)

The always-visible status chip's one-click Restart (ready state) called
installUpdate→relaunch without the dub-busy guard the panel uses, so a user
with a dub/transcription job running could lose in-flight work. Mirror the
panel's gate: toast update.busy and bail when dubStep === 'generating'.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* fix(update): surface channel-switch failures in the Updates panel (greptile, PR #240)

Mirror Settings' error handling: the panel's stable/preview switch now catches a
failed set_update_channel and toasts settings.channel_set_failed instead of an
unhandled rejection.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-02 08:53:36 +05:30
..