Commit Graph

  • b71d07c098 chore(dev): self-contained local dev stack (own Postgres + scheduler) peter 2026-06-16 15:21:43 +02:00
  • c011972efb Merge feature/scheduler-dashboard: live admin scheduler dashboard + reusable poll hook peter 2026-06-16 14:38:58 +02:00
  • 73b06b1fb6 feat(scheduler): live admin Scheduler dashboard + reusable poll hook (HU/EN/DE) peter 2026-06-16 14:38:51 +02:00
  • a339a73bd6 feat(scheduler): admin dashboard endpoint + per-job activity tracking peter 2026-06-16 14:38:51 +02:00
  • 1b2e0741c6 Merge: promote dev to prod peter 2026-06-16 12:02:38 +02:00
  • e6c53b3f96 chore(release): v0.5.1 — graceful fallback for non-embeddable videos peter 2026-06-16 12:02:38 +02:00
  • de4d657d42 fix(player): make the unavailable overlay fully opaque peter 2026-06-16 11:58:57 +02:00
  • 715eeffff8 Merge fix/player-error-handling: graceful 'Open on YouTube' fallback for non-embeddable videos peter 2026-06-16 10:45:57 +02:00
  • c2d9e7b5a9 fix(player): friendly fallback when a video can't be embedded peter 2026-06-16 10:45:57 +02:00
  • 659fb5b228 Merge: promote dev to prod peter 2026-06-16 10:23:30 +02:00
  • a76bbb5825 chore(release): v0.5.0 — demo account, clearer live videos peter 2026-06-16 10:23:29 +02:00
  • 831dee52bc Merge: promote dev to prod peter 2026-06-16 10:19:05 +02:00
  • e12e664579 Merge improvement/demo-banner: permanent demo banner instead of toast peter 2026-06-16 10:12:10 +02:00
  • 848fdd386f improvement(demo): permanent banner instead of a re-popping toast peter 2026-06-16 10:12:10 +02:00
  • e81a494436 Merge fix/live-reenrich: re-enrich transient live videos until they settle peter 2026-06-16 10:06:58 +02:00
  • b114dae39b fix(sync): re-enrich live videos so ended streams gain duration peter 2026-06-16 10:06:58 +02:00
  • ddaa95f2a6 Merge improvement/live-duration-badge: LIVE/upcoming badge instead of blank duration peter 2026-06-16 09:36:51 +02:00
  • d42a038a3f feat(card): show LIVE/upcoming badge where duration is absent peter 2026-06-16 09:36:51 +02:00
  • 15811b8b43 Merge improvement/demo-ux: graceful demo handling of unavailable YouTube actions peter 2026-06-16 09:27:34 +02:00
  • 484c6364e6 fix(demo): graceful UX when YouTube actions are unavailable peter 2026-06-16 09:27:34 +02:00
  • 5b6d898d31 Merge feature/demo-account: shared demo account (whitelist login, gating, admin reset) peter 2026-06-16 09:17:53 +02:00
  • 6405350104 feat(demo): login trigger, feature gating + admin UI (HU/EN/DE) peter 2026-06-16 09:17:34 +02:00
  • e0c63c26d4 feat(demo): admin demo whitelist CRUD + state reset peter 2026-06-16 09:17:27 +02:00
  • 5936436d26 feat(demo): hidden /auth/demo login + require_human guard peter 2026-06-16 09:17:21 +02:00
  • 9cac2cd335 feat(demo): demo-account schema + reusable rate limiter peter 2026-06-16 09:17:14 +02:00
  • 6d2042d8ae Merge: promote dev to prod peter 2026-06-16 03:18:58 +02:00
  • af84cc0404 chore(release): v0.4.1 — feed toolbar + clearer counts/dates peter 2026-06-16 03:18:58 +02:00
  • 5a2928b810 feat(player): exact upload date inline in the player meta too peter 2026-06-16 03:09:28 +02:00
  • 71d7440a8b feat(card): show the exact upload date inline after the relative time peter 2026-06-16 03:04:50 +02:00
  • 48e7f8d11e feat(card): exact view count on hover (disambiguate 9B vs 98) peter 2026-06-16 02:57:53 +02:00
  • ab439f9717 Merge improvement/feed-toolbar-show-sort: Show chips + key/direction sort peter 2026-06-16 02:46:26 +02:00
  • 4921a95d09 feat(feed): Show chips in the toolbar + key+direction sort peter 2026-06-16 02:46:26 +02:00
  • a44bdf7fdc Merge feature/1d-feed-toolbar: content-type chips + sort above the feed peter 2026-06-16 02:34:13 +02:00
  • d96b47ae5d feat(feed): 1D — content-type chips + sort in a toolbar above the cards peter 2026-06-16 02:34:13 +02:00
  • 079c8182b4 Merge: promote dev to prod peter 2026-06-16 02:16:33 +02:00
  • f6efe44e37 chore(release): v0.4.0 — navigation overhaul, glass, account switch peter 2026-06-16 02:16:21 +02:00
  • 15716dd578 fix(auth): always seed the active account into the switch list peter 2026-06-16 02:12:59 +02:00
  • 2d8c47b04e Merge feature/n3-multi-session: account switch without re-auth (Epic N, N3) peter 2026-06-16 02:05:38 +02:00
  • 583e003c23 feat(auth): N3 — server-side multi-session account switch peter 2026-06-16 02:05:38 +02:00
  • 8c076f7a75 feat(ui): brighten dark-mode glass so the frost is visible over dark UI peter 2026-06-16 01:57:41 +02:00
  • ed2d76f92d fix(nav): remove backdrop div so the account popover frosts peter 2026-06-16 01:54:01 +02:00
  • a18924bf97 fix(nav): restore frosted glass on the portaled account popover peter 2026-06-16 01:50:01 +02:00
  • 5bb85b039a fix(nav): portal account popover to body (stacking + click-through) peter 2026-06-16 01:46:32 +02:00
  • 74491991d7 fix(ui): opaque .glass-menu for floating popovers (readability) peter 2026-06-16 01:39:56 +02:00
  • 0adc1104a3 fix(ui): restore glass opacity in dark mode (account popover readability) peter 2026-06-16 01:34:25 +02:00
  • 7b2d4dfb78 Merge feature/n2-back-history: in-app Back/Forward navigation (Epic N, N2) peter 2026-06-16 01:27:49 +02:00
  • 250c1da214 feat(nav): N2 — browser Back navigates in-app, not to OAuth peter 2026-06-16 01:27:49 +02:00
  • 36c7a649ab feat(ui): stronger ambient + more translucent glass in dark mode peter 2026-06-16 01:20:40 +02:00
  • 67e518f7ef Merge feature/glassmorphism-phase1: frosted glass on nav, header, dialogs peter 2026-06-16 01:11:50 +02:00
  • d46be00d47 feat(ui): glassmorphism phase 1 — frost the app chrome peter 2026-06-16 01:11:50 +02:00
  • 2d54167afd Merge feature/n1b-settings-page: Settings as a left-nav page (Design B) peter 2026-06-16 01:05:05 +02:00
  • d30dc7f760 feat(nav): Settings as a page module (Design B) peter 2026-06-16 01:05:05 +02:00
  • 7b1fc02c68 Merge feature/n1-nav-shell: collapsible left navigation (Epic N, N1) peter 2026-06-16 00:42:23 +02:00
  • 4a80ea5aa5 feat(nav): N1 — collapsible left nav sidebar (Design C) peter 2026-06-16 00:42:23 +02:00
  • 424e820276 Merge: promote dev to prod peter 2026-06-16 00:17:10 +02:00
  • 3143d1c1db chore(release): v0.3.0 — playlists + YouTube two-way sync peter 2026-06-16 00:16:59 +02:00
  • 993e6ba7d5 fix(playlists): dirty lagged one edit (flush before fingerprinting) peter 2026-06-16 00:11:58 +02:00
  • 7a547d40fe Merge feature/playlist-fingerprint-dirty: fingerprint-derived dirty state peter 2026-06-15 23:00:56 +02:00
  • 6330ac3184 feat(playlists): derive dirty from a synced-state fingerprint peter 2026-06-15 23:00:56 +02:00
  • a2ad555ef3 fix(playlists): show Reset/Unsynced right after a reorder peter 2026-06-15 22:44:57 +02:00
  • f6e662ff14 Merge improvement/playlist-header-polish: tidy playlist detail header peter 2026-06-15 22:40:21 +02:00
  • 17bbb05593 polish(playlists): compact header actions + open-on-YouTube link peter 2026-06-15 22:40:21 +02:00
  • 55d476c0b7 Merge feature/playlist-revert-youtube: reset playlist to YouTube state peter 2026-06-15 22:28:16 +02:00
  • 55833d8f72 feat(playlists): reset a playlist to its YouTube state (discard local edits) peter 2026-06-15 22:28:16 +02:00
  • 380ad39ad4 fix(playlists): don't drop the restored selection during initial load peter 2026-06-15 22:19:05 +02:00
  • c1d43d8961 Merge improvement/playlist-rail-sort: rail sorting + persisted selection peter 2026-06-15 22:13:39 +02:00
  • a00779a1c9 feat(playlists): rail sorting, consolidated item sort, persist selection peter 2026-06-15 22:13:32 +02:00
  • 156e10235e Merge feature/s4e-playlist-sort-undo: playlist sort + reusable undo/redo peter 2026-06-15 21:52:35 +02:00
  • 40c0cbfc5a feat(playlists): sort + group-by-channel with reusable undo/redo peter 2026-06-15 21:52:28 +02:00
  • 1ddeac57cd Merge improvement/s4d-editable-mirrors: editable YouTube playlist mirrors peter 2026-06-15 21:40:20 +02:00
  • 9acea11010 feat(playlists): make YouTube-mirrored playlists editable + syncable peter 2026-06-15 21:40:13 +02:00
  • 49d226126c Merge feature/s4d-youtube-playlist-push: YouTube playlist write-back peter 2026-06-15 21:23:31 +02:00
  • 8911e9dc89 feat(playlists): Sync to YouTube UI + delete-on-YouTube choice peter 2026-06-15 21:23:13 +02:00
  • b150337c87 feat(playlists): push local playlists to YouTube (export + diff sync) peter 2026-06-15 21:23:02 +02:00
  • b7bf6cc6f9 feat(playlists): YouTube write API client methods peter 2026-06-15 21:22:51 +02:00
  • 35831dc3ce Merge feature/s4c-youtube-playlist-pull: YouTube playlist read-sync peter 2026-06-15 21:02:49 +02:00
  • 29696c549c fix(notifications): use the success level for success toasts peter 2026-06-15 19:46:37 +02:00
  • 84b56de21e feat(playlists): YouTube-mirrored playlists in the UI (read-only) + sync button peter 2026-06-15 19:37:17 +02:00
  • a661d079ee feat(playlists): YouTube playlist read-sync (backend) peter 2026-06-15 19:37:03 +02:00
  • 9c28a75787 Merge feature/s4b-watch-later-queue: Watch later unification + queue playback peter 2026-06-15 17:04:36 +02:00
  • 4ff0b9705c fix(header): keep the sync-status count live (focus refetch + background poll) peter 2026-06-15 17:00:06 +02:00
  • ddb1890e84 feat(playlists): keep the player queue live across tabs peter 2026-06-15 16:27:28 +02:00
  • 4689d2cbbd feat(playlists): queue playback in the player (auto-advance + prev/next) peter 2026-06-15 16:11:37 +02:00
  • dea740b728 feat(playlists): unify Saved into a built-in Watch later playlist peter 2026-06-15 15:33:53 +02:00
  • 47bad6d9ce Merge fix/playlist-detail-invalidation: live playlist detail after popover add peter 2026-06-15 15:20:28 +02:00
  • ef11c6c605 fix(playlists): refresh playlist detail after add/remove from the feed popover peter 2026-06-15 15:20:28 +02:00
  • a6a0c429d5 Merge feature/s4a-playlists-foundation: local playlists foundation peter 2026-06-15 15:17:35 +02:00
  • 4ed52cd244 fix(playlists): correctly clear/reselect after deleting a playlist peter 2026-06-15 15:15:56 +02:00
  • 48cb11434d feat(ui): reusable app-styled confirm dialog, replacing window.confirm peter 2026-06-15 15:06:47 +02:00
  • 50bc35d78f fix(nav): persist the current page across reloads peter 2026-06-15 14:59:24 +02:00
  • d7fc237d66 fix(playlists): clear the detail panel after deleting the selected playlist peter 2026-06-15 14:56:39 +02:00
  • fb5a2f1ed2 fix(playlists): flip the add-to-playlist popover up when it would overflow peter 2026-06-15 14:52:57 +02:00
  • 40a44cdde2 feat(playlists): frontend foundation — page, add-to-playlist, nav peter 2026-06-15 14:45:18 +02:00
  • bf769379cb feat(playlists): backend foundation — model, migration, CRUD API peter 2026-06-15 14:37:09 +02:00
  • ff1d36238f Merge: promote dev to prod peter 2026-06-15 13:58:34 +02:00
  • dcb1605cc7 Merge chore/release-0.2.0: version bump + release notes peter 2026-06-15 13:58:22 +02:00
  • 34c41f7a41 chore(release): 0.2.0 — shared library, dynamic facets, share view peter 2026-06-15 13:58:22 +02:00
  • c69d02d01a Merge feature/s3b-deurl-filter-state: de-URL filter state + share-view link peter 2026-06-15 12:30:17 +02:00
  • e18be73d46 feat(filters): "Share view" link button in the sidebar peter 2026-06-15 12:29:51 +02:00
  • 3e90fe2e5b refactor(filters): stop mirroring filters into the URL; localStorage is canonical peter 2026-06-15 12:29:43 +02:00