Changelog

What's new in Alex

v0.6.0March 2, 2026

  • Added reverse relay service for public access from the desktop app — flip a toggle in Settings and share a URL like gentle-morning-tide.alexreader.app
  • Relay streams PDFs and EPUBs in 64 KB chunks with automatic reconnection and persistent URLs
  • Added dual authentication so desktop (Electron session) and web (NextAuth credentials) auth coexist on the same server
  • Added collection sharing over relay with a simplified Users page showing your public server URL
  • Docker runtime now runs as a non-root user
  • Added security headers (CSP, X-Content-Type-Options, etc.) on all responses
  • Authenticated SSE endpoints to prevent unauthenticated access to library events
  • Added structured JSON logging for relay with client IP and request duration
  • Added conductor scripts (setup, dev, cleanup) for local development
  • Fixed relay dropping Set-Cookie headers that broke remote login
  • Fixed middleware redirects behind relay by honoring x-forwarded-* headers
  • Fixed desktop auth bypass with Electron session tokens

v0.5.0March 1, 2026

  • Added a reverse tunnel relay service (alex-relay) so the desktop app can be accessed publicly without port forwarding
  • Added dual authentication: NextAuth.js credential auth for web, per-session header-based token auth for Electron desktop
  • Pinned cookie configuration to prevent mismatches behind reverse proxies (relay, load balancers)
  • Added forwarded header support (X-Forwarded-Host, X-Forwarded-Proto) for correct redirects behind the relay
  • Added Storybook UI component library with stories for all components and Chromatic CI visual testing
  • Added security headers (CSP, X-Content-Type-Options, etc.) to Next.js responses
  • Added user management API endpoints (GET/POST /api/users, PATCH /api/users/[id])
  • Added collection book management endpoints (GET/POST /api/collections/[id]/books, DELETE .../books/[bookId])
  • Added admin library clear endpoint (POST /api/admin/library/clear)
  • Made admin seed idempotent with INSERT...ON CONFLICT DO UPDATE (safe to re-run on every launch)
  • Run Docker container as non-root user for improved security
  • Added structured JSON logging for relay with client IP and request duration
  • Added dev build workflow for integration testing
  • Stabilized Electron E2E tests with improved startup, port management, and platform skip handling
  • Desktop and web auth can now coexist on the same server
  • Bumped version to 0.5.0

v0.4.3February 20, 2026

  • Added an admin password reset flow in Settings → Users via a new Change Password action
  • Updated Electron desktop settings behavior so Settings opens at Users and hides General/Log out
  • Fixed a TypeScript dashboard navigation typing issue that caused CI build failures
  • Updated docs to reflect the new password reset path and desktop-mode settings behavior

v0.4.2February 20, 2026

  • Fixed Docker container not reachable over HTTP by binding the Next.js server to 0.0.0.0
  • Fixed 404 errors for all static assets (JS, CSS, fonts) in Docker by placing them where the standalone server expects them
  • Fixed runtime database access failure caused by the Next.js standalone server changing the working directory on startup

v0.4.1February 20, 2026

  • Hardened credentials authentication to handle missing users table initialization safely
  • Improved login resilience by normalizing legacy password field variants
  • Added automatic auth DB bootstrap/seeding fallback to prevent first-login configuration failures

v0.4.0February 19, 2026

  • Rewrites the file watcher and database layer in Rust (watcher-rs) for lower memory usage and faster startup
  • Replaces Chokidar with the Rust notify crate for file watching
  • Replaces better-sqlite3 and Drizzle ORM with rusqlite (statically linked SQLite) accessed through a Rust bridge binary
  • Replaces pdfjs-dist and @napi-rs/canvas cover generation with pdfium-render (Rust)
  • Replaces pdf-parse and epub2 metadata extraction with lopdf and quick-xml (Rust)
  • The watcher-rs binary now serves as both the file watcher and the database bridge for Next.js
  • Requires a Rust toolchain for building from source (Docker and desktop builds include the pre-compiled binary)

v0.3.4February 19, 2026

  • Adds end-to-end tests for web and Electron to ensure stability
  • Removes Windows builds for now
  • Fixes an issue in the watcher where duplicate entries would cause subsequent legitimate additions to fail

v0.3.3February 16, 2026

  • Re-enabled Windows and Linux Electron builds
  • Added a floating bottom tab bar with animated search
  • Improved dashboard transitions and admin tab UX
  • Fixed duplicate book entries in the Electron app
  • Redesigned header and navigation with pill-style filters

v0.3.2February 15, 2026

  • Fixed blank PDF cover previews caused by Path2D incompatibility
  • Switched PDF rendering from canvas to @napi-rs/canvas
  • Simplified Docker and CI by removing native canvas build dependencies
  • Replaced pdftoppm with pdfjs-dist for PDF cover generation

v0.3.1February 15, 2026

  • Switched macOS distribution from DMG to ZIP to avoid app damage errors
  • Added ad-hoc code signing for macOS desktop builds
  • Fixed missing ALEX_DESKTOP CI env var and bypassed auth middleware in desktop mode
  • Installed poppler in CI for PDF cover generation
  • Temporarily disabled Windows and Linux desktop builds

v0.3.0February 14, 2026

  • Added an Electron desktop wrapper and release workflow
  • Added desktop library management features
  • Added onboarding flow and app reset capability

v0.2.4February 13, 2026

  • Fixed EPUB restore behavior and added a reusable progress meter
  • Added a literary-focused UI redesign
  • Synced docs with Now Reading and EPUB updates
  • Optimized Docker builds with cache mounts and parallel steps

v0.2.3February 12, 2026

  • Fixed EPUB reopen behavior with scroll-fraction position restoration
  • Added a Now Reading section on library and collections pages
  • Improved UI component accessibility and consistency

v0.2.2February 12, 2026

  • Implemented an 80ch EPUB column layout for readability
  • Improved EPUB font scaling behavior
  • Fixed upward scrolling jump behavior in the EPUB reader

v0.2.1February 11, 2026

  • Stabilized EPUB chapter navigation, auto-advance, and position restore behavior
  • Improved EPUB theme colors and dark mode handling
  • Refined the monochrome UI redesign and shared branding components
  • Fixed PDF reader restore positioning
  • Added documentation and planning artifacts for public collections and OPDS feeds

v0.2.0February 8, 2026

  • Added token-based public collection sharing with enable/disable controls
  • Added public PDF and EPUB readers with local progress persistence
  • Added public APIs for collection metadata, covers, and book files
  • Implemented PDF streaming with range request support and proper EPUB serving
  • Fixed SSR, hydration, and caching issues across reader routes

v0.1.1 — Lazy-Load PaginationFebruary 6, 2026

  • Added lazy-load pagination for library and collection views
  • Introduced hybrid loading with auto-scroll plus a Load More action
  • Preserved page state in URLs for sharing and bookmarking
  • Added request cancellation, debounced updates, and loading skeletons
  • Added pagination support to books and collections APIs

v0.1.0 — Initial ReleaseFebruary 6, 2026

  • Initial release of the self-hosted PDF and EPUB library platform
  • Added automatic file ingestion for PDFs and EPUBs
  • Added in-browser readers with reading progress tracking
  • Added multi-user authentication with admin and user roles
  • Added search and filtering by title, author, format, and reading status