9414d3b51e
feat: use canonical episodes in watch data and wire episode service
2026-05-17 21:16:50 +02:00
c5ea265c46
feat: register episodes module in fx app
2026-05-17 21:16:44 +02:00
eb6bb3bbd4
feat: add episode service merge and broadcast tests
2026-05-17 21:16:39 +02:00
501dcb7d38
feat: add episode service with background refresh worker
2026-05-17 21:16:34 +02:00
daf4ec7923
feat: add episode availability querier interface methods
2026-05-17 21:16:19 +02:00
66333b335b
feat: add episode availability sql queries and generated code
2026-05-17 21:16:14 +02:00
cb143be35c
feat: add episode availability cache and provider mapping models
2026-05-17 21:16:09 +02:00
4126e56d69
feat: add episode domain types
2026-05-17 21:16:04 +02:00
dd2f7247f1
feat: add episode availability cache and provider mapping tables
2026-05-17 21:15:59 +02:00
9ba327d5c5
feat: add timeout and abort handling to command palette search
2026-05-17 20:38:08 +02:00
cf53ffdd77
feat: expand continue watching in command palette
2026-05-17 17:34:27 +02:00
66edd9c062
feat: replace quick search with command palette
2026-05-17 17:24:07 +02:00
0e5416aab3
feat: add reviews subpage with infinite scroll
2026-05-15 19:36:35 +02:00
59fb0ed7f8
feat: add statistics and themes lazy section dispatch
2026-05-15 19:36:27 +02:00
897d4a0c2e
feat: add formatDate template function and subdirectory glob support
2026-05-15 19:36:12 +02:00
ae64f39e2c
feat: add service implementations for staff, statistics, themes, reviews
2026-05-15 19:36:08 +02:00
df0aa52490
feat: add domain type aliases and service interface methods
2026-05-15 19:36:04 +02:00
4bd6e71e8c
fix: handle empty random anime response and improve surprise-me UX
2026-05-15 17:22:56 +02:00
0df43b6f51
feat: add HTMX-driven filter bar and browse fragments
2026-05-15 03:25:14 +02:00
88edf87178
fix: episode transition, progress save, and seek alignment
2026-05-15 02:22:43 +02:00
74e2aa50fd
feat: improve video seeking and range request handling
2026-05-15 01:39:29 +02:00
c8b189d0e7
feat: preserve fullscreen when autoplaying next episode
2026-05-15 00:24:05 +02:00
a47497f822
chore: go fixes
2026-05-14 13:38:42 +02:00
596e8265f7
refactor: remove noisy debug logging
2026-05-14 12:41:41 +02:00
eb173ac072
chore: formatting
2026-05-14 12:30:06 +02:00
b3c906a16e
fix: centralize watchlist dropdown js and fix page load timing
2026-05-13 19:05:10 +02:00
efbce87d5c
feat: set status to completed on anime completion
...
Check existing watchlist status — if already completed, just clear
progress and remove from continue watching. Otherwise upsert with
status 'completed'.
2026-05-13 18:28:33 +02:00
28e8b322d0
feat: add watch-complete endpoint
...
Removes continue_watching_entry and clears progress when the last
episode finishes so it no longer shows in Continue Watching.
2026-05-13 18:22:18 +02:00
6c45a80623
fix: pass watchlist status to anime detail page
...
Anime detail page never looked up or passed the user's watchlist
status, so the dropdown always showed 'Add to Watchlist'. Now
queries watch_list_entry and passes Status and WatchlistIDs.
2026-05-13 18:18:22 +02:00
413ee70923
feat: use saved progress for watch button on anime page
...
Check continue_watching_entry to find the episode to resume from.
Show 'Continue Episode N' instead of 'Watch Now' when progress exists.
2026-05-13 18:16:25 +02:00
89e0120ca6
feat: add GetContinueWatchingEntry to watchlist service
...
Expose continue watching entry lookup so other handlers can check
saved progress for an anime without needing the playback service.
2026-05-13 18:16:14 +02:00
b7f91f3b1b
feat: save progress to continue_watching_entry only
...
Replace SaveWatchProgress (UPDATE watch_list_entry) with
UpsertContinueWatchingEntry so progress persists for any anime
without creating watchlist entries.
2026-05-13 18:16:02 +02:00
a5b0aeca98
fix: fetch both sub and dub streams on watch page load
...
Previously the backend only fetched streams for the single requested
mode (defaulting to sub), so modeSources never had a dub entry.
The frontend's switchMode showed visual feedback but streamUrlForMode
returned an empty string since no dub token existed.
Now both modes are fetched and availableModes is derived from what
actually resolved.
2026-05-13 17:53:12 +02:00
b625f024f3
fix: allow static and dist paths to bypass auth middleware
2026-05-13 16:04:50 +02:00
9077dbbfcf
fix: remove unused os import in database.go
2026-05-13 15:55:58 +02:00
239957d261
fix: use DATABASE_FILE env var consistently and update Dockerfile
2026-05-13 15:55:19 +02:00
6f1b4db4f5
fix: enforce authentication by redirecting unauthenticated users to login
2026-05-13 15:23:37 +02:00
3f6da13299
fix: remove explicit transaction from migration 012
...
Goose wraps each migration in a transaction automatically.
Explicit BEGIN TRANSACTION/COMMIT caused a nested transaction
error in SQLite.
2026-05-13 13:46:44 +02:00
e7dfaaf8c0
chore: format with prettier
2026-05-13 13:36:22 +02:00
846fe9ccd9
feat: add proxy transport with dns caching, subtitle handler, and stream pre-warm
2026-05-13 13:35:27 +02:00
8006868fe2
fix: improve video title matching and segments null error
2026-05-13 13:23:54 +02:00
ff15a82f10
fix: watchlist 500 from missing UUID and toast classList error
2026-05-13 13:10:04 +02:00
14b7668afa
chore: formatting
2026-05-13 13:01:39 +02:00
0f8d1c7dc0
fix: lint warnings - errcheck and switch style
2026-05-13 12:59:37 +02:00
cca1f0c68d
chore: remove unreachable worker package
2026-05-13 12:56:45 +02:00
ec664a6d07
chore: remove unreachable auth middleware and context package
2026-05-13 12:54:16 +02:00
10295a239f
chore: remove unreachable middleware package
2026-05-13 12:52:37 +02:00
a99b8b3844
chore: remove unreachable functions
2026-05-13 12:51:47 +02:00
c814e1d391
fix: align template data keys with template expectations
2026-05-13 12:49:56 +02:00
862961d262
feat: add ResolveProxyToken to PlaybackService interface
2026-05-13 12:43:39 +02:00