-
252a4ebd9e
docs(architecture): add in-process scheduler sequence, rate gate description, auto_summarize default fix
mathias
2026-06-06 11:27:18 +02:00
-
1ad1966672
docs(data-model): add CHANNEL_ERRORS + LOGIN_EVENTS entities, transcript_status columns, auto_summarize default update
mathias
2026-06-06 11:25:52 +02:00
-
ccadcecfef
docs(readme): add tapir serve, fix TAPIR_DISCOVERY_INTERVAL reference
mathias
2026-06-06 11:24:23 +02:00
-
4c5d3cca81
feat(web): add 'Summarized only' filter checkbox to video list
mathias
2026-06-06 11:19:18 +02:00
-
10233ee881
fix(scheduler): include ChannelUnavailable in sumStats + pass-complete log
mathias
2026-06-06 10:22:37 +02:00
-
f1e9739900
feat(store,runner,web): channel unavailability notice (migration 013)
mathias
2026-06-06 10:09:52 +02:00
-
940f80899a
fix(store): migration 012 — back-fill auto_summarize via RLS bypass
mathias
2026-06-06 10:01:13 +02:00
-
f35c2a85a5
docs: scheduled-discovery env + single-replica constraint; VISION gate-clock reset

mathiasandClaude Opus 4.8
2026-06-05 23:43:17 +02:00
-
5d029a2823
feat(store): default auto_summarize ON for new users (ADR-018)

mathiasandClaude Opus 4.8
2026-06-05 23:42:23 +02:00
-
f6623afd41
feat(serve): in-process scheduled discovery for all users (ADR-018)

mathiasandClaude Opus 4.8
2026-06-05 23:39:39 +02:00
-
149ec2adae
feat(store): ListAllUsers for scheduler user enumeration

mathiasandClaude Opus 4.8
2026-06-05 23:36:44 +02:00
-
f5021a8436
feat(youtube): process-wide caption-fetch rate gate (ADR-014 item 2)

mathiasandClaude Opus 4.8
2026-06-05 23:36:17 +02:00
-
88294d38bc
docs: add ADR-018 — in-process scheduled discovery, auto-summarize, gate-clock reset
mathias
2026-06-05 13:03:18 +00:00
-
ca9bf2657f
docs: spec in-process scheduled discovery + auto-summarize + rate-gate finish
mathias
2026-06-05 12:59:50 +00:00
-
4706c508e9
docs: ratify ADR-017 KEEP — invite flow is load-bearing (some users can't use Google OIDC)
mathias
2026-06-05 12:47:39 +00:00
-
b4da97e0e2
docs: resolve ADR-014 migration-008 false alarm (cols shipped in 007)
mathias
2026-06-04 18:54:56 +00:00
-
561ba79360
feat(cli): tapir report — Stage-0 usage gate query

mathiasandClaude Opus 4.8
2026-06-03 23:45:53 +02:00
-
2fac735837
feat(web): stamp login_events on every gated request

mathiasandClaude Opus 4.8
2026-06-03 23:43:49 +02:00
-
de54cd33b2
feat(store): throttled per-day StampLogin + login_events delete cascade

mathiasandClaude Opus 4.8
2026-06-03 23:42:50 +02:00
-
b070347597
feat(store): add append-only login_events table with forced RLS

mathiasandClaude Opus 4.8
2026-06-03 23:41:04 +02:00
-
99743af182
docs: add ADR-017 (Dex-write invite flow) retroactively; annotate ADR-002/013/014
mathias
2026-06-03 21:38:49 +00:00
-
070491261d
fix(web): hide nav auth links on public pages (/welcome, /invite)
mathias
2026-06-03 23:25:24 +02:00
-
72bf8a5553
docs(env): document TAPIR_PUBLIC_URL for tapir invite
v0.7.0

mathiasandClaude Opus 4.8
2026-06-03 23:21:06 +02:00
-
dece5dec44
feat(web): public /invite/{token} set-password + account-creation flow

mathiasandClaude Opus 4.8
2026-06-03 23:19:22 +02:00
-
893886a60a
feat(cli): tapir invite <email> + TAPIR_PUBLIC_URL config

mathiasandClaude Opus 4.8
2026-06-03 23:15:24 +02:00
-
e44485df16
feat(dex): in-cluster Password CR client for local-password accounts

mathiasandClaude Opus 4.8
2026-06-03 23:14:08 +02:00
-
8b7ef07ba3
feat(store): invitations table + create/peek/claim methods

mathiasandClaude Opus 4.8
2026-06-03 23:12:40 +02:00
-
1cf58768ed
docs: spec the Stage 0 usage-measurement build (login events)
mathias
2026-06-03 20:59:49 +00:00
-
f45ba35e25
docs: VISION Stage 0 — keep "unprompted" as ideal, note measurement gap
mathias
2026-06-03 20:59:14 +00:00
-
943554a96c
feat(web): "Retrying later" badge for rate-limited videos
v0.6.0

mathiasandClaude Opus 4.8
2026-06-03 22:56:48 +02:00
-
40a614c8d4
feat(runner): 429 backoff — skip still-throttled videos, persist status

mathiasandClaude Opus 4.8
2026-06-03 22:56:07 +02:00
-
ce2fc62ef8
feat(config): TAPIR_FETCH_BACKOFF for rate-limit retry window

mathiasandClaude Opus 4.8
2026-06-03 22:54:24 +02:00
-
0ceacc8230
feat(usecase): surface TranscriptSource on ProcessResult

mathiasandClaude Opus 4.8
2026-06-03 22:53:11 +02:00
-
1e81965519
feat(store): TranscriptStatus read field + status setter/loader

mathiasandClaude Opus 4.8
2026-06-03 22:52:48 +02:00
-
f50c072d65
fix(web): add Log out to the persistent nav header
mathias
2026-06-03 22:49:14 +02:00
-
e6f508824b
docs: add ADR-016 — Stage 0 gate revised to "me or a friend", behavioural
mathias
2026-06-03 20:46:40 +00:00
-
689500c85e
feat(store): migration 007 — per-video transcript status

mathiasandClaude Opus 4.8
2026-06-03 22:45:12 +02:00
-
4678d473b8
feat(youtube): map caption 429 to SourceRateLimited

mathiasandClaude Opus 4.8
2026-06-03 22:44:47 +02:00
-
c63b2de66d
fix(web): actionable empty state for the summary list

mathiasandClaude Opus 4.8
2026-06-03 22:44:41 +02:00
-
27aa319f1d
feat(domain): add SourceRateLimited transcript source

mathiasandClaude Opus 4.8
2026-06-03 22:44:23 +02:00
-
61d4d5bc4a
fix(web): clarify landing CTA copy for new users

mathiasandClaude Opus 4.8
2026-06-03 22:43:59 +02:00
-
483730cd03
fix(web): make anchor-styled buttons readable

mathiasandClaude Opus 4.8
2026-06-03 22:43:47 +02:00
-
477701fea2
docs: revise Stage 0 gate to "useful to me or a friend" (behavioural)
mathias
2026-06-03 20:44:19 +00:00
-
17fad140a6
docs: add ADR-015 — per-user credentials envelope-encrypted in PG18
mathias
2026-06-03 20:29:50 +00:00
-
eb24a24b9c
chore(ci): remove mirror job (SSH key rotation pending)
v0.5.0
mathias
2026-06-03 22:21:22 +02:00
-
21e6ddd61e
docs(ui-spec): record as-built deviations and additions

mathiasandClaude Opus 4.8
2026-06-03 22:20:04 +02:00
-
152aab7a4a
docs(use-cases): add registration, summarize-mode, landing scenarios

mathiasandClaude Opus 4.8
2026-06-03 22:19:15 +02:00
-
1018dc0df9
docs(architecture): document the tapir serve web surface (ADR-011/012)

mathiasandClaude Opus 4.8
2026-06-03 22:18:23 +02:00
-
74f4fd7f2a
docs(data-model): reconcile schema with migrations 002-006

mathiasandClaude Opus 4.8
2026-06-03 22:17:15 +02:00
-
0cc441d6ce
docs(data-model): isolation enforcement is live (RLS), not dormant

mathiasandClaude Opus 4.8
2026-06-03 22:15:13 +02:00
-
8415a97d15
docs(claude): update build state section to v0.4.0 reality

mathiasandClaude Opus 4.8
2026-06-03 22:14:42 +02:00
-
fb425cbf9a
chore(decisions): reorder ADR-010 to numeric position

mathiasandClaude Opus 4.8
2026-06-03 22:13:50 +02:00
-
e77edf58ef
docs(web): update auth.go comments for multi-user reality (ADR-012)

mathiasandClaude Opus 4.8
2026-06-03 22:13:13 +02:00
-
f15f57f9ed
test(web): cover the /welcome landing page and its routing

mathiasandClaude Opus 4.8
2026-06-03 21:51:21 +02:00
-
d208110002
feat(web): mount /welcome handler outside the auth guard

mathiasandClaude Opus 4.8
2026-06-03 21:50:36 +02:00
-
3a27bf1126
feat(web): WelcomePage landing component

mathiasandClaude Opus 4.8
2026-06-03 21:50:21 +02:00
-
8ca374e657
fix(web): logout redirects to /welcome, not /auth/login

mathiasandClaude Opus 4.8
2026-06-03 21:49:08 +02:00
-
0fdf2f7218
feat(web): route unauthenticated root to /welcome, deep links to login

mathiasandClaude Opus 4.8
2026-06-03 21:48:51 +02:00
-
d83943c86a
feat(web): make /welcome a public path

mathiasandClaude Opus 4.8
2026-06-03 21:48:25 +02:00
-
6b817f11b9
docs: add landing-page + doc-reconciliation build spec
mathias
2026-06-03 19:18:40 +00:00
-
672a0c8580
docs: add ADR-013 (delete semantics) and ADR-014 (429 handling + UX)
mathias
2026-06-03 19:03:52 +00:00
-
a4aeb5efcd
feat(web): charmbracelet-aesthetic tapir spinner with charm palette
v0.4.0

mathiasandClaude Opus 4.8
2026-06-03 20:11:17 +02:00
-
8c6c7ca947
feat(cmd): shared buildProcessor + wire immediate web summarization

mathiasandClaude Opus 4.8
2026-06-03 19:50:06 +02:00
-
25215cbcbd
feat(web): immediate summarize + status poll + ASCII tapir spinner

mathiasandClaude Opus 4.8
2026-06-03 19:48:52 +02:00
-
404f74c55c
feat(web): Processor port + in-flight ProcessingSet on App

mathiasandClaude Opus 4.8
2026-06-03 19:46:20 +02:00
-
3014ee0d60
feat(web): summarization-mode UI — all-videos list, Summarize queue, mode toggle
v0.3.0

mathiasandClaude Opus 4.8
2026-06-03 19:31:29 +02:00
-
a269d4a200
feat(runner): manual summarization mode in the run loop

mathiasandClaude Opus 4.8
2026-06-03 19:28:20 +02:00
-
bdbdce7de1
feat(store): summarization-mode methods + all-videos read

mathiasandClaude Opus 4.8
2026-06-03 19:26:52 +02:00
-
748d5eb0bd
feat(store): migration 006 — per-user auto_summarize + per-video summarize_requested

mathiasandClaude Opus 4.8
2026-06-03 19:26:43 +02:00
-
fa57ee0532
docs(homelab): Stage-1 facts — RLS non-super DSN, per-user token PVC, web connect URI
mathias
2026-06-03 18:28:29 +02:00
-
22eafcf43f
feat(web): account page with disconnect + delete-account
v0.2.0

mathiasandClaude Opus 4.8
2026-06-03 16:55:02 +02:00
-
2fe4833434
feat(web): reusable flash/notification banner (PRG)

mathiasandClaude Opus 4.8
2026-06-03 16:52:03 +02:00
-
17d5e8c393
feat(secrets): FileStore.Delete to purge a user's OAuth tokens

mathiasandClaude Opus 4.8
2026-06-03 16:50:20 +02:00
-
c7624d97fe
feat(store): DeleteUser + DisplayName for account management

mathiasandClaude Opus 4.8
2026-06-03 16:49:50 +02:00
-
2aad79b2a8
feat(web): web-initiated YouTube OAuth connect flow (ADR-006)

mathiasandClaude Opus 4.8
2026-06-03 16:12:42 +02:00
-
0c9531a9b8
feat(store): video_connections table + RLS + connection store methods

mathiasandClaude Opus 4.8
2026-06-03 16:12:34 +02:00
-
7b4960e417
feat(web): registration gate + per-request user-id seam (ADR-012)

mathiasandClaude Opus 4.8
2026-06-03 16:00:30 +02:00
-
e62df0027d
refactor(oidc): drop single-subject allowlist, authenticate-only (ADR-012)

mathiasandClaude Opus 4.8
2026-06-03 15:56:13 +02:00
-
f396e01243
feat(store): user_identities map + UserBySubject/RegisterUser (ADR-012)

mathiasandClaude Opus 4.8
2026-06-03 15:53:34 +02:00
-
9bff59037f
merge: video embed on detail page (Worker R2)
mathias
2026-06-03 15:38:31 +02:00
-
-
6d9f3c49ed
merge: summary preview in list (Worker R1)
mathias
2026-06-03 15:37:42 +02:00
-
-
2ae66da0e0
merge: RLS isolation foundation — forced RLS + withUser scoping + isolation test (Worker I, ADR-012)
mathias
2026-06-03 15:37:24 +02:00
-
-
f28fdc0292
test(store): prove RLS isolation as a non-superuser role

mathiasandClaude Opus 4.8
2026-06-03 15:15:58 +02:00
-
7b139c2cd7
feat(store): route all DB access through withUser for structural scoping

mathiasandClaude Opus 4.8
2026-06-03 15:15:52 +02:00
-
6775e5f53d
feat(store): migration 003 — enforce per-user isolation via forced RLS

mathiasandClaude Opus 4.8
2026-06-03 15:15:44 +02:00
-
-
8210f927ee
feat(web): summary preview under each list card
mathias
2026-06-03 15:11:42 +02:00
-
dc4b06baf4
feat(web): embed video on detail page via nocookie iframe
mathias
2026-06-03 15:11:13 +02:00
-
23fa5427b7
feat(web): previewText truncation helper for summary cards
mathias
2026-06-03 15:10:50 +02:00
-
-
897a21a1d6
feat(store): expose provider_video_id on SummaryRow
mathias
2026-06-03 15:10:29 +02:00
-
b2d1909b13
feat(web): embedURL helper for privacy-friendly nocookie embeds
mathias
2026-06-03 15:10:06 +02:00
-
-
aa3f1631a6
docs(adr): ADR-012 — open Stage 1 (multi-user) with enforced RLS isolation
v0.1.0
mathias
2026-06-03 15:06:23 +02:00
-
598ba5d34f
feat(runner): TAPIR_FETCH_DELAY to throttle transcript fetches
mathias
2026-06-03 12:20:12 +02:00
-
7589c09201
fix(youtube): use a browser UA for the watch-page caption scrape
mathias
2026-06-03 09:35:36 +02:00
-
c9863e9633
feat(oidc): echo caller subject in the 403 to bootstrap the allowlist
mathias
2026-06-03 08:53:06 +02:00
-
c33cba3555
fix(docker): bump build image to golang:1.26 to match go.mod 1.26.1
mathias
2026-06-03 08:44:41 +02:00
-
86f8929c15
fix(ci): give rootless buildah a writable XDG_RUNTIME_DIR in build job
mathias
2026-06-03 08:23:40 +02:00
-
3a1eb3d3da
fix(test): serialize packages (-p 1) to stop embedded-postgres data-dir race
mathias
2026-06-03 08:14:44 +02:00
-
551c0b1457
fix(ci): align go directive to estate 1.26.1 so setup-go uses host Go
mathias
2026-06-03 07:58:57 +02:00
-
7ee0684b81
fix(ci): quote "on" key so gitea parses workflow triggers
mathias
2026-06-03 07:42:30 +02:00
-
0f0d72ca8c
docs(ux): after-screenshots of the polished Stage-0 reader
mathias
2026-06-03 00:20:22 +02:00