ShukeBta
db45b46f7b
Fix SQLite migration fallback source
2026-06-15 23:29:35 +08:00
ShukeBta
61949c1e1c
Fix SQLite to PostgreSQL media migration
2026-06-15 22:11:58 +08:00
ShukeBta
fea1b1dda1
Fix PostgreSQL migration resume and home crash guard
2026-06-15 20:13:30 +08:00
ShukeBta
a5bf4bfdd4
Improve large library storage backends and scans
2026-06-15 18:16:34 +08:00
ShukeBta
1568ae127a
perf: 重构 FTS 索引为 rowid 寻址+触发器维护,根治重启 CPU 占满与扫描卡死
...
- FTS5 普通列(含 UNINDEXED)不支持索引查找,旧版按 media_id 做
NOT EXISTS/DELETE 全是整表扫描:启动回填 O(N^2) 烧 CPU 数小时,
扫描时每个 upsert 一次全表扫描,均隔着全局写锁拖死登录(125s 超时)
- v2 布局:FTS rowid 与 media.rowid 对齐,由 INSERT/UPDATE/DELETE
触发器实时维护;回填只剩 rowid 点查兜底,且去掉 ORDER BY
- 顺带修复刮削直写 Updates() 后新标题搜不到的问题(触发器覆盖)
- 写门改为 context 感知:长写语句不再让登录请求无限期排队
- warmMediaSearchIndex 延迟 30s 错峰启动
- library_scan 周期任务跳过云盘库(由 cloud_sync 夜间窗口负责),
首轮延迟从 15s 改为等满一个周期,重启不再立即全量扫描风暴
- prune 改为只取 id/path 并按 500 条批量删除,缩短写锁占用
2026-06-12 06:41:14 +00:00
ShukeBta
7d0afd0fcb
fix: reduce sqlite write pressure during scans
2026-06-11 21:45:53 +08:00
ShukeBta
7274ea19b7
fix: cap CPU and avoid heavy startup work
2026-06-11 19:48:00 +08:00
ShukeBta
d9f87c61b6
fix: keep login responsive during background organize
2026-06-11 19:28:49 +08:00
ShukeBta
23d1fbfddb
fix cloud library scale and playback compatibility
...
Root cause: display-only cloud library filtering was reused by scan jobs, merged cloud mounts could be skipped, and OpenList listing relied on WebDAV/first-page behavior that could cap huge directories around 100 items. Cloud scans also let new items consume probe budget before existing rows with missing track/artwork metadata.\n\nChanges:\n- split display filtering from scannable cloud filtering so merged cloud mounts still scan\n- add OpenList API pagination with WebDAV fallback\n- prioritize existing cloud media missing metadata before new imports\n- restrict automatic cloud sync to one successful 19:00-21:00 daily window and keep manual scan immediate\n- disable startup cloud full-scan by default, with an explicit opt-in setting\n- improve Emby/cloud playback compatibility and cache/search/test coverage from the continued work
2026-06-11 18:31:01 +08:00
ShukeBta
542e85a067
fix: reduce emby load and stabilize strm scan
2026-06-11 00:18:51 +08:00
ShukeBta
df02fd1166
fix: harden bot accounts and download handling
2026-06-07 18:30:27 +08:00
Kiro
d5cf5fb4b2
feat: bootstrap MediaStationGo (Go + React rewrite of MediaStation)
...
Adopt the cropflre/nowen-video tech stack and rebuild the project from
scratch:
- Backend: Go 1.25 + Gin + GORM + SQLite (WAL) + JWT + WebSocket hub.
Layered packages config / database / model / repository / service /
middleware / handler. Default admin (admin/admin123) seeded on first
run; /api routes for auth, libraries, media, stream and admin
panels. WebSocket scan-progress events at /api/ws.
- Frontend: React 18 + Vite 5 + Tailwind 3.4 + Zustand + axios +
react-router 6 + lucide-react + framer-motion + hls.js. Pages for
Login / Home / Library / Search / MediaDetail / Player / Admin
(Library, Users, Settings tabs).
- Distribution: multi-arch Dockerfile (frontend -> backend -> Alpine
runtime), docker-compose.yml, GitHub Actions for CI and GHCR
publish, Makefile, env-prefixed config (MEDIASTATION_*).
- Docs: README, CONTRIBUTING, .env.example, config.example.yaml.
Backend builds, vets and tests pass. Frontend builds via tsc -b && vite
build (250 kB JS / 16 kB CSS, gzipped 84 / 4 kB).
2026-05-14 15:26:29 +00:00