-
v2.5.96
StableAll checks were successfulRelease / Test backend (push) Successful in 40sRelease / Check ui (push) Successful in 1m38sRelease / Docker / caddy (push) Successful in 41sRelease / Docker / backend (push) Successful in 3m15sRelease / Docker / runner (push) Successful in 4m34sRelease / Upload source maps (push) Successful in 1m33sRelease / Docker / ui (push) Successful in 3m39sRelease / Gitea Release (push) Successful in 40sreleased this
2026-04-05 22:53:55 +05:00 | -410 commits to main since this release- Add POST /api/admin/text-gen/chapter-names/async backend endpoint: fire-and-forget,
returns job_id immediately (HTTP 202), runs batch generation in background goroutine,
persists proposed titles in ai_job payload when done - Register new route in server.go alongside existing SSE endpoint (backward compat)
- Add SvelteKit proxy at /api/admin/text-gen/chapter-names/async
- Add SvelteKit proxy for GET /api/admin/ai-jobs/[id] (job detail with payload)
- Add Review button on ai-jobs page for done chapter-names jobs; inline panel shows
editable title table (old to new) with Apply All button that POSTs to chapter-names/apply
Downloads
- Add POST /api/admin/text-gen/chapter-names/async backend endpoint: fire-and-forget,
-
v2.5.95
StableAll checks were successfulRelease / Test backend (push) Successful in 42sRelease / Check ui (push) Successful in 1m44sRelease / Docker / caddy (push) Successful in 41sRelease / Docker / backend (push) Successful in 2m42sRelease / Docker / runner (push) Successful in 2m56sRelease / Upload source maps (push) Successful in 1m30sRelease / Docker / ui (push) Successful in 2m42sRelease / Gitea Release (push) Successful in 1m14sreleased this
2026-04-05 22:12:29 +05:00 | -409 commits to main since this release- Backend: add GET /api/audio-preview/{slug}/{n} — generates first ~1800-char
chunk via CF AI so playback starts immediately; full chapter cached in MinIO - Frontend: replace CF AI spinner with preview blob URL + background swap to
full presigned URL when runner finishes, preserving currentTime - AudioPlayer: isPreview state + 'preview' badge in mini-bar during swap
- pocketbase.ts: fix 403 on stale token — reduce TTL to 50 min + retry once
on 401/403 with forced re-auth (was cached 12 h, PB tokens expire in 1 h) - Footer build time now rendered in user's local timezone via toLocaleString()
Downloads
- Backend: add GET /api/audio-preview/{slug}/{n} — generates first ~1800-char
-
v2.5.94
StableAll checks were successfulRelease / Test backend (push) Successful in 41sRelease / Check ui (push) Successful in 1m41sRelease / Docker / caddy (push) Successful in 41sRelease / Docker / backend (push) Successful in 3m23sRelease / Docker / runner (push) Successful in 2m53sRelease / Upload source maps (push) Successful in 1m27sRelease / Docker / ui (push) Successful in 2m32sRelease / Gitea Release (push) Successful in 42sreleased this
2026-04-05 21:26:05 +05:00 | -406 commits to main since this releaseWhen PREBUILT=1 the pre-built artifact is downloaded into ui/build/ but
.dockerignore excludes 'build', so Docker never sees it and /app/build
doesn't exist in the builder stage — causing the runtime COPY to fail.Fix: rewrite ui/.dockerignore on the CI runner (grep -v '^build$') so the
pre-built directory is included in the Docker context.Also in this commit:
- book page: gate EPUB download on isPro (UI upsell + server 403 guard)
- book page: chapter names default pattern changed to '{scene}'
Downloads
-
v2.5.91
StableAll checks were successfulRelease / Test backend (push) Successful in 46sRelease / Check ui (push) Successful in 1m41sRelease / Docker / caddy (push) Successful in 44sRelease / Docker / backend (push) Successful in 4m15sRelease / Docker / runner (push) Successful in 4m28sRelease / Upload source maps (push) Successful in 53sRelease / Docker / ui (push) Successful in 7m30sRelease / Gitea Release (push) Successful in 49sreleased this
2026-04-05 20:20:32 +05:00 | -403 commits to main since this release- ListeningMode: replace inline voice dropdown with full-screen modal + voice search
- ListeningMode: add chapter search box (shown when > 6 chapters) + click-to-play via autoStartChapter
- CommentsSection: collapse by default when empty, auto-expand once comments load
- AudioPlayer: always use streaming endpoint for Kokoro/PocketTTS (backend deduplicates via AudioExists)
Downloads
-
v2.5.90
StableAll checks were successfulRelease / Test backend (push) Successful in 40sRelease / Check ui (push) Successful in 1m36sRelease / Docker / caddy (push) Successful in 45sRelease / Docker / backend (push) Successful in 4m27sRelease / Docker / runner (push) Successful in 3m32sRelease / Upload source maps (push) Successful in 44sRelease / Docker / ui (push) Successful in 2m46sRelease / Gitea Release (push) Successful in 58sreleased this
2026-04-05 20:08:14 +05:00 | -402 commits to main since this release- Add /admin/ai-jobs page with live-polling jobs table, status badges, progress bars, and cancel action
- Add listAIJobs() helper in pocketbase.ts; AIJob type
- Add POST /api/admin/ai-jobs/[id]/cancel SvelteKit proxy
- Add ai-jobs link to admin sidebar nav (all 5 locales)
- Cache image-gen and text-gen model lists in Valkey (10 min TTL) via scraper.ts helpers
- Cache changelog Gitea API response (5 min TTL)
- Improve 502/504 error message on image-gen page with CF AI timeout hint
- Show CF AI timeout warning in advanced options when a Cloudflare/FLUX model is selected
Downloads
-
v2.5.89
StableAll checks were successfulRelease / Test backend (push) Successful in 38sRelease / Check ui (push) Successful in 1m40sRelease / Docker / caddy (push) Successful in 38sRelease / Docker / backend (push) Successful in 5m3sRelease / Docker / runner (push) Successful in 3m41sRelease / Upload source maps (push) Successful in 1m44sRelease / Docker / ui (push) Successful in 4m8sRelease / Gitea Release (push) Successful in 2m42sreleased this
2026-04-05 18:15:44 +05:00 | -401 commits to main since this releaseDownloads
-
v2.5.87
StableAll checks were successfulRelease / Test backend (push) Successful in 1m9sRelease / Check ui (push) Successful in 51sRelease / Docker / caddy (push) Successful in 46sRelease / Docker / backend (push) Successful in 4m30sRelease / Docker / runner (push) Successful in 3m54sRelease / Upload source maps (push) Successful in 53sRelease / Docker / ui (push) Successful in 2m57sRelease / Gitea Release (push) Successful in 57sreleased this
2026-04-05 17:53:07 +05:00 | -398 commits to main since this releaseglitchtip-cli v0.1.0 uploads chunks but never calls the assemble endpoint,
leaving releases with 0 files. sentry-cli correctly calls assemble after
chunk upload — confirmed working in manual test (2.5.84-test3 = 211 files).Downloads
-
v2.5.86
StableAll checks were successfulRelease / Test backend (push) Successful in 45sRelease / Check ui (push) Successful in 50sRelease / Docker / caddy (push) Successful in 43sRelease / Docker / backend (push) Successful in 2m46sRelease / Docker / runner (push) Successful in 2m43sRelease / Upload source maps (push) Successful in 4m36sRelease / Docker / ui (push) Successful in 4m38sRelease / Gitea Release (push) Successful in 4m46sreleased this
2026-04-05 17:31:05 +05:00 | -397 commits to main since this release- Add homelab/glitchtip/files_api.py with GzipChunk fallback for sentry-cli 3.x
raw zip uploads; bind-mount into both glitchtip-web and glitchtip-worker - Add release.yaml prune step to delete all but the 10 newest GlitchTip releases
- Reader page: remove dead code and simplify layout
Downloads
- Add homelab/glitchtip/files_api.py with GzipChunk fallback for sentry-cli 3.x
-
v2.5.84
StableAll checks were successfulRelease / Test backend (push) Successful in 41sRelease / Check ui (push) Successful in 49sRelease / Docker / caddy (push) Successful in 51sRelease / Docker / backend (push) Successful in 2m47sRelease / Docker / runner (push) Successful in 2m38sRelease / Upload source maps (push) Successful in 3m20sRelease / Docker / ui (push) Successful in 2m59sRelease / Gitea Release (push) Successful in 1m45sreleased this
2026-04-05 16:59:06 +05:00 | -395 commits to main since this release- Mount glitchtip_uploads named volume to /code/uploads on both
glitchtip-web and glitchtip-worker so chunk blobs written by the
web container are readable by the worker during assembly - Set MEDIA_ROOT=/code/uploads explicitly on both services so the
Django storage path matches the volume mount and DB blob records
Downloads
- Mount glitchtip_uploads named volume to /code/uploads on both
-
v2.5.83
StableAll checks were successfulRelease / Test backend (push) Successful in 43sRelease / Check ui (push) Successful in 47sRelease / Docker / caddy (push) Successful in 53sRelease / Docker / backend (push) Successful in 3m13sRelease / Docker / runner (push) Successful in 2m54sRelease / Upload source maps (push) Successful in 3m46sRelease / Docker / ui (push) Successful in 2m25sRelease / Gitea Release (push) Successful in 1m26sreleased this
2026-04-05 16:14:33 +05:00 | -394 commits to main since this release- Strip v prefix from GlitchTip release name in upload-sourcemaps job
so it matches PUBLIC_BUILD_VERSION reported by the deployed app - Focus mode: hide bottom nav/comments, show floating prev/next/exit pill
- Listening mode: full-screen overlay with transport, speed pills, voice selector
- Settings panel: dedup speed/auto-next/sleep controls (single source of truth)
- Mini-bar: unified speed steps, headphones button opens ListeningMode
Downloads
- Strip v prefix from GlitchTip release name in upload-sourcemaps job