1.1.12 September 18, 2026 diff · release
- Shelves: the grid refreshes as soon as a book changes shelf, without navigating back; deleting a shelf also removes it from all its books in one operation, instead of leaving a ghost shelf nothing could delete; a parent shelf announces its sub-shelves and gives access to all of its books
- Pairing: re-pairing a contact you already know refreshes their address and message channel; two libraries taking turns on the same address are no longer mixed up, and lending confirmations no longer get lost on the way
- Import: books imported from a file on a brand-new device showed as not lendable; they are repaired automatically and new imports no longer reproduce the problem
1.1.11 September 16, 2026 diff · release
- Adding by scan: once a book is identified by its ISBN, correcting the title no longer offers other editions; picking one replaced the scanned ISBN, publisher, year and cover
- Record: when an edition bundles several works ("Letters to a Young Poet, followed by…"), the first one gives the book its title, rather than the last
- Backup: the full backup completes again on iPhone; a setting a restore cannot re-apply is now reported instead of being silently dropped
- Settings: on iOS, opening the import from the settings search no longer leaves the keyboard stuck on screen
- Book details: the "Search by title" bars expire on their own instead of following the reader from screen to screen and holding up later messages
- Celebrations: dismissing an animation with a tap could leave the screen unresponsive; fixed
1.1.10 September 11, 2026 diff · release
- Change your passphrase: from the account area, a signed-in device can pick a new passphrase without entering the old one; your data is not re-encrypted, and the other devices on the account stay connected
- On other members' shelves: an "I have read it" button records in one tap a reading of a book that is not yours, and each displayed book says whether your library already owns, has read or wishes for it, so you do not borrow what you have at hand
- Ownership: when a book you do not own changes status, the app asks whether it entered your library rather than guessing; other members searching your library no longer get your wishes or your borrowed copies
- Complete my library: the overview now counts books with no author
- Passphrase: the strength meter no longer greets an empty field with "very weak"
- Operation log: readable on a phone, with a back button and short identifiers; its type filter also works on the oldest libraries
- Settings: the navigation style choice no longer appears on desktop and tablet, where it had no effect
- Standalone server: hardened startup (port held until launch, atomic port file, invalid configurations refused instead of crashing)
1.1.9 September 3, 2026 diff · release
- Repair a library imported without ISBNs: if your books arrived without ISBNs, hand the same file back from the "Complete my library" screen: each book is found by its title, author and year, and gets its ISBN, publisher and publication year back. No book is created, nothing you already have is replaced, ambiguous rows are listed rather than guessed, and the whole completion can be undone in one gesture
- Import: columns named
EAN, semicolon-separated files, ISBNs turned into scientific notation by a spreadsheet and titles spanning several lines are now read correctly; when no ISBN column is recognised, you can point at it yourself instead of silently losing your ISBNs - Lending: a long recipient name no longer overflows the list
1.1.8 September 1, 2026 diff · release
- Book page: the page is reorganised around one primary action, admin actions move into the top bar menu, a long summary folds instead of pushing notes and suggestions off the screen, and a deleted book answers instead of spinning for ever
- Borrow or buy: a single sheet replaces three cards that vanished as soon as they had nothing to say, which made an empty network and a missing feature look alike; it always opens, and it can say that nobody has the book
- Complete my library: a run can be limited to one missing field, the counters announce exactly what will be processed, and the screen has been reworked (tap targets, illustrated empty states, layout)
- Collections: a collection can be renamed from its own page as well as from the list, where a long press no longer deletes outright but offers both actions
- Dashboard: a "Recently finished" section joins the recent additions
- Restore: when a backup is refused, the message says why, instead of the same "failed to read the file" for an unreadable file and for an export too old to restore
- Borrowing: a book whose ISBN was stored with hyphens is found again in the catalogues of connected libraries
1.1.7 August 29, 2026 diff · release
- Duplicates: a merge screen repairs a library that joined an account from a device already holding its own copies; it shows what will be merged before acting, and it also opens from the settings, so after a restore and not only after a sync
- Passphrase: a strength meter shared by account creation and the encrypted export, with the same minimum on both sides, and advice shown in your language; the warning before joining an account now comes before the passphrase rather than after the sync
- Network: after the device wakes from sleep, the app checks that its server really answers instead of assuming it, which used to cause some thirty seconds of failures; and the busy-port alert no longer fires when the port is held by the app itself
- Importing a shared list: accents are no longer doubled when the file is read, and the screen's labels are translated
1.1.6 August 28, 2026 diff · release
- Wanted books: below the borrow card, a book you are looking for offers your public library catalogue and independent bookshops, configurable from the card or from the settings; these are plain outbound links, no data leaves the device, and the bookseller and librarian presets switch them off
- Reading status: "Abandoned" can finally be selected, after being stored, coloured in the charts and exported without ever being offered; a book that carried that status by another route lost it on the next save
- Book page: the "My library" card is restored, and a book available in a connected library carries an explicit action
- Covers: when a search comes up empty, the message is one sentence instead of a list of sources you can do nothing about, and it no longer follows you from screen to screen; a book without a cover is also no longer asked of every source at each launch
- Sharing a list: sharing works again on iPhone and iPad, where the button did nothing
- Translations: twenty labels were missing from six of the eight shipped languages and fell back to English; the shelf counter showed a raw token instead of a number in Spanish and German
- Interface: on mobile, a page title no longer disappears behind the logo
1.1.5 August 26, 2026 diff · release
- Covers: a book without a cover can go looking for one from its own page, on the same engine as the add-a-book search; a cover taken with the camera is no longer lost on restart; and the upload to your encrypted account no longer reports a failure when there is simply nothing to send
- Suggestions: ready-made selections open as a fan with a "see all" row, the list refreshes as soon as your library changes, and a source that is momentarily unavailable is no longer queried again on every screen
- Reading status: "No status" becomes a real choice again, after being offered everywhere but refused on save
- Reading dates: a date entered by mistake can finally be cleared from the edit page
- Publication year: the year returned by a lookup is no longer mangled, whatever the source
- Ratings: a rating shows with the decimal separator of your language, its label is translated, and the star no longer overlaps the page count on narrow screens
- Library: the list no longer flickers after a book is edited
- Interface: on a book's edit page, the inactive menu button gives way to a back button, and missing accents in the French texts are restored
1.1.4 August 24, 2026 diff · release
- Reading suggestions: a local engine offers books drawn from what your library already holds, on the dashboard, on a book page, the moment you finish one, and in a screen of their own; every card says why it is there, and "Not interested" dismisses it everywhere at once
- "To discover" tab: at the top of the library, one strip shares its spot between your recent activity and the suggestions, never switching on its own, and a top-bar action opens the full list
- Completing a series, completing an author: the missing volume of a series you own and the books of an author you already read are found through an anonymous lookup, and offered with their reason in plain words
- Author page: an author's name now opens on their books present in your library, then on the ones that are not
- Borrowing instead of buying: in the preview of a suggested book, the libraries in your network that own it are listed, and the borrow request starts there
- Favorites: a star bookmark on the book page, a Favorites collection that fills itself, and a double weight in the suggestions; a collection you were already keeping by hand can be adopted as is
- Ownership: an "Ownership" filter finally separates what you have from what you are looking for, search covers the whole catalog whatever filter is on, books you do not own carry the same marker everywhere, and shelf counts and statistics agree with what they show
- Sharing a list: a collection goes out as a file or through copy and paste, with a summary of what is leaving; on arrival a preview shows the list and its sender, and nothing enters the library before confirmation
- Ready-made selections: reviewed lists that overlap your library are offered with the books they share, a card unfolds to the full list and its notes, the "Back to school" category covers CM1-CM2, 6e and 5e, and the corpus was proofread (five ISBNs fixed, sixteen notes put back the right way round)
- Contact card: email, phone and notes are entered in a form, are delivered encrypted only to the libraries you accepted, and a "Contact" action opens a message already written, from a book or from a library's page
- Export: the catalog exports to a spreadsheet-readable CSV, with the date and minute in the file name
- Privacy: a preview shows your library exactly as another library receives it, and your city becomes a local preference, published only if you choose to share it
- Directory: a library's catalog stays browsable a year after its owner last connected, instead of vanishing after a week
- Import: a book that is already complete is no longer sent through a metadata lookup, and a record value containing a separator is no longer truncated
- Interface: confirmation-message actions are legible against their own background again, similar-book cards line up, and header icon spacing is fixed
1.1.3 August 19, 2026 diff · release
- Wishlist: the books you are looking for are spotted in the catalogs of connected libraries, with a borrow request available right from the book page, and your own books discreetly show who is looking for them
- Covers: end of the periodic re-download that made covers vanish every three hours, and recovery of the cache space that was leaking
- Loans: the lent and borrowed lists show newest first, and a loan offer initiated by the lender is now notified as an offer, not as a request
- Interface: wishlist cards, badges and reading milestones hidden by a silent startup hang show up again, fixed the library scrollbar on desktop, and the generated avatar is back on library cards
- Data: automatic cleanup of the cached contact catalogs (remote identifiers fixed, inherited duplicates removed)
1.1.2 July 21, 2026 diff · release
- Series: reading frieze on the book page, where the volumes of a series appear in order, unread ones dimmed and the ones you do not own marked; the order is set by drag and drop or by typing the volume number, from the book page as well as from the collection
- Genres: a closed list of genres offered when entering a book, filed as shelves under a "Genre" parent, with the same filtering, renaming and syncing as your other shelves
- Library: books read but not owned, kept after a loan ended, are back in the filters with a dedicated badge, and removing one is offered after a return instead of happening silently
- Loans: loan state is no longer confused with reading status (two separate pills), a borrow request that could not be delivered shows a send failure instead of staying pending forever, and a return the lender never received raises a warning instead of a false success
- Borrowing from a contact: those loans now appear in the borrowed list and in its counter, with the lender identity recorded durably
- Network: paired contacts follow each other automatically so their catalog stays readable while they are offline, a contact screen explains why a catalog is unavailable (approval required, expired cache) instead of showing an empty list, and displayed books no longer vanish a second after loading
- Known libraries: contacts paired from another device of your account are now listed separately, with guidance on how to pair them again on this device
- AI assistants (MCP): new read-only tool contract over your library, served by the running app, protected by a token and limited to your owner view
- Security: the owner API is no longer reachable from the local network, unencrypted loan exchanges authenticate the sender, and shared catalogs no longer leak the books you do not own
- Collections: the tab no longer breaks on an invalid added-on date coming from a contact or an old backup
- Encrypted account: automatic reconnection when the hub expires the session
- Local network: a startup warning when the app's usual port is already taken, since your contacts could then reach another service instead
- Desktop: the Windows packages and the Linux AppImage now bundle the sync engine, as on macOS
- Interface: fixed header icon spacing on desktop and a more readable search field
1.1.1 July 3, 2026 diff · release
- Network: the cached catalog of an online contact is no longer lost when the directory refreshes
1.1.0 July 3, 2026 diff · release
- Encrypted account: the account becomes the backup and recovery pillar of your library, with a redesigned Account section in the settings, guided explanations and invitation sharing
- Multi-device (foundations): library synchronization engine between the devices of one account (cr-sqlite merge, signed device registry, QR-code enrollment, device removal, automatic triggers, encrypted transport of custom covers, ADR-046); shipped disabled in this version, activation coming soon
- Durable identifiers: books, contacts, shelves, copies and loans move to universal identifiers (UUID), with a migration validated on copies of real libraries and integrity safeguards
- Restore: explicit library-identity choice when restoring on a different device
- Network: faster local reconnection of contacts after an outage, contact catalogs readable across different app versions, online catalog refresh keyed on the canonical ISBN-13 form
- Copies: self-healing of a stale library identifier that could make copy creation fail
- Settings: removal of the local app password, redundant with the encrypted account passphrase
- Games: redesigned memory difficulty picker with colored expandable cards
- Interface: harmonized side margins on large screens, refined header and book page
- Languages: Chinese, Japanese and Korean catalogs completed to 100%
1.0.2 June 24, 2026 diff · release
- QR scanning on macOS: fixed the scanner camera for both pairing and adding contacts
- macOS identity: fixed a case where your library identity could get out of sync on Mac and break peer connections
- Search: clearer message about the Google Books quota, and your preferred search sources are now kept
- Statistics: more readable author leaderboard on mobile
- Dashboard: connected contacts are now counted in the Contacts stat
- Settings: clearer online-sharing screen, fixed contact field, removed a misleading detected-libraries count
- Network: the contacts loading screen now scrolls correctly in landscape
- Activity: section icon shown in the activity banner
- Theme: brighter top bar in the brand colors
- iOS covers: manually added cover photos no longer disappear after an app update
- Complete my library: batch selection, with a live percentage and per-batch progress
- Backup: the app now always restarts after a rollback restore
- Linked devices: removal of the old direct device-to-device pairing, eventually replaced by account-based synchronization
- Settings: full-width quick-access tiles on mobile
1.0.1 June 18, 2026 diff · release
- Complete my library: a new screen and dashboard card to fill in your books' missing data all at once (summary, publisher, pages, cover)
- Settings: clearer, task-oriented layout and settings that are easier to find through search
- Pairing: clearer error messages, a check that the other device is reachable, the screen stays awake during the process, and QR-code pairing
- Network: your contacts' catalogues stay more up to date and reliable, with honest sync feedback
- Linked devices: clearer behavior in the interface
- Search: summaries now take your reading languages into account
- Statistics: more readable blocks, better suited to mobile
- Dashboard: new "Go further" section
- Cleanup: removed an old import screen that was no longer needed
1.0.0 May 4, 2026 diff · release
- Local backup (ADR-037): new encrypted
.bgbackupformat, restore wizard with rollback card, auto-backup scheduler with status card, guardrails blocking every escape route after a successful restore, full-backup teaser, FR/EN/DE/ES translations - Settings: backup promoted to top-level, flattened Content section, removed System accordion, directory folded into the proper section
- Network: incoming follow requests are shown even when the directory is disabled
- Robustness: sober production error fallback in place of the dev red screen
- iOS permissions: corrected microphone usage description, localized permission strings, clarified scope for
NSPhotoLibraryUsageDescription - Android permissions: declared
RECORD_AUDIOand theRecognitionServicequery for voice dictation
0.9.2 April 29, 2026 diff · release
- City sharing (ADR-035 phase 1+2): city picker, sync, display, directory filter via chip/button, share-city state hydration at startup, accessibility semantics on tap-to-filter chips
- Hardened CityRepository: validation, isolate, LRU cache, consumption of enriched records (admin1 + admin2) from ADR-036
- Directory V1: highlight banner for same-city libraries
- Loans: module split into two independent toggles (lend / borrow), Received/Sent sub-tabs gated independently per module, lending disabled by default on the bookseller preset
- E2EE identity recovery: recovery dialog instead of silently breaking peers, list of peers and devices to re-pair after a wipe
- Activity carousel: cap raised to 20 items, padded with latest added books
- Search: persistent Google Books toggle, UX guards when no API key is set, new generic
searchi18n key - Hub directory: auto-setup of the relay and negative cache on 404
- Profile: removed
profileTypeandsimplifiedModein favor of mode-driven behavior - Collections: null-safe navigation from the book detail, auto-refresh of the list
- Stability: copy badge refreshed on book detail when returning from the copy manager, IME composition committed before reading the author controller in book forms
- i18n: 22 missing strings translated in Spanish and German, deduplication of the
badge_newkey across fr/en/es/de - Hub: automatic push of the location country on settings change
0.9.1 April 25, 2026 diff · release
- International discovery v1.0: full overhaul of curated lists in preparation for the international rollout
- "Activity" carousel: rebranded from "recently added", reading-first sort, "new" badge hidden when a status badge is already shown, ES/DE propagation
- Library: persistent sort control collapsed into a single pill with popup (empty-author entries at the bottom), collection grouping driven from settings, fixed progress bar
- Peer book sheet: draggable sheet with pinned header and persistent borrow CTA
- Covers: isolated peer cover cache with a user-controlled cap, warning badge when hub upload is pending retry, unified URL resolution via
CoverUrlResolver - Loans (ADR-034): typed loan metadata, reader-extraction helper, fixed reading of the
/api/copies/borrowedpayload - Statistics: count books marked read without a finished date, fix loan and pages-read cards stuck at 0
- Book detail: block deletion on active loans, preserve
addedAt/hubCoverUploadFailedAt, coerceDateTime→ ISO string in FFI updates - Network: stale-connection badge on peer cards (ADR-032)
- Collections: option to also delete associated books when removing a collection
- i18n: "Gamification" renamed to "Accomplissements" (FR), Activity carousel strings and new badges propagated to ES and DE
- Stability: tap-to-mark-read in the notifications popover, localized shelf-deletion confirmation, library-rename replay when config is not yet hydrated
0.9.0 April 17, 2026 diff · release
- Peer delta sync (ADR-028 / ADR-029): peer catalog refreshes now use incremental deltas (adds, updates, deletes) instead of full pulls, dramatically reducing bandwidth and speeding up discovery of peer changes
- Transparent fallback: automatic fallback to the legacy full pull when the peer does not yet support the delta protocol
- Local state preserved:
firstSeenAtand the online state are kept during delta refreshes (the "new" badge stays consistent) - Cross-device avatar sync (ADR-025): profile avatars now propagate across linked devices via
profile_changed - Peer library self-heal (ADR-030): library UUID recovery via E2EE manifest, delta cursor preserved after a reset-recovery
- Recently-added carousel: new carousel of latest additions on own and peer libraries, collapsible variant driven by scroll, auto-hidden on small libraries
- Sticky header: collapsing header with sticky tabs on Library and Loans
- Discover directory: ungated entry with in-tab publish CTA, cover-grid catalog view, reliable "new" badge, incoming follow requests surfaced on the Discover card, explicit confirmation snackbars, approval and borrowing toggles unlocked with privacy-first defaults
- Accessibility: tooltips on 13 IconButtons, semantic labels for screen readers,
Semanticsheaders on book detail - Settings: visual grouping of module toggles into 4 sections, neutralized jargon, explicit confirmation on destructive network actions
- Leaderboard: startup module sync and UI harmonization, client-side refresh timeout with user feedback
- Games hub: hangman link added on the dashboard
- Peer library UI: cover grid by default with bounded RAM, restored color variety on book placeholders, "new" badge now driven by owner-supplied
added_at - Hub directory: clients now report their app version to the hub on register
- Book cover: avoid the OpenLibrary grey placeholder for unknown ISBNs
- i18n: 24 missing strings translated in Spanish and German
0.8.9 April 13, 2026 diff · release
- Public hub directory: public directory enabled with UX guardrails and direct borrow requests from followed libraries
- Real-time leaderboard (ADR-023): live leaderboard push, cache-first display, pre-warm on startup, reset scores button, skip direct on cellular
- Loan reminders: due-date reminder notifications, fixed deep-link targets for lent/returned events
- Enriched book detail: active loan status (borrower, due date, overdue badge), contact notes, copies stepper, borrow button disabled when book is already lent or borrowed
- Live peer catalog: subscribe to peer changes to refresh the library without manual action, re-check peer connectivity before sync to avoid stale offline paths
- Controlled covers: cap at 300×450, JPEG re-encode on upload, ETag cache, evict on 404, hub proxy for peer covers, propagation of custom covers to the hub
- Page count: page count field on book details, add/edit forms and search
- Configurable loan duration: customize loan duration in settings, pick borrowing peer from loan dialog
- Book forms: redesigned add/edit book forms for better UX
- Network peers: peer avatars (LAN and relay via hub), tap peer card to open library directly, peer list polish (status dot, skeleton, full-screen QR), share invite button in add-connection sheet
- Relay robustness (5G/4G): reliable credential republish on reconnect, non-blocking sync, offline fallback, 502 circuit breaker, nodeId refresh, sync timeout
- Hub profile: profile recovery code, automatic recovery on 401 (retry with recovery code before purge), hardened Keychain backup, registration 401 back-off, Hub URL hidden in release, safeguards against permanent profile lockout
- Multi-device sync: fixed synchronization of authors, notes, copies and metadata between linked devices, library rename propagated to the hub
- Search: improved external source reliability, relevance scoring, protection against concurrent searches
- i18n: completed ES/DE translations (cover, loans, notes, recovery), "Copies" renamed to "Exemplaires" (fr)
- Security & stability: sensitive logs gated in debug and identifiers redacted, Inventaire deserialization fix, localized default library name fix
0.8.8 March 23, 2026 diff · release
- Multi-device sync (E2EE): end-to-end encrypted synchronization between linked devices, bidirectional pairing, backfill and deduplication
- Book notes: add notes to books with voice dictation support
- Private books: hide books from network peers
- Book descriptions: automatic retrieval from OpenLibrary and SUDOC
- Hangman game: new mini-game added to the games hub
- Onboarding: sequenced flash messages and welcome design overhaul
- Stability: fixed crashes on first launch and first scan, Android Keystore recovery
0.8.7 March 17, 2026 diff · release
- macOS DMG: distribution via DMG with hardened runtime and resilient Keychain fallback
- Device fingerprint: register device model and fingerprint on the hub
- Peer stability: catalog refresh, offline cache, peer name persistence
- Notifications: complete UX overhaul, borrowed filter, peer name fix
- Compatibility:
ClipRectfix for Flutter 3.38
0.8.6 March 13, 2026 diff · release
- Unified hub catalog: consistent rendering and faster peer library loading
- Mass scan: batch scanning feature with redirect to scanned shelf
- Statistics: enriched quantity and quality, colors harmonized with profile
- Localization: added Italian, Turkish fixes, i18n cleanup
- UI: logo, search toggle, bottom nav border, operation log dates
0.8.5 March 7, 2026 diff · tag
- Activity feed: new activity stream with "new" badges
- Borrow management: borrow requests, notification UX, tap-to-edit reading status badge
- Network discovery: cross-reference mDNS names with saved peers, 5G sync fallback
- UI: bottom navigation bar option, instant cover refresh, share quick action
0.8.4 March 4, 2026 diff · tag
- Hub directory: Explore screen, library follow/unfollow, incoming requests
- Collections: refactored to FFI direct, grouped in library view
- Web browsing: connect and browse peer libraries via web browser
- Device sync: sync safety module with review screen
- Covers: capture covers with device camera
0.8.2 February 26, 2026 diff · tag
- Short invite links: simplified profile sharing with short URL via the hub
- Share button: new profile share button
- Accessibility: accessibility prerequisites added (work in progress)
0.8.1 February 25, 2026 diff · tag
- Memory game: new mini-game using your library covers, with leaderboard and animations
- Sliding puzzle: cover-based puzzle game with dedicated screen and games hub
- Help: enriched help section
- Translations: added Portuguese and Turkish
0.8.0 February 20, 2026 diff · tag
- End-to-end encryption (E2EE): QR code v2 key exchange, E2EE indicator in UI, encrypted loan requests
- Relay hub: relay hub settings UI and API integration
- AGPL-3.0 license: project relicensed to AGPL-3.0
- CJK support: fallback fonts for Japanese, Chinese and Korean, .po skeleton files
- Languages: added Bulgarian, regional variant support (pt-BR, zh-TW...)
- Loans: configurable auto-approve, pending request counter
0.7.2 February 13, 2026 diff · tag
- Internationalization: translations migrated to .po files, multi-language search
- Theme: theme customization in settings, default theme optimization
- UX audit: persona-based fixes, search deduplication, 4 major friction points resolved
- Leaderboard: fixed leaderboard display on profile and between peers
0.7.1 February 10, 2026 diff · tag
- Leaderboard module: gamification leaderboard across connected libraries
0.7.0 February 6, 2026 diff · tag
- P2P discovery: mDNS hostname.local fallback, removed 127.0.0.1 fallback
- Clean architecture: migrated Flutter screens to Repository pattern
- Database path: installation folder migration
- Optimizations: reading status, online search, import, peer caching
0.6.6 January 25, 2026 diff · tag
- Borrowing and loans: fixes and improvements to the borrowing feature
- UX/UI: improved empty states, avatar visibility management, search enhancement
- Statistics: statistics page and dashboard display improvements
- Quick actions: new quick actions button in the top banner
- Simplified install: removed setup wizard, auto-initialization, ES/DE support
0.6.5 January 12, 2026 tag
- Initial alpha release: personal library management, book add/scan, online search
- Local network: peer discovery via mDNS, neighbor library browsing
- Interface: dashboard, collections, shelves, profile with gamification badges