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:
24
package.json
24
package.json
@@ -3,18 +3,18 @@
|
||||
"private": true,
|
||||
"packageManager": "pnpm@10.18.1",
|
||||
"scripts": {
|
||||
"swift:doctor": "tsswift doctor --path swiftapp/SocialIO.xcodeproj",
|
||||
"swift:emulators": "tsswift emulators --path swiftapp/SocialIO.xcodeproj",
|
||||
"swift:build": "tsswift build --path swiftapp/SocialIO.xcodeproj",
|
||||
"swift:build:macos": "tsswift build --path swiftapp/SocialIO.xcodeproj --platform macos",
|
||||
"swift:test": "tsswift test --path swiftapp/SocialIO.xcodeproj",
|
||||
"swift:run": "tsswift run --path swiftapp/SocialIO.xcodeproj",
|
||||
"swift:launch": "tsswift launch --path swiftapp/SocialIO.xcodeproj",
|
||||
"swift:command:inbox": "tsswift command --path swiftapp/SocialIO.xcodeproj --route socialio://mailbox/inbox",
|
||||
"swift:screenshots:ios": "tsswift screenshots --path swiftapp/SocialIO.xcodeproj --platform ios",
|
||||
"swift:screenshots:ipad": "tsswift screenshots --path swiftapp/SocialIO.xcodeproj --platform ipad",
|
||||
"swift:screenshots:macos": "tsswift screenshots --path swiftapp/SocialIO.xcodeproj --platform macos",
|
||||
"swift:review": "tsswift review --path swiftapp/SocialIO.xcodeproj"
|
||||
"swift:doctor": "tsswift doctor --path swift/SocialIO.xcodeproj",
|
||||
"swift:emulators": "tsswift emulators --path swift/SocialIO.xcodeproj",
|
||||
"swift:build": "tsswift build --path swift/SocialIO.xcodeproj",
|
||||
"swift:build:macos": "tsswift build --path swift/SocialIO.xcodeproj --platform macos",
|
||||
"swift:test": "tsswift test --path swift/SocialIO.xcodeproj",
|
||||
"swift:run": "tsswift run --path swift/SocialIO.xcodeproj",
|
||||
"swift:launch": "tsswift launch --path swift/SocialIO.xcodeproj",
|
||||
"swift:command:inbox": "tsswift command --path swift/SocialIO.xcodeproj --route socialio://mailbox/inbox",
|
||||
"swift:screenshots:ios": "tsswift screenshots --path swift/SocialIO.xcodeproj --platform ios",
|
||||
"swift:screenshots:ipad": "tsswift screenshots --path swift/SocialIO.xcodeproj --platform ipad",
|
||||
"swift:screenshots:macos": "tsswift screenshots --path swift/SocialIO.xcodeproj --platform macos",
|
||||
"swift:review": "tsswift review --path swift/SocialIO.xcodeproj"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@git.zone/tsswift": "0.3.0"
|
||||
|
||||
14
readme.md
14
readme.md
@@ -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.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user