101 Commits
Author SHA1 Message Date
kuekhaoyang f1a0086701 fix: harden sync and image fallback; release 4.9.19 2026-07-31 23:17:50 +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
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
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
kuekhaoyang 907f393e2f fix: keep floating buttons anchored on resize 2026-07-27 21:13:08 +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
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
kuekhaoyang 66d8564dd2 fix issue 210 slow source search reliability 2026-07-13 21:09:47 +08:00
kuekhaoyang d6f2a2e3c7 fix login gate session loop 2026-07-09 17:39:46 +08:00
kuekhaoyang 610f57c5b0 fix auth sync requests after login 2026-07-09 16:33:44 +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 787680468b feat: clarify proxy and add LAN access toggle 2026-07-08 23:28:25 +08:00
kuekhaoyang dedf496761 fix: hide cursor during fullscreen playback 2026-07-08 22:12:34 +08:00
kuekhaoyang a5f9293658 Fix managed auth force mode 2026-07-08 21:36:06 +08:00
edison0817andGitHub 0111318f30 Update auth.ts
add开启托管账户环境变量
2026-06-03 13:33:43 +08:00
kuekhaoyang eef52c751c Make source badges numeric only 2026-04-16 16:41:37 +08:00
kuekhaoyang 49951c67ef Fix source resolution badge probing 2026-04-16 16:31:17 +08:00
kuekhaoyang 19e9707041 Fix managed auth and source list regressions 2026-04-15 23:04:41 +08:00
kuekhaoyang 833077a1f6 fix(cloudflare): remove node-only site icon route 2026-04-12 12:23:03 +08:00
kuekhaoyang 4fb718f8d8 feat(settings): add version and update status 2026-04-12 11:57:38 +08:00
kuekhaoyang 727fc2b0ed fix(docker): make the site icon configurable at runtime
Add SITE_ICON_FILE and SITE_ICON_URL support for the Docker image, route the app shell and manifest through a runtime icon endpoint, document the new Docker branding flow, and bump the app version to 4.8.3.
2026-04-12 11:26:57 +08:00
kuekhaoyang e73416d76b gate VideoTogether behind settings 2026-04-02 22:29:27 +08:00
kuekhaoyang 37b6e160d7 fix remaining issue 72 ui and iptv regressions 2026-04-02 22:14:46 +08:00
kuekhaoyang 5829a79ee3 fix: enforce compliance mode for managed deployments 2026-04-02 21:42:00 +08:00
kuekhaoyang 48ad9bc252 fix: restore HLS ad filtering
Closes #133

Closes #134
2026-04-02 20:12:59 +08:00
kuekhaoyang a6bfcf4b36 feat: add configurable seek step setting 2026-04-02 19:57:08 +08:00
kuekhaoyang 37d2c4abd9 Respect persisted danmaku API setting 2026-04-02 19:36:20 +08:00
kuekhaoyang 91a89e8bf2 Fix issue #72 follow-ups and IPTV source handling 2026-03-26 14:16:58 +08:00
kuekhaoyang 35f7f4d83a feat: upgrade player fullscreen buffering and panel controls 2026-03-26 13:51:45 +08:00
kuekhaoyang 3564ce1ede chore: update package versions and add user config sync API
- Bump version to 4.8.0 and update dependencies in package.json
- Implement user config sync API for cross-device settings persistence
- Add resolution badge auto-hide hook for improved user experience
- Create useConfigSync hook to manage user settings synchronization with the server
2026-03-18 12:44:05 +08:00
kuekhaoyang f7a166ea19 feat: implement Probe Resolution API and add useResolutionProbe hook for video resolution detection 2026-03-12 23:34:00 +08:00
kuekhaoyang a567f62e19 feat: update quality patterns to include HDR and remove redundant HD entry 2026-03-12 23:23:04 +08:00
kuekhaoyang 0e87c94a64 feat: 修复超长 URL (414) 问题,添加分辨率检测,修复高级模式 bug,提升兼容性
- 将 groupedSources 存储在 sessionStorage 中而非 URL 参数里,以防止因 URL 过长导致的 CDN 414 错误 (#112)
- 自动将旧版 groupedSources URL 迁移至短 gs 键
- 从视频元素中检测并显示实际视频分辨率(例如 1920x1080),不再依赖来源提供的标签
- 修复 PlayerNavbar 设置链接在高级模式下总是跳转到 /settings 而非 /premium/settings 的问题 (#106)
- 修复 WatchHistorySidebar 未向 HistoryList 传递 isPremium,导致历史记录项 URL 丢失 premium=1 参数的问题 (#106)
- 为 HLS 播放添加多级浏览器回退机制 (HLS.js → 原生 → 代理 → 错误并提供浏览器建议) (#104)
- 在 IPTV 播放器中添加 HEVC/H.265 级别过滤,防止 CCTV 等频道出现仅有音频播放的问题 (#81)
- 更新依赖并升级版本至 4.5.0
2026-03-12 22:58:30 +08:00
kuekhaoyang 1e14948225 feat: implement locale switching between Simplified and Traditional Chinese with opencc-js 2026-03-01 13:22:06 +08:00
kuekhaoyang c95d7d5d95 feat: add premium password protection and enhance search functionality
- Implemented a separate password for premium content access via `PREMIUM_PASSWORD` environment variable.
- Added a `PremiumPasswordGate` component to manage access to premium content.
- Enhanced search functionality to support Traditional Chinese to Simplified Chinese conversion for broader search compatibility.
- Introduced automatic video quality labels in search results for better user experience.
- Added support for IPTV sources configuration through environment variables.
- Enabled merging of sources in search results based on environment variable settings.
- Updated volume control logic to handle mute state more effectively in video playback.
- Improved README documentation to reflect new features and configurations.
2026-03-01 12:06:53 +08:00
vvwnandGitHub 224ec37e40 Implement useCloudSync hook for cloud data sync 2026-02-24 14:25:13 +08:00
kuekhaoyang 98599bb972 feat: implement multi-level IPTV sidebar with source and group expansion, multi-route collapse, and optimized search performance. 2026-02-20 11:41:53 +08:00
kuekhaoyang c0fcfcc4ac feat: implement IPTV channel search debouncing and pagination, add video source auto-fallback, and improve type normalization. 2026-02-19 14:27:17 +08:00
kuekhaoyang 9ea9f85507 feat: Implement user-defined video sources and danmaku API management with new settings pages and a dedicated store. 2026-02-19 11:56:14 +08:00
kuekhaoyang e1ea1a0d9a feat: Implement IPTV access control, enhance IPTV player with keyboard shortcuts, auto-refresh source latencies, normalize video type names, and persist source badge expansion state. 2026-02-18 11:53:42 +08:00
kuekhaoyang 54263f926b feat: Implement granular role-based access control, enhance IPTV stream proxy with header forwarding, and improve IPTV store with per-source channel caching. 2026-02-18 10:24:03 +08:00