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