feat: Sync tab, hamburger menu, network status, browse UX
- Replace History tab with Sync tab (file list, NAS status, free-up-space retention) - Add AppMenuView hamburger sheet (History, Errors, Connection Status, Sync Activity) - BackupView: Kisani logo chip in toolbar, hamburger menu button, swipeable ring pages (progress/pending/failed/uploaded), always-visible compact stats strip - SettingsView: NETWORK section (SSID, NAS reachability, trusted-network warning, refresh button) - BrowseView: pull-to-refresh, long-press context menu on items - LANMonitor: nasReachable, nasCheckTime, checkNASReachability(host:port:) - ConnectionStore: localRetentionDays (0/60/90/365 days) - Regenerate xcodeproj with xcodegen to include new files Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -27,8 +27,8 @@ struct iPhoneTabLayout: View {
|
||||
NavigationStack { BackupView() }
|
||||
.tabItem { Label("Backup", systemImage: "arrow.up.doc.fill") }
|
||||
|
||||
NavigationStack { HistoryView() }
|
||||
.tabItem { Label("History", systemImage: "clock.arrow.circlepath") }
|
||||
NavigationStack { SyncView() }
|
||||
.tabItem { Label("Sync", systemImage: "arrow.triangle.2.circlepath") }
|
||||
|
||||
NavigationStack {
|
||||
if let conn = ConnectionStore.shared.savedConnection {
|
||||
@@ -51,15 +51,15 @@ struct iPadSidebarLayout: View {
|
||||
NavigationSplitView {
|
||||
List(selection: $selection) {
|
||||
Label("Backup", systemImage: "arrow.up.doc.fill").tag("backup")
|
||||
Label("History", systemImage: "clock.arrow.circlepath").tag("history")
|
||||
Label("Sync", systemImage: "arrow.triangle.2.circlepath").tag("sync")
|
||||
Label("Browse", systemImage: "folder.fill").tag("browse")
|
||||
Label("Settings", systemImage: "gearshape.fill").tag("settings")
|
||||
}
|
||||
.navigationTitle("NASBackup")
|
||||
.navigationTitle("Kisani")
|
||||
} detail: {
|
||||
switch selection {
|
||||
case "backup": BackupView()
|
||||
case "history": HistoryView()
|
||||
case "sync": SyncView()
|
||||
case "browse":
|
||||
if let conn = ConnectionStore.shared.savedConnection {
|
||||
BrowseView(connection: conn, selectedPath: .constant("/"))
|
||||
|
||||
Reference in New Issue
Block a user