Add chapters, history, bookmarks, live download progress, and i18n

- Chapter navigation with auto-scroll to current chapter and end-of-chapter sleep timer
- Opt-in listening history (local-only) with XML export and per-item quick menu
- Bookmarks with server sync via Audiobookshelf API
- Live MB counter during downloads via URLSessionDownloadTask delegate
- In-progress downloads shown in "Heruntergeladen" with dimmed cover + ring overlay
- Cover image cache (50 MB memory / 500 MB disk URLCache)
- German/English localization (de.lproj, en.lproj)
- Loading spinner now triggers immediately on view switch instead of waiting for the network

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Scarriffle
2026-05-25 18:40:52 +02:00
parent 15d8e71d09
commit fa47cae664
21 changed files with 1751 additions and 119 deletions

View File

@@ -1,5 +1,12 @@
import Foundation
struct Chapter: Codable, Identifiable, Hashable {
let id: Int
let start: Double
let end: Double
let title: String
}
struct Library: Codable, Identifiable, Hashable {
let id: String
let name: String
@@ -15,6 +22,7 @@ struct LibraryItem: Codable, Identifiable, Hashable {
var mediaType: String = "book"
var episodeId: String? = nil
var description: String? = nil
var chapters: [Chapter] = []
var isPodcast: Bool { mediaType == "podcast" }
var isPodcastContainer: Bool { isPodcast && episodeId == nil }