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
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
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
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
b90d7dfc55
feat(danmaku): auto-link same-name sidecar xml from mount
2026-09-26 23:35:05 +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
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
a7873891f2
fix: caveman-review findings (danmaku match, SSRF, progress ownership, i18n errors, paging, QueryClient)
2026-09-26 00:49:08 +08:00
noelorin
3af8ebead7
fix(trpc): stream Content-Type fallback by extension
2026-09-25 12:15:50 +08:00
noelorin
d9ebcb10bd
fix(trpc): open danmaku official API match/comment + 16MB MD5
2026-09-25 12:15:50 +08:00
noelorin
99fd2a58e7
style: biome format browse/ensurePath changes
2026-09-25 04:36:10 +08:00
noelorin
5a291a9127
feat(web): browse page with ensurePath play
2026-09-25 04:35:58 +08:00
noelorin
94e923486e
fix(trpc): stream backpressure via pull-driven pause and RFC range edge cases
2026-09-25 03:17:42 +08:00
noelorin
cfddf5bbe1
feat(web): authenticated range stream proxy
2026-09-25 03:12:49 +08:00
noelorin
f009d2cce4
feat(trpc): media router mount/library/scrape/playback/danmaku
2026-09-25 03:06:12 +08:00
noelorin
8839763f24
feat(trpc): playback progress + danmaku open-network relay
2026-09-25 03:00:16 +08:00
noelorin
c37f9dcf62
fix(trpc): bound scrape concurrency and surface DB errors
2026-09-25 02:56:23 +08:00
noelorin
94d389b855
feat(trpc): library scan + bangumi scrape
2026-09-25 02:52:08 +08:00
noelorin
cdc40d61b1
feat(trpc): webdav client + mount service with secret encryption
2026-09-25 02:48:17 +08:00
noelorin
a5ba7124dc
chore: initial app template scaffold
...
Astro + tRPC + Drizzle monorepo starter with auth/user vertical slice.
No product domain logic; extend via the user slice pattern.
2026-09-24 15:21:45 +08:00