Silence double error toasts in the Creative Director area (#2669)#2743
Merged
Conversation
Custom-catch callers across the Creative Director index/detail pages and the
Overview/Plan tabs showed their own toast.error while the toasting request()
helper also fired its default toast, stacking two toasts on failure. Pass
{ silent: true } at each such site and thread a backward-compatible trailing
options arg into the nine apiCreativeDirector.js wrappers that lacked one.
This was referenced Jul 17, 2026
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
Sweeps the Creative Director feature area for the double-toast bug tracked in #2669: custom-catch callers that show their own
toast.errorwhile the auto-toastingrequest()helper also fires its default toast, stacking two error toasts on failure.Ten call sites across four files now pass
{ silent: true }so only the caller's own toast fires:pages/CreativeDirector.jsx— load projects, create project, create directive project, start, pause, delete, smoke-test.pages/CreativeDirectorDetail.jsx—handleActionstart/pause/resume.components/creative-director/OverviewTab.jsx—handleAudioToggle(audio-disable PATCH).components/creative-director/PlanTab.jsx— save directive, re-plan.Threaded a backward-compatible trailing
options = {}arg (spread into the request options) into the nineapiCreativeDirector.jswrappers that lacked one:listCreativeDirectorProjects,createCreativeDirectorProject,deleteCreativeDirectorProject,start/pause/resumeCreativeDirectorProject,createSmokeTestCreativeDirectorProject,setCreativeDirectorDirective,replanCreativeDirectorProject. The wrappers that already acceptedoptions(updateCreativeDirectorProject,updateCreativeDirectorPlanStep,applyCreativeDirectorAutoCast) just gained thesilentpass at the call site.Deliberately left unchanged (per the sweep rule):
CreativeDirectorModelsDrawer.jsx— already fully swept (all three sites already passsilent).OverviewTab.jsxauto-cast (applyCreativeDirectorAutoCast) andPlanTab.jsxstep action (updateCreativeDirectorPlanStep) — already passsilent.CreativeDirectorDetail.jsxgetCreativeDirectorProject(...).catch(() => null)/getCosAgents().catch(() => [])— toast-less swallowing catches keep the single default helper layer.CreativeDirectorDetail.jsxmusic-bed toasts (lines 92/96) — sourced fromuseMediaJobProgress, not arequest()catch, so not a double-toast.Test plan
cd client && npm install && npx vitest run— full client suite green (407 files / 4432 tests, 0 failures).PlanTab.test.jsxnow expectsreplanCreativeDirectorProject('cd-1', { silent: true }).Refs #2669
Remaining
Un-swept batches still tracked by #2669 (counts are raw and unverified — re-scan out to
request()before trusting them; prior batches found the advertised lists stale in both directions):CatalogCastPanelGenomeTaband othersGmailMboxImportPanel,LocalLlmTab,MessageDetail,PipelineManuscriptEditorcomponents/pipeline/ManuscriptCommentCard.jsx:247,251—generatePipelineManuscriptFixstill needs anoptionsparamAlready shipped — do not re-sweep: settings + JIRA (#2670), messages/calendar/sharing, pipeline stages/canvas (#2714), writers-room/universe/universeBuilder/media/hooks (#2682), Apps/GitHub/misc (#2721), Loras/media (#2723), digital-twin (#2730), and now Creative Director (this PR).