6d350940b9
feat(frontend): schedule history dialog with rollback, wire ConfigHistorySheet
2026-03-17 14:48:39 +01:00
ba6abad602
feat(frontend): weekly grid editor with day tabs and copy shortcut
2026-03-17 14:46:34 +01:00
c0da075f03
feat(frontend): config history sheet with pin and restore
2026-03-17 14:45:00 +01:00
6bfb148e39
feat(frontend): config history and schedule rollback hooks
2026-03-17 14:43:12 +01:00
45c05b5720
fix: snapshot existing config before update; rollback returns 200
2026-03-17 14:41:57 +01:00
bd498b9bcb
feat(frontend): ScheduleConfig V2 types, weekday schema, export update
2026-03-17 14:39:19 +01:00
20e80ac28e
feat: config history — auto-snapshot on update, list/pin/restore endpoints
2026-03-17 14:39:09 +01:00
ad3a73f061
feat: schedule history — list, detail, rollback endpoints
2026-03-17 14:38:51 +01:00
c0fb8f69de
feat(infra): implement config snapshot repository methods
2026-03-17 14:32:04 +01:00
8b8e8a8d8c
fix(mcp): update block mutations for ScheduleConfig V2 day_blocks
2026-03-17 14:32:02 +01:00
05d2d77515
feat(infra): schedule history list, get-by-id, delete-after methods
2026-03-17 14:32:02 +01:00
8b701745bf
fix(api): update block lookups to use all_blocks() after ScheduleConfig V2
2026-03-17 14:31:24 +01:00
a79ee1b228
feat(domain): 7-day generation window, day_blocks lookup by weekday
2026-03-17 14:29:10 +01:00
d8e39c66be
feat(infra): add channel_config_snapshots migration
2026-03-17 14:28:35 +01:00
055937fc3d
fix(domain): use ChannelId type in patch_config_snapshot_label
2026-03-17 14:27:41 +01:00
1338f6bace
feat(domain): extend ChannelRepository and ScheduleRepository ports for history
2026-03-17 14:25:51 +01:00
995f5b1339
feat(domain): add ChannelConfigSnapshot entity
2026-03-17 14:25:49 +01:00
22bee4f32c
feat(domain): ScheduleConfig V2 day-keyed weekly grid with V1 compat
2026-03-17 14:21:00 +01:00
5f1421f4bd
fix(domain): improve Weekday tests and document all() ordering
2026-03-17 14:18:13 +01:00
f8e8e85cb0
feat(domain): add Weekday enum with From<chrono::Weekday>
2026-03-17 14:16:16 +01:00
c550790287
feat: add find_last_slot_per_block method to schedule repositories and update related logic
2026-03-17 13:02:20 +01:00
d8dd047020
feat: implement local-files feature with various enhancements and cleanup
2026-03-17 03:00:39 +01:00
c4d2e48f73
fix(frontend): resolve all eslint warnings and errors
...
- block-timeline: ref updates moved to useLayoutEffect
- channel-card, guide/page: Date.now() wrapped in useMemo + suppress purity rule
- auth-context: lazy localStorage init (removes setState-in-effect)
- use-channel-order: lazy localStorage init (removes setState-in-effect)
- use-idle: start timer on mount without calling resetIdle (removes setState-in-effect)
- use-subtitles, transcode-settings-dialog: inline eslint-disable on exact violating line
- providers: block-level eslint-disable for tokenRef closure in useState initializer
- edit-channel-sheet: remove unused minsToTime and BlockContent imports
- docs/page: escape unescaped quote and apostrophe entities
2026-03-17 02:40:32 +01:00
8ed8da2d90
refactor(frontend): extract logic to hooks, split inline components
...
Area 1 (tv/page.tsx 964→423 lines):
- hooks: use-fullscreen, use-idle, use-volume, use-quality, use-subtitles,
use-channel-input, use-channel-passwords, use-tv-keyboard
- components: SubtitlePicker, VolumeControl, QualityPicker, TopControlBar,
LogoWatermark, AutoplayPrompt, ChannelNumberOverlay, TvBaseLayer
Area 2 (edit-channel-sheet.tsx 1244→678 lines):
- hooks: use-channel-form (all form state + reset logic)
- lib/schemas.ts: extracted Zod schemas + extractErrors
- components: AlgorithmicFilterEditor, RecyclePolicyEditor, WebhookEditor,
AccessSettingsEditor, LogoEditor
Area 3 (dashboard/page.tsx 406→261 lines):
- hooks: use-channel-order, use-import-channel, use-regenerate-all
- lib/channel-export.ts: pure export utility
- components: DashboardHeader
2026-03-17 02:25:02 +01:00
ce92b43205
fix: show toast and redirect on expired session (401)
...
Fix stale closure bug in QueryProvider (token ref) and add warning toast so users know why they were redirected to login.
2026-03-17 01:37:11 +01:00
7244349e97
refactor: allow unused variable warning for db_pool in build_provider_registry
2026-03-16 04:41:08 +01:00
6aa86b6666
refactor: extract router/serve to server.rs, main is now thin orchestrator
2026-03-16 04:39:36 +01:00
e7bd66ffdf
refactor: extract background task spawning to startup.rs
2026-03-16 04:37:49 +01:00
b25ae95626
refactor: extract provider registry to provider_registry.rs
2026-03-16 04:36:41 +01:00
5949ffc63b
refactor: extract DB init to database.rs
2026-03-16 04:34:08 +01:00
29e654cabc
refactor: extract telemetry init to telemetry.rs
2026-03-16 04:33:01 +01:00
9d792249c9
feat: implement transcode settings repository and integrate with local-files provider
2026-03-16 04:24:39 +01:00
50df852416
fix: remove sqlx from API layer, read TTL from TranscodeManager, init local_files from DB on startup
2026-03-16 04:08:52 +01:00
d88afbfe2e
fix: sync cleanup_ttl_hours to transcode_settings table on provider save
2026-03-16 04:02:58 +01:00
0637504974
fix: local_files hot-reload via RwLock state fields and rebuild_registry
2026-03-16 03:58:59 +01:00
712cf1deb9
fix: local_files hot-reload via RwLock state fields + rebuild_registry local_files case
2026-03-16 03:58:36 +01:00
89036ba62d
feat: admin provider UI (types, hooks, guard, settings panel, conditional admin nav)
2026-03-16 03:38:37 +01:00
87f94fcc51
feat: admin provider routes (list/update/delete/test) with admin middleware
2026-03-16 03:34:54 +01:00
46333853d2
feat: ConfigSource enum, RwLock provider_registry, is_admin in UserResponse, available_provider_types
2026-03-16 03:30:44 +01:00
0e51b7c0f1
feat: implement SqliteProviderConfigRepository, build_provider_config_repository factory
2026-03-16 03:26:02 +01:00
4ca8690a89
feat: add admin + provider_configs migration
2026-03-16 03:24:15 +01:00
d80d4e9741
feat: add is_admin to User, count_users, ProviderConfigRepository trait, admin migration
2026-03-16 03:22:00 +01:00
b35054f23e
feat(tv-page): add subtitle track toggle functionality
2026-03-16 02:42:24 +01:00
abcf872d2d
docs: update README files to include new environment variables and local files feature
2026-03-16 02:29:42 +01:00
e805028d46
feat: add server-sent events for logging and activity tracking
...
- Implemented a custom tracing layer (`AppLogLayer`) to capture log events and broadcast them to SSE clients.
- Created admin routes for streaming server logs and listing recent activity logs.
- Added an activity log repository interface and SQLite implementation for persisting activity events.
- Integrated activity logging into user authentication and channel CRUD operations.
- Developed frontend components for displaying server logs and activity logs in the admin panel.
- Enhanced the video player with a stats overlay for monitoring streaming metrics.
2026-03-16 02:21:40 +01:00
4df6522952
feat(channel-card): add confirmation dialog for schedule regeneration
2026-03-16 01:50:05 +01:00
40f698acb7
refactor: clean up styles and improve layout in dashboard and edit channel components
...
- Removed unnecessary class names for buttons in ChannelCard and DashboardPage components.
- Updated layout styles in RootLayout to apply dark mode by default.
- Refactored edit-channel-sheet to streamline block editor and filter editor components.
- Adjusted duration input fields to reflect minutes instead of seconds in AlgorithmicFilterEditor.
- Enhanced the structure of the EditChannelSheet for better readability and maintainability.
2026-03-16 01:40:28 +01:00
e76167134b
feat: add webhook body template and headers support for channels
2026-03-16 01:10:26 +01:00
db461db270
webhooks ( #1 )
...
Reviewed-on: #1
2026-03-15 23:51:41 +00:00
2ba9bfbf2f
feat(channel-card): update TV link to include channel ID in query parameters
2026-03-15 23:59:07 +01:00