Silence double-toast custom-catch sites in MeatSpace health forms (#2669)#2755
Merged
Conversation
# Conflicts: # .changelog/NEXT.md
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
Partial ship of #2669 — the MeatSpace health batch. Continues the non-settings custom-catch double-toast sweep established in PR #2567 / #2682 / #2721 / #2723 / #2730 / #2743.
Swept 5 genuine double-error-toast sites across 3 tabs, threading a backward-compatible trailing
optionsparam into 5apiMeatspace.jswrappers so each caller can suppress the API helper's default toast:GenomeTab.jsx—updateGenomeMarkerNotes(inline.catchtoast "Failed to save notes")NicotineTab.jsx—addCustomNicotineProduct,updateCustomNicotineProduct(if (!result) toast.error(...)after a swallowing catch)AlcoholTab.jsx—addCustomDrink,updateCustomDrink(sameif (!result)pattern)Wrappers gaining a trailing
options = {}:updateGenomeMarkerNotes,addCustomDrink,updateCustomDrink,addCustomNicotineProduct,updateCustomNicotineProduct. AddedapiMeatspace.test.jspinning that each forwardssilentand preserves its method/body/indexed-path (arg-exact), plus a back-compat case.Deliberately left alone (single helper layer is correct):
removeCustomDrink,removeCustomNicotineProduct,removeAlcoholDrink,updateEpigeneticIntervention, genome upload/scan/search/save, ClinVar sync/scan, epigenetic add/log).EpigeneticTracker.jsxandPostDrillConfig.jsx— no genuine double-error-toast sites.Catalog.jsx,CatalogIngest.jsx,CatalogIngredient.jsx,CatalogCastPanel.jsx) was verified already fully swept — every request-routed custom-catch already passessilent: true. The issue's "Catalog / CatalogCastPanel" remaining bullet is stale.Out of scope (a different bug class, not double-error-toast): a few handlers toast success unconditionally after a swallowing catch (
GenomeTabhandleDeleteMarker/handleDeleteGenome,EpigeneticTrackerhandleDelete) — they'd stack a success toast on the helper's error toast on failure. Noted for a follow-up rather than widened into here.Test plan
cd client && npx vitest run src/services/apiMeatspace.test.js— 6 passed (new arg-exact test).cd client && npx vitest run src/components/meatspace— 19 files / 260 tests passed.Remaining
This is a partial ship (
Refs, notCloses— issue stays open). Still unshipped per the issue's (re-verify-first) list:GmailMboxImportPanel,LocalLlmTab,MessageDetail,PipelineManuscriptEditorManuscriptCommentCard.jsx:247,251—generatePipelineManuscriptFixstill needs anoptionsparamRefs #2669