Skip to content

fix([issue-2567]): silence double error toasts in Settings tabs and JIRA page#2670

Merged
atomantic merged 2 commits into
mainfrom
next/issue-2567
Jul 16, 2026
Merged

fix([issue-2567]): silence double error toasts in Settings tabs and JIRA page#2670
atomantic merged 2 commits into
mainfrom
next/issue-2567

Conversation

@atomantic

@atomantic atomantic commented Jul 16, 2026

Copy link
Copy Markdown
Owner

Summary

Fixes stacked double error-toasts across the Settings tabs and the JIRA integration page — the first slice of the client custom-catch sweep (continuing the pattern established in #2520 / #2567).

Several Settings surfaces routed a request through the auto-toasting request() helper AND showed their own toast.error in a custom .catch/catch, so a failure produced two stacked toasts. Each such call now passes { silent: true } so the caller's catch is the single error layer. Callers/loaders without a custom toast are unchanged (they keep the single default-helper layer).

Covered call sites:

  • VoiceTab — config load (getVoiceConfig/getVoiceStatus), save (updateVoiceConfig), Piper voice download + catalog refresh (fetchPiperVoice/listVoices)
  • ImageGenTab — settings/tools load (getSettings/getToolsList), save (updateSettings), tool register/update (registerTool/updateTool), test render (generateImage)
  • TelegramTab — settings load (getSettings), method/config/test/disconnect, forward-types
  • BackupTab — settings load + save (getSettings/updateSettings)
  • DatabaseTab — status load (getDatabaseStatus)
  • EmbeddingsTab, MortalLoomTab, CaptionModelPicker — save (updateSettings)
  • pages/Jira.jsx — instances load/save/delete/test (mirrors the DataDog fix from Pass silent:true on client API calls that own custom error toasts #2520)

The getVoiceConfig/updateVoiceConfig/fetchPiperVoice/listVoices, telegram (updateTelegramConfig/deleteTelegramConfig/testTelegram/updateTelegramForwardTypes/updateTelegramMethod), registerTool/updateTool/getToolsList, and getDatabaseStatus wrappers gained a backward-compatible trailing options param (spread into the request options) so callers can opt into silent without affecting existing callers.

The remaining ~200 non-settings sites (pipeline, writers-room, universe, digital-twin, media, catalog, etc.) are tracked as a follow-up in #2669 with a concrete per-area file list.

Refs #2567

Test plan

  • cd client && npx vitest run — full client suite green (4247 tests).
  • Updated the one arg-exact assertion in BackupTab.test.jsx to expect the new { silent: true } argument.
  • Local review: claude (clean) + codex (2 findings — silence the Piper catalog refresh, and un-merge a changelog bullet a rebase had concatenated — both fixed).

…IRA page

Several Settings surfaces routed a request through the auto-toasting
request() helper AND showed their own toast.error in a custom catch,
stacking two toasts on failure. Pass { silent: true } so the caller's
catch is the single error layer, and add a backward-compatible options
param to the voice/telegram/tools/database wrappers that lacked one.

Covered: VoiceTab, ImageGenTab, TelegramTab, BackupTab, DatabaseTab,
EmbeddingsTab, MortalLoomTab, CaptionModelPicker, and pages/Jira.jsx
(mirroring the DataDog fix from #2520). Loaders/callers without a
custom toast are unchanged. Updated the one arg-exact BackupTab test
assertion to expect the new { silent: true } argument.

Part of the client custom-catch sweep tracked in #2567.
…log bullet

- VoiceTab: pass { silent: true } to the listVoices('piper') catalog refresh
  in the download chain so a refresh failure doesn't double-toast alongside
  the chain's custom toast.error.
- Restore the 'Deleting a blocked CoS task' changelog bullet as its own entry
  (a rebase had merged it into the issue-2567 bullet).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant