Files
libnovel/ios/LibNovelV2/features.md
Admin 7413313100
All checks were successful
CI / Scraper / Lint (push) Successful in 10s
CI / Scraper / Test (push) Successful in 14s
Release / Scraper / Test (push) Successful in 18s
CI / Scraper / Lint (pull_request) Successful in 18s
Release / UI / Build (push) Successful in 23s
CI / Scraper / Test (pull_request) Successful in 15s
CI / UI / Build (pull_request) Successful in 32s
Release / Scraper / Docker (push) Successful in 55s
CI / Scraper / Docker Push (pull_request) Has been skipped
CI / UI / Docker Push (pull_request) Has been skipped
CI / Scraper / Docker Push (push) Successful in 1m5s
Release / UI / Docker (push) Successful in 1m12s
iOS CI / Build (push) Successful in 4m18s
iOS CI / Build (pull_request) Successful in 4m25s
iOS CI / Test (push) Successful in 8m11s
iOS CI / Test (pull_request) Successful in 8m21s
fix: update integration_test.go to match server.New signature (version, commit args)
2026-03-14 14:25:46 +05:00

2.7 KiB

LibNovel v2 iOS — Feature Tracker

Design reference: ui/src/routes/ (SvelteKit web UI) All new code lives in ios/LibNovelV2/.


Status legend

  • Done
  • 🔨 In progress
  • Not started

Features

# Feature Files Status
1 Directory scaffold ios/LibNovelV2/ tree
2 Models Models/Models.swift
3 Networking Networking/APIClient.swift
4 Services AuthStore, AudioPlayerService, AudioDownloadService, NetworkMonitor, BookVoicePreferences
4b App entry + RootTabView + stub views App/LibNovelV2App.swift, App/ContentView.swift, App/RootTabView.swift, Extensions/NavDestination.swift
5 Auth / Login Views/Auth/AuthView.swift
6 Home screen Views/Home/HomeView.swift, ViewModels/HomeViewModel.swift, Views/Common/CommonViews.swift
7 Library screen Views/Library/LibraryView.swift, ViewModels/LibraryViewModel.swift
8 Browse / Discover Views/Browse/BrowseView.swift, Views/Browse/BrowseCategoryView.swift, ViewModels/BrowseViewModel.swift
9 Search Views/Search/SearchView.swift, ViewModels/SearchViewModel.swift
10 Book Detail Views/BookDetail/BookDetailView.swift, ViewModels/BookDetailViewModel.swift
11 Chapter Reader Views/ChapterReader/ChapterReaderView.swift, ViewModels/ChapterReaderViewModel.swift
12 Audio mini-player + full player Views/Player/PlayerViews.swift
13 Downloads screen Views/Downloads/DownloadsView.swift
14 Profile / Account Views/Profile/ProfileView.swift, Views/Profile/VoiceSelectionView.swift

Design system recap

Token Value
Main bg zinc-900 #18181b
Card bg zinc-800 #27272a
Border zinc-700 #3f3f46
Primary text zinc-100 #f4f4f5
Secondary text zinc-400 #a1a1aa
Accent / CTA amber-400 #f59e0b

Key patterns (quick ref)

  • Cover images: always proxy via /api/cover/{domain}/{slug}
  • Download keys: slug::chapterN::voice (:: separator — slugs contain -)
  • Voice fallback: book override → global default → "af_bella"
  • Offline: NetworkMonitor env object + OfflineBanner at top of every networked view
  • Observable: new types use @Observable; existing services use ObservableObject
  • Navigation: NavigationStack + NavDestination enum + .appNavigationDestination()
  • Haptics: .light for selection, .medium for primary actions
  • Animations: .spring(response:dampingFraction:) for all interactive transitions