• v2.3.3 fe1a933fd0

    feat(queue): replace PocketBase polling with Asynq + Redis
    Some checks failed
    CI / Docker / caddy (pull_request) Failing after 50s
    CI / Check ui (pull_request) Successful in 1m5s
    Release / Check ui (push) Successful in 45s
    Release / Test backend (push) Successful in 1m29s
    CI / Docker / ui (pull_request) Successful in 1m28s
    Release / Docker / backend (push) Successful in 3m14s
    CI / Test backend (pull_request) Failing after 42s
    CI / Docker / backend (pull_request) Has been skipped
    CI / Docker / runner (pull_request) Has been skipped
    Release / Docker / caddy (push) Successful in 6m48s
    Release / Docker / ui (push) Successful in 2m8s
    Release / Docker / runner (push) Successful in 2m51s
    Release / Upload source maps (push) Failing after 53s
    Release / Gitea Release (push) Has been skipped

    kamil released this 2026-03-28 14:32:40 +05:00 | -264 commits to main since this release

    Introduce a Redis-backed Asynq task queue so the runner consumes TTS
    jobs pushed by the backend instead of polling PocketBase.

    • backend/internal/asynqqueue: Producer and Consumer wrappers
    • backend/internal/runner: AsynqRunner mux, per-instance Prometheus
      registry (fixes duplicate-collector panic in tests), redisConnOpt
    • backend/internal/config: REDIS_ADDR / REDIS_PASSWORD env vars
    • backend/cmd/{backend,runner}/main.go: wire Redis when env set; fall
      back to legacy poll mode when unset
    • Caddyfile: caddy-l4 TCP proxy for redis.libnovel.cc:6380 → homelab
    • caddy/Dockerfile: add --with github.com/mholt/caddy-l4
    • docker-compose.yml: Caddy exposes 6380, backend/runner get Redis env
    • homelab/runner/docker-compose.yml: Redis sidecar, runner depends_on
    • homelab/otel/grafana: Grafana dashboards (backend, catalogue, runner)
      and alerting rules / contact-points provisioning
    Downloads