Implement comprehensive release notes feature: - RELEASE_NOTES.md with version 1.0 and 1.1 content in English - VersionManager to track app versions and detect updates - ReleaseNotesView with native markdown rendering - Auto-popup sheet on first launch after version update - Manual access via "What's New" button in General Settings Features: - Markdown-based release notes stored in app bundle - Automatic version detection using CFBundleShortVersionString - UserDefaults tracking of last seen version - Dismissable sheet with "Done" button - Settings button shows current version number Technical implementation: - VersionManager singleton for version tracking - Sheet presentation in MainTabView on new version - Settings integration with sparkles icon - Native SwiftUI Text markdown rendering - Bundle resource loading for RELEASE_NOTES.md Release notes content: - Version 1.1: iOS 26 features, floating buttons, progress tracking - Version 1.0: Initial release features and capabilities
46 lines
1.1 KiB
Swift
46 lines
1.1 KiB
Swift
import SwiftUI
|
|
import Foundation
|
|
|
|
struct MainTabView: View {
|
|
@State private var selectedTab: SidebarTab = .unread
|
|
@State var selectedBookmark: Bookmark?
|
|
@StateObject private var playerUIState = PlayerUIState()
|
|
@State private var showReleaseNotes = false
|
|
|
|
// sizeClass
|
|
@Environment(\.horizontalSizeClass)
|
|
var horizontalSizeClass
|
|
|
|
@Environment(\.verticalSizeClass)
|
|
var verticalSizeClass
|
|
|
|
var body: some View {
|
|
Group {
|
|
if UIDevice.isPhone {
|
|
PhoneTabView()
|
|
.environmentObject(playerUIState)
|
|
} else {
|
|
PadSidebarView()
|
|
.environmentObject(playerUIState)
|
|
}
|
|
}
|
|
.sheet(isPresented: $showReleaseNotes) {
|
|
ReleaseNotesView()
|
|
}
|
|
.onAppear {
|
|
checkForNewVersion()
|
|
}
|
|
}
|
|
|
|
private func checkForNewVersion() {
|
|
if VersionManager.shared.isNewVersion {
|
|
showReleaseNotes = true
|
|
VersionManager.shared.markVersionAsSeen()
|
|
}
|
|
}
|
|
}
|
|
|
|
#Preview {
|
|
MainTabView()
|
|
}
|