feat(toast): action-confirmation toasts with undo & change-list - #2995
Open
ElMagnea wants to merge 1 commit into
Open
feat(toast): action-confirmation toasts with undo & change-list#2995ElMagnea wants to merge 1 commit into
ElMagnea wants to merge 1 commit into
Conversation
Collaborator
|
Marius-TV
force-pushed
the
main
branch
3 times, most recently
from
August 2, 2026 05:08
d6ed106 to
637bdc2
Compare
Adds a global action-confirmation toast engine, gated behind a new `ActionConfirmations` preview flag (off by default; directors on). The shared media mutation hooks fire a confirmation toast after each action: - watchlist add -> "change list" opens the manage-lists drawer - watchlist/favorites/history removals + ratings -> "Undo", which reverses via the sibling hook (routes through executeOrEnqueue, so it stays offline-aware and cache-invalidating - not the raw request) Engine lives in lib/features/action-toast (module-store singleton + ActionToastHost), reusing the Snackbar primitive. Also adds a global manage-lists drawer opener so the toast can open the drawer from anywhere. Snackbar polish (shared): bold inline title via MessageWithBold, a theme-aware outline "pill" action (stroke token in modes.scss for both light/dark), a hairline border, and a bottom fly-in/out animation (|global so it plays on parent-mounted toasts; respects prefers-reduced-motion). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
seferturan
force-pushed
the
feat/action-confirmation-toasts
branch
from
August 14, 2026 15:43
1fecc66 to
50f6171
Compare
|
|
Overall Grade |
Security Reliability Complexity Hygiene Coverage |
Code Review Summary
| Analyzer | Status | Updated (UTC) | Details |
|---|---|---|---|
| JavaScript | Aug 14, 2026 3:43p.m. | Review ↗ | |
| Code coverage | Aug 14, 2026 3:43p.m. | Review ↗ |
Code Coverage Summary
| Language | Line Coverage (Overall) |
|---|---|
| Aggregate | 68.2% [▼ down 0.1% from main] |
| Javascript | 68.2% [▼ down 0.1% from main] |
➟ Additional coverage metrics may have been reported. See full coverage report ↗
Important
AI Review is run only on demand for your team. We're only showing results of static analysis review right now. To trigger AI Review, comment @deepsourcebot review on this thread.
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.
Visuals
Marking something as watched by mistake

Accidentally removing an item from a watchlist

When adding an item to your watchlist, you can pick another list right after (if need be)

What
Adds a global action-confirmation toast engine, gated behind a new
ActionConfirmationspreview flag (off by default; on for directors). The shared media mutation hooks fire a confirmation toast after each action, with an inline undo / "change list" affordance.How
lib/features/action-toast/— a module-store singleton (mirrorsuseDismissals/markAsWatchedDrawerStore) +ActionToastHostmounted once in the layout, reusing the existingSnackbarprimitive.executeOrEnqueue), not the raw*Request— so it stays offline-aware, cache-invalidating, and consistent with the optimistic read overlay.manageListsDrawerStore+ provider) so "change list" can open the drawer from anywhere.MessageWithBold), a theme-aware outline "pill" action (stroke token added to bothmodes.scssmixins), a hairline border, and a bottom fly-in/out animation (|global; respectsprefers-reduced-motion).Notes / scope
useRemoveFromHistory(row-level, lossy undo) not wired; ratings "Change" (needs a global rating drawer); the outline-button look is scoped to the toast — a global button restyle is its own pass.Verification
deno fmt✓ ·svelte-check0/0 ✓ ·vitest2418 passed ✓ ·i18n:check✓. Undo is covered by tests that assert the real reverse request fires (watchlist / favorites / history).🤖 Generated with Claude Code