5.4 KiB
5.4 KiB
Changelog
v0.1.1 — 2026-03-31
Bug fixes, volume-aware duplicate detection, shared code cleanup, and a new Changelog page.
Bug fixes
- Duplicates view crashed on load due to a TypeError (
g.books.lengthwas undefined); counter was stale and the view never rendered - Duplicate detection was too aggressive: different volumes of the same series (same title + author, different volume) were incorrectly grouped as duplicates — now keyed on title + author + volume
- Grabber preload: same volume-aware fix — only flags a duplicate when title, author, and volume all match; falls back to title + author when no volume is known
- Bulk Import duplicate check: different volumes of the same series are no longer flagged as duplicates
Improvements
- Search changed from search-as-you-type (250 ms debounce) to Enter-to-search — prevents the iPad keyboard from locking up on large collections
- CBR reader: archive format now detected via magic bytes instead of file extension —
.cbrfiles that are actually ZIP or 7-zip archives open correctly; added 7-zip support viapy7zr - Docker: replaced
unrar-freewith proprietary unrar (RARLAB v6.2.6) — fixes failures on RAR archives using newer compression methods
New feature
- Changelog page (
/changelog): structured release history with version, date, and categorised change lists
Code quality
- Shared CSS (
theme.css): single:rootblock with all global CSS custom properties; loaded on every page — no more duplicate inline:rootblocks across templates - Shared JS (
books.js): book helpers (bookTitle,bookAuthor,bookGenres,bookSubgenres,bookPlainTags,filterBooks) and search input wiring extracted into one shared file - Shared JS (
conversion.js): SSE/EventSource logic (connectConversionStream,addLog) extracted from Convert and Grabber pages into one shared file
v0.1.0 — 2026-03-29
First release of Novela: a self-hosted personal library for EPUB, PDF, CBR, and CBZ files.
Library
- Grid and List view for all books and New books, with column visibility filter and persistent view mode
- Sidebar navigation: All books, Want to Read, New, Incomplete, Series, Authors, Publishers, Archived, Bookmarks, Rated, Duplicates, Statistics
- Sidebar counters for all sections, live-updated without page reload
- 1–5 star ratings stored in DB and written back to EPUB OPF / CBZ ComicInfo.xml
- Publication status: Complete, Ongoing, Temporary Hold, Long-Term Hold
- Status and want-to-read badges on grid covers, always readable regardless of cover colour
- Duplicate detection: groups books by title+author; counter in sidebar
- Incomplete view: all non-archived books where publication status is not Complete
- Rated view: non-archived books with a star rating, sorted by rating
- Bulk delete in All books List view with multi-select and Shift+click range selection
- Disk usage warning in sidebar (amber ≥ 85%, red ≥ 95% or low free space)
- Autocomplete for Author, Publisher, and Series in the book edit panel
- Series volume suffix support (e.g. "21a", "21b") and volume 0 for prequels/specials
- Cover upload for EPUB books; cover cache for fast subsequent loads
Reader
- EPUB reader with chapter navigation, scroll progress, and bookmarks
- PDF reader with page-image rendering and page navigation
- CBR/CBZ reader with page-image rendering; format detection via magic bytes (supports ZIP, RAR, 7-zip archives)
- Reader text colour: 5 warm-tone presets, persisted per browser
- Content width slider (30–100 vw), persisted per browser
- Bookmarks: save position with optional note; navigate back via sidebar or bookmark list
Import & Convert
- Single-file import: drag-and-drop or file picker for EPUB, PDF, CBR, CBZ
- Bulk Import (
/bulk-import): batch import with%placeholder%filename pattern parsing, shared metadata, live preview table, and duplicate detection - Convert (
/convert): scrape web fiction and convert to EPUB; warns if title+author already exists in library - Grabber with credentials manager for site-specific login
Book Builder
- Create EPUB books from scratch via a WYSIWYG editor (
/builder) - Chapters with contenteditable editing; toolbar: bold, italic, underline, blockquote, author note, scene break, normalize
- Autosave every 30 s and Ctrl+S; publish produces a standards-compliant EPUB 2.0 added directly to the library
Following
- Following page (
/following): track external author URLs - Two tabs: Following (authors with URL set) and All Authors
- Inline URL editing with Enter/Escape support; Visit opens URL in new tab
- Sidebar counter shows number of followed authors
Backup
- Dropbox backup with versioned snapshots and object-store deduplication
- OAuth2 refresh token flow (does not expire); legacy access token supported as fallback
- Configurable backup root, snapshot retention, and scheduled interval
- Live backup progress in sidebar (file count + phase); backup status dot with time-ago
- PostgreSQL dump included in each backup run
Performance
- Library loads instantly for large collections: ETag
304 Not Modified,IntersectionObserverlazy covers, single DOM pass rendering,json_aggSQL tag aggregation - Fast-path
/api/library(DB-only); full rescan only on demand
Branding
- Favicon for browser tabs (16×16, 32×32, 256×256)
- Apple touch icon (180×180) with dark background for iOS home screen
- Logo in sidebar alongside the Novela wordmark