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
edison0817 and GitHub
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
vvwn and GitHub
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