truewhile
67b85840dc
perf(strm): 优化 OpenList 元数据下载速度 ( #15 )
...
* Add favourite buttons to library list and series detail pages
Co-authored-by: truewhile <truewhile@users.noreply.github.com >
* Fix favourites list for remote Emby mounted media
Co-authored-by: truewhile <truewhile@users.noreply.github.com >
* Route favourites to library series detail when appropriate
Co-authored-by: truewhile <truewhile@users.noreply.github.com >
* Fix favourites link to library series for remote anime paths
Co-authored-by: truewhile <truewhile@users.noreply.github.com >
* Fix remote Emby playback history and continue watching
- Preserve duration_ms when web player reports duration=0
- Add GET /playback/:id/resume for reliable per-item resume
- Switch home continue watching to /watch-history/continue API
- Set library_id on remote media for play-profile visibility
- Keep continue-watching rows when remote metadata hydration fails
Co-authored-by: truewhile <truewhile@users.noreply.github.com >
* Fix mobile sort dropdown overflowing off-screen
Align dropdown to button left edge on small screens and cap width
to viewport so sort options stay fully visible on mobile.
Co-authored-by: truewhile <truewhile@users.noreply.github.com >
* Remove stale Windows binary backup files
Co-authored-by: truewhile <truewhile@users.noreply.github.com >
* Fix STRM account edit form not echoing saved config
Return config_preview from account API for server/url/username and
secret flags. Merge partial config updates so empty password/token
fields do not wipe stored credentials.
Co-authored-by: truewhile <truewhile@users.noreply.github.com >
* perf(strm): speed up OpenList metadata downloads with provider-aware concurrency
- Split download semaphore: 115 stays capped at 3 for WAF safety; OpenList/CloudDrive2
WebDAV metadata uses strm.download_threads (default raised to 6, max 16)
- Scope 115 WAF cooldown to 115 tasks only so OpenList downloads are not paused
- Requeue claimed tasks back to pending when slot acquisition fails or 115 is cooling
- Add tests for separate semaphores and requeue behavior
Co-authored-by: truewhile <truewhile@users.noreply.github.com >
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com >
Co-authored-by: truewhile <truewhile@users.noreply.github.com >
2026-09-02 15:15:49 +08:00
..
2026-09-01 23:16:11 +08:00
2026-08-28 18:28:09 +08:00
2026-08-20 22:31:00 +08:00
2026-08-20 22:31:00 +08:00
2026-08-20 22:09:04 +08:00
2026-08-21 00:06:49 +08:00
2026-08-21 00:06:49 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-06-24 21:30:44 +08:00
2026-08-24 17:40:43 +08:00
2026-06-27 11:38:13 +08:00
2026-08-24 17:40:43 +08:00
2026-09-01 18:55:05 +08:00
2026-09-01 23:16:11 +08:00
2026-08-24 17:40:43 +08:00
2026-05-15 10:58:32 +00:00
2026-08-24 17:00:18 +08:00
2026-09-01 23:16:11 +08:00
2026-09-01 23:16:11 +08:00
2026-09-01 23:16:11 +08:00
2026-08-25 16:39:47 +08:00
2026-09-01 23:16:11 +08:00
2026-08-28 16:27:11 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-05-30 13:02:16 +08:00
2026-08-24 17:40:43 +08:00
2026-06-27 13:01:22 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:00:18 +08:00
2026-08-24 17:40:43 +08:00
2026-09-01 13:53:15 +08:00
2026-08-24 17:40:43 +08:00
2026-09-01 23:16:11 +08:00
2026-08-24 17:40:43 +08:00
2026-06-24 11:59:18 +08:00
2026-09-01 23:16:11 +08:00
2026-06-24 11:59:18 +08:00
2026-08-24 17:40:43 +08:00
2026-08-29 22:16:21 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-09-01 22:43:30 +08:00
2026-09-01 23:16:11 +08:00
2026-09-01 23:16:11 +08:00
2026-09-02 11:19:56 +08:00
2026-09-02 11:19:56 +08:00
2026-09-01 23:16:11 +08:00
2026-09-01 21:24:55 +08:00
2026-09-02 15:15:49 +08:00
2026-09-02 11:19:56 +08:00
2026-06-24 11:59:18 +08:00
2026-08-25 22:54:46 +08:00
2026-08-25 22:54:46 +08:00
2026-07-03 02:55:33 +08:00
2026-08-24 17:40:43 +08:00
2026-08-25 00:26:32 +08:00
2026-09-01 13:53:15 +08:00
2026-09-01 23:16:11 +08:00
2026-09-01 23:16:11 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-06-26 13:50:53 +08:00
2026-06-26 13:50:53 +08:00
2026-06-25 07:22:00 +08:00
2026-08-23 22:12:32 +08:00
2026-07-03 02:55:33 +08:00
2026-08-24 17:40:43 +08:00
2026-08-29 22:16:21 +08:00
2026-09-01 23:16:11 +08:00
2026-06-25 02:33:30 +08:00
2026-06-25 02:33:30 +08:00
2026-09-01 23:16:11 +08:00
2026-08-29 22:16:21 +08:00
2026-06-27 13:22:46 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-05-30 12:07:35 +08:00
2026-05-30 12:01:46 +08:00
2026-05-30 12:07:35 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-09-01 23:16:11 +08:00
2026-08-25 14:12:59 +08:00
2026-08-21 22:21:14 +08:00
2026-06-24 11:59:18 +08:00
2026-08-24 17:00:18 +08:00
2026-08-24 17:40:43 +08:00
2026-08-21 22:21:14 +08:00
2026-08-24 17:40:43 +08:00
2026-09-01 23:16:11 +08:00
2026-08-24 17:40:43 +08:00
2026-06-24 15:02:48 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-06-26 15:20:38 +08:00
2026-07-03 02:55:33 +08:00
2026-07-03 02:55:33 +08:00
2026-08-26 23:32:02 +08:00
2026-08-26 23:32:02 +08:00
2026-07-03 02:55:33 +08:00
2026-06-26 15:20:38 +08:00
2026-07-03 02:55:33 +08:00
2026-08-27 23:40:12 +08:00
2026-08-24 17:40:43 +08:00
2026-09-01 23:16:11 +08:00
2026-08-24 17:40:43 +08:00
2026-09-02 01:39:28 +00:00
2026-06-26 14:35:13 +08:00
2026-07-15 20:45:24 +08:00
2026-08-23 22:12:32 +08:00
2026-08-24 17:40:43 +08:00
2026-07-15 20:45:24 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-08-27 23:40:12 +08:00
2026-08-28 22:20:01 +08:00
2026-09-02 01:39:28 +00:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-07-02 20:36:45 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-08-26 12:52:10 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-09-02 01:39:28 +00:00
2026-08-24 17:40:43 +08:00
2026-06-11 11:25:43 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-07-15 20:45:24 +08:00
2026-08-21 00:06:49 +08:00
2026-08-21 00:06:49 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-06-27 09:42:52 +08:00
2026-08-24 17:40:43 +08:00
2026-08-20 15:43:39 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-08-23 22:12:32 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-07-15 20:45:24 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-06-30 20:18:02 +08:00
2026-08-20 15:43:39 +08:00
2026-08-10 19:16:12 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-09-01 23:16:11 +08:00
2026-06-30 20:18:02 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:00:18 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-06-27 09:21:51 +08:00
2026-08-26 12:52:10 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-08-20 15:43:39 +08:00
2026-08-20 15:43:39 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:00:18 +08:00
2026-08-20 22:09:04 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-06-24 11:59:18 +08:00
2026-08-24 17:40:43 +08:00
2026-06-14 23:17:52 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-09-02 15:15:49 +08:00
2026-09-02 15:15:49 +08:00
2026-08-24 17:40:43 +08:00
2026-05-28 14:52:20 +08:00
2026-06-07 21:34:21 +08:00
2026-05-28 14:52:20 +08:00
2026-06-24 19:26:32 +08:00
2026-08-24 17:40:43 +08:00
2026-06-28 12:15:10 +08:00
2026-06-28 12:15:10 +08:00
2026-06-28 12:15:10 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-09-01 23:16:11 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-07-16 13:33:31 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-06-24 11:59:18 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-08-20 20:52:34 +08:00
2026-08-26 12:52:10 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-08-23 22:12:32 +08:00
2026-08-24 17:40:43 +08:00
2026-09-01 23:16:11 +08:00
2026-08-24 17:40:43 +08:00
2026-06-26 14:54:26 +08:00
2026-08-24 17:40:43 +08:00
2026-08-23 22:12:32 +08:00
2026-09-01 18:55:05 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-06-24 11:59:18 +08:00
2026-07-15 20:45:24 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-08-10 19:16:12 +08:00
2026-08-24 17:40:43 +08:00
2026-07-15 20:45:24 +08:00
2026-08-24 17:40:43 +08:00
2026-08-23 22:12:32 +08:00
2026-08-24 17:40:43 +08:00
2026-07-15 20:45:24 +08:00
2026-08-24 17:40:43 +08:00
2026-08-27 23:40:12 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-09-01 14:22:52 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-06-11 11:25:43 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-09-01 23:16:11 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-09-01 23:16:11 +08:00
2026-08-24 17:40:43 +08:00
2026-06-27 03:47:02 +08:00
2026-06-27 03:47:02 +08:00
2026-08-24 17:40:43 +08:00
2026-06-27 03:47:02 +08:00
2026-08-24 17:00:18 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-09-01 16:26:25 +08:00
2026-06-26 15:37:38 +08:00
2026-09-01 23:16:11 +08:00
2026-08-25 23:19:07 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-06-26 15:37:38 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-09-02 15:15:49 +08:00
2026-08-29 22:16:21 +08:00
2026-09-02 15:15:49 +08:00
2026-09-02 15:15:49 +08:00
2026-09-02 15:15:49 +08:00
2026-09-01 14:22:52 +08:00
2026-08-27 15:42:00 +08:00
2026-08-19 21:36:35 +08:00
2026-08-25 00:26:32 +08:00
2026-09-01 23:16:11 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-09-02 01:59:48 +00:00
2026-09-02 01:59:48 +00:00
2026-08-24 17:00:18 +08:00
2026-06-27 08:57:39 +08:00
2026-08-20 15:43:39 +08:00
2026-08-20 15:43:39 +08:00
2026-06-24 11:59:18 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-07-15 20:45:24 +08:00
2026-06-26 20:00:42 +08:00
2026-06-26 20:00:42 +08:00
2026-06-26 20:00:42 +08:00
2026-07-15 20:45:24 +08:00
2026-08-27 23:40:12 +08:00
2026-07-15 20:45:24 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-08-20 15:43:39 +08:00
2026-06-27 02:42:42 +08:00
2026-08-24 17:40:43 +08:00
2026-08-24 22:16:31 +08:00
2026-08-20 15:43:39 +08:00
2026-07-02 18:38:26 +08:00
2026-08-30 21:40:58 +08:00
2026-05-14 15:26:29 +00:00
2026-08-24 17:40:43 +08:00
2026-08-24 17:40:43 +08:00
2026-05-14 15:26:29 +00:00