-
9c2a04406b
feat(llm): usage hook to surface token counts (ADR-030, #15)

mathiasandClaude Opus 4.8
2026-06-12 08:36:02 +02:00
-
a5a8cf6f6d
feat(metrics): Prometheus collectors + typed API + HTTP middleware (ADR-030, #15)

mathiasandClaude Opus 4.8
2026-06-12 08:32:41 +02:00
-
64d11af9ef
docs(bdd): observability.feature scenarios (@pending until TDD, #15)
mathias
2026-06-12 08:28:46 +02:00
-
b590d2708d
docs(adr): ADR-030 observability — slog + Prometheus metrics (issue #15)
mathias
2026-06-12 08:27:56 +02:00
-
7314895ec4
fix(auth): stateless session cookie — stop logging users out on deploy (ADR-029)
v0.27.0

mathiasandClaude Opus 4.8
2026-06-11 23:07:13 +02:00
-
36dd182fb5
feat(report): Stage-0 usage gate counts from a baseline date (default 2026-06-11)
v0.26.0

mathiasandClaude Opus 4.8
2026-06-11 22:52:15 +02:00
-
40808f2d4b
docs(onboard): BDD scenarios + architecture for the ADR-028 burst
v0.25.0
mathias
2026-06-11 19:52:38 +02:00
-
9232f49555
feat(onboard): burst picks likely-good videos, summarizes with stronger model (ADR-028)
mathias
2026-06-11 19:50:56 +02:00
-
582c1a2065
feat(store): OnboardBurstVideoIDs — junk-avoiding burst selection (ADR-028)
mathias
2026-06-11 18:41:20 +02:00
-
9f0d8cf198
feat(discovery): persist video duration_s instead of discarding it (ADR-028)
mathias
2026-06-11 18:40:21 +02:00
-
d21077303d
feat(config): add OnboardSummarizerModel + OnboardMaxVideoSeconds (ADR-028)
mathias
2026-06-11 18:38:18 +02:00
-
9b2ee2e765
docs: spec onboarding-wow-burst + ADR-028 (better picks, stronger model)
mathias
2026-06-11 18:26:42 +02:00
-
b8fbc5a805
docs: spec first-session wow — verify & improve onboarding summary burst (investigate-first)
mathias
2026-06-11 15:36:09 +00:00
-
19ca4282a8
refactor(web): dock chat inline below the summary, integrated view (ADR-027)
v0.24.0

mathiasandClaude Opus 4.8
2026-06-11 14:02:39 +02:00
-
71df696448
feat(web): per-video chat over the stored transcript (ADR-027)
v0.23.0

mathiasandClaude Opus 4.8
2026-06-11 09:26:58 +02:00
-
cc3cda4ab8
feat(chat): stored-transcript QA service (ADR-027)

mathiasandClaude Opus 4.8
2026-06-11 09:16:45 +02:00
-
69a49bc603
docs(decisions): add ADR-027 — chat with a video's stored transcript

mathiasandClaude Opus 4.8
2026-06-11 09:13:31 +02:00
-
137804b0b1
docs: spec chat-with-transcript (ADR-027)
mathias
2026-06-11 06:38:16 +00:00
-
a9be5f285b
feat(summarizer): move local fallback off koala to iguana/gemma4-26b
v0.22.0

mathiasandClaude Opus 4.8
2026-06-11 07:54:56 +02:00
-
fe56e2fe01
test: make embedded-postgres per-process so concurrent CI runs don't collide
v0.21.1

mathiasandClaude Opus 4.8
2026-06-11 07:26:33 +02:00
-
beeb5bc31b
feat(gate): foreground caption fetches take priority over the background sweep (ADR-026)
v0.21.0

mathiasandClaude Opus 4.8
2026-06-10 22:10:15 +02:00
-
09eb31d1fe
fix(scheduler): derive rotation offset from wall-clock, not a reset-on-restart counter
v0.20.1

mathiasandClaude Opus 4.8
2026-06-10 21:59:12 +02:00
-
1665a1e7c4
feat(web): honest, state-aware summarize status with charm spinner (ADR-025)
v0.20.0

mathiasandClaude Opus 4.8
2026-06-10 21:52:33 +02:00
-
5219561a91
feat(discovery): per-channel caption-availability memory (ADR-024)
v0.19.0

mathiasandClaude Opus 4.8
2026-06-10 20:27:25 +02:00
-
9db06d8a63
feat(discovery): drop Shorts and livestreams before the caption fetch (ADR-023)
v0.18.0

mathiasandClaude Opus 4.8
2026-06-10 19:34:45 +02:00
-
1aa8a97f95
fix(scheduler): rotate over connected users only for true fair share
v0.17.1

mathiasandClaude Opus 4.8
2026-06-10 18:28:54 +02:00
-
cc69a912f4
fix(scheduler): rotate lead user each pass so caption budget is shared
v0.17.0

mathiasandClaude Opus 4.8
2026-06-10 18:07:01 +02:00
-
f4a0544903
fix(scheduler): cache transcripts on the scheduled path (ADR-021 regression)

mathiasandClaude Opus 4.8
2026-06-10 18:07:01 +02:00
-
e2a52789b9
feat(web): mode-aware backlog banner — stop telling manual users summaries auto-arrive
v0.16.0

mathiasandClaude Opus 4.8
2026-06-10 09:14:52 +02:00
-
e696b6405b
docs(build-state): v0.15.0, summarizer is now a resilient chain (ADR-022)
mathias
2026-06-10 08:59:26 +02:00
-
e9b5a3f3e7
feat(summarizer): resilient endpoint chain with local→cloud fallback (ADR-022)
v0.15.0

mathiasandClaude Opus 4.8
2026-06-10 08:36:16 +02:00
-
0ba78e8868
docs: refresh build-state for transcript persistence (ADR-021)
v0.14.0

mathiasandClaude Opus 4.8
2026-06-09 23:39:27 +02:00
-
821d5f99cd
docs(bdd): scenario for transcript reuse — re-analysis never re-fetches

mathiasandClaude Opus 4.8
2026-06-09 23:37:54 +02:00
-
5c70408e75
feat(usecase): read stored transcript before fetching (ADR-021)

mathiasandClaude Opus 4.8
2026-06-09 23:35:04 +02:00
-
cb6917ca59
feat(store): shared, video-keyed transcript persistence (ADR-021)

mathiasandClaude Opus 4.8
2026-06-09 23:32:12 +02:00
-
099b2d4c68
docs(decisions): ADR-021 — shared, video-keyed transcript persistence

mathiasandClaude Opus 4.8
2026-06-09 23:24:11 +02:00
-
f66c1bcdcc
feat(web): real channel filter — multi-select of the user's channels
v0.13.0

mathiasandClaude Opus 4.8
2026-06-09 23:02:54 +02:00
-
1e65c3b413
fix(web): show paste box to any connected user, not only on an empty feed
v0.12.1

mathiasandClaude Opus 4.8
2026-06-09 22:17:00 +02:00
-
87c978774f
docs(bdd): scenarios for paste-a-URL + onboarding burst, mapped to tests
v0.12.0

mathiasandClaude Opus 4.8
2026-06-09 22:06:40 +02:00
-
70a9f1d4cd
feat(web): in-feed paste box + onboarding-aware connect confirmation

mathiasandClaude Opus 4.8
2026-06-09 22:06:40 +02:00
-
1d5b2c6365
feat(serve): wire paste fetcher + connect-time onboarding burst
v0.11.0

mathiasandClaude Opus 4.8
2026-06-09 21:58:39 +02:00
-
62acfee2ed
feat(web): paste-a-URL handler — add an arbitrary video + summarize (Feature 2)

mathiasandClaude Opus 4.8
2026-06-09 21:54:28 +02:00
-
2907801aca
feat(youtube): VideoByID for arbitrary-video metadata (paste-a-URL)

mathiasandClaude Opus 4.8
2026-06-09 21:43:28 +02:00
-
59050c4db6
feat(store): NewestUnsummarizedVideoIDs for the onboarding cap

mathiasandClaude Opus 4.8
2026-06-09 21:39:40 +02:00
-
c320ed88aa
feat(config): add TAPIR_ONBOARD_SUMMARIZE_COUNT (default 3, hard cap 5)

mathiasandClaude Opus 4.8
2026-06-09 21:35:05 +02:00
-
bddd75d92e
feat(web): parse YouTube video id from pasted URL forms

mathiasandClaude Opus 4.8
2026-06-09 21:35:05 +02:00
-
e4c701c6f1
feat(discovery): trigger a discovery pass on YouTube connect
v0.10.0

mathiasandClaude Opus 4.8
2026-06-09 21:15:46 +02:00
-
b527db9739
docs: bump last-tag reference to v0.9.0
mathias
2026-06-09 21:03:44 +02:00
-
c5f556d1d6
fix(scheduler): skip discovery for users with no video connection
v0.9.0

mathiasandClaude Opus 4.8
2026-06-09 20:49:11 +02:00
-
a884e7e9c5
test(bdd): add scenario name-coverage gate (no godog)

mathiasandClaude Opus 4.8
2026-06-08 22:59:25 +02:00
-
27fd33c99c
docs: reconcile requirements + architecture with ADR-020

mathiasandClaude Opus 4.8
2026-06-08 20:21:14 +02:00
-
2c96926ff7
docs: correct stale last-tag reference (v0.4.0 -> v0.8.0)

mathiasandClaude Opus 4.8
2026-06-08 15:50:06 +02:00
-
2cda62b3ad
docs(adr): record ADR-020 recency-bounded auto-summarize + sparse honesty
v0.8.0

mathiasandClaude Opus 4.8
2026-06-08 14:04:37 +02:00
-
f29927f50d
test(web): guard against the removed over-promise card copy

mathiasandClaude Opus 4.8
2026-06-08 14:03:08 +02:00
-
51aa5d940c
feat(web): segment watched/skipped action toggles

mathiasandClaude Opus 4.8
2026-06-08 14:02:31 +02:00
-
f775441a62
feat(web): drop the empty terms checkbox from registration

mathiasandClaude Opus 4.8
2026-06-08 14:01:28 +02:00
-
12fb031b6c
feat(web): add a back link to the detail page

mathiasandClaude Opus 4.8
2026-06-08 14:00:17 +02:00
-
980638d80a
feat(web): slim the list filters and hide them when empty

mathiasandClaude Opus 4.8
2026-06-08 13:59:44 +02:00
-
40b703e02a
feat(web): collapse older + caption-less videos in the list

mathiasandClaude Opus 4.8
2026-06-08 13:55:07 +02:00
-
3df0459fed
feat(store): order video list by published_at, NULLS LAST

mathiasandClaude Opus 4.8
2026-06-08 13:50:30 +02:00
-
2384c47b81
feat(runner): bound auto-summarize to a recency window

mathiasandClaude Opus 4.8
2026-06-08 13:48:04 +02:00
-
4a0a56e152
feat(web): lead summary detail with takeaways

mathiasandClaude Opus 4.8
2026-06-08 13:44:20 +02:00
-
9bf1c31605
fix(web): correct stale welcome-page invite copy

mathiasandClaude Opus 4.8
2026-06-08 13:43:32 +02:00
-
a1a5217d77
feat(web): honest sparse-state and queue copy

mathiasandClaude Opus 4.8
2026-06-08 13:42:40 +02:00
-
9c7e3be984
docs(ux): add Stage-0 recency-bounded heuristic review

mathiasandClaude Opus 4.8
2026-06-08 13:11:41 +02:00
-
8e45f21d23
docs: ADR-019 (Authentik owns invites), supersede ADR-017

mathiasandClaude Opus 4.8
2026-06-07 23:01:14 +02:00
-
e7c2e575d3
refactor: remove Dex local-password invite provisioning (ADR-019)

mathiasandClaude Opus 4.8
2026-06-07 23:01:14 +02:00
-
9cd3f7e934
fix(dex): passwordName must match Dex's internal passwordID() — maps non-[a-z0-9-] to '-'
mathias
2026-06-07 11:37:24 +02:00
-
c812c71ecc
fix(dex): store raw bcrypt hash in Password CR, not base64-encoded
mathias
2026-06-07 09:28:11 +02:00
-
084b73907d
feat(task): add invite task — task invite EMAIL=user@example.com
mathias
2026-06-07 07:35:47 +02:00
-
0b04e487ad
docs: update card-state model — 'Summarize now' verb, no-captions state, five-state table
mathias
2026-06-06 22:42:37 +02:00
-
2fedc45443
feat(web): unify card states — one 'Summarize now' verb, honest no-captions state
mathias
2026-06-06 22:31:38 +02:00
-
58cd68c1eb
docs: spec video-card state unification — one "Summarize now" verb + honest no-captions state
mathias
2026-06-06 19:58:45 +00:00
-
e472015c76
docs: replace evasion framing with honest onboarding-prioritisation rationale
mathias
2026-06-06 21:29:25 +02:00
-
0c0225f9c6
feat(runner): process candidates newest-first within each pass (ADR-018)
mathias
2026-06-06 21:27:38 +02:00
-
8403e8e524
docs: spec newest-first batch ordering + honest Try-now/prioritisation docs
mathias
2026-06-06 19:20:27 +00:00
-
57e29ca06c
feat(web): pipeline stats bar, summarized-first sort, Try now button for rate-limited videos
mathias
2026-06-06 19:20:20 +02:00
-
24f2a69eaa
fix(web): gofmt view.go
mathias
2026-06-06 11:31:28 +02:00
-
241eebfd9f
docs(homelab): add TAPIR_FETCH_BACKOFF config, update snapshot date
mathias
2026-06-06 11:31:11 +02:00
-
317b0d4834
docs(ui-spec): add Dex auth details, invite onboarding, summarized-only filter, unavailable channels
mathias
2026-06-06 11:29:14 +02:00
-
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