• v4.4.4 a53e754715

    v4.4.4
    All checks were successful
    Release / Test backend (push) Successful in 59s
    Release / Test UI (push) Successful in 1m39s
    Release / Build and push images (push) Successful in 8m9s
    Release / Deploy to homelab (push) Successful in 23s
    Release / Gitea Release (push) Successful in 1m37s
    Release / Deploy to prod (push) Successful in 2m12s
    Stable

    gitea-actions released this 2026-04-17 22:53:41 +05:00 | -563 commits to main since this release

    • Homepage hero: wider cover (w-32→w-36), adjusted info panel height,
      hide genre pills on mobile (they wrap and waste vertical space)
    • Chapter reader: tighten top nav gap mb-8→mb-4 and heading gap
      mb-6→mb-4 on mobile so content starts earlier
    • Library cards: hide genre tags on mobile (hidden sm:flex) — redundant
      in a library context and cramped at 2-column density
    • Book detail: reduce hero bottom margin mb-8→mb-5 on mobile
    • Catalogue list view: fix hardcoded hover:border-zinc-500 → brand
      color, matching the grid view hover style
    Downloads
  • v4.4.3 67e54c3316

    v4.4.3
    Some checks failed
    Release / Test backend (push) Successful in 56s
    Release / Test UI (push) Successful in 1m48s
    Release / Build and push images (push) Successful in 8m22s
    Release / Deploy to homelab (push) Successful in 22s
    Release / Deploy to prod (push) Failing after 1m1s
    Release / Gitea Release (push) Successful in 2m3s
    Stable

    gitea-actions released this 2026-04-17 22:28:02 +05:00 | -562 commits to main since this release

    • Discover loading skeleton: add borders and book icon placeholder so
      card shapes are visible on all dark themes (was invisible on forest)
    • Library grid cards: match catalogue hover style (brand border, surface
      lift, shadow, -translate-y-0.5) and remove hardcoded zinc-500 border
    • Reading progress bar: increase height 2px→3px and add brand glow shadow
    Downloads
  • v4.4.2 7e1d752061

    v4.4.2
    All checks were successful
    Release / Test UI (push) Successful in 57s
    Release / Test backend (push) Successful in 6m10s
    Release / Build and push images (push) Successful in 4m33s
    Release / Deploy to homelab (push) Successful in 17s
    Release / Gitea Release (push) Successful in 26s
    Release / Deploy to prod (push) Successful in 2m35s
    Stable

    gitea-actions released this 2026-04-17 17:00:42 +05:00 | -561 commits to main since this release

    Book detail: stronger blurred cover bg (opacity 0.35 + saturate), larger
    cover (sm:w-56), more dramatic gradient, bigger title (sm:text-4xl).
    Homepage hero: atmospheric blurred cover bg matching current carousel book.
    Catalogue: cards now lift on hover with brand border + shadow.

    Downloads
  • v4.3.7 aac81d6f29

    v4.3.7
    All checks were successful
    Release / Test backend (push) Successful in 1m3s
    Release / Test UI (push) Successful in 1m50s
    Release / Build and push images (push) Successful in 7m32s
    Release / Deploy to homelab (push) Successful in 16s
    Release / Gitea Release (push) Successful in 27s
    Release / Deploy to prod (push) Successful in 2m21s
    Stable

    gitea-actions released this 2026-04-17 15:57:54 +05:00 | -559 commits to main since this release

    Issue: Two sequential 'docker compose up' commands caused race condition:

    • First command (--no-deps) starts removing containers
    • Second command (--remove-orphans) tries to remove same containers
    • Result: 'removal of container is already in progress' error

    Fix: Combine into single command with both flags:
    docker compose up -d --no-deps --remove-orphans

    This ensures atomic operation without race conditions.

    Downloads
  • v4.4.1 8c47aa3a11

    v4.4.1
    Some checks failed
    Release / Test backend (push) Successful in 1m3s
    Release / Test UI (push) Successful in 58s
    Release / Build and push images (push) Successful in 5m55s
    Release / Deploy to prod (push) Failing after 48s
    Release / Deploy to homelab (push) Successful in 21s
    Release / Gitea Release (push) Successful in 29s
    Stable

    gitea-actions released this 2026-04-17 13:32:48 +05:00 | -557 commits to main since this release

    • Catalogue/cover: rewrite raw scraped cover URLs to /api/cover/{domain}/{slug}
      in handleCatalogue so all covers route through the backend proxy; fix broken
      cdn.novelfire.net fallback in handleGetCover to read stored URL from PocketBase
    • Catalogue/profile: add Svelte 5 onerror handlers on cover tags to show
      letter-initial placeholder when image fails to load
    • Library page: read ?status URL param to initialise activeShelf tab on load so
      /books?status=reading correctly pre-selects the Reading tab
    • Sessions: filter bot/tool user-agents (curl, python, wget, etc.) and debug-IP
      sessions from listUserSessions display; also purge them in pruneStaleUserSessions
    • Profile: show email under username, quick stats chips (streak/chapters/completed)
      in header, reading count on Library row, dedicated Sign out row, history covers
      routed through /api/cover proxy
    Downloads
  • v4.3.6 1f987be75a

    v4.3.6
    Some checks failed
    Release / Test backend (push) Successful in 1m7s
    Release / Test UI (push) Successful in 1m29s
    Release / Build and push images (push) Successful in 4m30s
    Release / Deploy to prod (push) Failing after 19s
    Release / Deploy to homelab (push) Successful in 13s
    Release / Gitea Release (push) Successful in 27s
    Stable

    gitea-actions released this 2026-04-16 21:51:58 +05:00 | -556 commits to main since this release

    Previously: 'docker compose up -d' recreated all services with changed images,
    causing dependent services (pocketbase, minio, redis, etc.) to restart and
    wait for healthchecks, leading to longer downtime.

    Now: Use '--no-deps' flag to restart ONLY the services with updated images
    (backend, runner, ui, caddy, pocketbase) without touching their dependencies.

    Benefits:

    • Faster deployments (~15-20s vs ~60s)
    • No unnecessary restarts of infrastructure services
    • Reduced downtime for the application

    The final 'docker compose up -d --remove-orphans' ensures any orphaned
    containers are cleaned up and all services are in the desired state.

    Downloads
  • v4.3.5 7a4008bd9c

    v4.3.5
    All checks were successful
    Release / Test backend (push) Successful in 1m2s
    Release / Test UI (push) Successful in 58s
    Release / Build and push images (push) Successful in 4m34s
    Release / Deploy to prod (push) Successful in 2m24s
    Release / Deploy to homelab (push) Successful in 15s
    Release / Gitea Release (push) Successful in 20s
    Stable

    gitea-actions released this 2026-04-16 21:35:19 +05:00 | -555 commits to main since this release

    • 'Check ui' → 'Test UI' (consistent with 'Test backend')
    • 'Docker' → 'Build and push images' (more descriptive of what it does)

    Job IDs remain unchanged (test-backend, check-ui, docker) for stability.

    Downloads
  • v4.3.3 9c3b235382

    v4.3.3
    Some checks failed
    Release / Test backend (push) Successful in 1m1s
    Release / Check ui (push) Successful in 1m2s
    Release / Docker (push) Successful in 9m22s
    Release / Deploy to prod (push) Successful in 2m32s
    Release / Gitea Release (push) Successful in 1m37s
    Release / Deploy to homelab (push) Failing after 5s
    Stable

    gitea-actions released this 2026-04-16 20:22:40 +05:00 | -551 commits to main since this release

    CRITICAL FIX: The homelab server runs the full stack (runner + GlitchTip +
    observability tools), not just the runner. Copying homelab/runner/docker-compose.yml
    would have destroyed all other services.

    Changed: homelab/runner/docker-compose.yml → homelab/docker-compose.yml

    Downloads
  • v4.4.0 da37b1be88

    v4.4.0
    Some checks failed
    Release / Test backend (push) Successful in 1m1s
    Release / Check ui (push) Successful in 1m0s
    Release / Docker (push) Successful in 11m19s
    Release / Deploy to prod (push) Successful in 2m10s
    Release / Deploy to homelab (push) Failing after 7s
    Release / Gitea Release (push) Successful in 2m25s
    Stable

    gitea-actions released this 2026-04-16 20:20:16 +05:00 | -550 commits to main since this release

    Content visibility:

    • Add visibility field to books ("public" | "admin_only"); new migration
      backfills all existing scraped books to admin_only
    • Meilisearch: add visibility as filterable attribute; catalogue/search
      endpoints filter to public-only for non-admin requests
    • Admin users identified by bearer token bypass the filter and see all books
    • All PocketBase discovery queries (trending, recommended, recently-updated,
      audio shelf, discover, subscription feed) now filter to visibility=public
    • New scraped books default to admin_only; WriteMetadata preserves existing
      visibility on PATCH (never overwrites)

    Author submission:

    • POST /api/admin/books/submit — creates a public book with submitted_by
    • PATCH /api/admin/books/{slug}/publish / unpublish — toggle visibility
    • SvelteKit proxies: /api/admin/books/[slug]/publish|unpublish
    • /api/books/[slug] endpoint for admin book lookup

    Frontend:

    • backendFetchAdmin() helper sends admin token on any path
    • Catalogue server load uses admin fetch when user is admin
    • /submit page: author submission form with genre picker and rights assertion
    • "Publish" nav link shown to all logged-in users
    • Admin catalogue-tools: visibility management panel (load book by slug, toggle)
    Downloads
  • v4.3.2 50a13447a4

    v4.3.2
    Some checks failed
    Release / Test backend (push) Successful in 1m2s
    Release / Check ui (push) Successful in 1m0s
    Release / Docker (push) Successful in 4m39s
    Release / Deploy to prod (push) Successful in 2m18s
    Release / Deploy to homelab (push) Failing after 4s
    Release / Gitea Release (push) Successful in 29s
    Stable

    gitea-actions released this 2026-04-16 19:17:13 +05:00 | -549 commits to main since this release

    Downloads