Commit Graph

  • 2dc374cc7b feat(config): move youtube_api_key to DB (encrypted, admin-editable) peter 2026-06-19 13:19:06 +02:00
  • c953642e30 Merge feature/config-db-4b (epic 4b) peter 2026-06-19 13:07:55 +02:00
  • 060dbcffb0 feat(config): render quota/backfill/shorts/batch groups on the Configuration page peter 2026-06-19 13:07:55 +02:00
  • e6bcf5ba1e feat(config): move operational params to DB (quota/backfill/shorts/batch) peter 2026-06-19 13:07:45 +02:00
  • ff03b51352 Merge improvement/config-unified-savebar peter 2026-06-19 12:40:23 +02:00
  • 8198c7712e refactor(config): one Save/Discard bar instead of per-field Save peter 2026-06-19 12:40:23 +02:00
  • 7d71c205b2 Merge feature/config-db-admin (epic 4a) peter 2026-06-19 12:23:08 +02:00
  • a71257f33f feat(config): admin Configuration page (registry-driven) peter 2026-06-19 12:23:00 +02:00
  • 48cb6a5dbd feat(config): DB-backed system_config infrastructure + SMTP group peter 2026-06-19 12:22:36 +02:00
  • 24d626d05b Merge feature/stats-quota-taxonomy peter 2026-06-19 11:48:29 +02:00
  • 17a0886d60 feat(stats): consolidate per-user sync status into the Stats page peter 2026-06-19 11:48:20 +02:00
  • b23f805533 refactor(quota): canonical <entity>_<action> taxonomy for quota events peter 2026-06-19 11:48:11 +02:00
  • 1ce035ca9e Merge feature/banner-refactor-discovery-polish peter 2026-06-19 11:18:37 +02:00
  • 94fc5c9806 feat(discovery): total-videos column + subscribe confirmation peter 2026-06-19 11:18:28 +02:00
  • 479574b726 refactor(banner): extract reusable Banner base for VersionBanner + DemoBanner peter 2026-06-19 11:18:20 +02:00
  • 4e990efab0 Merge: promote dev to prod peter 2026-06-19 04:27:30 +02:00
  • a5de874dd3 Merge bug/youtube-error-status: YouTube failures as 422 not 502 (0.11.2) peter 2026-06-19 04:27:22 +02:00
  • 262ed06b3c release: 0.11.2 peter 2026-06-19 04:27:22 +02:00
  • fa86e3d282 fix(api): surface YouTube action failures as 422, not 502 peter 2026-06-19 04:27:22 +02:00
  • 139e0d067d Merge: promote dev to prod peter 2026-06-19 04:16:41 +02:00
  • 0d5e2dc331 Merge bug/subscribe-already-exists: reconcile already-followed channel (0.11.1) peter 2026-06-19 04:16:34 +02:00
  • 403a5608df release: 0.11.1 peter 2026-06-19 04:16:23 +02:00
  • 9c7beec443 fix(channels): reconcile an already-followed channel instead of erroring peter 2026-06-19 04:16:23 +02:00
  • 022bab3518 Merge: promote dev to prod peter 2026-06-19 04:02:45 +02:00
  • d254cf4353 release: 0.11.0 peter 2026-06-19 04:02:38 +02:00
  • b6404a5e55 Merge bug/channels-tab-focus: reliable channel-manager navigation (tab + stale filter) peter 2026-06-19 03:57:44 +02:00
  • 7aab0dd047 fix(channels): drop a stale column filter when sent to "without full history" peter 2026-06-19 03:55:55 +02:00
  • 1bedfca666 fix(channels): land on the subscriptions tab for channel-targeted navigation peter 2026-06-19 03:38:57 +02:00
  • 141dd32855 Merge improvement/ui-polish-dry: shared ChannelLink/channelYouTubeUrl + adaptive header poll peter 2026-06-19 03:31:52 +02:00
  • 258aa5cc84 perf(header): poll sync status faster while work is in flight peter 2026-06-19 03:24:45 +02:00
  • 5461cada84 refactor(channels): share one ChannelLink + channelYouTubeUrl helper peter 2026-06-19 03:22:10 +02:00
  • 96f303b0cf Merge improvement/inbox-nav-links: navigation links on watched + scheduler notices peter 2026-06-19 03:07:35 +02:00
  • 85b3a9f95c Merge improvement/header-activity-coherent: header reflects live sync activity, not pending work peter 2026-06-19 03:07:35 +02:00
  • c2b877c14e feat(inbox): add navigation links to watched and scheduler notices peter 2026-06-19 03:05:01 +02:00
  • f69e34e3a6 fix(header): show sync activity only while a job is actually running peter 2026-06-19 02:57:45 +02:00
  • a004fa4107 Merge bug/scheduler-progress-visibility: live progress for any scheduler job + parallel RSS polling peter 2026-06-19 02:45:36 +02:00
  • d86aee262d Merge feature/s5-channel-discovery: discover & subscribe to channels from playlists peter 2026-06-19 02:45:36 +02:00
  • cdc6715935 fix(scheduler): show progress for any running job with reliable live updates peter 2026-06-19 02:43:46 +02:00
  • e0971a23ec feat(scheduler): report progress from every job + parallelize RSS polling peter 2026-06-19 02:43:37 +02:00
  • 75ecf19147 feat(notifications): link the subscribe activity to the channel peter 2026-06-19 02:16:50 +02:00
  • fb6f0c5dcb feat(channels): discover & subscribe to channels from playlists peter 2026-06-19 02:16:42 +02:00
  • 7c0655a8f5 Merge: promote dev to prod peter 2026-06-19 00:20:38 +02:00
  • b5141ab112 docs(release): correct 0.10.0 note — reload isn't guarded peter 2026-06-19 00:20:38 +02:00
  • db6b108a6f Merge: promote dev to prod peter 2026-06-19 00:07:35 +02:00
  • 1e41a624ff release: 0.10.0 peter 2026-06-19 00:07:25 +02:00
  • e94dde1950 Merge improvement/settings-panel-trim: tidy Settings height, drop native unload prompt peter 2026-06-19 00:04:19 +02:00
  • 2e79074fca fix(settings): size panel to the active tab + drop the native unload prompt peter 2026-06-19 00:04:19 +02:00
  • 53ba10e7c6 Merge feature/settings-explicit-save: explicit Save/Discard for preferences peter 2026-06-18 23:59:40 +02:00
  • 4a1a025353 feat(settings): explicit Save/Discard for preferences with dirty tracking peter 2026-06-18 23:59:40 +02:00
  • d61e844f6b Merge bug/optimistic-state-notify-on-success: gate state-change notices on server confirmation peter 2026-06-18 23:27:59 +02:00
  • 9f9d2544ef fix(web): only announce a state change after the server confirms it peter 2026-06-18 23:27:59 +02:00
  • 0ab6742b44 Merge improvement/connection-lost-self-resolving: honour the 'clears once it's back' promise peter 2026-06-18 23:17:33 +02:00
  • 1278d079e2 fix(web): make the 'connection lost' notice self-resolving peter 2026-06-18 23:17:32 +02:00
  • 657cdfa507 Merge: promote dev to prod peter 2026-06-18 17:56:49 +02:00
  • 4f7aac7b92 Merge bug/proxy-keepalive-502-retry: stop player POSTs surfacing proxy keepalive 502s peter 2026-06-18 15:13:09 +02:00
  • 6bed9a1427 fix(web): retry idempotent calls on gateway 502/503/504, soften the rest peter 2026-06-18 15:13:01 +02:00
  • 02a6e5ff94 fix(api): raise uvicorn keepalive above the proxy reuse window peter 2026-06-18 15:13:01 +02:00
  • a1fd6fce91 Merge: promote dev to prod peter 2026-06-18 04:39:29 +02:00
  • d5e4f5353e docs(release): reflect unified notification center in v0.9.0 notes peter 2026-06-18 04:37:51 +02:00
  • 310e9b63b6 Merge feature/followups-batch-and-bell-unify: maintenance batch knob + unified notification inbox peter 2026-06-18 04:37:27 +02:00
  • d3c6ce659c feat(notifications): unify the two rail indicators into one inbox peter 2026-06-18 04:37:20 +02:00
  • dd83718304 feat(scheduler): admin-tunable maintenance re-validation batch size peter 2026-06-18 04:37:08 +02:00
  • 264a3c74af docs(release): note admin scheduler run-now + live progress under v0.9.0 peter 2026-06-18 04:02:11 +02:00
  • 89be480706 Merge feature/scheduler-run-now: run-now/run-all triggers, live progress, completion notices, nav badge fix peter 2026-06-18 04:01:38 +02:00
  • 00d07b9153 fix(nav): numeric inbox badge with active-state contrast peter 2026-06-18 04:01:19 +02:00
  • ed4194a8d3 feat(scheduler): admin run-now/run-all triggers + live progress + completion notices peter 2026-06-18 04:01:10 +02:00
  • 3a0789ebe7 chore(release): v0.9.0 — notification inbox + automatic video maintenance peter 2026-06-18 03:22:22 +02:00
  • 46fc56371f Merge feature/maintenance-and-inbox: validation job + notification inbox (P1) peter 2026-06-18 03:20:35 +02:00
  • c4aecf9f77 feat(maintenance): scheduled job to retire unplayable videos peter 2026-06-18 03:20:28 +02:00
  • b9a3a9012d feat(notifications): durable per-user inbox (P1) + maintenance schema peter 2026-06-18 03:20:17 +02:00
  • 19eb0242f8 Merge: promote dev to prod peter 2026-06-18 01:19:23 +02:00
  • a11a8db278 chore(release): v0.8.0 — channel columns, tag workflow, video reset, error dialog peter 2026-06-18 01:18:41 +02:00
  • e85d30a3f3 Merge improvement/tags-ux: tag UX overhaul, user-tags feed widget, video reset, global error dialog peter 2026-06-18 01:17:38 +02:00
  • 1e530d23a6 feat(tags): tag UX overhaul + per-card video reset peter 2026-06-18 01:17:31 +02:00
  • b55a944e7c fix(ux): modal error dialog for server-refused actions + ESC closes only the topmost peter 2026-06-18 01:17:31 +02:00
  • edd8c85132 Merge improvement/channel-aggregates: aggregate columns, attached-only tags, auto-width DataTable peter 2026-06-17 23:24:31 +02:00
  • 0aa16543d9 feat(channels): aggregate columns + smarter tag display peter 2026-06-17 23:24:25 +02:00
  • 14da25bf19 feat(ui): content-driven column widths in DataTable peter 2026-06-17 23:24:25 +02:00
  • 0edd7af45d Merge: promote dev to prod peter 2026-06-17 19:18:19 +02:00
  • a7d087c6d3 chore(release): v0.7.0 — data-table channel manager, sidebar reorg, fixes peter 2026-06-17 19:17:35 +02:00
  • a007a31bbf Merge improvement/channel-manager-1: data-table channel manager + reusable DataTable + admin reset peter 2026-06-17 19:16:30 +02:00
  • 5610dba5eb feat(channels): data-table channel manager peter 2026-06-17 19:16:23 +02:00
  • 0210b84166 feat(channels): admin reset / re-backfill endpoint peter 2026-06-17 19:16:23 +02:00
  • 9872a0115c feat(ui): reusable DataTable component peter 2026-06-17 19:16:23 +02:00
  • 4759103f26 Merge bug/settings-tab-persist: keep the selected Settings tab on reload peter 2026-06-17 14:30:56 +02:00
  • 3d6e278dd8 fix(settings): persist the active tab across reloads peter 2026-06-17 14:30:56 +02:00
  • 9a9d700cf3 Merge improvement/sidebar-chrome-reorg: grouped rail + chrome controls in sidebar + toast relocation peter 2026-06-17 14:28:39 +02:00
  • d94f41cb56 feat(toast): surface toasts bottom-left by the bell, brighter dark rim peter 2026-06-17 14:28:29 +02:00
  • 7a5f52a89b feat(nav): group rail modules + move chrome controls into the sidebar peter 2026-06-17 14:28:29 +02:00
  • 970ef352ec Merge improvement/quick-wins-1: channel YT links + badge checks, playlist input on top, stats bars peter 2026-06-17 13:55:49 +02:00
  • e0590c2b6c fix(stats): keep daily usage bars always visible peter 2026-06-17 13:55:43 +02:00
  • b96fe0caba feat(playlists): move the new-playlist input to the top of the rail peter 2026-06-17 13:55:43 +02:00
  • ccf044ac2c feat(channels): YouTube link on channel name + done checkmarks peter 2026-06-17 13:55:43 +02:00
  • fa4b4ac556 Merge bug/watched-state-500-race: fix watched not persisting at end-of-playback peter 2026-06-17 13:38:55 +02:00
  • a09e0dda0c fix(player): persist watched at end-of-playback (atomic upsert) peter 2026-06-17 13:38:47 +02:00
  • c2bf5b025c Merge: promote dev to prod peter 2026-06-16 17:46:15 +02:00
  • 79249104d4 chore(release): v0.6.0 — admin Background Scheduler dashboard peter 2026-06-16 17:46:15 +02:00
  • 25dca48964 Merge feature/scheduler-controls: job tooltips, status legend, editable intervals peter 2026-06-16 15:58:30 +02:00
  • 2a02fb353e feat(scheduler): per-job help tooltips, status legend, inline interval edit peter 2026-06-16 15:58:23 +02:00
  • 84aebe16c7 feat(scheduler): admin-editable job intervals (DB-backed, live reschedule) peter 2026-06-16 15:58:23 +02:00