feat(config): upload and transcription settings (ADR-033)

Embedded UploadConfig. Off by default until the image carries ffmpeg; 200 MB /
90 min; iguana primary with a berget fallback that an explicit empty
TAPIR_TRANSCRIBE_FALLBACK_MODEL disables (private audio then never leaves the
homelab); zero or negative limits fail at load instead of rejecting every
upload at runtime.

uploads.go and the two-line hook in config.go are one commit: the tests need both.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-01 16:55:32 +02:00
co-authored by Claude Sonnet 5.5
parent fb521f2b89
commit b8798dbd5d
2 changed files with 117 additions and 0 deletions
+7
View File
@@ -20,6 +20,9 @@ import (
// Config is Tapir's fully-resolved runtime configuration.
type Config struct {
// UploadConfig is the audio-upload and private-transcription settings (ADR-033).
UploadConfig
// UserID is the Tapir user the run operates as. Stage 0 has exactly one.
// It must be a UUID: it keys the UUID user_id/video_id columns (data-model).
UserID string
@@ -320,6 +323,10 @@ func Load() (Config, error) {
}
c.OnboardMaxVideoSeconds = onboardMax
if c.UploadConfig, err = loadUploadConfig(); err != nil {
return Config{}, err
}
return c, nil
}