Changelog
Every update from every project, newest first. Each project also has its own page:Codex, Codex Reader (iOS), Tsundoku, Idle Beekeepers.
October 2026
Collections and read lists: the Actions menu on a series or book page now ticks the collections and read lists it is already in. Tap one to add or remove it. Holding a card in a grid opens the same checklist, which stays open while you make changes.
First release of Codex Reader, the iOS app for reading your Codex library, on the App Store.
Tom comes back the spring after, as he said, then says goodbye
The highlight breathes without redrawing the page
On Tom's farm the new-button note no longer makes them glow; The highlight's ring draws over the buttons beside it
Tom's week watches the entrance the first day the bees fly
Tom's wait for warmth shows the calendar; Tom's wait for warmth no longer says reading fills it
A small farm's hive a week unlooked in swarm season needs you; What a new player met playing a year with Tom in the browser
Before you start waits for an answer on sharing play data; Tom's wait for warmth says to read on meanwhile
Switching to Tom in Settings during the first week starts his week; Tom sees a beginner through the first year's mites, swarms and honey
Simpler play is the answer already picked on Before you start; Tom says who he is before the tour starts
Idle Beekeepers 0.49.1 released.
A new player chooses how much help, and the mentor's progress is kept with the farm; The guide's tips glow what they point at, and the weather is a large icon before the date; Tom, the mentor, walks a new player round the screen, the farm held until he's done
A new farm opens its hive on Start, the hive says to tap it, and the Journal shows its books first; The story says who you are and how the book reached you, and reads as French in French; A new farm pauses on its first warm day, and stays paused under its story after starting over
The groundwork for languages: a message formatter, the language per device, and an English golden file; A reply, a diary line and a pause can be a message, shown in the player's language; The names of things by id, in any language, with English read from CONFIG
Keep agent worktrees out of the Docker build context; Stop a session that moved nothing from rewriting reading progress; Report a concurrently replayed reading session as a duplicate
Before you start explains every choice beside its button
No feeding on the spring flow with a super on; Simpler play counts mites monthly outside the windows; Space no longer rings the "i" marks
The books read as styled text: paragraphs, key terms in bold, lists, and a Remember box per chapter; A book's box is there only where it earns it: a lesson, a note, or a fun fact; A new tab's tip is drawn above the page, never under a hive card's text
The front page's pictures never hold the deploy: their farms show everything, and the step is time-limited
A new farm starts on the hives alone; each place appears as the guide reaches it, with a tip
Every page of the site and the game's Settings say whose the game is, all rights reserved
The developer tools are hidden from players; ?dev in the address shows them
A chapter's picture keeps its place while it loads, so the text doesn't jump
A "Needs you" box gathers what needs a decision, with links to the hive, the book and the supplies
A book named in a hive's advice has a link to it; Worth trying: set your rules for orders
Simpler play's daily care says what it does and never feeds a colony carrying a crop; an empty super can come off
Opening a hive on a wide screen opens every card in its row
The debug log keeps the farm's last year as JSON, each hive day by day as it was and as its card showed it
Nucs are sold until mid-August, mated queens until the end of September
Syrup eaten out of the supers no longer taints a later crop; the show asks for an extracted jar first
The stores bar is measured against what the colony needs now
Tall trees on the map are drawn whole, crown and trunk
Techniques have five levels at doubling prices, six new techniques, and the ending stays reachable
September 2026
Techniques say what they do in plain words, and those for hired hands say so
A task done early no longer moves the guide past the chapters still to do
The keeper's tip stays a minute of real time, with a "Next tip" link
An error the game reports by itself carries the last 30 days
A debug log of the last 30 days, to copy from Settings or attach to a bug report
The site counts its page views, storing nothing on the device
An automatic pause stays on the day that paused it
A second-season chapter, and things worth trying that no chapter asks for
The warm-day pause is a sun button beside play, the speed is a list, and the header reads at 13 px
What a first year ran into: knowledge from books can be spent, and the guide moves on while winter waits
The front page opens less close on the farm, faint behind the title
A shared link to the site shows a card: the name beside the game window
Where the farm is: home, the cold north or the Mediterranean, kept for the farm's life; The Beekeeper's Year gains a chapter on the cold north and the Mediterranean; In the Mediterranean dearth a weak colony is warned, then may be robbed out or taken by hornets unless fed, narrowed and guarded
A gardener who sows the strips again each spring and replants beds and trees past their years
A grower who hires you again through the broker pays 40% more, not 25%
Six books get covers of their own instead of borrowing another's
Saves are kept under the game's new name; a farm under the old one moves over once
The game is named Idle Beekeepers
Hive types: the National, two Langstroths, the Warré and the top-bar, opened by two new books; Every nuc bought can come in any unlocked hive, and a top-bar crops less than a National; A Warré is a fair choice: its boxes and their comb cost what their size does, and crushed comb is charged once
Premium honey as a path: single-flower yards, organic at +30%, show ribbons that build the brand; Pollination as a path: choose each contract's size, a second truck, a broker, gentler transport; Pollination tuned so a farm that leans on it earns its keep
Stop releases silently losing their detail-page data
A wiki beside the game: the books in a reader, how the game works, and the glossary; The wiki's three doors are the same height
Open days, beekeeping experiences and a visitor guide, and the county projects wait on people taught; Tours are booked ahead, fewer and smaller so the bees aren't disturbed; The front page opens on the farm in its own pixels, then tells its story block by block
A link to a game screen opens that screen: the rewrite goes to /game/, which Cloudflare doesn't redirect
The site's front page at the root, the game at /game/
The pitch page back to its first width, 1180 px
The site's build uses Node 24, and a picture step that can't start never fails a deploy
State scoped imports as coverage, and carry want-to-read across
The header's chips keep one size when a tappable one shares their row
Idle Beekeepers 0.18.4 released.
Watch the entrance is always on the hive card, greyed on days the bees don't fly
Starting over goes back to the start for the new farm's story, from its own block
The pitch page uses a wide screen, up to 1600 px for the pictures
The pitch page shows every picture on a phone or a computer, to match the screen, and zooms on a tap
A pollinator corridor and a queen-breeding station before the Foundation
The pictures page tells the game's story, as a pitch
Settings links to the pictures page beside the game; The pictures page shows the game on a computer, dark, at five stages from the first spring to year 21
A pictures page beside the game, retaken at every release; Reload for a new version always reloads, even when another tab found the update
The farm map draws its own buildings, the truck and the timber trees
Pixel icons for every co-op supply, the rest of the diary and the status lines
Spring rent waits for the harvest, and colonies are never sold for it; Pixel icons in the farm map's colours for the tabs, header, diary and weather
Let an import actually use external ids, and scope it to a library
The family farm, passing the book to an heir; A dark rim round the coin, so it shows on gold buttons
Woodworking, building frames, boxes and whole hives by hand; Hives wear over the years; leaks, pests and winter repairs; A joiner who works through a build list
Show reading of deleted books, and a confirmed way to delete it; Add a Reading Progress settings page for export and import; Count reading of deleted books, and let a reader purge it
Five and ten perfect winters with 10+ colonies, both; Each hive keeps its own paint; Paint pictures in Settings and on every hive card
Things to show off, unlocked by achievements and finished farms; Hive paint and the farm sign on the map; A jar of honey wearing the chosen label
Lifetime achievements engine, kept across new farms; Achievement banner and the Journal's Achievements page; Achievements for the first days, the hive, growing and staff
Seasonal occasion buyers pay above the gate, a third of orders; Balanced bee strains, and a sim that plays like a person
A new farm earns its progression again, and unlocks the next bees; Bee strains that play differently, chosen when a new farm begins
A staffed farm keeps going while you're away, for up to a year; A staffed farm away also stops when the staff can't be paid
An error report carries the minute of play before it, for players who share play data; A skipped goal no longer holds the guide back, and goals can be hidden; A new farm asks its three setup questions on one page after the story
Idle beekeeping prototype with a business late game; Unlock faster speeds with automation; Keep supplies in the shed, with a co-op account to restock it
Validate a hand-written filter condition against the field catalog; Add a JSON view of the filter rule, with copy and paste; Show the rule JSON panel under the filter builder
Stop a parked tab from clobbering progress read elsewhere
Honor the sort parameter on unsearched book lists
Codex 2.4.14 released.
Gate progress endpoints on the progress permissions; Require series:read on want-to-read, recommendations, and series exports; Unify the permission wire format and expose plugins-manage in the picker
Move the plugin publish jobs to npm 12
Use the lockfile in the cross-build image too
Install the frontend from the lockfile, not a live re-resolve
Size the webtoon seam overlap to a full device pixel under zoom-out
Move resolved releases in bulk and route audiobooks to novel series
Measure the away gap from the pause, not the last page turn
Keep 8-bit alpha in the favicon's 16px frame
Switch the app icon to the ice+ember branding
August 2026
Bucket reading activity by the viewer's day instead of UTC
Overlap webtoon pages 1px to stop sub-pixel seams at zero gap
Let a reader drop a series reading direction back to the inherited one
Stop losing the renumber pass a book was waiting on
Give the sorts with guaranteed ties a defined order; Finish giving every ordered list a defined total order; Order on-deck and the error list past their ties
Store per-user reader settings for a series; Carry per-series reading directions over to the account; [breaking] Sync only reading direction per series, not every reader setting
[breaking] Report live scan progress, and purge in seconds not days; Stop book search multiplying its page offset by the page size; Lock every series metadata field the write endpoints touch
Stop per-book analysis racing on positional book numbers
Serve the archive entry the page row names, not the one at that index; Stop dropping AVIF pages at the extension gate; Stop webtoon pages deadlocking on their own lazy load
Remove the duplicate header left by the 2.2.1 release; Make the auth pages follow the color scheme instead of forcing dark; Stop borrowing the book count as a volume or chapter numerator
Make the reading-session rules a shared file instead of test code; Document the preference keys that exist and stop mocking ones that don't
Make the book file endpoint range-capable and conditional; Describe the full response shapes as their own routes; Describe series pages, library book params, and the filter grammar correctly
Keep OIDC login state in the database so any replica can complete it; Stop plugin OAuth and entity events from being trapped in one process
[breaking] Layer configuration with figment and nest env vars with __; Accept the environment value shapes the override layer allowed; [breaking] Make the ad-hoc environment reads real configuration keys
Make webtoon page requests honour the downscale setting; Stop the webtoon reader mutating the DOM when a scroll settles
Disclose sittings that reported no page count
Let the reading dashboard measure pages and books finished; Add calendar-year and all-time ranges to the reading dashboard; Stop the reading dashboard misnaming and mis-ranking series
Keep the activity calendar populated on the one-year range
Make reading statistics work on PostgreSQL
Derive reading progress from an append-only session log; Add a batched endpoint for recording reading sessions; Measure reading time and pages read in all three readers
Retry the initial connection when running migrations
Stop starting processes from exhausting the connection limit
Scaffold the mangabaka recommendations plugin; Generate mangabaka recommendations from library seeds; Keep franchise spam out of mangabaka recommendations
Add a release by pasting its post url; Sort series by when releases were discovered; Find a series by its provider ID or URL
Sort filter presets and update the loaded one from the save modal
Show a real label for every active task
Serve collection and read list covers as image bytes
July 2026
Reorder filter builder conditions by dragging; Honour the sort parameter on a collection's series; Honour the sort parameter on a read list's books
Explain each release action in its tooltip; Add rating filters and multi-library selection; Resolve rule-backed collection membership at read time
Migrate mangabaka to the api.mangabaka.org host
Move API host defaults to api.mangabaka.org
Expose the want-to-read queue as a virtual collection and read list
Make the mobile search sheet scrollable above the iOS keyboard
Bulk-move selected releases to another series from the series page
Bulk re-enrich across sources, searches, and removed origins
Add bulk actions on series cards (wishlist, search, refresh)
Stop JSON-quoting numeric lookup ids in the address bar
Add the series lookup endpoint for external-ID deep links; Add the /series/lookup deep-link resolver page
Add configurable per-series release-search foundation; Add the per-series search run engine, audit trail, and CLI; Expose per-series release search over the admin API
Add summary as a filterable field for series and books; Add webLinks manifest capability schema; Add plugins/web-links endpoint resolving webLinks templates
Tsundoku 1.15.2 released.
Let the sticky filter panel scroll when taller than the viewport
Add collection and read-list membership fields to data exports; Show all catalog fields in the export modal field groups
Shared media grid with sort selectors and drag-and-drop reorder; Manual ordering everywhere, collection summaries, persisted queue sort; Honor the ordered flag when listing collection and read list members
Drop unsafe optional chaining flagged by biome in tests
Persist incognito mode across chapter boundaries
Keep book completion sticky in double-page mode
Bound concurrent image decode to prevent serve OOM
Bridge task progress across processes via LISTEN/NOTIFY
Add --progress and default row-count verification; Add --full-verification report for import and copy; Cap insert batches to the destination bind-parameter limit
Read SQLite UUIDs stored as text, not just blobs
Add entity-driven data transfer engine; Add portable export archive with artifact bundling; Add export, import, and copy database commands
Decode mislabeled Windows-1252 ComicInfo.xml
June 2026
Mark the last book of a series read at the end-of-book overlay
Enable swipe navigation to and on the chapter overlay
Add opt-in page downscaling for smoother turns; Warn that page downscaling is slow and not a flicker fix
Decode preloaded pages to stop swipe-in black flicker; Only decode neighbor pages to prevent mobile OOM crash; Drive swipe track transform imperatively to kill commit flash
Fix swipe page-turn flash and missing snap-back
Swipe down to exit the comic reader; Prevent swipe page-turn from flashing the previous page
Add swipe-paging gesture helpers and setting; Add finger-drag swipe pager and drag input; Enable swipe paging in the comic reader
Make auto-advance countdown configurable and fix webtoon loop; Lock page scroll while the mobile nav menu is open; Keep webtoon scroll restore from drifting backward on reload
Enrich adjacent-book data for chapter-transition panels; Add chapter-transition panel and auto-advance countdown; Show chapter-transition panels in the webtoon reader
Use npm ci for web job and harden cron /n parsing; Use npm ci across web and plugin jobs, harden cron /n parsing
Optionally match series descriptions
Confirm currency from any comparable axis
Parse MangaBaka source-id lookup envelope
Add detail hover cards to series and book cards
Refresh want-to-read cards and reading feeds without reload
Make series-detail release rows usable on mobile
Add multi-select and bulk actions to advanced search; Add Want to Read toggle to card menu; Add bulk add endpoint and toolbar action
Make the top navigation mobile-friendly with a burger drawer; Collapse admin nav and feed filters into left drawers on mobile; Full-screen modals, 2-up cards, and wrapped config values on mobile
Add collections, read lists, and want-to-read schema; Add collection/read-list permissions and repositories; Add want-to-read queue endpoints
Add paginated ReadingFeedSection for keep-reading and on-deck; Add Keep Reading and On Deck tabs with See all links; Show hasUserRating and bookType in active filter chips
Share existing_books_map via Arc to stop scan OOM; Bound image memory to prevent decode OOM
Add a full-drain mode to the manual series-metadata refresh
Add Nyaa search, clickable badges and bulk send on series detail; Show a detail tooltip on hovering a feed card title; Enrich and enlarge MangaBaka search result cards
Add admin wishlist flag, toggle and from-provider endpoints; Surface the series wishlist with a clip toggle, indicator and filter; Add the wishlist page, MangaBaka add modal and app-bar shortcut
Add IdP bearer token validator and per-provider accepted audiences; Accept IdP bearer tokens on the API and resolve linked users
Anchor webtoon scroll position when images load above the viewport
Add host-configurable plugin log level; Add debug logging across network-backed plugins; Per-plugin log level override, default to server level
Commit release link and coverage recompute atomically
Break reverse-RPC deadlock during plugin initialize
Scaffold tsundoku release-source plugin; Add tsundoku feed fetcher and cursor persistence; Add tsundoku external-id matching and candidate mapping
Add admin catalog export endpoint; Add admin catalog export page; Finish catalog export — OpenAPI, docs, filter polish
Codex 1.36.1 released.
Add data layer for scheduled user-plugin sync; Fan out scheduled user syncs on a plugin's cron; API for admin sync cron and per-user auto/manual sync
Send library context with sync and recommendation entries; Scope sync push and pull to a plugin's allowed libraries; Scope recommendation generation to a plugin's allowed libraries
Add sort by rating to the browse list
Issue refresh tokens for OIDC logins; Store OIDC refresh token to keep SSO sessions alive
Make DB fan-out bound and background pool size configurable; Eliminate list N+1 and SSE-driven refetch storm; Bound per-request DB query fan-out to prevent pool exhaustion
Serve API docs for bare /docs path under active service worker
Resolve against the Nyaa "Information" link, not just description links
Add ignore_completion column for Codex tracking opt-out; Add Codex "ignored" status for completion-tracking opt-out; Add ignore-completion toggle endpoint
Delete series external links by ID instead of source name
Add created_at and external ratings to LLM presets
Add PATCH endpoint to edit manual series; Add manual/auto metadataSource filter to the list endpoint; Edit manual series + manual/auto feed filter
May 2026
Keep the group list from scrolling horizontally
Cap the group list height and refresh it after a decision
Add searchQuery + breadth group filter to the review queue; Add release grouping to the review queue; Add a release-grouping panel to the review queue
Add a per-page size selector to the queue
Shift+click to select a range of releases in the queue
Sortable inbox columns and split observed/released dates
Sort by title, collapsible cards, and bulk assign-to-series; Resolve foreign provider IDs and surface comment-sourced link suggestions; Redirect unknown routes to the feed instead of dead-ending
Make sidebar scroll when libraries overflow the navbar
Re-enrich multiple sources or all at once
Rework Codex ownership badges to highlight the actionable state; Persist display preferences and add a wide layout mode
Add Codex presence foundation; Sync job, cron, and admin endpoints for presence overlay; Admin-only Codex presence overlay on series list and detail
Add slim series external-index endpoint for discovery tools; Update openapi-sync paths for crate-split layout
Render Back-to-feed link via renderRoot to fix type error
Track highest volume/chapter across releases
Collapse the series tag list with a show-more toggle; Parse volume/chapter spans from real-world release names
Add results-per-page selector to the series feed; Replace genre/tag chip clouds with searchable multi-selects
Re-enrich existing releases by status; surface release details on series page
Capture and display the Nyaa Information-field link
Split enrich + resolve timings on poll_runs and surface on metrics card
Add split_chapter_suffix rule for bare trailing chapter numbers
Sort series releases by post date and add copy-link buttons; Match mangabaka.org links directly instead of falling to fuzzy
Centralize job lock + event lifecycle so manual triggers actually run
Add per-series refresh-metadata button
Expose app version via /info and show it in the header; Prevent provider/source card action group from shrinking; Mock /info and /events/jobs in MSW handlers
Add Playwright workflow for docs screenshots; Add init-config command and starter-template bootstrap; Touch CHANGELOG.md before git-cliff --prepend
Land storage layer (sea-orm + FTS5) and frontend bootstrap follow-ups; Add MetadataProvider abstraction with MangaBaka impl and offline cache; Add DiscoverySource trait and Nyaa source with poll CLI
Repair advanced search and filters on mobile
Add per-group search input for long chip lists
Add schema, entities, and repository for sharing-tag access groups; Merge group grants into ContentFilter; Add admin API for access group management
Decouple browser RUM proxy endpoint from SDK exporter
Point rust-embed at workspace-root web/dist
Add opt-in OTLP traces and metrics scaffolding; Instrument plugin RPCs, repositories, scanner, and task worker with OTel spans; Emit OTel counters, histograms, and gauges alongside in-app metrics
Unwire sccache from repo config to keep CI/Docker green; Enable sccache wrapper and document fast-build tooling
Keep session through transient refresh-token failures
Show global presets, allow saving from draft, and offer replace on duplicate
Add unified filter-preset storage for saved filters and advanced search; Add path, format, year, page count, date, and author filter variants; Compose fuzzy index with /list endpoints and add relevance sort
Trust-list external-ID sources, hydrate members in list endpoint; Align series duplicate mocks with hydrated members schema; Stabilize EPUB pointer test against extra ReactReader renders
Detect series duplicates by external ID or normalized title; Add Series tab to duplicate detection UI; Show book title on duplicate cards and prevent overflow
Batch DTO hydration in fuzzy search path
Add in-memory fuzzy index over series and books; Keep fuzzy index live via event-driven incremental updates; Route global search through the fuzzy index behind a runtime flag
Persist refresh tokens with rotation and theft detection; Add /auth/refresh and wire refresh tokens into login/logout; Refresh access tokens transparently on 401 in the web client
Structured tracing for PDF page render path; Add in-memory open-document handle cache service; Route page renders through in-memory handle cache
Expose Ignore and Reset as per-row actions
Add motion provider, easings, useDelayedFlag, and depth tokens; Shadow-based depth and translucent mobile surfaces; Motion layer with press, stagger, theme toggle, and reduced-motion guard
Foundation pass — xs breakpoint, drawer auto-close, overflow fixes; Full-screen search sheet below the xs breakpoint; Reader polish with overflow menu and bottom navigation bar
Show tracking badge and toggle on series cards
Add async BulkTrackForReleases task type and handler; Wire bulk track/untrack endpoints to async task; Switch bulk track/untrack toolbar to queue-then-await pattern
Support shift+click range selection in release tracker
Configurable RPC request timeout per call and per plugin
Auto-ignore releases on disabled axes
Add tri-state isTracked filter for release-tracking series; Plugin progress reporting + aggregated release toasts
Poll-all + reset-all admin actions, plugin FK cascade
Embed frontend in installer-built binaries
Hide Releases nav entry when no release-source plugin is enabled
Harden release-tracking and library-jobs scenarios; Preserve search title in get() responses
Add series_tracking sidecar and series_aliases schema; Add backfill task, tracking API, and UI surface; Add release ledger schema, repos, and HTTP API
Emit progress events from nine more task handlers; Show target titles and live elapsed time in active-tasks badge; Render progress bar and message for live tasks in active-tasks badge
Add per-library scheduled refresh config storage; Add scheduled per-library refresh task type and handler; Add field-group resolver and dry-run mode to series metadata apply
Split total_book_count into separate volume and chapter counts; Add total_volume_count and total_chapter_count to plugin protocol; Apply total_volume_count and total_chapter_count via MetadataApplier
Add series_exports data model, migration, and repository; Add ExportStorage service for atomic file writes; Add series export data collector and bulk rating helpers
April 2026
Add Continue/Read button to series detail page; Add metadata fields, plugin-side filters, and frontend filter UI
March 2026
Fix cross-app progress sync when within-resource progression is zero
Add KOReader sync API for reading progress synchronization; Add R2Progression support for cross-device EPUB reading sync; Add server-side Readium positions for cross-app progression sync
Prevent webtoon progress stuck at 99% when navigating to next volume
February 2026
Add separate fit mode for webtoon vs comic reader
Make webtoon boundary nav arrow-key-only and hide layout toggle; Mark book as read when navigating to next volume
Add IANA timezone support for cron job scheduling; Add accent-insensitive Unicode search via search_title column; Prevent panic on series list with readStatus condition filter
Add book context support for custom metadata templates; Add inline helpers, improved error feedback, and interactive help section; Add select all and fix selection persistence across navigation
Add application.base_url as unified external URL setting; Add centralized data_dir config and plugin file storage; Add admin plugin storage management page
Handle SQLite blob UUIDs and PostgreSQL INT8 in consolidate_authors
Make consolidate_authors migration idempotent for partial failure recovery
Add many-to-many genre/tag support, custom metadata editor, and title_sort_lock; Enrich BookDetail page with full metadata and generic badge chips; Add externalIds support to PluginBookMetadata for book cross-references
Redesign recommendation cards with float-based grid layout; Add hasUserRating filter and fix rating sort for PostgreSQL; Add user-scoped plugin task endpoint for sync status visibility
Move settings to server-side with per-user seed curation; Remove duplicate "Based on" text in recommendation cards; Only exclude read series and enrich instead of filtering local matches
Add glob pattern support for rate limit exempt paths; Display description preview in metadata search results; Correct series download button endpoint URL
Add searchURITemplate to plugin manifests with external search link in metadata modal; Add dynamic document titles to series, book, reader, and search pages; Add collapsible overflow for tags and alternate titles on series detail page
Rewrite plugin scenarios for official store and update docs; Clamp mangabaka search limit to 50, add sort_by config, handle null JSON-RPC result
Add series metadata reset endpoint with bulk support and UI; Add official plugin store with 3D flip card carousel
Make GET and dismiss endpoints non-blocking with SSE task tracking; Add internal_config with search results limit and external ID lookup in search modal; Add series external ID CRUD endpoints and edit modal for series/books
Add configurable task timeout via DB settings; Add private and hiddenFromStatusLists visibility controls to AniList sync; Renumber series books on delete and restore, clear deleted book numbers
Sort search results by title similarity scoring; Stop recording reading progress on v1 page fetch, move to OPDS-only endpoint; Swap sort by and page size positions in library toolbar
Add user plugin system database schema and core infrastructure; Add OAuth authentication flow and user plugin API endpoints; Add plugin storage system with bidirectional RPC and SDK support
Use COALESCE for title sort in v1 series endpoints to handle NULL title_sort values
Set page to last page on mark-as-read and sort on-deck by recency; Correct progress bar click mapping in RTL mode; Use COALESCE for title sort to handle NULL title_sort values
Auto-detect book completion when current page reaches page count
Add OIDC configuration and data model; Implement OIDC service core; Add OIDC API endpoints
Populate genres, tags, links, authors, and alternate titles in series endpoint; Populate book metadata fields (authors, tags, summary, dates)
Improve double-page spread handling and RTL progress bar; Fix double-page spread initialization and page jump on load
Enhance plugin details with two-column layout, metadata targets, and search config indicators
Codex 1.8.1 released.
Add comprehensive book metadata system with plugin support; Add sidecar metadata support for OPF and Mylar series.json; Correct credential_delivery CHECK constraint values for PostgreSQL
Add sort fields, condition filters, and integration tests for Komic compatibility
Handle rate-limited tasks with rescheduling instead of retries
Add missing series read-progress endpoints; Prevent navigation when triggering library menu actions
Book and series search with library filter
Use package.json version in manifests instead of hardcoded values
Change default books per page to 50 in series detail; Add book count to metadata search results; Add cover lock to preserve user cover selection during auto-fetch
Add GET /api/v1/user endpoint for current user profile; Add ZeroPages error type for books with no pages; Add komga-sync tool for reading progress migration
Add external source ID filter and improve metadata display; Add config schema support and improve plugin logging; Handle claim race condition gracefully instead of logging error
Add SSE events for plugin configuration changes; Add preprocessing rules, search templates, auto-match conditions, and external ID tracking; Support custom user directive in docker-compose
January 2026
Upgrade Mantine to v8 and refine card styling; Add series completion filter; Update title_sort automatically when title changes via plugin
Add plugin system for external metadata providers; Add plugin metrics tracking and scheduled thumbnail generation; Add bulk operations and info modals for books and series
Add automated screenshot capture system with Playwright; Show focus ring only for keyboard navigation; Fix PDF fit modes not working on initial page load
Multi-format support: CBZ, CBR (with UnRAR), EPUB, and PDF; Dual database support: SQLite for simplicity, PostgreSQL for scale; Library management: Multiple libraries with customizable scanning strategies