-
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
-
d9b7107ccb
feat(web): sleek Stage-0 reader — design system, card list, reader detail
mathias
2026-06-03 00:20:22 +02:00
-
fa9f101abe
feat(deploy): add Dockerfile and vendor htmx for deployable image

mathiasandClaude Opus 4.8
2026-06-03 00:08:35 +02:00
-
ae239c02c2
docs(ux): Stage-0 reader UX review with screenshots

mathiasandClaude Opus 4.8
2026-06-03 00:06:54 +02:00
-
3364cf7ac3
feat(serve): wire Dex OIDC into serve when configured, else StubAuth

mathiasandClaude Opus 4.8
2026-06-03 00:05:25 +02:00
-
7d525eaaa3
merge: Templ+HTMX reader pages + tapir serve (Worker C, agent/ui-pages)
mathias
2026-06-02 23:57:23 +02:00
-
-
d744c049d4
merge: Dex OIDC session (Worker B, agent/ui-dex-auth)
mathias
2026-06-02 23:56:14 +02:00
-
-
71689ced60
feat(web): Stage-0 reader UI — Templ+HTMX pages +
tapir serve

mathiasandClaude Opus 4.8
2026-06-02 23:47:47 +02:00
-
-
-
57c06e5a12
feat(web): implement Dex OIDC auth (web.Auth) with single-user allowlist

mathiasandClaude Opus 4.8
2026-06-02 23:46:20 +02:00
-
-
e38fa792ee
feat(web): add Auth seam (interface + StubAuth) for parallel UI build

mathiasandClaude Opus 4.8
2026-06-02 23:39:04 +02:00
-
a032c324f6
feat(store): persist summary actions (watch/skip/save) — Stage-0 metric

mathiasandClaude Opus 4.8
2026-06-02 23:36:55 +02:00
-
13663c220b
docs(ui): add Stage-0 Web UI spec + ADR-011 (Dex authn, action signal, tapir.d-ma.be GitOps)

mathiasandClaude Opus 4.8
2026-06-02 23:30:41 +02:00
-
af1c163a11
fix(youtube): discover via uploads playlist, not search.list (100x cheaper)

mathiasandClaude Opus 4.8
2026-06-02 23:15:27 +02:00
-
92da25d01e
docs(research): Vimeo + Whisper transcript feasibility findings

mathiasandClaude Opus 4.8
2026-06-02 23:14:03 +02:00
-
8b14ef4add
feat(youtube): acquire captions via player/timedtext baseUrl (ADR-010)

mathiasandClaude Opus 4.8
2026-06-02 23:08:13 +02:00
-
fa16a62e6d
docs(readme): add headless-on-koala runbook (op service account + SSH-tunnelled auth)

mathiasandClaude Opus 4.8
2026-06-02 22:11:57 +02:00
-
f6539dc88f
docs(config): add .env.example the README runbook references

mathiasandClaude Opus 4.8
2026-06-02 22:03:17 +02:00
-
a38002df80
merge: demo wiring — tapir auth/run + config (Worker F, agent/demo-wiring)
mathias
2026-06-02 21:29:48 +02:00
-
-
17df43da53
merge: CLI reader — tapir list/show (Worker E, agent/cli-reader)
mathias
2026-06-02 21:28:54 +02:00
-
-
61796db16b
feat(cmd): wire auth/run dispatcher + demo docs

mathiasandClaude Opus 4.8
2026-06-02 21:03:21 +02:00
-
5645c2c012
feat(runner): end-to-end run loop with durable dedup

mathiasandClaude Opus 4.8
2026-06-02 21:01:23 +02:00