Commit Graph

79 Commits

Author SHA1 Message Date
noelorin 2d7d67149b chore(docker): drop syntax directive to avoid registry timeout 2026-09-27 17:57:11 +08:00
noelorin 44c3f830f5 fix(mount): load username from mount when testing without it 2026-09-27 17:52:54 +08:00
noelorin 099f7c0628 fix(mount): mark test connection using stored password 2026-09-27 17:18:26 +08:00
noelorin 96b3d8679b fix(mount): shorter generic WebDAV error copy 2026-09-27 17:12:00 +08:00
noelorin e1778520ed fix(mount): explain WebDAV 401 for fnOS account/password 2026-09-27 17:06:43 +08:00
noelorin 7db51693ad fix(mount): rootPath is source of truth for WebDAV test
Do not fail when listing / fails; many NAS forbid listing root.
2026-09-27 16:50:58 +08:00
noelorin a7a50f8d0a fix(mount): stop double-encoding WebDAV paths
webdav lib encodePath already percent-encodes; our encodeURIComponent produced %25 and 400 on CJK/space paths.
2026-09-27 16:43:35 +08:00
noelorin a1483299f3 fix(mount): reuse stored password when editing
Empty password on update keeps secret; test connection with mountId reuses decrypted secret.
2026-09-27 16:30:48 +08:00
noelorin fb3747a66c fix(mount): clearer WebDAV 400 diagnosis and path normalize
Probe / first, encode CJK/space path segments, explain 400 with path and /dav hint.
2026-09-27 16:18:12 +08:00
noelorin 6bced13135 style(web): biome format notice call sites 2026-09-27 16:04:50 +08:00
noelorin dcf66f23d0 fix(ui): use sonner toast library with product styling
Replace hand-rolled notice with sonner; single Toaster in AppLayout; token-based toast styles, top-right.
2026-09-27 15:59:26 +08:00
noelorin e0ecf5b106 feat: close product loop for online danmaku
DanmakuFetchOutput.reason (no-app-cred/need-login/no-match/...); watch page settings/clear-local CTAs; dandanplay login for all signed-in users; cache before login gate; README first-run checklist.
2026-09-27 15:41:20 +08:00
noelorin 4fe0f40ce4 feat(danmaku): login DanDanPlay account for online danmaku
Follow NipaPlay pattern: POST /api/v2/login (md5 hash) stores bearer token; comment/match send Authorization Bearer alongside AppId signature. Admin UI login form.
2026-09-27 15:14:13 +08:00
noelorin fd70f649ae feat(settings): settings-page-first open-network config, drop env-directed copy 2026-09-27 13:22:52 +08:00
noelorin 95962b4aa4 style: biome formatting wave + clear web lint (selector order, safe list keys) 2026-09-27 12:57:49 +08:00
noelorin e3c275befa feat(web,library): dandanplay file identification entry in manual-match dialog 2026-09-27 12:27:51 +08:00
noelorin 89b090a47b docs(specs): record merged dandanplay implementation final state 2026-09-27 12:26:50 +08:00
noelorin d71e9157c0 docs(settings): guide obtaining DanDanPlay AppId via DevCenter
Official docs: AppId/AppSecret come from developer application review, not user login. Add in-app guidance.
2026-09-27 12:03:46 +08:00
noelorin 2e405cd974 feat(settings,auth): admin open-network config with role visibility
users.role (first registrant admin), app_settings store plaintext AppId/Secret, admin-only settings API and UI section, runtime credential override in @app/danmaku.
2026-09-27 11:52:17 +08:00
noelorin 7fe1236d0d build(docker): include packages/danmaku in deps layer 2026-09-27 11:27:08 +08:00
noelorin 2bcf9f0230 feat(web,danmaku): danmaku side list and manual source picker
Right-side danmaku list with click-to-seek; rematch dialog gains hierarchical source pick (search title → episode) via DanDanPlay open API.
2026-09-27 11:19:31 +08:00
noelorin 5f5dd968cb Merge branch 'feat/dandanplay-alignment'
# Conflicts:
#	app/web/src/components/pages/WatchBody.tsx
#	packages/trpc/src/services/scrape.service.ts
#	packages/types/src/media-schemas.test.ts
2026-09-27 02:18:49 +08:00
noelorin da6378e421 chore(product): WIP checkpoint library/episode work before merging danmaku branch
Unrelated in-progress changes found on main: LibraryBody expansion, episode helpers, history-guard, nav/e2e. Committed as checkpoint to unblock merge.
2026-09-27 02:13:45 +08:00
noelorin 06e798939a fix(danmaku): review wave — unstick local-xml, hint scoring, prefs sync, byte limits
- I1: selectMatch 删 local-xml + 播放页本地源可重新匹配并清 localStorage
- I2: rankCandidates 接受本地 hint,标题包含/相等与集号相等真实拉开分差
- I3: scrape.matchDandanplay 低置信不写库不覆盖标题/海报,返回候选手选
- I4: 播放页 prefs.data 到达后覆盖 danmakuOn/density/opacity,localStorage 仅回退
- I5: importXml 与 Zod 按 UTF-8 字节 ≤20MB(非 UTF-16 code unit)
2026-09-27 02:01:16 +08:00
noelorin 07c7108789 test(danmaku): assert openCommentXml withRelated contract 2026-09-27 00:04:58 +08:00
noelorin 5b095d677f fix(danmaku): browser-safe entry, yarn test wiring, AGENTS map 2026-09-26 23:46:21 +08:00
noelorin b90d7dfc55 feat(danmaku): auto-link same-name sidecar xml from mount 2026-09-26 23:35:05 +08:00
noelorin 5b30f43252 fix(web): hydrate-safe danmaku settings init without render localStorage 2026-09-26 22:54:56 +08:00
noelorin cb770d1e56 style(types): biome format media-schemas.test.ts 2026-09-26 22:47:07 +08:00
noelorin 9ef9dd01a5 feat(web): danmaku settings server prefs with block words 2026-09-26 22:47:06 +08:00
noelorin 4b2f16d779 fix(web): selectMatch toast on real payload, neutral match labels 2026-09-26 21:13:05 +08:00
noelorin c236f50ec6 feat(web): watch rematch candidates, import persist, danmaku filters 2026-09-26 21:03:01 +08:00
noelorin 714f51a1a6 fix(trpc): bind ranked top candidate and cover low-confidence fetch 2026-09-26 20:39:23 +08:00
noelorin 188cf79270 feat(trpc): danmaku service uses @app/danmaku and persists docs/prefs 2026-09-26 20:22:47 +08:00
noelorin aab636eac7 feat(types): danmaku match candidates, import payload, prefs filters 2026-09-26 19:40:43 +08:00
noelorin 3467e397e7 feat(models,dao): danmaku prefs/docs tables and match source 2026-09-26 19:33:37 +08:00
noelorin 5ce1f91a26 test(danmaku): cover rankCandidates confidence paths 2026-09-26 19:26:44 +08:00
noelorin 967ef58503 feat(danmaku): match/comment client, filter, high-confidence rank 2026-09-26 19:15:10 +08:00
noelorin b80b1e1fbf test(danmaku): lock 8-segment p contract and parse tolerance 2026-09-26 19:05:49 +08:00
noelorin 517b4b1ef6 feat(danmaku): protocol package scaffold with signature, hash, xml 2026-09-26 18:54:55 +08:00
noelorin 63e760ba36 chore(product): checkpoint working tree before dandanplay alignment
Includes product polish (auth/dashboard/error pages, i18n, stream/playback fixes), docs site, e2e suites, and related tooling. Excludes local screenshots and caches.
2026-09-26 18:36:16 +08:00
noelorin 289f197a2b docs(plans): dandanplay capability alignment implementation plan 2026-09-26 18:01:52 +08:00
noelorin 8183c47aa0 docs(specs): tighten danmaku_docs source enum and high-confidence rule 2026-09-26 17:54:58 +08:00
noelorin d0f310d8fc docs(specs): dandanplay capability alignment (core chain + open API) 2026-09-26 17:54:13 +08:00
noelorin e05645a342 docs(specs): dandanplay danmaku fetch + scrape capability design 2026-09-26 17:49:33 +08:00
noelorin f48f0c8d51 chore(product): replace template branding with 弹弹 Web copy and product SEO 2026-09-26 03:13:48 +08:00
noelorin 668f90bcc0 chore(docker): runtime env defaults, healthcheck, ignore review artifacts 2026-09-26 02:58:47 +08:00
noelorin 11a18a367c fix(ui): mobile media nav, product chrome, empty CTAs, density label, a11y 2026-09-26 01:11:13 +08:00
noelorin a7873891f2 fix: caveman-review findings (danmaku match, SSRF, progress ownership, i18n errors, paging, QueryClient) 2026-09-26 00:49:08 +08:00
noelorin e65acd1e9c fix(models,dao): media_items unique key includes mountId 2026-09-25 12:15:50 +08:00