| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
| |
The global animateDetails handler in +layout.svelte runs on every
window click, unconditionally finding the nearest <summary>,
preventDefault'ing the native toggle, and manually toggling the
parent <details>. That left no way for child handlers to opt out --
clicking Roulette or Refresh inside the list title still toggled
the panel. Skip the takeover (and stop the native toggle) when the
click target is an interactive element. Reverts the now-unneeded
slot wrapper in ListTitle from 0d46fa54.
|
| |
|
|
|
|
|
| |
ListTitle renders inside <summary>, so clicking the Roulette or
Refresh button bubbled up and toggled the parent <details>. Wrap
the slot in a span that preventDefault()s the click, so the button's
own onclick still runs but the summary toggle is cancelled.
|
| |
|
|
|
|
|
|
|
|
| |
Before DueAnimeList/UpcomingAnimeList's onMount assigns the promise,
{#await undefined} fell through to {:then media=undefined}, which
cleanMedia turned into an empty array and the list rendered "No anime
to display". The auto-snapshot then captured [] into previousAnimeList,
making every subsequent pending state skip the skeleton. Gate the await
on animeLists being defined so the placeholder shows until the fetch
actually starts.
|
| |
|
|
|
|
|
|
| |
New 'Dry-run mutations' toggle in the Debug settings panel blocks
outgoing list updates (the + button) and skips the post-mutation
refresh so optimistic UI changes persist locally for testing. The
mutation gate sits in incrementMediaProgress; CleanAnimeList only
revalidates when the request actually went out.
|
| |
|
|
|
|
|
|
|
| |
Click + on a Due item now bumps progress locally and drops the row
if the bump catches the user up, with no upfront refresh. The mutation
fires in the background and triggers a single revalidate on response.
Also snapshot the resolved media to previousAnimeList on every render,
so refreshes from any path (countdown, interval, manual, post-increment)
show the prior list during pending instead of a placeholder.
|
| |
|
|
|
|
|
|
| |
Countdown timeout in CleanAnimeList and keyCacher interval in
DueAnimeList only reassigned their own animeLists, so an episode
airing on Upcoming never propagated to Due (and vice versa) until
a manual refresh. Bump revalidateAnime instead, so both panels
refresh through the shared reactive path.
|
| |
|
|
|
|
|
|
|
|
|
| |
Introduce --shadow-card, --shadow-card-emphasized, --shadow-cta,
--scrim, --scrim-soft, and --scrim-banner. Migrate 14 inline
literals (card.css, input.css, Notification, MediaRoulette, the
two Landing CTA buttons, the popup overlay, the palette and
roulette scrims, three identity banners, the user profile cover
art shadow) onto the tokens, with light/dark adaptation handled
by the existing prefers-color-scheme blocks instead of duplicated
inline. Two single-use Landing demo-focus values stay inline.
|
| |
|
|
|
|
| |
Showing "0" in the list title next to a "No anime/manga to display"
empty-state message duplicates information. Treat an empty media list
the same as dummy mode and suppress the count.
|
| |
|
|
|
|
|
|
| |
If a user's persisted filter references a custom list that no longer
exists on any media (renamed or deleted on AniList), the select falls
back to showing "All" but the underlying state still filters to an
empty set. Detect the stale value and reset it, clearing the StateBin
entry so the fix survives a reload.
|
| |
|
|
|
|
| |
Rouletting a single item is deterministic, so the affordance adds
nothing. Require at least two items before showing the button on both
anime and manga lists.
|
| |
|
|
|
|
| |
If every custom list contains every displayed media item, each option
yields the same result, so the picker is noise. Gate the select on a
reactive check that any list excludes at least one item.
|
| |
|
|
|
|
|
|
|
| |
Replaces one-shot boolean revalidateAnime with a counter store so
multiple components can subscribe without race conditions. Adds
revalidateManga store and reactive refresh blocks to DueAnimeList
and MangaListTemplate. Extracts shared invalidateListCaches function
used by both the command palette action and the debug settings button.
Renames palette item to "Refresh" and debug button to "Invalidate".
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|