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-Cookieheaders 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
userstable 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
notifycrate for file watching - Replaces
better-sqlite3and Drizzle ORM withrusqlite(statically linked SQLite) accessed through a Rust bridge binary - Replaces
pdfjs-distand@napi-rs/canvascover generation withpdfium-render(Rust) - Replaces
pdf-parseandepub2metadata extraction withlopdfandquick-xml(Rust) - The
watcher-rsbinary 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
canvasto@napi-rs/canvas - Simplified Docker and CI by removing native canvas build dependencies
- Replaced
pdftoppmwithpdfjs-distfor 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_DESKTOPCI 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