Commit Graph

  • d12ff79d29 Add animekai source with 1anime direct-MP4 backend (independent CDN) master jozamudi 2026-09-29 18:35:22 +00:00
  • e3ef51d141 Stop spamming upstream: drop video download from probe, kill re-rolls jozamudi 2026-09-29 17:33:54 +00:00
  • 1154203569 CDN probe: skip while idle, back off while degraded jozamudi 2026-09-29 17:23:18 +00:00
  • 0cd79dd701 Decode MegaPlay's encrypted getSourcesNew payload jozamudi 2026-09-29 17:17:33 +00:00
  • 731f44b99c watched: single DONE_RATIO source constant replaces the seven hardcoded 0.95 literals jozamudi 2026-09-21 01:41:44 +00:00
  • 5f7aa010f1 status: consolidate the pill to one dot + one word; upgrade the panel cdn-status-consolidation jozamudi 2026-09-21 00:10:10 +00:00
  • 778bf2bfc1 status: consolidate CDN/upstream status into the header pill + tap panel jozamudi 2026-09-20 23:53:47 +00:00
  • 63a677f028 remove docs/CHANGES-2026-09.md: one-off audit-batch record, every fix already in the git log with explanatory commits; drop its mention from SPEC milestones jozamudi 2026-09-20 23:40:26 +00:00
  • de0bf8b156 remove PLAN.md: one-shot planning record for a shipped bundle; its content is superseded by git log + docs/CHANGES-2026-09.md jozamudi 2026-09-20 23:37:20 +00:00
  • 66a0bb16e6 remove ani-web.service: no code or docs reference the systemd unit jozamudi 2026-09-20 23:36:28 +00:00
  • 2fb3743b3b remove unused files: 3.6MB curl-impersonate tarball (covered by *.tar.gz gitignore, nothing references it) and the vendored ani-cli v5.0.0 script (upstream's, not used by this project) jozamudi 2026-09-20 23:36:24 +00:00
  • 816e945018 docs: slim README to what it uniquely owns (run, features, dev commands); implementation detail already lived in SPEC.md — moved the two stragglers (anidb self-check, cache-busting) over jozamudi 2026-09-20 23:34:32 +00:00
  • cea04a20f6 player: fullscreen button (scales with the window) jozamudi 2026-09-19 00:11:45 +00:00
  • 379f591180 history: flag rows whose slug no longer means the same anime jozamudi 2026-09-18 23:25:35 +00:00
  • 0f6bd0a52a docs: sync README + SPEC with the shipped reality jozamudi 2026-09-16 21:14:26 +00:00
  • 4aca78cab8 docs(db): legacy JSON files are deletable once tables are populated: the on-disk copies of users/history/searches were verified superseded by SQLite and removed; the docstring claimed they were kept as a snapshot jozamudi 2026-09-16 21:14:26 +00:00
  • cbfb2f96c8 pin exact dependency versions: curl_cffi impersonation churn must never update silently jozamudi 2026-09-16 02:41:25 +00:00
  • d02cb017d3 gate live-upstream browser e2e behind ANIWEB_LIVE_TESTS=1: provider rotation/takedowns were turning the suite red for non-regressions; default suite is hermetic (33 tests) again jozamudi 2026-09-16 02:41:25 +00:00
  • 882263d276 login POST now requires the X-Aniweb header: cross-site forced-login (attacker-form session swap) dies at the 403; login.html sends the header like the SPA jozamudi 2026-09-16 02:41:25 +00:00
  • 3e5c7062ab login: per-source-IP failure budget (auth.py) — username rotation no longer dodges the lockout; sliding window, XFF trusted only behind the proxy (ANIWEB_TRUST_XFF); lockout logic now unit-testable (tests/test_auth.py) jozamudi 2026-09-16 02:31:23 +00:00
  • c5c4dff851 Pin dependencies (full env freeze): curl_cffi/curl-impersonate churn breaks impersonation silently jozamudi 2026-09-16 02:06:56 +00:00
  • 7f531fc309 CSRF header check now covers /login (exemption removed); login.html sends X-Aniweb jozamudi 2026-09-16 02:02:09 +00:00
  • b70ef403a9 Lockout -> server/auth.py + per-IP failure budget (XFF trusted only behind the proxy); unit tests jozamudi 2026-09-16 01:31:40 +00:00
  • 826ee9165d run.sh: PID-file restart; pkill fallback scoped to :8321 so test servers on :8399 are never hit jozamudi 2026-09-16 00:56:48 +00:00
  • 673aca827f login: sync def so the 0.5s brute-force sleep runs on the threadpool, not the event loop (+latency regression test) jozamudi 2026-09-16 00:49:22 +00:00
  • 9a4b8fb299 Docs: audit fix batch plan (sync login, scoped restart, per-IP budget, login CSRF, pinned deps) jozamudi 2026-09-16 00:43:02 +00:00
  • d90b1af8d6 Fix episode position logging/resume: NaN savePos, clobber-on-boot, unvalidated history writes jozamudi 2026-09-14 00:54:31 +00:00
  • 7444e29592 Keep hianime alive across server rotation: try every listed server jozamudi 2026-09-08 22:16:38 +00:00
  • 65da3e848f Prefer the English caption track (label-based, not first-track) jozamudi 2026-09-07 03:01:38 +00:00
  • 5b8170ece0 Subtitles: wire hianime's external .vtt into the player jozamudi 2026-09-07 02:46:28 +00:00
  • 834ca80a8c Provider layer + hianime source (primary) jozamudi 2026-09-07 01:38:53 +00:00
  • ff8311c1a8 Status pill + git-SHA asset versioning jozamudi 2026-09-03 16:33:51 +00:00
  • 3f715434f0 PWA + test: manifest, icon, live-search test (were left uncommitted) jozamudi 2026-09-03 16:33:51 +00:00
  • 67274aed7d Docs: last two stale storage refs in SPEC (JSON -> SQLite) jozamudi 2026-09-01 21:25:30 +00:00
  • 14bdb04ef6 Docs: sync with reality jozamudi 2026-09-01 21:25:13 +00:00
  • 0315356f89 iOS root cause: start playback on BUFFER_APPENDED, not canplay jozamudi 2026-08-31 21:01:26 +00:00
  • daac8d5256 JSV constant: 12 -> 13 (was left behind; stale-cache detection depends on it) jozamudi 2026-08-31 20:56:08 +00:00
  • aaaf8e9308 iPhone: full client timeline + self-diagnosing watchdog jozamudi 2026-08-31 20:53:18 +00:00
  • aba266ee4b iPhone: step probes + full hls.js error stream to server jozamudi 2026-08-31 20:48:02 +00:00
  • 3df074a5fe hls.js: 10s -> 30s segment load cap (iPhone FragLoadTimeout) jozamudi 2026-08-31 20:32:40 +00:00
  • 5268e77d00 events: accept client-fail + play-probe types (was 422) jozamudi 2026-08-31 20:22:53 +00:00
  • 66a6ed5d93 play-probe: include JS version (detect stale-cache phones) jozamudi 2026-08-31 20:12:50 +00:00
  • c7f5ad4c7a play-probe: report branch + browser capabilities on every play attempt jozamudi 2026-08-31 20:05:34 +00:00
  • be47ced521 Report client fingerprint on playback failure jozamudi 2026-08-31 19:57:57 +00:00
  • 8f6d4dcf77 Mobile audit fixes: iOS input auto-zoom + tap delay jozamudi 2026-08-31 19:40:07 +00:00
  • 9b90be3a10 Player: native-HLS fallback + visible stream errors jozamudi 2026-08-31 19:26:53 +00:00
  • 733fa673c2 Player: buffering visuals — spinner ring, buffer-ahead gauge, CDN chip jozamudi 2026-08-31 15:37:06 +00:00
  • a61e7dd0e7 GET /api/cdn: probe status endpoint (public, read-only) jozamudi 2026-08-31 15:23:36 +00:00
  • eea538ab17 Background CDN probe: log throughput + state flips every 3 min jozamudi 2026-08-31 15:17:20 +00:00
  • 4c5dbab4b0 Proxy: 16 parallel lanes (was 4), like yt-dlp -N 16 jozamudi 2026-08-31 15:00:21 +00:00
  • ee2a888aca Proxy: fetch segments across 4 parallel byte-range lanes jozamudi 2026-08-31 14:51:55 +00:00
  • 2576546b43 hls.js: drop segment load cap 30s -> 10s jozamudi 2026-08-31 14:10:11 +00:00
  • 07554e4aa8 Playback page: show 'E{n} — episode title' line under the video jozamudi 2026-08-31 02:05:00 +00:00
  • 8840a883c0 Cache-bust app.js/style.css from index.html (?v=2) jozamudi 2026-08-31 01:58:55 +00:00
  • aeab72162e Episode grid: move names out of the button into the tooltip jozamudi 2026-08-31 01:55:10 +00:00
  • 343628a2e3 Episode names: render MAL titles on the episode grid jozamudi 2026-08-31 01:52:38 +00:00
  • d60524815f hls.js: put retry budget where 1.5.x actually reads it jozamudi 2026-08-31 01:22:22 +00:00
  • 83a2953a1c Proxy: log slow segment transfers (TTFB>3s or total>8s) jozamudi 2026-08-31 01:16:38 +00:00
  • 19bc2afb32 Proxy: stream HLS segments through instead of buffering jozamudi 2026-08-31 01:05:00 +00:00
  • 27de918cb0 Intro skip: parse Jikan v4's actual response shape jozamudi 2026-08-31 00:24:37 +00:00
  • eb5082bd3b Player: defer play() to canplay; friendly tap-to-play fallback jozamudi 2026-08-30 21:20:39 +00:00
  • 0613cf7e27 Intro skip: MAL timings via keyless Jikan + player button jozamudi 2026-08-30 21:01:24 +00:00
  • c2461f8fba UI/UX polish: a11y, player controls, undo, stats ranges jozamudi 2026-08-30 20:53:55 +00:00
  • 8f519b0251 hls.js: outlast CDN segment stalls (TTFT 5s->15s, 8 retries) jozamudi 2026-08-30 19:25:49 +00:00
  • e361f0ba0e Autoplay: playsinline + non-fatal tap-to-play fallback jozamudi 2026-08-30 19:19:56 +00:00
  • 71a4055e89 Save watch position on fatal player error; make failure test CDN-independent jozamudi 2026-08-30 18:48:52 +00:00
  • 0fd06f036a Playback: retry flaky upstream, faster proxy fail, cache /stream in browser jozamudi 2026-08-30 17:23:57 +00:00
  • 36be7d0a02 Stats: fix month-label placement, back to orange jozamudi 2026-08-26 19:18:39 +00:00
  • 0afd27d4d2 Stats: match GitHub's contribution-graph look jozamudi 2026-08-26 19:14:00 +00:00
  • 20a90a587e Stats: fix month-label alignment on the heatmap jozamudi 2026-08-26 19:09:17 +00:00
  • 7474d353cd run.sh: actually restart the server jozamudi 2026-08-26 18:36:52 +00:00
  • 27c3783f77 Home: move heatmap above 'Recently finished' jozamudi 2026-08-25 21:18:13 +00:00
  • 2f68218a8f Home: declutter (keep hero, board, heatmap) jozamudi 2026-08-25 21:13:32 +00:00
  • 59df3c37c8 Home: watch-time heatmap in the stats area jozamudi 2026-08-25 21:10:22 +00:00
  • df8307bf49 Stats: heatmap to GitHub scale (365 days + month labels) jozamudi 2026-08-25 19:52:10 +00:00
  • 7b670cff24 Stats: GitHub-style watch-time heatmap jozamudi 2026-08-24 22:24:16 +00:00
  • 7d9fab6bd9 Home: stats + history widgets inline jozamudi 2026-08-24 22:18:23 +00:00
  • bb825a3acb Home: status board instead of a feed jozamudi 2026-08-24 20:09:39 +00:00
  • 1de58629a0 UX: remember sub/dub + filler toggle, hero time-left, next-ep CTA, history filter chips, per-ep progress bars, stats in user menu jozamudi 2026-08-24 17:38:11 +00:00
  • 1be3f4f307 Stats UI: per-anime progress rows, status chips, on-hold, streak, detail line jozamudi 2026-08-24 17:30:01 +00:00
  • 2f373b9bba Add per-user stats: play/error events + /api/stats + ?stats page jozamudi 2026-08-24 17:09:27 +00:00
  • 202bfa41c3 storage: JSON files -> SQLite (users/history/searches/events) jozamudi 2026-08-24 16:02:27 +00:00
  • 2c0ee8eae3 ui: center player overlay buttons (scope hero's align-self to .hero-body) jozamudi 2026-08-24 16:02:27 +00:00
  • 3f8c387a48 fix: only surface tap-to-play on NotAllowedError (autoplay block) jozamudi 2026-08-24 02:54:40 +00:00
  • db715be54b fix: blocked autoplay left 'Loading…' parked over unreachable controls jozamudi 2026-08-24 02:51:05 +00:00
  • aae5857dba harden: stream-token host allowlist (SSRF), CSRF header on mutating routes, atomic JSON writes jozamudi 2026-08-23 23:22:09 +00:00
  • d39ee838ff api: dedup ghost history rows (int vs string ep_id); normalize ep_id on write jozamudi 2026-08-23 21:29:01 +00:00
  • 8f57593002 ui: remove click-to-play overlay; native play button covers autoplay-block jozamudi 2026-08-23 21:29:01 +00:00
  • 2752d49411 fix: "view all" link pointed at /history path (404); use ?history query jozamudi 2026-08-23 21:28:24 +00:00
  • 50d30a8d3f ui: default to sub (jpn) instead of dub for playback jozamudi 2026-08-23 21:28:24 +00:00
  • d6bf7e149b docs: README feature walkthrough with screenshots; css: .active wins over .nextup jozamudi 2026-08-19 20:23:39 +00:00
  • 29fab7ff5f tests: refactor to pytest (conftest session fixture, sync wrappers for async, importorskip for playwright) jozamudi 2026-08-19 18:59:48 +00:00
  • bb1297f8e2 ui: watched-episode state (dimmed + check, next-up highlight), favicon jozamudi 2026-08-19 18:49:29 +00:00
  • 98fb4e5461 features: auto-next w/ 5s countdown, prev/next, playback speed, hide fillers, recent searches jozamudi 2026-08-19 18:41:13 +00:00
  • 9fdf3944fc ui: mobile polish — compact hero row, cropped history posters, wider search, tab ellipsis, header z-index jozamudi 2026-08-19 18:26:22 +00:00
  • 2ec0f8a034 ui: loading states, player failure overlay + retry, toasts, back nav, full history page with delete jozamudi 2026-08-19 18:20:42 +00:00
  • 19e878800c perf: keep-alive upstream sessions, TTL cache on upstream data, /stream LRU, cache hls.min.js jozamudi 2026-08-19 17:46:17 +00:00
  • ca86daf9a6 api: Cache-Control no-store on /api/history (mutable JSON must not be cached) jozamudi 2026-08-19 17:38:04 +00:00
  • 0a86e70a54 fix: backfill posters for ALL history entries; skip <img> when no poster jozamudi 2026-08-19 17:32:58 +00:00
  • 2b7eb4cdd1 tests: fix rAF-stall flakes in headless chromium; login form submits on Enter jozamudi 2026-08-19 17:17:36 +00:00