Changelog

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