Commit graph

  • 6a71e3d943 feat(legal): public privacy policy, terms, and homepage for OAuth verification npeter83 2026-06-14 01:29:44 +02:00
  • e0980487af feat(onboarding): first-login wizard for incremental YouTube consent npeter83 2026-06-14 01:11:29 +02:00
  • 4765db89de feat(auth): split base sign-in from YouTube scopes for incremental onboarding npeter83 2026-06-13 23:56:34 +02:00
  • 9163a5f68e Merge: smoother long-feed scrolling npeter83 2026-06-12 18:17:03 +02:00
  • a8e98d03ae perf(feed): smoother scrolling for long feeds npeter83 2026-06-12 18:17:03 +02:00
  • 203624518d Merge: stop stale toasts resurrecting on reload npeter83 2026-06-12 18:07:31 +02:00
  • a64a8830eb fix(notifications): don't resurrect stale toasts on reload npeter83 2026-06-12 18:07:31 +02:00
  • 6d9a485c21 Merge robust avatar loading (no-referrer + fallback) npeter83 2026-06-12 18:01:43 +02:00
  • a640b181ee fix(ui): robust avatars — no-referrer + graceful fallback npeter83 2026-06-12 18:01:43 +02:00
  • 473171d1b4 Merge inline modal YouTube player npeter83 2026-06-12 17:39:56 +02:00
  • db0ffc3717 fix(feed): clear optimistic overrides on refetch npeter83 2026-06-12 17:39:28 +02:00
  • d5dab5377f feat(notifications): notify on 'watched' with an Unwatch action npeter83 2026-06-12 17:39:28 +02:00
  • 1bdde051c1 feat(player): linkify descriptions and play YouTube links inline npeter83 2026-06-12 17:39:20 +02:00
  • 195044042f feat(player): polish the description popover (opaque, portaled, opens upward) npeter83 2026-06-12 17:39:08 +02:00
  • fcb77ac2e1 feat(player): watched controls, compact layout, description popover npeter83 2026-06-12 17:39:01 +02:00
  • 99dfa7691c feat(player): in-app modal YouTube player with resume npeter83 2026-06-12 17:38:45 +02:00
  • d0b8ef796a fix(sidebar): resolve channel filter name from channel list after refresh npeter83 2026-06-12 14:08:49 +02:00
  • adeb0a6160 merge: per-user quota attribution + admin stats page npeter83 2026-06-12 02:47:55 +02:00
  • f255728f75 feat(stats): per-user API quota attribution + admin usage page npeter83 2026-06-12 02:47:55 +02:00
  • bcc4371ac7 merge: full-history chip reflects shared deep-queue state npeter83 2026-06-12 02:29:10 +02:00
  • de0decee59 fix(channels): reflect shared deep-queue state in the full-history chip npeter83 2026-06-12 02:29:10 +02:00
  • 0c76730797 merge: friendlier onboarding emails + deliverability headers npeter83 2026-06-12 02:05:18 +02:00
  • 8135527d75 fix(email): warmer onboarding copy + Reply-To/Date headers npeter83 2026-06-12 02:05:18 +02:00
  • a92112cefb merge: M5c — onboarding (DB invites, request-access, admin approval, email) npeter83 2026-06-12 01:43:14 +02:00
  • 2add173760 feat(m5c): onboarding — DB invites, request-access, admin approval, email npeter83 2026-06-12 01:43:07 +02:00
  • 5754f47f20 merge: fix recent/deep boundary-page video loss npeter83 2026-06-12 00:15:20 +02:00
  • 18aa3726fb fix(backfill): don't skip the tail of the recent/deep boundary page npeter83 2026-06-12 00:15:20 +02:00
  • 69e9c60ca1 merge: immediate recent backfill on full-history opt-in npeter83 2026-06-12 00:00:50 +02:00
  • 15007250db feat(channels): kick recent backfill immediately on 'full history' opt-in npeter83 2026-06-12 00:00:50 +02:00
  • c8a50472f3 merge: M5b — optional YouTube write scope (incremental OAuth) npeter83 2026-06-11 23:27:17 +02:00
  • 43c05ea14b feat(m5b): optional YouTube write scope via incremental OAuth npeter83 2026-06-11 23:27:11 +02:00
  • f4b8a721fb merge: M5d — demand-driven deep backfill + per-user ETA npeter83 2026-06-11 23:07:15 +02:00
  • beb961c021 feat(m5d): demand-driven deep backfill + per-user ETA npeter83 2026-06-11 23:07:09 +02:00
  • bbcfd46ea9 merge: M5a — channel manager, settings panel, per-user sync, liquid-glass UI npeter83 2026-06-11 22:52:23 +02:00
  • 0a6befd578 style(ui): glass opacity 82% -> 78% npeter83 2026-06-11 22:49:04 +02:00
  • 94a077d699 fix(ui): restore glass translucency (82%) — opaque value killed the effect npeter83 2026-06-11 22:45:14 +02:00
  • f429889250 fix(ui): opacity-based frosted glass; drop full-page settings blur npeter83 2026-06-11 22:39:52 +02:00
  • 4a35e8b42a fix(ui): stronger frosted glass + frosted settings backdrop; declutter header npeter83 2026-06-11 22:16:07 +02:00
  • b7d448b403 perf(ui): drop backdrop-filter from bulk glass cards npeter83 2026-06-11 22:04:01 +02:00
  • 3f4d5ed9d7 fix(dev): vite proxy to 127.0.0.1 + throttle error notifications npeter83 2026-06-11 22:00:57 +02:00
  • bc9b9a854c fix(ui): portal tooltips, opaque glass, settings rail+stable height, notif test, channel help npeter83 2026-06-11 21:30:25 +02:00
  • 002579e5e5 feat(ui): liquid-glass design system, settings polish, hints, notif fixes npeter83 2026-06-11 21:08:35 +02:00
  • a8822d3935 feat(m5a): channel manager, tabbed settings panel, per-user sync status npeter83 2026-06-11 20:45:48 +02:00
  • b8a8605797 merge: M4 polish — sidebar widgets, URL state, notification center, account menu npeter83 2026-06-11 19:59:26 +02:00
  • a419ac2943 fix(ui): notification UX — outside-click close, toast countdown, hide entry actions npeter83 2026-06-11 19:46:58 +02:00
  • a105e5c184 feat(ui): notification center with leveled toasts and error capture npeter83 2026-06-11 19:26:34 +02:00
  • ae0cd89e20 feat(ui): customizable sidebar — collapsible, reorderable, toggleable widgets npeter83 2026-06-11 19:21:48 +02:00
  • 98025d8fab feat(ui): reflect filters/sort/search in the URL npeter83 2026-06-11 19:17:08 +02:00
  • 3e1823b08b feat(ui): account hover-popup, upload-date chips, top clear-filters bar npeter83 2026-06-11 17:39:24 +02:00
  • 3afb284d46 chore(frontend): add package-lock.json for reproducible installs npeter83 2026-06-11 17:39:24 +02:00
  • 6120e6b0f8 merge: shared-database deployment (24/7 backfill) npeter83 2026-06-11 16:59:09 +02:00
  • 65c75d8f05 fix(deploy): apparmor:unconfined for nested Docker npeter83 2026-06-11 16:42:44 +02:00
  • fd1ac29704 feat(deploy): shared database + scheduler split for the server 24/7 backfill npeter83 2026-06-11 16:35:00 +02:00
  • 93e1d7afc2 merge: M4 reader UI npeter83 2026-06-11 04:27:31 +02:00
  • 21662534bc docs: mark M4 (reader UI) complete in README npeter83 2026-06-11 04:27:31 +02:00
  • f6c5488566 chore: structured timestamped logging across the backend npeter83 2026-06-11 04:26:18 +02:00
  • ecaf516429 chore: surface scheduler logs in container output (INFO for subfeed loggers) npeter83 2026-06-11 04:19:54 +02:00
  • dc73b43b71 feat: sync status indicator, admin pause/resume, filtered video count npeter83 2026-06-11 04:15:25 +02:00
  • f73cbdb490 feat: unhide action, date-range filter, more sort options npeter83 2026-06-11 04:00:17 +02:00
  • ecbecbb9f4 feat: feedback round 3 — content-type toggles, channel filter, card polish npeter83 2026-06-11 03:47:51 +02:00
  • e07a37622d fix: feedback round 2 — language, subscriptions, feed scope, UX npeter83 2026-06-11 03:28:45 +02:00
  • 8c245e986f fix: address reader-UI feedback (shorts, search, tags, login, UX) npeter83 2026-06-11 03:07:49 +02:00
  • e56502789f feat: M4 (part 2) — React reader UI with theming npeter83 2026-06-11 02:19:47 +02:00
  • 9a377b7e7e feat: M4 (part 1) — feed API, watch state, user preferences npeter83 2026-06-11 02:11:02 +02:00
  • 96f9c5a797 merge: M3 auto-tagging npeter83 2026-06-11 01:57:19 +02:00
  • 68dad91e8a feat: M3 — automatic channel tagging (language + topic system tags) npeter83 2026-06-11 01:57:19 +02:00
  • 64b18b3cc1 merge: M2 ingest core npeter83 2026-06-11 01:36:41 +02:00
  • cff1d23071 feat: M2 (part 2) — RSS poller, backfill, enrichment, scheduler npeter83 2026-06-11 01:36:41 +02:00
  • 24b6e0026d feat: M2 (part 1) — subscription import, YouTube client, quota guard npeter83 2026-06-11 01:22:07 +02:00
  • 3a774cf7d6 fix: request offline access on OAuth login so Google returns a refresh token npeter83 2026-06-11 01:14:06 +02:00
  • 10ef62bbad fix: default app UI language to English (login page) npeter83 2026-06-11 01:03:36 +02:00
  • a3aa2a72bc chore: enforce LF line endings via .gitattributes (CRLF for .ps1) npeter83 2026-06-11 01:02:06 +02:00
  • 3a5209e96c feat: M1 foundation — compose stack, FastAPI, Google OAuth, encrypted tokens npeter83 2026-06-11 01:01:37 +02:00