aboutsummaryrefslogtreecommitdiff
path: root/src/lib
Commit message (Collapse)AuthorAgeFilesLines
* fix(user): pass actual description to badge preview alt textFuwn2026-04-181-1/+1
| | | | | | | | | | The ParallaxImage alternativeText prop was passed as the literal string "selectedBadge.description" (quoted attribute syntax) instead of the expression, so every badge image rendered with that identifier name as its alt text. Switch to the expression form with a nullish-coalescing fallback so badges without a description render empty alt rather than the literal.
* fix(schedule): stop duplicating first page in season paginationFuwn2026-04-181-37/+18
| | | | | | | | | | | | | The seasonal schedule collector pushed page 1 outside the while-loop, then re-pushed the current page on every loop iteration. That meant every multi-page season duplicated its first page's media, and the same bug ran a second time when includeLastSeason was set. Restructure into a shared collectAllSchedulePages helper with a single push-then-check-hasNextPage loop, so each page is pushed exactly once. Verified against AniList for SPRING 2026 with includeLastSeason=true: 210 media, 0 duplicates.
* fix(utility): treat .localhost subdomains as private in appOriginFuwn2026-04-181-0/+1
|
* fix(ui): hide list count badge when no media is displayedFuwn2026-04-172-2/+2
| | | | | | 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.
* fix(ui): reset media list filter when its custom list disappearsFuwn2026-04-172-0/+20
| | | | | | | | 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.
* fix(ui): hide follow-fix toggle link until a username is enteredFuwn2026-04-171-3/+5
| | | | | | Previously the link rendered "Toggle follow for ..." and was clickable with an empty submission. Only render once the input has content so there is no dead affordance.
* fix(ui): hide media roulette button when only one item is pickableFuwn2026-04-172-2/+2
| | | | | | 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.
* fix(ui): hide media list filter when every list matches "All"Fuwn2026-04-172-2/+10
| | | | | | 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.
* feat(cache): instant list revalidation from command palette and debug menuFuwn2026-04-159-51/+100
| | | | | | | | | 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".
* feat(command-palette): add clear anime and manga list caches actionFuwn2026-04-151-0/+23
|
* fix(settings): clarify data saver checkboxFuwn2026-04-024-0/+6
|
* feat(settings): add checkbox tooltipsFuwn2026-04-021-0/+5
|
* fix(ui): stop roulette at intended durationFuwn2026-04-021-1/+2
|
* fix(ui): correct manga list tooltip behaviorFuwn2026-04-022-2/+8
|
* fix(ui): polish media list title separatorsFuwn2026-04-021-0/+8
|
* fix(ui): align media list title timingsFuwn2026-04-021-2/+3
|
* fix(ui): refine media list title countsFuwn2026-04-021-4/+17
|
* feat(debug): add media list timing toggleFuwn2026-04-025-1/+10
|
* revert(ui): remove april fools executive modeFuwn2026-04-027-114/+30
|
* feat(ui): add april fools executive modeFuwn2026-04-017-30/+114
|
* fix(manga): show skeleton while list is loadingFuwn2026-03-301-1/+1
|
* perf(manga): progressively hydrate native chapter countsFuwn2026-03-293-15/+123
|
* fix(anilist): restore completed list query semanticsFuwn2026-03-283-5/+5
|
* fix(state): restore persisted list UI stateFuwn2026-03-281-2/+3
|
* fix(filters): apply list filter changes immediatelyFuwn2026-03-282-8/+16
|
* fix(cache): restore instant filters and shared AniList cacheFuwn2026-03-284-12/+30
|
* fix(anilist): restore completed list filtersFuwn2026-03-285-26/+61
|
* fix(anilist): fall back to persisted media list cacheFuwn2026-03-281-0/+56
|
* fix(anilist): avoid leaking settings subscriptionsFuwn2026-03-281-4/+1
|
* fix(manga): avoid poisoning native chapter cacheFuwn2026-03-281-7/+37
|
* fix(notifications): stabilize browser subscription identityFuwn2026-03-281-15/+10
|
* fix(notifications): support per-device push subscriptionsFuwn2026-03-282-4/+39
|
* fix(cache): preserve hydrated client stateFuwn2026-03-281-1/+5
|
* fix(preferences): preserve partial preference updatesFuwn2026-03-281-44/+26
|
* fix(auth): ignore malformed user cookiesFuwn2026-03-283-3/+43
|
* fix(cache): respect AniList media list recache windowsFuwn2026-03-287-55/+136
|
* feat(manga): allow forcing automatic refreshFuwn2026-03-281-1/+5
|
* style(ci): format supabase server clientFuwn2026-03-271-1/+2
|
* fix(ci): fall back to anon key during build analysisFuwn2026-03-271-1/+6
|
* fix(supabase): use dynamic private env for service roleFuwn2026-03-271-2/+2
|
* fix(manga): restore progress-based volume recommendationsFuwn2026-03-271-0/+1
|
* fix(proxy): improve native manga chapter countsFuwn2026-03-272-38/+101
|
* refactor(supabase): move app access to service roleFuwn2026-03-279-14/+19
|
* refactor(proxy): move manga chapter counts behind indexed cacheFuwn2026-03-273-235/+270
|
* fix(actions): resolve quality and trigger deploy driftFuwn2026-03-221-5/+7
|
* fix: restore landing visibility without blocking lazy loadsFuwn2026-03-221-16/+29
|
* perf: fetch dummy media outside the app bundleFuwn2026-03-222-8/+21
|
* perf: lazy-load authenticated list surfacesFuwn2026-03-222-56767/+0
|
* refactor: isolate last activity fetch pathFuwn2026-03-222-1/+72
|
* perf: lazy-load landing demo sectionsFuwn2026-03-223-15/+108
|