1.2.2 – April 22, 2026
Changed
- Search Picks Cache – Lowered picks cache duration from 7 days to 6 hours so curated content refreshes more frequently.
- Clear Cache – “Clear Cache” in Settings now also removes cached search picks alongside book cover images.
1.2.1 – April 21, 2026
Changed
- App Icon Picker – Locked supporter icons are now tappable — tapping any icon (or the lock hint) opens the Support Kiveo sheet, so the donation flow is reachable without backing out to Settings.
Fixed
- Paused Session Timer – Paused session timer no longer advances while the app is backgrounded and reopened; the “Session resumed” activity log entry is now correctly stamped at the pause point.
- Library Search – Library search now matches book authors and aliases in addition to titles, in both the main library and individual shelves.
- Sheet Tint – Fixed sheets (most visibly Support Kiveo) intermittently rendering interactive elements and loaders in system blue instead of the app’s accent color.
1.2.0 – Primrose 🌼 – April 04, 2026
Added
- Goodreads Import: Custom Books – Books not found via API can now be imported as custom books using CSV metadata (title, author, publisher, pages). Not-found books default to skipped; users opt in per book or in bulk via “Add all as custom”
- Goodreads Import: Flexible CSV Parsing – Column indices are now resolved dynamically from the header row, fixing imports that fail when Goodreads exports omit columns (e.g. Average Rating)
- Support Kiveo (Tip Jar) – Voluntary one-time tip system to support indie development
- Three bookish tip tiers: Bookmark ($1.99), Book ($4.99), Shelf ($9.99) via RevenueCat
- Any tip permanently unlocks 6 exclusive app icons
- Supporter status persisted across UserDefaults, iCloud KVS, and RevenueCat
- Restore Purchases support for cross-device icon unlock
- App Icon Picker – Choose from 6 exclusive alternate app icons (unlocked via tip)
- Reading Reminders – Opt-in push notifications to gently invite users back to reading
- Daily Reading Time — scheduled daily notification at a user-chosen time
- Inactivity Nudge — notification after a user-defined number of days without a session (2/3/5/7 days)
- Pause Reminders — temporarily silence all reminders until a chosen date
- Book-aware notifications reference the current reading book by name
- Notification tap deep-links to current reading book
- iCloud-synced settings
- Paused Status – New book status between Reading and DNF for books set aside temporarily, with optional reason note, excluded from Continue Reading and time-to-finish stats, and one-tap Resume Reading from Book Detail
- Session Blocking – Prevents changing status to Paused or DNF while a live reading session is active
- DNF Reason Notes – Optional free-text note (~280 chars) when marking a book as Did Not Finish, editable from Book Detail
- DNF Stats Section – Dedicated stats on Home screen showing books DNF’d, pages read before DNF, and common stopping point
- Nightstand Reading Queue – Curated queue of up to 7 wishlist books to read next, with drag-to-reorder, swipe-to-remove, and optional notes per book
- Nightstand Home Widget – Compact card on the Home screen showing nightstand book covers with contextual title
- Live Session: Quote & Reflect Cards – Capture quotes and reflections directly from within a live reading session
- Activity Log Badges – Visual capture badges and polished activity log for reflections
- Swap Edition & Swap Cover – Change a book’s edition or cover image without losing reading data
- Automatic Review Prompts – Prompts users to rate Kiveo at natural usage milestones
- Backup: Cover Override Fields – Cover override data included in Kiveo backup export/import
- Book Cover Press Animation – Subtle scale + shadow lift when pressing book covers in the library
- Book Completion Celebration – Accent glow animation when marking a book as done, with haptic feedback
- Skeleton Loaders – Breathing pulse placeholders replace spinners during cover image loading
- Progress Bar Animation – Smooth spring animation when reading progress changes
Changed
- Settings Screen Revamp – Redesigned from generic Form to branded ScrollView layout with warm gradient background, grain texture, glass effects (iOS 26+), and card-based sections
- Search Screen Redesign – Transformed blank search screen into a discovery-rich experience
- “From Our Garden” — Curated book picks from the Kiveo picks API with localization support
- “Recently Added” — Horizontal scroll of the user’s most recently added library books
- Recent search pills — Horizontal pill-based recent searches replacing the old list view
- Inline barcode scan button pinned to the bottom of the pre-search state
- Advanced search filter popover with active-filter badge
- iOS 26 search tab — Search as a dedicated trailing tab bar item on iOS 26+
- Onboarding Revamp – Redesigned 6-screen onboarding flow with warm brand copy, custom typography, adaptive color palette with dark mode support
- What’s New Sheet – Revamped with onboarding-style animations and improved version matching
- Book Detail Tabs – Renamed tabs to “The Book”, “Journey”, and “Keepsakes” with pill/capsule active indicator and glass effect on iOS 26+
- Journey & Keepsakes Empty States – Illustration-based empty states with garden/magic book themes and CTAs
- Book Alias in Sessions – Aliases now shown in live session logs, Live Activity, and draft saves
- Continue Reading – Section hidden when all books are paused
- Custom Book Creation (iOS 26+) – Library toolbar add button goes directly to custom book creation
- Snackbar Styling – Rounded rectangle shape with warm shadow and regular material background
- Microcopy – Warmer, more human empty state messages and confirmation text
- Image Loading – Existing cover images stay visible during metadata refresh (no flash)
- Color Gradient – Book detail header gradient crossfades smoothly on palette changes
- Localization – Converted all hardcoded English strings to semantic localization keys; added es-419 locale
Fixed
- Goodreads Import – Fixed import failing when CSV export omits columns (e.g. Average Rating)
- Live Session Stability – Fixed sessions resetting timer, losing state, and flickering when returning from background, pulling down notifications, or capturing quotes
- Nightstand Background – Fixed background color to match app theme
- Nightstand Persistence – Fixed books staying on Nightstand after progress-based status changes
- Share Card Aspect Ratio – Fixed post aspect ratio to match Instagram specs (4:5)
- Share Card Preview – Fixed preview not matching rendered output; quote text now scales for long quotes
- Book Detail Sheet – Fixed sheet dismissing and reopening when adding book to library
- Skeleton Animation Leak – Scoped pulse animation to prevent SwiftUI transaction leak
- Live Activity Covers – Fixed book covers not showing in Live Activities on Beta builds
- Notification Deep Link – Fixed notification opening wrong book; hidden tabs for non-library books
- Search Filter Pills – Fixed clipping on narrow screens and long translations
- Home Layout (iOS 26) – Fixed layout oscillation by scoping toolbar animation
- Paused/DNF Filtering – Fixed hide paused/DNF toggle and book picker custom covers
- Reflections Stats – Fixed missing counter in “this week” stats on quotes/reflections screens
- Reflections Screen – Fixed duplicate numbers in stats and capitalized section titles
- Custom Book Covers – Fixed CloudKit sync for custom book cover images; covers now display correctly in Live Activity widgets
1.1.0 – January 19, 2026
Added
- Share Cards – Create beautiful shareable images of your reading content
- Share quotes as styled cards with book attribution
- Share book progress cards (currently reading or finished)
- Share book lists from shelves as cover grids
- Multiple themes: Default, Dusk, Ocean, Forest, Warm, Midnight
- Two aspect ratios: Story (9:16) and Post (3:4)
- Quote cards: Toggle card wrapper on/off
- Book cards: Toggle “Finished” view for completed books
- Book list cards: Edit title and badge text
- Entry points: Quote Detail, Book Detail, Shelf Detail
- TelemetryDeck analytics tracking for feature usage
- Custom Books – Create books manually when not found via search
- Add custom book via Library toolbar menu (long press on “+” button)
- Create custom book from search no-results screen
- Custom book indicator badge on book covers (pencil icon, top-left)
- Edit custom book details via Book Detail toolbar menu
- Photo library cover image selection for custom books
- All app features supported: sessions, quotes, reflections, shelves
- Custom covers saved locally with JPEG compression
- Home View Summary Improvements – Enhanced Your Summary section on Home screen
- Renamed “Reading Stats” to “Your Summary”
- Year filter to view stats by year (Lifetime, 2025, 2024, etc.)
- Books Completed horizontal scroll showing finished book covers
- Filter persists across app launches
- Reusable ChipPicker component for menu-style selections
- Manual Session Log Redesign – Improved UX for backfilling reading sessions
- Book covers now display in session book rows
- Enhanced date picker with calendar icon and formatted weekday/date display
- Delta-based progress input: “Pages read” instead of “Current page” for easier backfilling
- Percentage mode support: Shows “Progress: X%” for audiobooks and percentage-tracked books
- Progress is now optional – log duration-only sessions without requiring page/percentage input
- Pre-selection when opening from Book Detail toolbar (Log Session button)
- Dedicated book picker sheet replaces inline search
- Kiveo Backup Import/Export – Full data backup and restore functionality
- Export all library data to JSON backup file (books, shelves, sessions, quotes, reflections)
- Import from backup with merge mode (keeps existing, adds new) or replace mode (clean import)
- Preview backup contents before importing with data count summary
- Duplicate detection by ISBN during merge import
- Progress indicator during import with phase descriptions
- Located in Settings under new “Import & Export” section
- Goodreads import moved to Import & Export section
- Book Sharing with Deep Links – Share books with other Kiveo users via shareable links
- Share button in Book Detail toolbar generates link to
share.kiveo.app
- Deep link support opens shared books directly in the app
- In-App Safari WebView – HTTP/HTTPS links now open within the app
- Avoids context-switching to external Safari app
- Multiple Currently Reading Cards – Home screen now displays all books you’re currently reading
- Horizontally scrollable carousel when multiple books are in progress
- Each card shows book cover, title, and reading progress
- Continue Reading Glass Effect (iOS 26) – Glass effect applied to Continue Reading cards on Home screen
- Book Data Auto-Refresh – Automatically fetches updated book metadata from API
- Updates cover images, descriptions, and other details when available
- Custom Status Picker – New pill-style status filter replacing segmented controls
- Swipe gestures: pull past trailing edge to jump to “All”, pull past leading edge to return to previous selection
- Smooth spring animations with haptic feedback
- Applied across Library, Shelf Detail, Book Picker, and Add Books to Shelf views
- Persisted Library Filter – Selected status filter now persists between app launches
- Hide DNF Books – New toggle in Library toolbar menu to hide the DNF status option
- Setting applies globally to all status pickers throughout the app
- Automatically switches to “All” if DNF was selected when hidden
- Book Aliases – Set custom display names for books with long or unwanted titles
- Set alias via toolbar menu in Book Detail view
- Clear alias option (visible only when alias is set)
- Pencil icon indicator shows throughout the app when a book has an alias
- Alias displayed in: Book Detail, Library items, Continue Reading widget, Live Sessions, Quotes, Book pickers, and Shelf management
- Haptic Feedback – Tactile feedback throughout the app for better UX
- Light impact for toggles, selections, and button taps
- Medium impact for pause/resume and drag reorder actions
- Success notifications for saves, completions, and imports
- Error notifications for deletions and failures
- Centralized
HapticManager utility for consistent usage
- Book Date Editor – Edit book dates (Added, Started, Finished) from Book Detail
- Tap dates section in book library actions to open editor sheet
- Edit dateAdded, dateStarted, and dateCompleted with compact date pickers
- Clear optional dates (started/finished) with clear button
- Status automatically syncs based on date changes (finished dates set status to Done, etc.)
- Displays finished date alongside existing added/started dates
- iOS 26 Liquid Glass Toolbar – Redesigned navigation to embrace iOS 26 Liquid Glass aesthetic
- Titles displayed in leading toolbar position with glass background visibility
- Tab bar minimizes on scroll down for more content space
- Toolbar titles and logo smoothly fade out on scroll
- Home screen toolbar includes Kiveo logo icon
- Glass prominent button style for toolbar actions
- Graceful fallback to standard large title navigation on iOS 18
Changed
- Improved Reading Stats Clarity – Added descriptive subtitles to stat cards on the home screen
- “Books Read” now shows “Completed” subtitle
- “Pages Read” now shows “From Sessions” subtitle
- “Current Streak” (renamed from “Day Streak”) now shows “Days” subtitle
- Consistent Save Confirmations – Unified save confirmation behavior for quotes and reflections
Fixed
- Manual Session Page Capping – Fixed logged pages exceeding book’s total page count
- When logging a manual session, pages are now correctly capped by the book’s remaining pages
- Example: If a 300-page book has 280 pages read, logging 50 pages now correctly saves only 20 pages
- Preserve Book Completion Date – Fixed completion date being overwritten when logging additional sessions
- Books that already have a finished date no longer get their date overwritten
- Preserves original completion date even when logging sessions that exceed total pages
- Live Activity Cleanup – Fixed Live Activity getting stuck on lock screen after session ends or app crash
- Added app startup cleanup to end orphaned Live Activities
- Live Activity now shows paused state when recovering from interrupted session
- Properly ends all activities when user discards recovered session
- Session Recovery Timestamps – Fixed incorrect log timestamps in recovered sessions
- Recovered sessions now preserve original start time for accurate log timestamps
- Fixes issue where session logs showed wrong times after recovery (e.g., 3-minute session despite longer actual reading)
- Continue Reading Card Width (iPhone) – Fixed single book card not expanding to full width on iPhone
- Book Stats Display – Fixed inflated session count and reading time across the app
- Home page “Currently Reading” widget now only counts completed sessions
- Book detail Stats tab now filters orphan ReadSessionBook entries
- Fixed orphan ReadSessionBook creation during quote capture that caused stats bloat
- Cached ReadSessionBook for quote linking to prevent multiple orphan entries
- Session Activity Log Order – Fixed session logs appearing in random order in session detail view
- Logs now sorted by timestamp (newest first) to match live session display
- Percentage Progress Display – Fixed incorrect percentage display in book items and progress indicators
- Quotes/Reflections Save – Fixed issue where quotes and reflections would fail to save in certain conditions
- Live Session Stability – Fixed potential hang/freeze issues during live reading sessions
- Continue Reading Image Caching – Fixed book cover images not caching properly in Continue Reading widget
- Settings Tint Color – Fixed incorrect tint color in Settings and About screens
- Library Layout Persistence – Fixed library layout preference not persisting between app launches
Performance
- Home Screen Optimization – Improved loading and rendering performance on Home screen
- Book Cover Color Palette Caching – Cached dominant colors from book covers for faster UI rendering
1.0.2 – December 21, 2025
Added
- Bulk Manage Shelf Books – Add or remove multiple books from a shelf at once
- New “+” button in shelf toolbar opens book picker (custom shelves only)
- Multi-select interface with checkboxes for quick selection
- Toggle books on/off – add new books or remove existing ones
- Filter tabs (All/Reading/Wishlist/Done) to narrow book list
- Sort options (Recent Activity/Title/Author/Date Added)
- Search by title or author
- Hide Empty Shelves – New toggle in Library toolbar menu to hide shelves with no books
- Available when “Group by shelves” is enabled
- Setting persists between app launches
- Empty Shelf Placeholder – Placeholder card displayed in empty shelves
- Shows “+” icon with “Add Books” label
- Tapping opens the bulk book picker for that shelf
- Shelf Management Quick Actions – Tap any shelf in Manage Shelves to add books
- Also available via “Manage Books” context menu option
1.0.1 – December 17, 2025
Added
- Rate Kiveo – New option in Settings to rate the app on the App Store
- Shelf Sort – Manually sort books within shelves
- Drag-and-drop reordering via Sort option in shelf menu
- New “Shelf Sort” option in Library grid view displays custom order
- Indicator icon shows which shelves have custom sorting
- New books added to shelves appear at the top
- Independent sort order per shelf (books in multiple shelves have separate positions)
- Library sort option now persists between app launches
- DataUpgrade protocol for standardized migrations
- What’s New Feature – Post-update sheet showcasing new features to users
- Horizontal carousel with paging for multiple feature announcements
- Only shows to existing users after app updates (not fresh installs)
- Cumulative display of all features since user’s last seen version
- Dismissable via close button or swipe gesture
- “Get Started” button on final slide
- Settings option to view What’s New anytime
- TelemetryDeck integration for analytics
- Unit tests for VersionComparator and WhatsNewRegistry
- Percentage Progress – Input reading progress as pages or percentage
- Segmented picker (Pages / %) in progress update prompts
- Per-book preference: remembers last used mode for each book
- Percentage option available even without total page count
- Switching modes clears input and persists preference
- Applies to Book Detail progress tap and Live Session prompts
Fixed
- Shelf filtering – Fixed issue where Leaf Pile showed empty when opened from Library
- ShelfDetailView now has independent filtering from LibraryView
- Leaf Pile correctly displays all unshelved books regardless of Library filter
1.0.0 – December 12, 2025