Add MailRootView and related components for mail functionality

- Implement MailRootView with navigation and sidebar for mail management.
- Create MailSidebarView, ThreadListView, and ThreadDetailView for displaying mail content.
- Introduce ComposeView for composing new messages.
- Add MailTheme for consistent styling across mail components.
- Implement adaptive layouts for iOS and macOS.
- Create unit tests for AppNavigationCommand and AppViewModel to ensure correct functionality.
This commit is contained in:
2026-04-19 01:00:32 +02:00
parent 6b665c666f
commit ad059e9b8d
15 changed files with 19 additions and 19 deletions

View File

@@ -14,7 +14,7 @@ Multiplatform SwiftUI mail client scaffold for macOS, iPadOS, and iOS.
## Open the project
1. Install/select full Xcode on this Mac.
2. Open `swiftapp/SocialIO.xcodeproj`.
2. Open `swift/SocialIO.xcodeproj`.
3. Build the `SocialIO` scheme for:
- `My Mac`
- an iPad simulator
@@ -35,7 +35,7 @@ corepack pnpm swift:launch
corepack pnpm swift:review
```
This repo now uses `@git.zone/tsswift` with project config in `swiftapp/.smartconfig.json`.
This repo now uses `@git.zone/tsswift` with project config in `swift/.smartconfig.json`.
- `build` targets macOS, iPhone Simulator, and iPad Simulator in parallel
- `test` targets macOS, which matches the current test bundle setup
@@ -46,9 +46,9 @@ This repo now uses `@git.zone/tsswift` with project config in `swiftapp/.smartco
Useful direct commands:
```bash
corepack pnpm exec tsswift prefer-emulator --path swiftapp/SocialIO.xcodeproj --platform ios --udid <iphone-simulator-udid>
corepack pnpm exec tsswift prefer-emulator --path swiftapp/SocialIO.xcodeproj --platform ipad --udid <ipad-simulator-udid>
corepack pnpm exec tsswift command --path swiftapp/SocialIO.xcodeproj --route 'socialio://open?thread=launch-copy&message=launch-copy-2'
corepack pnpm exec tsswift prefer-emulator --path swift/SocialIO.xcodeproj --platform ios --udid <iphone-simulator-udid>
corepack pnpm exec tsswift prefer-emulator --path swift/SocialIO.xcodeproj --platform ipad --udid <ipad-simulator-udid>
corepack pnpm exec tsswift command --path swift/SocialIO.xcodeproj --route 'socialio://open?thread=launch-copy&message=launch-copy-2'
```
## App control contract
@@ -105,7 +105,7 @@ corepack pnpm swift:screenshots:ipad
corepack pnpm swift:screenshots:macos
```
The route list now lives in `swiftapp/Automation/ui-screenshot-routes.txt`.
The route list now lives in `swift/Automation/ui-screenshot-routes.txt`.
## Standard UI review loop
@@ -122,7 +122,7 @@ That flow now:
- builds and captures a macOS review pass
- saves the review set to `/tmp/socialio-ui-review/ios`, `/tmp/socialio-ui-review/ipad`, and `/tmp/socialio-ui-review/macos`
Simulator selection is now handled through `tsswift emulators` and `tsswift prefer-emulator`, and the chosen devices are written into `swiftapp/.smartconfig.json`.
Simulator selection is now handled through `tsswift emulators` and `tsswift prefer-emulator`, and the chosen devices are written into `swift/.smartconfig.json`.
The macOS capture path still needs Accessibility and Screen Recording permission for the terminal app that runs the command, because `tsswift` positions the app window before each screenshot.