• v4.3.1 d394ac454b

    v4.3.1
    All checks were successful
    Release / Test backend (push) Successful in 57s
    Release / Check ui (push) Successful in 59s
    Release / Docker (push) Successful in 4m26s
    Release / Gitea Release (push) Successful in 26s
    Release / Deploy to prod (push) Successful in 2m18s
    Stable

    gitea-actions released this 2026-04-16 14:36:47 +05:00 | -547 commits to main since this release

    • Remove redundant Skip/Read Now/Like buttons from desktop right panel
    • Main action buttons in center area remain visible on both mobile and desktop
    • Keyboard shortcuts hint still available at bottom
    • Cleaner UI with no repeated functionality
    Downloads
  • v4.3.0 f24720b087

    v4.3.0
    All checks were successful
    Release / Test backend (push) Successful in 57s
    Release / Check ui (push) Successful in 54s
    Release / Docker (push) Successful in 4m24s
    Release / Deploy to prod (push) Successful in 2m14s
    Release / Gitea Release (push) Successful in 27s
    Stable

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

    Book Info Page Improvements:

    • Add quick stats row (chapters, rating, readers)
    • Enhance author display with better typography
    • Improve genre tags with amber-branded pills
    • Add green badge for 'ongoing' status
    • Wrap summary in card with better styling
    • Enhance 'More' button with proper design
    • Improve StarRating component to show rating more prominently

    Discover Page Improvements:

    • Add progress bar showing completion through deck
    • Enhance keyboard shortcuts with visual kbd elements
    • Improve empty state with better visuals and CTA hierarchy
    • Enhance toast notifications with icons and color-coded backgrounds
    • Add auto-dismiss for toast (4s timeout)
    • Improve preferences modal button labels
    • Add undo functionality for last vote
    • Better stat display (X of Y remaining)

    All changes maintain consistency with LibNovel's design system.

    Downloads
  • v4.2.2 71a628673d

    v4.2.2
    All checks were successful
    Release / Test backend (push) Successful in 55s
    Release / Check ui (push) Successful in 1m3s
    Release / Docker (push) Successful in 4m26s
    Release / Deploy to prod (push) Successful in 2m38s
    Release / Gitea Release (push) Successful in 27s
    Stable

    gitea-actions released this 2026-04-16 13:00:50 +05:00 | -545 commits to main since this release

    • Bump all section headings to text-lg for visual hierarchy
    • Replace SVG book icon no-cover placeholders with first-letter avatars
      across Completed, Ready to Listen, Trending, Recommendations, Recently
      Updated, and From Following shelves
    • Highlight user's top genre pill in Browse by Genre strip
    • Add "View all → /catalogue?genre=…" link to Because You Read section
    Downloads
  • v4.2.1 5f5aac5e3e

    v4.2.1
    All checks were successful
    Release / Test backend (push) Successful in 54s
    Release / Check ui (push) Successful in 1m1s
    Release / Docker (push) Successful in 5m15s
    Release / Deploy to prod (push) Successful in 2m0s
    Release / Gitea Release (push) Successful in 26s
    Stable

    gitea-actions released this 2026-04-16 12:48:33 +05:00 | -544 commits to main since this release

    • Import: fix "1/1/1" date display (Go zero time.Time → show dash)
    • AI Jobs: guard fmtDate against zero-time dates
    • AI Jobs: add "Cancel all in-flight (N)" bulk action button
    • AI Jobs sidebar: show live running+pending count badge from layout
    • Notifications: add broadcast panel linking to push.libnovel.cc, relabel inbox section
    Downloads
  • v4.2.0 e65883cc9e

    v4.2.0
    All checks were successful
    Release / Test backend (push) Successful in 56s
    Release / Check ui (push) Successful in 58s
    Release / Docker (push) Successful in 8m2s
    Release / Deploy to prod (push) Successful in 1m52s
    Release / Gitea Release (push) Successful in 27s
    Stable

    gitea-actions released this 2026-04-16 12:34:55 +05:00 | -543 commits to main since this release

    • Persist audio filter in URL (?audio=1) via history.replaceState
    • Show total novel count in browse mode subtitle
    • Close filter panel automatically on Apply
    • Replace missing-cover SVG placeholder with styled first-letter avatar
    • Add forbidden scrape badge to list view (was missing, grid had it)
    • Carry audio param through applyFilters() navigation
    Downloads
  • v4.1.9 b19af1e8f3

    v4.1.9
    All checks were successful
    Release / Test backend (push) Successful in 1m6s
    Release / Check ui (push) Successful in 1m4s
    Release / Docker (push) Successful in 8m43s
    Release / Deploy to prod (push) Successful in 2m37s
    Release / Gitea Release (push) Successful in 40s
    Stable

    gitea-actions released this 2026-04-15 21:35:24 +05:00 | -542 commits to main since this release

    • Remove UI build artifact upload/download steps (18 lines removed)
    • Remove .dockerignore manipulation workaround
    • Always build UI from source inside Docker (more reliable)
    • Remove PREBUILT arg from ui/Dockerfile and docker-bake.hcl

    This fixes the '/app/build not found' error in CI by eliminating the fragile
    artifact-passing mechanism. UI now builds fresh in Docker using build cache,
    same as local development.

    Downloads
  • v4.1.2 fc73756308

    v4.1.2
    Some checks failed
    Release / Test backend (push) Successful in 56s
    Release / Check ui (push) Successful in 1m59s
    Release / Docker (push) Successful in 7m49s
    Release / Deploy to prod (push) Failing after 33s
    Release / Gitea Release (push) Successful in 29s
    Stable

    gitea-actions released this 2026-04-15 19:00:21 +05:00 | -535 commits to main since this release

    • Remove non-root user from pocketbase Docker image; the existing pb_data
      volume was created by the previous root-running image so files are owned
      by root — running as a non-root appuser caused an immediate permission
      error and container exit
    • Increase healthcheck retries to 10 and add start_period=30s so migrations
      have time to run on first boot before liveness checks begin
    Downloads
  • v4.1.1 3f436877ee

    v4.1.1
    Some checks failed
    Release / Test backend (push) Successful in 1m6s
    Release / Check ui (push) Successful in 1m56s
    Release / Docker (push) Successful in 8m19s
    Release / Deploy to prod (push) Failing after 36s
    Release / Gitea Release (push) Successful in 22s
    Stable

    gitea-actions released this 2026-04-15 18:05:02 +05:00 | -534 commits to main since this release

    • Add wget to pocketbase Alpine image so the docker-compose healthcheck
      (wget http://localhost:8090/api/health) can actually run
    • Fix saveIfAbsent calling itself instead of app.Save(c) — was an
      infinite recursion that would stack-overflow on a fresh install
    Downloads
  • v4.1.0 812028e50d

    v4.1.0
    Some checks failed
    Release / Test backend (push) Successful in 5m39s
    Release / Check ui (push) Successful in 2m1s
    Release / Docker (push) Successful in 7m46s
    Release / Deploy to prod (push) Failing after 1m53s
    Release / Gitea Release (push) Successful in 35s
    Stable

    gitea-actions released this 2026-04-15 11:06:27 +05:00 | -533 commits to main since this release

    release.yaml:

    • Build and push kalekber/libnovel-pocketbase image on every release tag
    • Add deploy job (runs after docker): copies docker-compose.yml from the
      tagged commit to /opt/libnovel on prod, pulls new images, restarts
      changed services with --remove-orphans (cleans up removed pb-init)

    ci.yaml:

    • Validate cmd/pocketbase builds on every branch push

    Required new Gitea secrets: PROD_HOST, PROD_USER, PROD_SSH_KEY,
    PROD_SSH_KNOWN_HOSTS (see deploy job comments for instructions).

    Downloads
  • v4.0.0 0f9977744a

    v4.0.0
    All checks were successful
    Release / Test backend (push) Successful in 1m1s
    Release / Check ui (push) Successful in 2m12s
    Release / Docker (push) Successful in 6m30s
    Release / Gitea Release (push) Successful in 29s
    Stable

    gitea-actions released this 2026-04-14 18:04:10 +05:00 | -530 commits to main since this release

    Adds BACKEND_ADMIN_TOKEN env var (set in Doppler) as a required Bearer
    token for every admin route. Also fixes PocketBase filter injection in
    notification queries and wires BACKEND_ADMIN_TOKEN through docker-compose
    to both backend and ui services. Includes CLAUDE.md for AI assistant guidance.

    Downloads