kuekhaoyang
3771b63332
feat: add self-contained strict verification chain
...
Keep every post-59948b5 change inside verification/. The verifier owns its npm working directory and sanitized Docker context, so no release metadata or root Docker configuration is modified.
2026-08-02 06:11:13 +08:00
Kuek Hao Yang and GitHub
59948b5085
Merge pull request #231 from KuekHaoYang/agent/release-4.9.19
...
fix: ship self-hosted sync and image fallback (v4.9.19)
2026-07-31 23:19:17 +08:00
kuekhaoyang
f1a0086701
fix: harden sync and image fallback; release 4.9.19
2026-07-31 23:17:50 +08:00
kuekhaoyang
4983a9e2ab
Merge remote-tracking branch 'origin/pr-230' into agent/release-4.9.19
2026-07-31 23:08:41 +08:00
kuekhaoyang
3db31b4d80
Merge remote-tracking branch 'origin/pr-229' into agent/release-4.9.19
2026-07-31 23:08:41 +08:00
kuekhaoyang
c64458bd6d
Merge remote-tracking branch 'origin/pr-227' into agent/release-4.9.19
2026-07-31 23:08:41 +08:00
can4hou6joeng4
3bf72e4b66
fix(douban): 图片代理按镜像回退,修复境外部署海报大量 500
...
imgN.doubanio.com 互为镜像但解析到不同线路:img1 当前解析到国内 IP
180.97.198.41,在境外主机上不可达。此时 fetch 是直接抛异常而不是返回
状态码,于是走进 catch 一律返回 500,首页会有相当比例的海报加载失败。
改为在 imgN.doubanio.com 之间按 img9 -> img3 -> img2 顺序回退,同一
路径换个镜像即可取到。同时保留最后一次的真实状态码,不再把上游的 403
或 404 也统一伪装成 500。
2026-07-31 18:32:34 +08:00
can4hou6joeng4
b63f94fed4
fix(sync): 丢弃缺少 videoId 的同步记录,避免整页崩溃
...
服务端同步恢复回来的记录不保证结构完整(旧结构或半截写入)。缺少 videoId
的记录会让 HistoryItem.tsx:24 与 FavoritesItem.tsx:21 在渲染期拼播放地址
时对 undefined 调用 toString(),抛出未捕获异常。由于 getVideoUrl() 是在
渲染 href 时调用的,React 会直接卸载整棵树,首页白屏且刷新无效——该账号
只能靠直接改库才能恢复。
新增 lib/utils/sync-records.ts 做可渲染性判定(要求 videoId、source、
title 齐备),在云端拉取入口 useCloudSync 与 HistoryList / FavoritesList
各过滤一次:脏数据进不来,已经落库的也渲染不出来。
2026-07-31 18:28:35 +08:00
can4hou6joeng4
81c46d754e
fix(sync): 修复自托管下无法读取 Upstash 配置
...
app/api/user/{sync,config} 用 @upstash/redis/cloudflare 的
Redis.fromEnv() 创建客户端。该实现只读传入的 env 参数或 Cloudflare
全局绑定,从不回退到 process.env,因此在 Docker / Node 自托管下
url 与 token 恒为 undefined,两个接口必定返回 500,跨设备同步
(收藏、历史、设置)完全不可用。认证走的是 auth.ts 里的
new Redis({ url, token }),所以登录正常,只有用户数据读写失败。
把 auth.ts 中已有的双源回退抽成 lib/server/runtime-env.ts,Redis
客户端抽成 lib/server/redis.ts,两个路由改为惰性获取共享客户端。
惰性创建同时修正了另一个隐患:Cloudflare 的 per-request 绑定在
模块求值阶段不可达,而原先客户端是在模块作用域创建的。
未配置 Upstash 时返回 503 并给出明确说明,而不是当成请求失败。
Fixes #226
2026-07-31 10:12:40 +08:00
Kuek Hao Yang and GitHub
0675c28413
Merge pull request #225 from KuekHaoYang/agent/fix-issue-224-mobile-fullscreen
...
Fix mobile player controls so the system fullscreen action remains visible on narrow screens.
2026-07-29 22:40:33 +08:00
kuekhaoyang
0294f59602
fix: keep mobile fullscreen controls visible
2026-07-29 22:36:05 +08:00
Kuek Hao Yang and GitHub
46f6eee2a6
Merge pull request #222 from Troray/feature/ad-filter-upgrade
...
Harden M3U8 ad filtering and prevent false positives
2026-07-29 22:15:20 +08:00
kuekhaoyang
cdab3b1c8a
fix: harden M3U8 ad filtering
...
Reject unsafe dynamic filter execution, reduce heuristic false positives, add regression coverage, bump the app to 4.9.17, and update Next.js to the latest stable security patch.
2026-07-29 22:13:54 +08:00
Troray
c53801d3bf
feat(ad-filter): upgrade M3U8 ad filtering algorithm with dynamic script sandbox, zero false-positive framerate protections, and Edge API
2026-07-29 13:38:31 +08:00
Kuek Hao Yang and GitHub
6151edab4d
Merge pull request #221 from KuekHaoYang/agent/fix-issue-220-floating-button-resize
...
fix: keep floating buttons anchored on resize
2026-07-27 21:19:51 +08:00
kuekhaoyang
907f393e2f
fix: keep floating buttons anchored on resize
2026-07-27 21:13:08 +08:00
kuekhaoyang
1179148031
fix: avoid false-positive WebView transpile guard failures
...
Keep chrome69 downleveling for Android 9 WebViews, but only hard-fail on
logical assignment after transpile. Regex/polyfill feature detects and
minified ternaries can contain `??`/`?.` character sequences that are not
optional chaining or nullish coalescing operators.
2026-07-25 14:48:28 +08:00
kuekhaoyang
e04b306334
Merge branch 'goal/issues-217-218-pr-219'
...
Ship 4.9.15: #217 Android TV 9 white screen, #218 player UX, PR #219 ad fingerprinting (safely integrated).
2026-07-25 14:43:42 +08:00
kuekhaoyang
f98de077f7
fix: player UX, ad fingerprinting, Android TV 9 white screen
...
Address issues #217 #218 and integrate the useful parts of PR #219 without
regressions: stop player rebuild on episode reverse, grid/paged episodes,
poster placeholders, chrome69 client transpile for Amlogic WebView, and
duration-signature ad block detection while keeping interstitial/proxy filters.
Bump to 4.9.15.
2026-07-25 14:43:30 +08:00
Kuek Hao Yang and GitHub
c846c60d0c
Merge pull request #216 from ustdbus/codex/upstream-cloudflare-auth
...
fix: support managed Upstash auth on Cloudflare Pages
2026-07-21 20:53:36 +08:00
kuekhaoyang
2ad9203e39
chore: preserve lockfile platform metadata
2026-07-21 20:51:05 +08:00
kuekhaoyang
a1a3821538
fix: complete managed admin persistence
2026-07-21 20:50:34 +08:00
Codex
387da736e1
fix: cap PBKDF2 iterations for Cloudflare Workers
2026-07-20 16:13:52 +08:00
Codex
dd4b7c9f24
fix: authenticate environment admin before Redis hashing
2026-07-20 16:13:52 +08:00
Codex
b7e962b031
fix: read Cloudflare request environment
2026-07-20 16:13:51 +08:00
Codex
2a59e31cd4
fix: read admin password at runtime on Cloudflare
2026-07-20 16:13:51 +08:00
Codex
68d4fd944d
fix: sync managed admin password from environment
2026-07-20 16:13:51 +08:00
Codex
27d30139c1
fix: support Upstash Redis on Cloudflare Pages
2026-07-20 16:13:51 +08:00
Kuek Hao Yang and GitHub
8d558c79cf
Merge pull request #211 from KuekHaoYang/agent/fix-issue-210-search-latency
...
修复慢源搜索提前结束与延迟虚高
2026-07-13 21:15:17 +08:00
kuekhaoyang
66d8564dd2
fix issue 210 slow source search reliability
2026-07-13 21:09:47 +08:00
kuekhaoyang
2ae0a03366
ci build Docker architectures natively
2026-07-12 01:38:19 +08:00
kuekhaoyang
0f82ec5660
fix Docker version output step
2026-07-12 01:11:28 +08:00
kuekhaoyang
e135c6b084
ci publish versioned Docker images
2026-07-12 01:10:17 +08:00
kuekhaoyang
7474979308
merge issue 207 account actions fix
2026-07-12 01:03:03 +08:00
kuekhaoyang
7ae08e2d7d
fix issue 207 account actions visibility
2026-07-12 01:02:47 +08:00
kuekhaoyang
d6f2a2e3c7
fix login gate session loop
2026-07-09 17:39:46 +08:00
kuekhaoyang
db72a74817
Remove unused quick search component
2026-07-09 17:19:00 +08:00
kuekhaoyang
8c522119c0
Remove homepage quick search groups
2026-07-09 17:13:13 +08:00
kuekhaoyang
2bb70ca648
Fix tag management view entering search flow
2026-07-09 16:59:39 +08:00
kuekhaoyang
5a76958816
merge issue 204 auth sync fix
2026-07-09 16:34:16 +08:00
kuekhaoyang
610f57c5b0
fix auth sync requests after login
2026-07-09 16:33:44 +08:00
kuekhaoyang
d325603123
fix: support WebView 83 client assets
2026-07-09 16:07:57 +08:00
kuekhaoyang
bacd3f887e
Fix mobile danmaku canvas scaling
2026-07-09 15:48:38 +08:00
kuekhaoyang
93e6699937
fix: disable Vercel analytics outside Vercel
2026-07-09 15:07:34 +08:00
kuekhaoyang
89d1d7268b
chore: ignore Wrangler local state in Docker context
2026-07-08 23:39:47 +08:00
kuekhaoyang
47b691a097
chore: exclude generated TypeScript files from Docker context
2026-07-08 23:38:04 +08:00
kuekhaoyang
8ebc2ae009
chore: ignore Cloudflare build output in Docker context
2026-07-08 23:32:42 +08:00
kuekhaoyang
787680468b
feat: clarify proxy and add LAN access toggle
2026-07-08 23:28:25 +08:00
kuekhaoyang
0f39d65b75
fix: default homepage to popular tab
...
Ensure the homepage always opens on the 热门 tag instead of automatically selecting 为你推荐, even when viewing history exists or cached tags omit the popular tag.
Fixes #182
Fixes #190
2026-07-08 23:00:09 +08:00
kuekhaoyang
62dafbfe59
feat: add homepage category shortcuts
2026-07-08 22:34:29 +08:00