53 Commits
Author SHA1 Message Date
nanxun 8960b68ac8 fix: harden auto uploads and table layouts 2026-09-19 10:25:10 +08:00
nanxun 90a67bdf72 fix: harden recording recovery and dashboard metrics 2026-08-14 19:20:24 +08:00
nanxun d38c9490ba ci: route remaining package downloads to mirrors 2026-08-13 23:37:21 +08:00
nanxun 96ed3396d9 ci: use domestic mirrors and persistent caches 2026-08-13 23:15:48 +08:00
nanxun fdab9978bf fix: refresh uploads and remember login 2026-08-13 22:25:00 +08:00
nanxun 19d358b312 feat: improve recording recovery and upload workflow 2026-08-10 11:14:34 +08:00
nanxun e0d3969e46 refactor: move PostgreSQL shared service to dedicated repository 2026-08-03 23:59:25 +08:00
nanxun ecc737f0bd feat: harden recording lifecycle and refresh fnOS UI 2026-08-03 23:45:26 +08:00
nanxun e5b50ea85c feat: add shared PostgreSQL fnOS service and refresh UI 2026-08-02 20:14:39 +08:00
nanxun 9091c1abc7 feat: add reliable OpenList segment uploads 2026-08-01 19:27:56 +08:00
nanxunandClaude Opus 4.8 5d57dff482 fix: declare proxy ARGs in frontend Dockerfile for npm ci
The frontend Dockerfile was missing HTTP_PROXY/HTTPS_PROXY ARG declarations
in the build stage, so npm ci could not reach the npm registry through the
builder's proxy. Same fix pattern as the API Dockerfile.

This explains why the Web image has never been successfully built — the
pipeline always skips 'Build Web' after 'Build API' fails, but once API
build succeeds, Web build would hit the same npm registry issue.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-03 18:04:53 +08:00
nanxunandClaude Fable 5 9df174bb0b feat: add OpenList upload support and upload tasks monitoring page
Backend:
- Add OpenListRecordArtifactUploader implementing AList-compatible API upload
- Add Uploading status to RecordArtifactUploadStatus enum
- Add MarkUploadStarted() to RecordResult entity for upload progress tracking
- Add ListUploadStatus API endpoint with pagination and status filtering
- Add UploadTaskItemDto and UploadTaskListResponse models
- Add upload segment count stats (uploaded/failed/uploading) to session DTO
- Add OpenListUploadSettingsDto and upload target type OpenList

Frontend:
- Add UploadTasksView page with route /upload-tasks
- Add upload status labels and UploadTaskItem types
- Refactor MainLayout navigation and clean up main.css
- Polish DashboardView, MetricCard, StatusBadge, RightDrawer components
- Update SettingsView to support OpenList upload configuration

Build:
- Add frontend/Dockerfile.arm64 for ARM64 frontend image
- Update build-arm64-image.sh script

Other:
- Add segment_completed_openlist.sh trigger script
- Add prototype/ directory with UI mockups
- Add frontend .dockerignore refinements

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-01 21:14:50 +08:00
nanxunandClaude Opus 4.8 a062bf84bf fix: avoid danmaku event name collision in session detail replay
Alias the replay player's danmakuEvents to replayDanmakuEvents so it no longer shadows another binding in the session detail view.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-11 17:52:18 +08:00
nanxunandClaude Opus 4.8 6da0690fd3 feat: batch-delete recording segments whose files are missing
Add a segment-level cleanup alongside the existing session-level one. DeleteMissingFileTasksAsync scans all non-active record tasks, keeps those whose video file no longer exists on disk, and deletes them individually via DeleteTasksAsync (which also drops any session left empty). Exposed as POST /record-tasks/delete-missing-files and a new "清理无文件分片" action in the record tasks view.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-11 17:52:18 +08:00
nanxunandClaude Opus 4.8 noreply@anthropic.com 0831b33ea0 feat: make storage tier thresholds configurable in system settings
Add StorageGreenThresholdPercent (default 30%) and StorageRedThresholdPercent
(default 10%) to both SystemSettingsDto and the settings UI.

StorageGuardService now reads thresholds from settings instead of hardcoding.

Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com
2026-06-05 11:55:08 +08:00
nanxunandClaude Opus 4.8 noreply@anthropic.com a819322559 fix: hardcode apiBaseUrl to /api instead of relying on import.meta.env
VITE_API_BASE_URL may not be properly resolved during Docker build,
causing axios to construct malformed URLs.

Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com
2026-06-05 11:23:23 +08:00
nanxun 2b0345722e fix: add null check to debug log 2026-06-05 11:17:27 +08:00
nanxun 9e5bbbb948 debug: add API URL logging to axios request interceptor 2026-06-05 11:13:18 +08:00
nanxunandClaude Opus 4.8 noreply@anthropic.com f9016931e8 fix: add build target es2015 for Raspberry Pi Chromium compatibility
Older Chromium on ARM64 doesn't support strict mode arguments.callee
in modern ES module bundles. Downgrading build target to es2015.

Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com
2026-06-05 10:47:13 +08:00
nanxunandClaude Opus 4.8 noreply@anthropic.com 24e5cf2a06 feat: add tiered storage guard (Green/Yellow/Red) and dashboard queue monitor
Storage Tier System:
- Add StorageTier enum (Green >30% / Yellow 10-30% / Red <10%)
- Extend StorageGuardResult with Tier, CanStartNewRecording, ShouldPauseActive, UsagePercent
- Yellow tier: deny new recordings but allow existing to finish and upload
- Red tier: deny new recordings and pause active sessions
- Auto-recovery: when disk frees up, polling automatically resumes new recordings
- Update LiveRoomPollingBackgroundService to use tier-based checks
- Expose tier + usage percent in Recovery API

Dashboard Queue Monitor:
- Add pending transcode count, pending upload count, queued data volume to dashboard
- Add storage tier badge (Green/Yellow/Red) with usage percentage
- Add queue monitoring card to dashboard view

Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com
2026-06-04 23:13:26 +08:00
nanxunandClaude Opus 4.8 noreply@anthropic.com cbee29bef9 feat: add dashboard, file preview metadata, and bandwidth statistics
Dashboard:
- Add DashboardDto, DashboardService with SQL-level aggregate queries
- Add GET /api/dashboard endpoint with real-time system status
- Add repository aggregate methods (CountByAvailability, SumDuration, etc.)
- Add DashboardView.vue as new landing page with KPI cards, storage status, recent sessions, top rooms
- Update router to make dashboard the new / route, add nav item in sidebar

File Preview:
- Add IVideoMetadataService + FfmpegVideoMetadataService for video metadata extraction
- Extend MediaBrowserItemDto with Metadata and ThumbnailUrl fields
- Add includeMetadata param to media browser API, add thumbnail endpoint
- Add SessionPlaylistDto and GET /api/record-sessions/{id}/playlist for continuous playback

Bandwidth Statistics:
- Add -progress pipe:1 to live recording ffmpeg args for bitrate output
- Parse total_size/bitrate/speed from ffmpeg progress lines during recording
- Write bandwidth samples as SystemLogEntry (Category=Bandwidth) every 30s
- Add BandwidthStatisticsService, BandwidthController with session timeline + daily summary
- Add bandwidth TypeScript types

Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com
2026-06-04 00:30:02 +08:00
nanxunandClaude Opus 4.8 a5c2cc3202 feat: add danmaku replay player integration
- Add IDanmakuService interface and DanmakuService implementation to parse danmaku XML files
- Add GET /api/record-tasks/{id}/danmaku and GET /api/record-sessions/{id}/danmaku endpoints
- Add DanmakuPlayer Vue component with native video + CSS overlay danmaku rendering
- Add danmakuEngine.ts pure-TypeScript animation loop with binary search, track management, and event notifications
- Add useDanmakuPlayer composable for reusable danmaku data loading
- Integrate danmaku toggle button into RecordTaskDetailView
- Integrate danmaku replay modal dialog into RecordSessionDetailView segment table

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-03 18:09:43 +08:00
nanxun b2aaef093d fix: restore settings page chinese text 2026-05-31 20:07:18 +08:00
nanxun b82110461a feat: add storage and script failure notifications 2026-05-31 19:35:06 +08:00
nanxun 78f02978fd fix-settings-i18n-garbled-encoding-and-english-text 2026-05-17 15:58:21 +08:00
nanxun db458a9a14 Merge pull request 'feat: add flutter mobile console and refine login ui' (#2) from codex/mobile-console-pr-clean into main
Reviewed-on: #2
2026-05-15 00:31:43 +08:00
nanxun 50b207415a feat: add flutter mobile console and refine login ui 2026-05-15 00:24:58 +08:00
nanxun 7a286fd619 feat: expand platform adapters and preview tooling 2026-05-13 19:40:43 +08:00
nanxun b81ead700d feat: redesign live recorder control console ui 2026-05-13 18:51:05 +08:00
nanxun c5346940e7 feat: add manual segment completed trigger 2026-05-08 23:33:09 +08:00
nanxun ea41d3e7b4 fix: retry segmented sessions and restore settings text 2026-05-08 23:27:01 +08:00
nanxun cc37d90d92 feat: async session cleanup and fix live room scroll 2026-05-08 18:18:36 +08:00
nanxun 56432a9ece feat: add transcode workspace and media browser 2026-05-05 02:14:52 +08:00
nanxun f0f9ed3456 feat: localize quality labels and add quality template token 2026-05-01 07:16:03 +08:00
nanxun 0b8f2c9775 feat: add import detection toggles 2026-04-30 20:24:23 +08:00
nanxun 242b419875 fix: pin settings savebar to viewport 2026-04-30 19:34:39 +08:00
nanxun d59deb78ae fix: refine dark mode and table scrolling 2026-04-29 18:50:42 +08:00
nanxun 49d893f29b fix: 修复直播间状态检测的多项bug - 状态值扩展为1或2,API异常时用页面HTML兜底,页面解析增加转义清理,前端移除选中阻断自动刷新 2026-04-28 19:26:41 +08:00
nanxun fcfa94dee3 feat: 日志内容搜索、设置分类Tabs、日报推送、删除合并/条件清理/无分片清理 2026-04-28 10:56:16 +08:00
nanxun 5a635a40f9 fix: FFmpeg握手失败后自动切换协议重试 + 修复表格横向滚动条 2026-04-28 00:18:23 +08:00
nanxun 9c4f22ff97 feat: 添加管理员密码修改功能 2026-04-27 23:16:31 +08:00
nanxun c161660b51 docs: 完善 README 并修复暗黑模式左侧导航栏可见性 2026-04-27 23:02:22 +08:00
nanxun 89ba4163fc feat: improve polling recovery and session cleanup 2026-04-27 20:33:12 +08:00
nanxun ca2c559555 fix: improve event script controls and daily reviews 2026-04-26 21:16:26 +08:00
nanxun d2b2f714e0 feat: add live room metadata, uploads, proxies and backups 2026-04-26 17:35:51 +08:00
nanxun 85f24f8a84 fix: refine polling and settings layout 2026-04-26 11:28:45 +08:00
nanxun 79047b5488 feat: add recovery center and daily reviews 2026-04-26 11:03:08 +08:00
nanxun 94f6e08dea feat: redesign responsive control room ui 2026-04-26 02:18:03 +08:00
nanxun aa548db980 feat: support inline event scripts 2026-04-25 14:32:30 +08:00
nanxun 9701c88c8b fix: improve recovery and auto-start flows 2026-04-25 00:06:25 +08:00