fix([issue-2567]): silence double error toasts in Settings tabs and JIRA page#2670
Merged
Conversation
…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).
This was referenced Jul 16, 2026
Closed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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 owntoast.errorin 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:
getVoiceConfig/getVoiceStatus), save (updateVoiceConfig), Piper voice download + catalog refresh (fetchPiperVoice/listVoices)getSettings/getToolsList), save (updateSettings), tool register/update (registerTool/updateTool), test render (generateImage)getSettings), method/config/test/disconnect, forward-typesgetSettings/updateSettings)getDatabaseStatus)updateSettings)The
getVoiceConfig/updateVoiceConfig/fetchPiperVoice/listVoices, telegram (updateTelegramConfig/deleteTelegramConfig/testTelegram/updateTelegramForwardTypes/updateTelegramMethod),registerTool/updateTool/getToolsList, andgetDatabaseStatuswrappers gained a backward-compatible trailingoptionsparam (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).BackupTab.test.jsxto expect the new{ silent: true }argument.claude(clean) +codex(2 findings — silence the Piper catalog refresh, and un-merge a changelog bullet a rebase had concatenated — both fixed).