2026-04-14 - 2026-10-14
Overview
43 Releases published by 1 user
Published
v0.33.2
Published
v0.33.1
Published
v0.33.0
Published
v0.32.1
Published
v0.32.0
Published
v0.31.1
Published
v0.31.0
Published
v0.15.2
Published
v0.15.1
Published
v0.30.0
Published
v0.29.0
Published
v0.28.0
Published
v0.27.0
Published
v0.26.0
Published
v0.25.0
Published
v0.24.0
Published
v0.23.0
Published
v0.22.0
Published
v0.21.1
Published
v0.21.0
Published
v0.20.1
Published
v0.20.0
Published
v0.19.0
Published
v0.18.0
Published
v0.17.1
Published
v0.17.0
Published
v0.16.0
Published
v0.15.0
Published
v0.14.0
Published
v0.13.0
Published
v0.12.1
Published
v0.12.0
Published
v0.11.0
Published
v0.10.0
Published
v0.9.0
Published
v0.8.0
Published
v0.7.0
Published
v0.6.0
Published
v0.5.0
Published
v0.4.0
Published
v0.3.0
Published
v0.2.0
Published
v0.1.0
7 Pull requests merged by 1 user
Merged
#63 fix(uploads): bound the silence in an upload body with a re-armed read deadline (#56)
Merged
#62 feat(uploads): choose the language of a recording; Swedish default, Other = auto (#61 interim)
Merged
#58 v0.32.0: per-recording delete and nav link, cloud-served note, tracker hardening, bounded LLM reads (#37 #51 #52 #53)
Merged
#55 v0.31.1: cross-origin POST protection, ffprobe/ffmpeg limits, receive cap, SIGTERM, lint gate (#41 #47 #48 #49 #50)
Merged
#39 feat: upload audio, get a private Swedish transcript, discuss it (#33, ADR-033)
Merged
#21 LANGUAGE.md: fix LiteLLM gateway never-say (stale endpoints, not piguard)
Merged
#19 LANGUAGE.md pilot: hand-written vocabulary + caveman rubric (Phase 1)
23 Issues closed from 1 user
Closed
#56 Slow-drip upload body holds a receive slot without a time bound
Closed
#59 serve exits when the OIDC issuer's discovery returns 503 at start-up
Closed
#37 Uploads: per-recording delete, nav link, and the unverified deploy facts (ingress body limit, spool volume)
Closed
#52 Say when a recording's audio went to the cloud: label the serving endpoint, and document that an empty transcript also triggers the fallback
Closed
#53 LLM client reads an unbounded response body before checking the status
Closed
#51 Progress tracker: a hung database save blocks reporting, and the heartbeat uses a different clock from the page
Closed
#50 SIGTERM is not handled: every deploy kills the process without draining or failing the running row (interim fix; the full drain is recorded as a limitation)
Closed
#47 Audio upload: cap concurrent uploads in flight, and give ffprobe its own deadline (found reviewing the production enablement, infra#520)
Closed
#48 Security: refuse cross-origin POSTs; POST /account/delete is forgeable from a sibling *.d-ma.be origin
Closed
#49 ffprobe/ffmpeg resource limits: a 900-stream file costs about 570 MB against the 512 Mi pod limit; no probe deadline; unbounded probe output
Closed
#41 Taskfile lint step can never fail: golangci-lint run || echo "not installed" swallows findings
Closed
#34 DECISION NEEDED: ffmpeg + ffprobe in the runtime image (blocks enabling audio upload)
Closed
#44 Reconcile: store every adjudicated spot, and keep saved segments in step with the merged text
Closed
#43 Upload worker logs nothing until the job ends: no start, phase, engine or adjudication lines
Closed
#33 Upload an audio recording, get a Swedish transcript, discuss it (audio-only subset of #28)
Closed
#42 Upload page: show progress, so the user can tell running from hung or crashed
Closed
#40 Add iguana/pianissimo as a second local transcription backend (middle tier, or run both)
Closed
#35 DECISION NEEDED: berget fallback for private audio — default on or off?
Closed
#8 migrate up/down tests are coupled to the absolute HEAD migration count
Closed
#20 chore: rename Go module path gitea.d-ma.be → git.d-ma.be
Closed
#6 feat(discovery): event-trigger discovery on YouTube connect (+ throttled login refresh)
Closed
#2 Auto-summarize only recent videos (recency window); older = on-demand
Closed
#4 List view: sort videos by publish date (newest first)
58 Issues created by 1 user
Opened
#1 feat: proper 429 backoff + retry — prerequisite for auto-summarization default
Opened
#2 Auto-summarize only recent videos (recency window); older = on-demand
Opened
#3 Investigate/rescue orphan pre-multiuser user 2b85ade1 (287 videos, no identity)
Opened
#4 List view: sort videos by publish date (newest first)
Opened
#5 Process: enforce SemVer tag on arch/requirements-change commits
Opened
#6 feat(discovery): event-trigger discovery on YouTube connect (+ throttled login refresh)
Opened
#7 bug(scheduler): discovery runs for connection-less users -> spurious token errors; + stale Dex-era orphan user
Opened
#8 migrate up/down tests are coupled to the absolute HEAD migration count
Opened
#9 chat: dedicated completion-token budget (TAPIR_CHAT_MAX_TOKENS)
Opened
#10 chat v2: show-source / transcript-verification UI
Opened
#11 chat: optional streamed answers (SSE) instead of POST-and-render
Opened
#12 Onboarding burst: honest "taster" framing copy (deferred from ADR-028)
Opened
#13 duration_s backfills lazily — existing rows stay NULL until re-discovered (ADR-028)
Opened
#14 Revisit cached-first burst + shared caption-availability if cross-user overlap grows (ADR-028/ADR-024)
Opened
#15 Observability: slog + Prometheus metrics (AI-focused) via middleware
Opened
#16 SPA-like reader: summaries + Q&A integrated in the main view (HTMX inline-expand)
Opened
#17 Visual refresh: cohesive TUI/charm aesthetic (sketch-first)
Opened
#18 LANGUAGE.md pilot: hand-written vocabulary + caveman rubric (Phase 1)
Opened
#20 chore: rename Go module path gitea.d-ma.be → git.d-ma.be
Opened
#22 feat(summarizer): upgrade to Anthropic Haiku (primary) + Sonnet (chat) via LiteLLM after infra#154
Opened
#23 API tokens for programmatic access
Opened
#24 HTTP API: submit a video for summarization
Opened
#25 HTTP API: read transcript, summary, and processing status
Opened
#26 MCP server: summarize and read videos from an agent session
Opened
#27 Implement ADR-015 envelope-encryption secrets store, retire the PVC FileStore (from infra#89)
Opened
#28 Epic: upload any video, get a transcript and key takeaways (KB-Whisper for Swedish)
Opened
#29 Spike B: does a new file reach a Swedish SRT unattended? (positive control, deliberate ceiling)
Opened
#30 Spike A: does a locally-hosted model hold the /bygge schema? (runs today, no new file)
Opened
#31 Chore: parametrize build_page.py and prove the page generalizes (not a spike)
Opened
#32 Pre-spike: does anyone re-open /bygge? (blocks #29 and #30)
Opened
#33 Upload an audio recording, get a Swedish transcript, discuss it (audio-only subset of #28)
Opened
#34 DECISION NEEDED: ffmpeg + ffprobe in the runtime image (blocks enabling audio upload)
Opened
#35 DECISION NEEDED: berget fallback for private audio — default on or off?
Opened
#36 Chat over very long transcripts: per-model budgets, then retrieval (silent head truncation)
Opened
#37 Uploads: per-recording delete, nav link, and the unverified deploy facts (ingress body limit, spool volume)
Opened
#38 Unmeasured limits behind #33: >90 min, concurrent jobs, berget at length, real speech, Metal OOM
Opened
#40 Add iguana/pianissimo as a second local transcription backend (middle tier, or run both)
Opened
#41 Taskfile lint step can never fail: golangci-lint run || echo "not installed" swallows findings
Opened
#42 Upload page: show progress, so the user can tell running from hung or crashed
Opened
#43 Upload worker logs nothing until the job ends: no start, phase, engine or adjudication lines
Opened
#44 Reconcile: store every adjudicated spot, and keep saved segments in step with the merged text
Opened
#45 DECISION NEEDED: evaluate berget.ai models as the reconciler? It means sending private transcript text to a cloud API
Opened
#46 Audio upload hardening follow-ups the first adversarial review could not verify or did not fix
Opened
#47 Audio upload: cap concurrent uploads in flight, and give ffprobe its own deadline (found reviewing the production enablement, infra#520)
Opened
#48 Security: refuse cross-origin POSTs; POST /account/delete is forgeable from a sibling *.d-ma.be origin
Opened
#49 ffprobe/ffmpeg resource limits: a 900-stream file costs about 570 MB against the 512 Mi pod limit; no probe deadline; unbounded probe output
Opened
#50 SIGTERM is not handled: every deploy kills the process without draining or failing the running row (interim fix; the full drain is recorded as a limitation)
Opened
#51 Progress tracker: a hung database save blocks reporting, and the heartbeat uses a different clock from the page
Opened
#52 Say when a recording's audio went to the cloud: label the serving endpoint, and document that an empty transcript also triggers the fallback
Opened
#53 LLM client reads an unbounded response body before checking the status
Opened
#54 Sprint: audio upload follow-ups (v0.31.1 hotfix, then v0.32.0)
Opened
#56 Slow-drip upload body holds a receive slot without a time bound
Opened
#57 Shutdown: log an undrained Shutdown and let a second signal kill the process
Opened
#59 serve exits when the OIDC issuer's discovery returns 503 at start-up
Opened
#60 Per-recording choice: keep this recording on local models only (prerequisite for allowing Berget as reconciler)
Opened
#61 Uploads: choose the transcription language (Swedish / other / auto-detect), route to the right engine
Opened
#64 Upload idle bound does not enforce a minimum rate: a 1-byte-per-59-s drip still holds a receive slot
Opened
#65 test: two more tests derive their port from the PID (55000 + pid%1000) and can collide like the store test did