From ec46f57d229ae430e2570e40cd0bc3c140daad7e Mon Sep 17 00:00:00 2001 From: Matthew Meszaros Date: Sun, 11 Oct 2026 19:00:50 +0200 Subject: [PATCH] feat: redesign the iOS app (inbox with inbox agent drafted replies edited in the full composer, Remie, home, analytics, CRM, contacts, settings hubs, mailbox connect flow covering every dashboard source) and replace Turnstile in the app with Apple App Attest (attested keys in app_attest_keys, challenge and key endpoints, verifyHuman gate on login, registration and password reset, auth config flag, docs and OpenAPI) --- AGENTS.md | 3 +- cmd/backend/main.go | 9 + docs/content/docs/api/endpoints.mdx | 3 + docs/content/docs/api/error-codes.mdx | 22 + .../docs/api/reference/account-org.mdx | 58 +- docs/content/docs/api/reference/contacts.mdx | 14 + .../docs/development/configuration.mdx | 5 + .../content/docs/development/data-control.mdx | 4 + docs/public/openapi.json | 167 +- go.mod | 2 +- internal/api/handler/auth_app_attest.go | 49 + internal/api/handler/auth_config.go | 5 + internal/api/handler/handler.go | 3 + internal/api/middleware/ratelimit_ip.go | 13 + internal/api/routes.go | 9 + internal/app/appattest/service.go | 204 ++ internal/app/appattest/service_test.go | 22 + internal/app/auth/login.go | 3 +- internal/app/auth/model.go | 19 +- internal/app/auth/registration.go | 3 +- internal/app/auth/reset_password.go | 5 +- internal/app/auth/service.go | 23 +- internal/app/auth/verify_human_test.go | 25 + internal/config/config_auth.go | 18 +- internal/errx/common.go | 3 + .../000290_app_attest_keys.down.sql | 1 + .../migrations/000290_app_attest_keys.up.sql | 13 + internal/models/contact.go | 21 + internal/pkg/appattest/appattest.go | 330 ++ internal/pkg/appattest/appattest_test.go | 147 + .../apple_app_attestation_root_ca.pem | 14 + .../appattest/testdata/device_vectors.json | 10 + internal/pkg/captcha/turnstile.go | 3 + internal/repository/pg_app_attest.go | 83 + internal/repository/pg_contact.go | 32 +- ios/DEVELOPMENT.md | 50 +- ios/README.md | 13 +- .../AccentColor.colorset/Contents.json | 48 +- .../Cloud1.imageset/cloud-1.png | Bin 517807 -> 0 bytes .../Cloud3.imageset/Contents.json | 12 - .../Cloud3.imageset/cloud-3.png | Bin 351670 -> 0 bytes .../Cloud4.imageset/Contents.json | 12 - .../Cloud4.imageset/cloud-4.png | Bin 247404 -> 0 bytes .../Host-aol.imageset/Contents.json | 12 + .../Assets.xcassets/Host-aol.imageset/aol.png | Bin 0 -> 3013 bytes .../Host-fastmail.imageset/Contents.json | 12 + .../Host-fastmail.imageset/fastmail.png | Bin 0 -> 1654 bytes .../Host-gmx.imageset/Contents.json | 12 + .../Assets.xcassets/Host-gmx.imageset/gmx.png | Bin 0 -> 1285 bytes .../Host-godaddy.imageset/Contents.json | 12 + .../Host-godaddy.imageset/godaddy.png | Bin 0 -> 1965 bytes .../Host-hostinger.imageset/Contents.json | 12 + .../Host-hostinger.imageset/hostinger.png | Bin 0 -> 1317 bytes .../Host-icloud.imageset/Contents.json | 12 + .../Host-icloud.imageset/icloud.png | Bin 0 -> 2429 bytes .../Host-ionos.imageset/Contents.json | 15 + .../Host-ionos.imageset/ionos.svg | 1 + .../Host-migadu.imageset/Contents.json | 12 + .../Host-migadu.imageset/migadu.png | Bin 0 -> 13777 bytes .../Host-namecheap.imageset/Contents.json | 12 + .../Host-namecheap.imageset/namecheap.png | Bin 0 -> 1496 bytes .../Host-ovh.imageset/Contents.json | 15 + .../Assets.xcassets/Host-ovh.imageset/ovh.svg | 12 + .../Host-proton.imageset/Contents.json | 12 + .../Host-proton.imageset/proton.png | Bin 0 -> 1319 bytes .../Host-purelymail.imageset/Contents.json | 12 + .../Host-purelymail.imageset/purelymail.png | Bin 0 -> 2279 bytes .../Host-rackspace.imageset/Contents.json | 12 + .../Host-rackspace.imageset/rackspace.png | Bin 0 -> 7248 bytes .../Host-yahoo.imageset/Contents.json | 12 + .../Host-yahoo.imageset/yahoo.png | Bin 0 -> 7728 bytes .../Host-yandex.imageset/Contents.json | 12 + .../Host-yandex.imageset/yandex.png | Bin 0 -> 833 bytes .../Host-zoho.imageset/Contents.json | 12 + .../Host-zoho.imageset/zoho.png | Bin 0 -> 2984 bytes .../LaunchBackground.colorset/Contents.json | 24 +- .../Contents.json | 2 +- .../SheerSky.imageset/sheer-sky.jpg | Bin 0 -> 309268 bytes .../Contents.json | 12 + .../cheapinboxes.png | Bin 0 -> 34112 bytes .../Vendor-inboxkit.imageset/Contents.json | 12 + .../Vendor-inboxkit.imageset/inboxkit.png | Bin 0 -> 4468 bytes .../Vendor-infraforge.imageset/Contents.json | 12 + .../Vendor-infraforge.imageset/infraforge.png | Bin 0 -> 11428 bytes .../Vendor-maildoso.imageset/Contents.json | 12 + .../Vendor-maildoso.imageset/maildoso.png | Bin 0 -> 29232 bytes .../Vendor-mailforge.imageset/Contents.json | 12 + .../Vendor-mailforge.imageset/mailforge.png | Bin 0 -> 11676 bytes .../Vendor-scaledmail.imageset/Contents.json | 12 + .../Vendor-scaledmail.imageset/scaledmail.png | Bin 0 -> 6893 bytes .../Vendor-zapmail.imageset/Contents.json | 12 + .../Vendor-zapmail.imageset/zapmail.png | Bin 0 -> 4777 bytes ios/Warmbly/Core/AppConfig.swift | 32 +- ios/Warmbly/Core/Models/CoreModels.swift | 2 + ios/Warmbly/Core/Networking/APIClient.swift | 41 + ios/Warmbly/Core/Push/PushManager.swift | 4 + .../Core/Realtime/RealtimeService.swift | 1 + .../Core/Security/AppAttestClient.swift | 109 + ios/Warmbly/Core/Session/SessionStore.swift | 134 +- ios/Warmbly/DesignSystem/Air.swift | 329 +- ios/Warmbly/DesignSystem/Appearance.swift | 34 + ios/Warmbly/DesignSystem/Components.swift | 127 +- .../DesignSystem/DrawerWorkspaceHeader.swift | 59 + ios/Warmbly/DesignSystem/GlassHeaderBar.swift | 190 + ios/Warmbly/DesignSystem/MailboxAvatar.swift | 128 + ios/Warmbly/DesignSystem/TabBar.swift | 222 ++ ios/Warmbly/DesignSystem/Theme.swift | 107 +- ios/Warmbly/DesignSystem/TrendChart.swift | 259 ++ .../AnalyticsAccountDetailView.swift | 446 ++- .../Features/Analytics/AnalyticsModels.swift | 60 + .../Analytics/AnalyticsRootView.swift | 880 +++-- .../Analytics/AnalyticsSectionViews.swift | 1112 ++++-- .../Features/Analytics/AnalyticsSidebar.swift | 92 +- .../Features/Analytics/AnalyticsStore.swift | 49 +- .../Features/Analytics/AuditLogView.swift | 630 +++- .../Features/Assistant/AssistantStore.swift | 63 + .../Features/Assistant/AssistantView.swift | 826 +++-- .../Features/Assistant/RemieMark.swift | 362 ++ .../Features/Assistant/RemieTranscript.swift | 683 ++++ ios/Warmbly/Features/Auth/AuthFlowView.swift | 677 +--- ios/Warmbly/Features/Auth/FlowChrome.swift | 165 + .../Features/Auth/OnboardingFlowView.swift | 181 +- ios/Warmbly/Features/Auth/OrgPickerView.swift | 16 +- .../Features/Auth/ServerConfigSheet.swift | 491 +++ ios/Warmbly/Features/Auth/SocialSignIn.swift | 14 +- .../Features/Auth/WorkspaceCreateFlow.swift | 183 +- ios/Warmbly/Features/CRM/CRMComponents.swift | 325 +- ios/Warmbly/Features/CRM/CRMDealsView.swift | 319 +- .../Features/CRM/CRMMeetingsView.swift | 491 ++- ios/Warmbly/Features/CRM/CRMStore.swift | 27 +- ios/Warmbly/Features/CRM/CRMTasksView.swift | 363 +- .../Features/CRM/TemplatesListView.swift | 486 ++- .../Campaigns/CampaignDetailPages.swift | 520 ++- .../Campaigns/CampaignDetailView.swift | 318 +- .../Campaigns/CampaignLeadsPage.swift | 83 +- .../Campaigns/CampaignLeadsSidebar.swift | 85 +- .../Features/Campaigns/CampaignModels.swift | 34 +- .../Features/Campaigns/CampaignProgress.swift | 192 + .../Campaigns/CampaignsRootView.swift | 338 +- .../Features/Campaigns/CampaignsSidebar.swift | 409 ++- .../Features/Campaigns/CampaignsStore.swift | 47 + .../Features/Compose/ComposeDraftsView.swift | 26 +- .../Compose/ComposeScheduleSheet.swift | 46 +- .../Features/Compose/ComposeView.swift | 4 +- .../Features/Compose/UndoSendBanner.swift | 39 +- .../Contacts/ContactBulkActionsView.swift | 76 +- .../Contacts/ContactDetailStore.swift | 7 +- .../Features/Contacts/ContactDetailView.swift | 223 +- .../Features/Contacts/ContactEditView.swift | 53 +- .../Contacts/ContactFiltersSheet.swift | 100 +- .../Features/Contacts/ContactJourney.swift | 120 + .../Features/Contacts/ContactRow.swift | 219 ++ .../Contacts/ContactSectionViews.swift | 183 +- .../Features/Contacts/ContactsModels.swift | 95 +- .../Features/Contacts/ContactsRootView.swift | 396 +-- .../Features/Contacts/ContactsSidebar.swift | 100 +- .../Features/Contacts/ContactsStore.swift | 26 +- ios/Warmbly/Features/Home/HomeSections.swift | 144 + ios/Warmbly/Features/Home/HomeStore.swift | 224 ++ ios/Warmbly/Features/Home/HomeView.swift | 1138 ++++-- .../Mailboxes/MailboxConnectFlow.swift | 3166 +++++++++++++---- .../Mailboxes/MailboxDetailView.swift | 412 ++- .../Features/Mailboxes/MailboxModels.swift | 35 +- .../Mailboxes/MailboxSourceModels.swift | 296 ++ .../Mailboxes/MailboxTagPickerSheet.swift | 49 +- .../Mailboxes/MailboxesRootView.swift | 445 ++- .../Features/Mailboxes/MailboxesSidebar.swift | 89 +- ios/Warmbly/Features/More/BillingView.swift | 907 ++++- ios/Warmbly/Features/More/MoreModels.swift | 171 +- ios/Warmbly/Features/More/MoreRootView.swift | 498 +-- ios/Warmbly/Features/More/MoreShared.swift | 157 +- .../Features/More/NotificationsView.swift | 461 ++- .../Features/More/ProfileSettingsView.swift | 434 ++- .../Features/More/SecurityInfoView.swift | 153 +- .../Features/More/SettingsCoverKit.swift | 448 +++ ios/Warmbly/Features/More/SettingsHubs.swift | 409 +++ ios/Warmbly/Features/More/SettingsKit.swift | 597 ++++ .../Features/More/TeamMembersView.swift | 428 ++- .../Features/Unibox/UniboxAgentDraft.swift | 183 + .../Features/Unibox/UniboxComposer.swift | 582 +-- .../Features/Unibox/UniboxLabelPicker.swift | 129 +- .../Features/Unibox/UniboxModels.swift | 56 +- ios/Warmbly/Features/Unibox/UniboxRail.swift | 353 ++ .../Features/Unibox/UniboxRailEditor.swift | 239 ++ .../Features/Unibox/UniboxRootView.swift | 302 +- .../Features/Unibox/UniboxScheduledView.swift | 38 +- .../Features/Unibox/UniboxSidebar.swift | 826 ++++- ios/Warmbly/Features/Unibox/UniboxStore.swift | 124 +- .../Features/Unibox/UniboxThreadView.swift | 380 +- .../Features/Unibox/UniboxWebView.swift | 8 +- ios/Warmbly/MainTabView.swift | 94 +- ios/Warmbly/RootView.swift | 29 +- ios/Warmbly/Warmbly.entitlements | 2 + ios/Warmbly/WarmblyApp.swift | 4 +- 194 files changed, 21928 insertions(+), 8341 deletions(-) create mode 100644 internal/api/handler/auth_app_attest.go create mode 100644 internal/app/appattest/service.go create mode 100644 internal/app/appattest/service_test.go create mode 100644 internal/app/auth/verify_human_test.go create mode 100644 internal/infrastructure/db/migrations/000290_app_attest_keys.down.sql create mode 100644 internal/infrastructure/db/migrations/000290_app_attest_keys.up.sql create mode 100644 internal/pkg/appattest/appattest.go create mode 100644 internal/pkg/appattest/appattest_test.go create mode 100644 internal/pkg/appattest/apple_app_attestation_root_ca.pem create mode 100644 internal/pkg/appattest/testdata/device_vectors.json create mode 100644 internal/repository/pg_app_attest.go delete mode 100644 ios/Warmbly/Assets.xcassets/Cloud1.imageset/cloud-1.png delete mode 100644 ios/Warmbly/Assets.xcassets/Cloud3.imageset/Contents.json delete mode 100644 ios/Warmbly/Assets.xcassets/Cloud3.imageset/cloud-3.png delete mode 100644 ios/Warmbly/Assets.xcassets/Cloud4.imageset/Contents.json delete mode 100644 ios/Warmbly/Assets.xcassets/Cloud4.imageset/cloud-4.png create mode 100644 ios/Warmbly/Assets.xcassets/Host-aol.imageset/Contents.json create mode 100644 ios/Warmbly/Assets.xcassets/Host-aol.imageset/aol.png create mode 100644 ios/Warmbly/Assets.xcassets/Host-fastmail.imageset/Contents.json create mode 100644 ios/Warmbly/Assets.xcassets/Host-fastmail.imageset/fastmail.png create mode 100644 ios/Warmbly/Assets.xcassets/Host-gmx.imageset/Contents.json create mode 100644 ios/Warmbly/Assets.xcassets/Host-gmx.imageset/gmx.png create mode 100644 ios/Warmbly/Assets.xcassets/Host-godaddy.imageset/Contents.json create mode 100644 ios/Warmbly/Assets.xcassets/Host-godaddy.imageset/godaddy.png create mode 100644 ios/Warmbly/Assets.xcassets/Host-hostinger.imageset/Contents.json create mode 100644 ios/Warmbly/Assets.xcassets/Host-hostinger.imageset/hostinger.png create mode 100644 ios/Warmbly/Assets.xcassets/Host-icloud.imageset/Contents.json create mode 100644 ios/Warmbly/Assets.xcassets/Host-icloud.imageset/icloud.png create mode 100644 ios/Warmbly/Assets.xcassets/Host-ionos.imageset/Contents.json create mode 100644 ios/Warmbly/Assets.xcassets/Host-ionos.imageset/ionos.svg create mode 100644 ios/Warmbly/Assets.xcassets/Host-migadu.imageset/Contents.json create mode 100644 ios/Warmbly/Assets.xcassets/Host-migadu.imageset/migadu.png create mode 100644 ios/Warmbly/Assets.xcassets/Host-namecheap.imageset/Contents.json create mode 100644 ios/Warmbly/Assets.xcassets/Host-namecheap.imageset/namecheap.png create mode 100644 ios/Warmbly/Assets.xcassets/Host-ovh.imageset/Contents.json create mode 100644 ios/Warmbly/Assets.xcassets/Host-ovh.imageset/ovh.svg create mode 100644 ios/Warmbly/Assets.xcassets/Host-proton.imageset/Contents.json create mode 100644 ios/Warmbly/Assets.xcassets/Host-proton.imageset/proton.png create mode 100644 ios/Warmbly/Assets.xcassets/Host-purelymail.imageset/Contents.json create mode 100644 ios/Warmbly/Assets.xcassets/Host-purelymail.imageset/purelymail.png create mode 100644 ios/Warmbly/Assets.xcassets/Host-rackspace.imageset/Contents.json create mode 100644 ios/Warmbly/Assets.xcassets/Host-rackspace.imageset/rackspace.png create mode 100644 ios/Warmbly/Assets.xcassets/Host-yahoo.imageset/Contents.json create mode 100644 ios/Warmbly/Assets.xcassets/Host-yahoo.imageset/yahoo.png create mode 100644 ios/Warmbly/Assets.xcassets/Host-yandex.imageset/Contents.json create mode 100644 ios/Warmbly/Assets.xcassets/Host-yandex.imageset/yandex.png create mode 100644 ios/Warmbly/Assets.xcassets/Host-zoho.imageset/Contents.json create mode 100644 ios/Warmbly/Assets.xcassets/Host-zoho.imageset/zoho.png rename ios/Warmbly/Assets.xcassets/{Cloud1.imageset => SheerSky.imageset}/Contents.json (77%) create mode 100644 ios/Warmbly/Assets.xcassets/SheerSky.imageset/sheer-sky.jpg create mode 100644 ios/Warmbly/Assets.xcassets/Vendor-cheapinboxes.imageset/Contents.json create mode 100644 ios/Warmbly/Assets.xcassets/Vendor-cheapinboxes.imageset/cheapinboxes.png create mode 100644 ios/Warmbly/Assets.xcassets/Vendor-inboxkit.imageset/Contents.json create mode 100644 ios/Warmbly/Assets.xcassets/Vendor-inboxkit.imageset/inboxkit.png create mode 100644 ios/Warmbly/Assets.xcassets/Vendor-infraforge.imageset/Contents.json create mode 100644 ios/Warmbly/Assets.xcassets/Vendor-infraforge.imageset/infraforge.png create mode 100644 ios/Warmbly/Assets.xcassets/Vendor-maildoso.imageset/Contents.json create mode 100644 ios/Warmbly/Assets.xcassets/Vendor-maildoso.imageset/maildoso.png create mode 100644 ios/Warmbly/Assets.xcassets/Vendor-mailforge.imageset/Contents.json create mode 100644 ios/Warmbly/Assets.xcassets/Vendor-mailforge.imageset/mailforge.png create mode 100644 ios/Warmbly/Assets.xcassets/Vendor-scaledmail.imageset/Contents.json create mode 100644 ios/Warmbly/Assets.xcassets/Vendor-scaledmail.imageset/scaledmail.png create mode 100644 ios/Warmbly/Assets.xcassets/Vendor-zapmail.imageset/Contents.json create mode 100644 ios/Warmbly/Assets.xcassets/Vendor-zapmail.imageset/zapmail.png create mode 100644 ios/Warmbly/Core/Security/AppAttestClient.swift create mode 100644 ios/Warmbly/DesignSystem/Appearance.swift create mode 100644 ios/Warmbly/DesignSystem/DrawerWorkspaceHeader.swift create mode 100644 ios/Warmbly/DesignSystem/GlassHeaderBar.swift create mode 100644 ios/Warmbly/DesignSystem/MailboxAvatar.swift create mode 100644 ios/Warmbly/DesignSystem/TabBar.swift create mode 100644 ios/Warmbly/DesignSystem/TrendChart.swift create mode 100644 ios/Warmbly/Features/Assistant/RemieMark.swift create mode 100644 ios/Warmbly/Features/Assistant/RemieTranscript.swift create mode 100644 ios/Warmbly/Features/Auth/FlowChrome.swift create mode 100644 ios/Warmbly/Features/Auth/ServerConfigSheet.swift create mode 100644 ios/Warmbly/Features/Campaigns/CampaignProgress.swift create mode 100644 ios/Warmbly/Features/Contacts/ContactJourney.swift create mode 100644 ios/Warmbly/Features/Contacts/ContactRow.swift create mode 100644 ios/Warmbly/Features/Home/HomeSections.swift create mode 100644 ios/Warmbly/Features/Home/HomeStore.swift create mode 100644 ios/Warmbly/Features/Mailboxes/MailboxSourceModels.swift create mode 100644 ios/Warmbly/Features/More/SettingsCoverKit.swift create mode 100644 ios/Warmbly/Features/More/SettingsHubs.swift create mode 100644 ios/Warmbly/Features/More/SettingsKit.swift create mode 100644 ios/Warmbly/Features/Unibox/UniboxAgentDraft.swift create mode 100644 ios/Warmbly/Features/Unibox/UniboxRail.swift create mode 100644 ios/Warmbly/Features/Unibox/UniboxRailEditor.swift diff --git a/AGENTS.md b/AGENTS.md index 95ca9f2cc..c49de5376 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -212,6 +212,7 @@ Every instance that has not updated yet runs the code an attacker can read here. - passwords are hashed with **Argon2id** and nothing else. No change may introduce a second scheme, weaken the parameters, or store a password in any reversible form - `crypt.CheckPassword` (`internal/pkg/crypt/validation.go`) is the only gate on a new or changed password, and it refuses anything on the embedded NCSC breached list (`internal/pkg/crypt/passwords/breached.txt`). Every path that accepts a password must call it: registration, reset, change, invitation acceptance, and any future one - every auth-sensitive entry point is behind CAPTCHA (`internal/pkg/captcha/turnstile.go`): login, registration, password reset. The login and registration code-confirmation steps take no second captcha: their signed, single-use session from the start step already proves it passed +- the native app proves itself with App Attest instead (`internal/app/appattest`, verifier in `internal/pkg/appattest`): a key attested against Apple's root once per install, then an assertion over a single-use challenge bound to the action on each of those calls, with an advancing counter and a per-key budget. `verifyHuman` in `internal/app/auth/service.go` is the one gate for both; a new captcha-gated path calls it, never `captcha.Verify` alone. The app never renders Turnstile - TOTP verification records the step it consumed (`user_totp_settings.last_used_step`) and refuses a replay of it. Any new second factor needs equivalent single-use enforcement - **admin routes require a session that verified a second factor.** `middleware.AdminMiddleware` refuses `!session.MFAVerified` with `admin_mfa_required`, and `RequireAdminPermission` then checks the admin bit. Every admin route sits behind both; never add one outside them. The instance-wide Warmbly Cloud link is gated the same way, because it belongs to the instance, not to a workspace - an operation that changes who can get in, or moves money or ownership, requires a fresh authentication (`middleware.RequireFreshAuth`, `POST /v1/auth/reauth`). API-key and OAuth callers pass through, because they present a credential on every call and have no session to refresh @@ -754,7 +755,7 @@ Instead, the codebase uses layered abuse controls and trust signals across auth, ### Auth and signup protection -Authentication flows use Cloudflare Turnstile: +Authentication flows use Cloudflare Turnstile from a browser and App Attest from the native app: - login - registration diff --git a/cmd/backend/main.go b/cmd/backend/main.go index 26485e4b3..068520e39 100644 --- a/cmd/backend/main.go +++ b/cmd/backend/main.go @@ -26,6 +26,7 @@ import ( "github.com/warmbly/warmbly/internal/app/admin" "github.com/warmbly/warmbly/internal/app/adminoutreach" "github.com/warmbly/warmbly/internal/app/advanced" + "github.com/warmbly/warmbly/internal/app/appattest" "github.com/warmbly/warmbly/internal/app/unsublink" "github.com/warmbly/warmbly/internal/observability/errs" @@ -212,6 +213,7 @@ func main() { var uniboxService unibox.UniboxService var cipherService cipher.CipherService var passkeyService passkey.Service + var appAttestService *appattest.Service var encryptedKeys encryptedkeys.Store var storageBackendRepo repository.StorageBackendRepository var fleetNodeRepo repository.FleetNodeRepository @@ -954,6 +956,12 @@ func main() { // gate can issue a pending challenge. twofaService = twofa.NewService(repository.NewTOTPRepository(primaryDB.Pool), userRepostory, tokenService, cache, twofa.DeriveKey(authCfg.TwoFASecret)) authService.WireTwoFA(twofaService) + // The native app proves itself with App Attest where a browser solves Turnstile. + appAttestService = appattest.New(repository.NewAppAttestRepository(primaryDB.Pool), cache, appattest.Config{ + AppIDs: authCfg.AppAttestAppIDs, + AllowDevelopment: authCfg.AppAttestAllowDevelopment, + }) + authService.WireAppAttest(appAttestService) // Deployment-level auth policy: whether an emailed code gates a login, // whether signups are open, whether verification is required. Resolved @@ -2338,6 +2346,7 @@ func main() { TokenService: tokenService, PasskeyService: passkeyService, + AppAttestService: appAttestService, UserService: userService, EmailService: emailService, MailboxImportService: mailboxImportService, diff --git a/docs/content/docs/api/endpoints.mdx b/docs/content/docs/api/endpoints.mdx index 9c911b481..c8a79603e 100644 --- a/docs/content/docs/api/endpoints.mdx +++ b/docs/content/docs/api/endpoints.mdx @@ -516,6 +516,7 @@ With [multiple dashboards sharing a backend](/development/configuration/#google- - `POST /auth/login`, `/auth/login/confirm`, `/auth/register`, `/auth/register/confirm`, `/auth/refresh`, `/auth/reset-password`, `/auth/reset-password/confirm` - `POST /auth/reauth` (re-prove the account holder behind a live session, for the changes that require a recent confirmation) - `GET /auth/config` (public deployment capabilities: which sign-in methods this backend has enabled, whether a login code step follows, whether signups are open, whether the instance still needs claiming) +- `POST /auth/app-attest/challenge`, `/auth/app-attest/keys` (the native app's [App Attest](/api/reference/account-org/#app-attest-native-apps) challenge and one-time key registration, on their own per-IP budget `APP_ATTEST_IP_RATE_LIMIT`) - `GET /auth/instance` (JWT only: the running Warmbly version of a self-hosted instance and whether a newer release exists, for the dashboard's version pill; a hosted deployment answers `self_hosted: false` and nothing else) `POST /auth/register` accepts an optional `invite` field carrying an invitation token. On a deployment running `DISABLE_REGISTRATION=invite_only` it is what permits the signup, and the account is created inside the inviting organization rather than in a new one. The token must resolve to a live invitation whose email equals the submitted address, otherwise the request is refused with `invitation_invalid`. Omitting it on a closed deployment returns `registration_invite_only` or `registration_closed`. See [error codes](/api/error-codes/#registration-and-invitation-refusals). @@ -557,6 +558,8 @@ Alongside them, `api_url` is this API's own public base (for a copyable example `GET /auth/config` also carries `gmail_oauth_connect` (boolean): whether a new Gmail mailbox may be connected with Google sign-in. Both `BOX_GOOGLE_CLIENT_ID` and `BOX_GOOGLE_CLIENT_SECRET` are required. With them set, the capability defaults to `true`; explicit `BOX_GOOGLE_OAUTH_CONNECT=false` or an invalid value disables it. When `false`, offer the app-password route (`POST /emails/onboarding/smtp-imap` against Gmail's servers) rather than start an OAuth round trip that returns `mailbox_gmail_oauth_disabled`. The dashboard additionally requires its deployment-local [frontend opt-in](/development/configuration/#google-sign-in-per-dashboard-deployment) to show Google sign-in. Existing Google sign-in mailboxes are unaffected either way. +`GET /auth/config` also carries `app_attest` (boolean): whether this server accepts an [App Attest proof](/api/reference/account-org/#app-attest-native-apps) from the native app in place of a Turnstile token on `POST /auth/login`, `/auth/register`, `/auth/reset-password` and `/auth/reset-password/confirm`. Read it with `captcha`: no captcha means nothing to send, a captcha with `app_attest` means the app sends a proof, and a captcha without it means email and password sign-in is unavailable in the app. + `GET /auth/config` also carries `billing_enabled` (boolean). It is `false` when the deployment runs with `BILLING_PROVIDER=none`, which is the self-host default: every feature is unlocked server-side, so the dashboard shows the workspace as self-hosted instead of on a free trial and hides the billing and referral pages. `self_hosted` alone does not imply this, because a self-hosted install may still run Stripe. - `POST /auth/setup` (first-run claim: exchanges the one-time token printed at boot for the owner account. Refused once any account exists) - `GET /auth/providers`, `POST /auth/apple`, `POST /auth/google` (native-app social sign-in) diff --git a/docs/content/docs/api/error-codes.mdx b/docs/content/docs/api/error-codes.mdx index 45fcad8a9..3a74a554b 100644 --- a/docs/content/docs/api/error-codes.mdx +++ b/docs/content/docs/api/error-codes.mdx @@ -153,6 +153,27 @@ A password must be 8 to 128 characters. There is no composition rule, but it is } ``` +#### App Attest refusals + +The native app proves itself with [App Attest](/api/reference/account-org/#app-attest-native-apps) in place of the captcha on sign-in, registration and password reset. + +| `code` | Status | Meaning | +|--------|--------|---------| +| `app_attest_failed` | 400 | The proof did not verify: the challenge expired or was already used, the proof came from another app or from a development build the server does not accept, the assertion's counter did not advance, the key id was already registered, or the object was malformed. Fetch a fresh challenge and make a new proof; if it keeps failing, update the app | +| `app_attest_key_unknown` | 400 | The `key_id` was never registered on this server. Register the key again with `POST /auth/app-attest/keys`, then retry the call | +| `app_attest_unavailable` | 404 | `POST /auth/app-attest/challenge` or `/keys` on an instance with App Attest off. When `GET /auth/config` reports a captcha without `app_attest`, email and password sign-in is unavailable in the app; Sign in with Apple, Google and passkeys still work | + +Each registered key may make 30 protected calls per hour. Past that the call answers `400` with code `bad_request` and the message `Too many attempts, please try again later.`, the same answer as the other sign-in attempt budgets. + +```json +{ + "error": "Bad Request", + "message": "We couldn’t verify this copy of the app. Update it from the App Store and try again.", + "code": "app_attest_failed", + "request_id": "4bbbd1b2-8f86-47dd-8a7f-9476501ad20e" +} +``` + #### Cloud connection refusals | `code` | Status | Meaning | @@ -618,6 +639,7 @@ Returned when the requested resource doesn't exist. | `code` | Meaning | |--------|---------| | `unknown_view` | `/me/views/:view` was given a view name other than `contacts`, `campaign_leads` or `unibox_rail` | +| `app_attest_unavailable` | `POST /auth/app-attest/challenge` or `/keys` on an instance with App Attest off. See [App Attest refusals](#app-attest-refusals) | | `lead_cc_contact_not_found` | [Set a lead's CC](/api/reference/campaigns/#set-a-leads-cc) named a contact that is not in the workspace | | `slack_not_connected` | A [Slack](/guides/slack/) route was called for a workspace that has not connected Slack, or whose connection was removed. Connect it under **Integrations > Slack** | | `slack_link_invalid` | The Slack link code is unknown, expired or already used. Mention or message the bot in Slack for a new link button | diff --git a/docs/content/docs/api/reference/account-org.mdx b/docs/content/docs/api/reference/account-org.mdx index c6bd43de0..5fd815a0c 100644 --- a/docs/content/docs/api/reference/account-org.mdx +++ b/docs/content/docs/api/reference/account-org.mdx @@ -11,7 +11,7 @@ All error responses use the shared envelope (`error`, `message`, `code`, `reques ## Authentication -These endpoints are public (no session required). Login and registration are two-step: the first call sends a one-time code by email and returns a short-lived signed `session` token, the second call confirms the code and mints the real token pair. Captcha (Cloudflare Turnstile) is required on the start calls. +These endpoints are public (no session required). Login and registration are two-step: the first call sends a one-time code by email and returns a short-lived signed `session` token, the second call confirms the code and mints the real token pair. When the deployment runs a captcha, the start calls and both password reset calls require one: a Cloudflare Turnstile token from a browser, or an [App Attest proof](#app-attest-native-apps) from the native app. ### Start login @@ -27,7 +27,8 @@ Auth: public (not available to API keys). |-------|------|----------|-------------| | `email` | string | yes | Account email. | | `password` | string | yes | Account password. | -| `turnstile` | string | yes | Cloudflare Turnstile token. | +| `turnstile` | string | yes, unless `app_attest` is sent | Cloudflare Turnstile token. | +| `app_attest` | object | no | The native app's [App Attest proof](#app-attest-native-apps), sent instead of `turnstile`. | ```json { @@ -101,7 +102,7 @@ Auth: public (not available to API keys). #### Request body -Same shape as `/auth/login`: `email`, `password`, `turnstile`. +Same shape as `/auth/login`: `email`, `password`, and `turnstile` or `app_attest`. ```json { @@ -183,7 +184,8 @@ Auth: public (not available to API keys). | Field | Type | Required | Description | |-------|------|----------|-------------| | `email` | string | yes | Account email. | -| `turnstile` | string | yes | Cloudflare Turnstile token. | +| `turnstile` | string | yes, unless `app_attest` is sent | Cloudflare Turnstile token. | +| `app_attest` | object | no | The native app's [App Attest proof](#app-attest-native-apps), sent instead of `turnstile`. | #### Response @@ -203,7 +205,8 @@ Auth: public (not available to API keys). |-------|------|----------|-------------| | `session` | string | yes | The reset session token tied to the email. | | `password` | string | yes | The new password. | -| `turnstile` | string | yes | Cloudflare Turnstile token. | +| `turnstile` | string | yes, unless `app_attest` is sent | Cloudflare Turnstile token. | +| `app_attest` | object | no | The native app's [App Attest proof](#app-attest-native-apps), sent instead of `turnstile`. | #### Response @@ -278,6 +281,51 @@ All three are public and unavailable to API keys. A provider-verified identity c Apple and Google both return a token pair (same shape as the login confirm success response), or a two-factor challenge when the account has TOTP enrolled. +### App Attest (native apps) + +The iOS app proves it is a genuine copy of the app with Apple App Attest, and that proof stands in for the captcha on the captcha-gated calls. Browsers keep sending a Turnstile token. Both endpoints below are public, unavailable to API keys, and share their own per-IP budget (`APP_ATTEST_IP_RATE_LIMIT`, 300 per 15 minutes by default) separate from the one on the rest of `/auth`. When the instance has App Attest off they answer `404` with code [`app_attest_unavailable`](/api/error-codes/#app-attest-refusals). `GET /auth/config` reports whether it is on in `app_attest`. + +| Endpoint | Body | Purpose | +|----------|------|---------| +| `POST /auth/app-attest/challenge` | none | Returns `{"challenge": "..."}`, a base64url string that is single-use and expires after five minutes. Every attestation and every assertion is made over a fresh one. | +| `POST /auth/app-attest/keys` | `key_id`, `attestation`, `challenge` (all required) | Registers the install's App Attest key, once per install. `key_id` is the base64 of the 32-byte key identifier and `attestation` the base64 object from `DCAppAttestService.attestKey`, made over a client data hash of SHA-256 of the UTF-8 bytes of `challenge`. Answers `204`. | + +The server verifies the attestation's certificate chain against Apple's App Attest root, the nonce, the app id, a counter of 0, the environment (a development-signed build is refused unless the instance allows them) and the key id, then stores the key. A key id is registered once; a second registration of the same id is refused with `app_attest_failed`. + +A captcha-gated call (`POST /auth/login`, `/auth/register`, `/auth/reset-password`, `/auth/reset-password/confirm`) then carries an `app_attest` object in place of `turnstile`: + +| Field | Type | Required | Description | +|-------|------|----------|-------------| +| `key_id` | string | yes | The registered key identifier, base64. | +| `assertion` | string | yes | The base64 assertion from `DCAppAttestService.generateAssertion`. | +| `challenge` | string | yes | A fresh challenge from `POST /auth/app-attest/challenge`. | + +```json +{ + "email": "alex@acme.com", + "password": "correct horse battery staple", + "app_attest": { + "key_id": "q1Zf3...=", + "assertion": "omlzaWduYXR1cmVYRzBF...", + "challenge": "b3Vy1Wq0..." + } +} +``` + +The assertion is made over a client data hash of SHA-256 of this UTF-8 string, with a newline between the parts: + +```text +warmbly-app-attest/v1 + + +``` + +`` names the call: `login`, `register`, `reset_password` or `reset_password_confirm`. A proof made for one call does not verify on another. Each challenge is spent by the first call that presents it, and the assertion's counter must be higher than the last one the key presented. Each registered key also has its own budget of 30 protected calls per hour; past it the call answers `400` with the message `Too many attempts, please try again later.`, the same answer as the other sign-in attempt budgets. + +A proof that does not verify answers [`app_attest_failed`](/api/error-codes/#app-attest-refusals). A key id this server has never registered answers `app_attest_key_unknown`: register the key again with a fresh challenge, then retry the call. When the deployment runs no captcha, neither `turnstile` nor `app_attest` is checked. + +`GET /auth/config` carries `captcha` and `app_attest` together, and the app reads them as one decision: no captcha means nothing to send, a captcha with `app_attest` means the app sends a proof, and a captcha without `app_attest` means email and password sign-in is unavailable in the app. Sign in with Apple, Google and passkeys never need a captcha. The iOS simulator cannot use App Attest, so local development keeps using `TURNSTILE_BYPASS_TOKEN`, which is honoured only when `APP_ENV=dev`. + ### Browser sign-in A browser cannot authenticate with the provider itself, so it is sent there and comes back with an authorization code. Sign in with Google, Sign in with Apple and generic OpenID Connect are the same three steps against different providers, and which ones a deployment offers is the `providers` array in `GET /auth/config`. diff --git a/docs/content/docs/api/reference/contacts.mdx b/docs/content/docs/api/reference/contacts.mdx index 56d40c857..df774a9d0 100644 --- a/docs/content/docs/api/reference/contacts.mdx +++ b/docs/content/docs/api/reference/contacts.mdx @@ -82,6 +82,16 @@ Returns a `data` array of contacts plus a `pagination` envelope. Paginate by pas "is_catch_all": false, "mail_host": "gmail", "esp_provider": "gmail", + "outreach": { + "sent": 3, + "opened": 2, + "clicked": 0, + "replied": 1, + "bounced": 0, + "last_sent_at": "2026-06-08T09:12:00Z", + "last_opened_at": "2026-06-08T10:40:00Z", + "last_replied_at": "2026-06-09T07:05:00Z" + }, "updated_at": "2026-06-10T12:00:00Z", "created_at": "2026-05-01T09:30:00Z" } @@ -140,6 +150,10 @@ On the first page (no `cursor`), the response includes a `counts` object with or } ``` +### Outreach + +Every contact carries `outreach`, its engagement across every campaign: how many emails reached it (`sent`), and how many of those it `opened`, `clicked`, `replied` to or `bounced`, with the time each last happened (`last_sent_at`, `last_opened_at`, `last_clicked_at`, `last_replied_at`, `last_bounced_at`, absent until the first one). These are the same counts the [contact 360](#get-a-contact) reports under `engagement`. Opens count a person only; a mail client fetching the message automatically is not counted. + ## Create contacts `POST /contacts` diff --git a/docs/content/docs/development/configuration.mdx b/docs/content/docs/development/configuration.mdx index bf22c0a06..315bea424 100644 --- a/docs/content/docs/development/configuration.mdx +++ b/docs/content/docs/development/configuration.mdx @@ -148,6 +148,7 @@ TRUSTED_PROXIES=10.0.0.0/8,172.16.0.0/12 | `AUTH_IP_RATE_LIMIT` | Unauthenticated auth requests allowed per source IP per 15 minutes | `60` | yes | | `CLI_AUTH_IP_RATE_LIMIT` | CLI sign-in handshake requests allowed per source IP per 15 minutes. Its own budget, because one `warmbly auth login` polls around 200 times and must not exhaust the allowance above | `500` | yes | | `PASSKEY_IP_RATE_LIMIT` | Passkey login challenges allowed per source IP per 15 minutes. Its own budget, because the sign-in page asks for a challenge on load rather than when someone acts, so opening that page must not spend the allowance above. Finishing the ceremony is an authentication attempt and counts against `AUTH_IP_RATE_LIMIT` | `300` | yes | +| `APP_ATTEST_IP_RATE_LIMIT` | Native app App Attest challenges and key registrations allowed per source IP per 15 minutes. Its own budget, because the app asks for a challenge before every protected call; the call the challenge is spent on counts against `AUTH_IP_RATE_LIMIT` | `300` | yes | | `PUBLIC_IP_RATE_LIMIT` | Requests allowed per source IP per 15 minutes on the remaining public routes: unsubscribe, invitation preview, fleet enrolment and the analytics proxy. Each carries its authorization in a high-entropy token, so this bounds unmetered writes and relayed bandwidth rather than guessing. Counts reads as well as writes, unlike the auth limiter | `600` | yes | | `WARMBLY_BOOTSTRAP_EMAIL` | First owner's address, read only while the users table is empty | unset | yes | | `WARMBLY_BOOTSTRAP_PASSWORD_HASH` | Argon2id PHC string for that owner, as `warmblyctl hash-password` prints it. Preferred over the plaintext form. A malformed hash, or one whose cost parameters are below `m=65536,t=3,p=2` with a 16-byte salt and 32-byte key, is refused and no owner is created | unset | yes | @@ -202,12 +203,16 @@ The proxy forwards only what PostHog needs to read the request. Cookies and `Aut | `WARMBLY_CONFIG_OUT` | Where the dashboard and admin panel write their runtime `config.js`. Defaults to the path nginx serves; a static host sets it to the build output so the same script renders the file at build time instead of container start | the nginx path | yes (build or container start) | | `WARMBLY_CSP_CONNECT_ORIGINS` | Additional dashboard CSP connection origins, separated by spaces. Realtime is discovered automatically from the backend; use this as an offline fallback or for other connection destinations. Use exact HTTP(S) or WS(S) URLs, not wildcard hosts or CSP directives. `VITE_CSP_CONNECT_ORIGINS` supplies the build-time/development fallback | unset | yes (build or container start) | | `TURNSTILE_BYPASS_TOKEN` | A token that skips verification. Only honoured when `APP_ENV=dev` | unset | yes | +| `APP_ATTEST_APP_IDS` | Comma-separated `.` App IDs whose App Attest proofs the backend accepts in place of a captcha. Unset with no `APPLE_TEAM_ID`, App Attest is off | `APPLE_TEAM_ID` + `.` + `APPLE_IOS_BUNDLE_ID` when `APPLE_TEAM_ID` is set | yes | +| `APP_ATTEST_ALLOW_DEVELOPMENT` | Accept App Attest proofs from development-signed builds (an Xcode install on a device). Leave it off in production | `false` | yes | | `TURNSTILE_SITE_KEY` | The public Turnstile widget key. The backend hands it to the forms service, which renders it on hosted form pages that enable spam protection. The frontends carry their own copy in `WARMBLY_TURNSTILE_KEY` | unset | no (read per request) | `CAPTCHA_PROVIDER` has no constant default. Unset, it resolves to `turnstile` when `TURNSTILE_SECRET` holds a value, whether from the environment or from AWS Secrets Manager, and to `none` when it does not, so configuring the secret is what turns captcha on and clearing it is what turns captcha off. The panel reports the resolved value with source `derived`. Setting `CAPTCHA_PROVIDER=turnstile` explicitly while `TURNSTILE_SECRET` is empty is the one combination that breaks: every verification fails, which means nobody can sign in. Set the secret or set the provider back to `none`. +The native iOS app never renders Turnstile. It proves it is a genuine copy of the app with Apple [App Attest](/api/reference/account-org/#app-attest-native-apps), which stands in for the captcha on sign-in, registration and password reset. With `CAPTCHA_PROVIDER=none` the app sends nothing. With Turnstile on, the app offers email and password sign-in only when `APP_ATTEST_APP_IDS` names its App ID; otherwise it offers Sign in with Apple, Google and passkeys, which never need a captcha. A self-hosted instance that runs Turnstile and wants the iOS app to sign in with a password sets `APP_ATTEST_APP_IDS` to the iOS app's App ID. Verification needs no Apple account and makes no outbound call: it checks against Apple's App Attest root certificate, which ships in the binary. Each install's key is stored in the `app_attest_keys` table, which belongs to the instance and is not part of a [workspace export](/guides/workspace-export-import/). The iOS simulator cannot use App Attest, so local development keeps using `TURNSTILE_BYPASS_TOKEN`. + ## Platform mail Platform mail is the product's own outbound: registration codes, password resets, team invitations, notification digests and login codes where those are enabled. It is separate from campaign mail, which leaves through the mailboxes you connect. diff --git a/docs/content/docs/development/data-control.mdx b/docs/content/docs/development/data-control.mdx index ae5762100..0d87fbdcc 100644 --- a/docs/content/docs/development/data-control.mdx +++ b/docs/content/docs/development/data-control.mdx @@ -126,6 +126,10 @@ Mail whose warmup verification is temporarily unavailable waits in the `unibox_p A [tracking comparison](/guides/placement-tests/#tracking) renders each seed's copy once and sends it from both halves, so while it runs it keeps that rendered copy, with merge fields and AI blocks filled in for the chosen contact, in the `placement_renders` Postgres table, sealed with the workspace's data key. The placement poller deletes it once neither half of the comparison is running. It is included in instance backups and excluded from workspace exports. +### Native app keys + +The iOS app proves it is a genuine copy with [App Attest](/api/reference/account-org/#app-attest-native-apps), and each install registers one key in the `app_attest_keys` Postgres table: the key id, its public key, the app ID and environment it was attested under, its counter, Apple's receipt, and when it was created and last used. A row names no user and no workspace. It has no retention window, is included in instance backups, and does not travel in workspace exports, because it belongs to the instance the app verified against. + ### Warmup reconnect recovery `warmup_recovery_identifiers` holds SHA-256 fingerprints of a mailbox address and exact warmup message IDs or verification tokens, scoped to a workspace. They survive removing a mailbox so adding the same address again can recognize recent warmup mail without retaining its content or credentials. Each expires 90 days after its source record, expired identifiers are swept every minute in bounded batches, and deleting the workspace removes them immediately. They travel in the Warmup group of a [workspace export](/guides/workspace-export-import/). diff --git a/docs/public/openapi.json b/docs/public/openapi.json index 8c378b0b9..9c9c0fe22 100644 --- a/docs/public/openapi.json +++ b/docs/public/openapi.json @@ -775,6 +775,133 @@ } } }, + "/auth/app-attest/challenge": { + "post": { + "operationId": "auth_app_attest_challenge", + "summary": "Mint an App Attest challenge", + "description": "Returns a single-use challenge, valid for five minutes, for the native iOS app to make an App Attest attestation or assertion over. Has its own per-IP budget (APP_ATTEST_IP_RATE_LIMIT).", + "tags": [ + "auth" + ], + "security": [], + "responses": { + "200": { + "description": "A fresh challenge.", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "challenge" + ], + "properties": { + "challenge": { + "type": "string", + "description": "Base64url challenge. Single-use; expires after five minutes." + } + } + } + } + } + }, + "404": { + "description": "App Attest is off on this instance (app_attest_unavailable).", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "429": { + "description": "Rate limited.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + } + } + } + }, + "/auth/app-attest/keys": { + "post": { + "operationId": "auth_app_attest_register_key", + "summary": "Register an App Attest key", + "description": "Registers the native iOS app install's App Attest key, once per install. The attestation must be made over a client data hash of SHA-256 of the UTF-8 bytes of the challenge. The server verifies the certificate chain against Apple's App Attest root, the nonce, the app id, a counter of 0, the environment and the key id. A key id can be registered once.", + "tags": [ + "auth" + ], + "security": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "key_id", + "attestation", + "challenge" + ], + "properties": { + "key_id": { + "type": "string", + "description": "Base64 of the 32-byte App Attest key identifier." + }, + "attestation": { + "type": "string", + "description": "Base64 attestation object from DCAppAttestService.attestKey." + }, + "challenge": { + "type": "string", + "description": "A challenge from /auth/app-attest/challenge." + } + } + } + } + } + }, + "responses": { + "204": { + "description": "Key registered." + }, + "400": { + "description": "The attestation did not verify, or the key id is already registered (app_attest_failed).", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "404": { + "description": "App Attest is off on this instance (app_attest_unavailable).", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "429": { + "description": "Rate limited.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + } + } + } + }, "/auth/logout": { "post": { "operationId": "auth_logout", @@ -27847,9 +27974,32 @@ } } }, + "AppAttestProof": { + "type": "object", + "description": "The native iOS app's Apple App Attest proof, sent instead of a Turnstile token on the captcha-gated auth calls. The assertion is made over a client data hash of SHA-256 of the UTF-8 string \"warmbly-app-attest/v1\\n\" + action + \"\\n\" + challenge, where action is login, register, reset_password or reset_password_confirm.", + "required": [ + "key_id", + "assertion", + "challenge" + ], + "properties": { + "key_id": { + "type": "string", + "description": "The registered App Attest key identifier, base64." + }, + "assertion": { + "type": "string", + "description": "The base64 assertion from DCAppAttestService.generateAssertion." + }, + "challenge": { + "type": "string", + "description": "A fresh, single-use challenge from /auth/app-attest/challenge." + } + } + }, "AuthCredentials": { "type": "object", - "description": "Email/password credentials with a Cloudflare Turnstile token. Used for login start and registration start.", + "description": "Email/password credentials with a Cloudflare Turnstile token or an App Attest proof. Used for login start and registration start.", "required": [ "email", "password" @@ -27867,7 +28017,10 @@ }, "turnstile": { "type": "string", - "description": "Cloudflare Turnstile challenge token." + "description": "Cloudflare Turnstile challenge token. Required when the deployment runs a captcha, unless app_attest is sent." + }, + "app_attest": { + "$ref": "#/components/schemas/AppAttestProof" } } }, @@ -28014,7 +28167,10 @@ }, "turnstile": { "type": "string", - "description": "Cloudflare Turnstile challenge token." + "description": "Cloudflare Turnstile challenge token. Required when the deployment runs a captcha, unless app_attest is sent." + }, + "app_attest": { + "$ref": "#/components/schemas/AppAttestProof" } } }, @@ -28037,7 +28193,10 @@ }, "turnstile": { "type": "string", - "description": "Cloudflare Turnstile challenge token." + "description": "Cloudflare Turnstile challenge token. Required when the deployment runs a captcha, unless app_attest is sent." + }, + "app_attest": { + "$ref": "#/components/schemas/AppAttestProof" } } }, diff --git a/go.mod b/go.mod index 93b29bba8..83b92edb5 100644 --- a/go.mod +++ b/go.mod @@ -24,6 +24,7 @@ require ( github.com/emersion/go-message v0.18.1 github.com/emersion/go-msgauth v0.7.0 github.com/emersion/go-sasl v0.0.0-20241020182733-b788ff22d5a6 + github.com/fxamacker/cbor/v2 v2.9.2 github.com/getsentry/sentry-go v0.36.2 github.com/gin-contrib/cors v1.7.6 github.com/gin-gonic/gin v1.10.1 @@ -97,7 +98,6 @@ require ( github.com/cloudwego/base64x v0.1.5 // indirect github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect github.com/felixge/httpsnoop v1.0.4 // indirect - github.com/fxamacker/cbor/v2 v2.9.2 // indirect github.com/gabriel-vasile/mimetype v1.4.9 // indirect github.com/gin-contrib/sse v1.1.0 // indirect github.com/go-logr/logr v1.4.3 // indirect diff --git a/internal/api/handler/auth_app_attest.go b/internal/api/handler/auth_app_attest.go new file mode 100644 index 000000000..121c224c2 --- /dev/null +++ b/internal/api/handler/auth_app_attest.go @@ -0,0 +1,49 @@ +package handler + +import ( + "net/http" + + "github.com/gin-gonic/gin" + + "github.com/warmbly/warmbly/internal/errx" +) + +var errAppAttestOff = errx.NewWithIdentifier(errx.NotFound, "app_attest_unavailable", "This server does not accept app verification.") + +// AppAttestChallenge mints the single-use challenge an attestation or assertion is made over. +func (h *Handler) AppAttestChallenge(c *gin.Context) { + if !h.AppAttestService.Enabled() { + errx.Handle(c, errAppAttestOff) + return + } + challenge, xerr := h.AppAttestService.Challenge(c.Request.Context()) + if xerr != nil { + errx.Handle(c, xerr) + return + } + c.JSON(http.StatusOK, gin.H{"challenge": challenge}) +} + +type appAttestKeyRequest struct { + KeyID string `json:"key_id"` + Attestation string `json:"attestation"` + Challenge string `json:"challenge"` +} + +// AppAttestRegisterKey stores an install's key once Apple's attestation of it verifies. +func (h *Handler) AppAttestRegisterKey(c *gin.Context) { + if !h.AppAttestService.Enabled() { + errx.Handle(c, errAppAttestOff) + return + } + var req appAttestKeyRequest + if err := c.ShouldBindJSON(&req); err != nil { + errx.Handle(c, errx.InvalidBody(err)) + return + } + if xerr := h.AppAttestService.RegisterKey(c.Request.Context(), req.KeyID, req.Attestation, req.Challenge); xerr != nil { + errx.Handle(c, xerr) + return + } + c.Status(http.StatusNoContent) +} diff --git a/internal/api/handler/auth_config.go b/internal/api/handler/auth_config.go index ca6d54e88..cc7475bcf 100644 --- a/internal/api/handler/auth_config.go +++ b/internal/api/handler/auth_config.go @@ -19,6 +19,10 @@ type DeploymentAuthConfig struct { // install cannot reach challenges.cloudflare.com. Captcha bool `json:"captcha"` + // AppAttest reports whether the native app may prove itself with App Attest + // instead of the captcha. The app never renders Turnstile. + AppAttest bool `json:"app_attest"` + // PasswordLogin is false when the deployment authenticates only through // OIDC or passkeys. PasswordLogin bool `json:"password_login"` @@ -132,6 +136,7 @@ func (h *Handler) AuthConfig(c *gin.Context) { c.JSON(http.StatusOK, DeploymentAuthConfig{ Captcha: config.CaptchaProvider() != "none", + AppAttest: h.AppAttestService.Enabled(), PasswordLogin: !policy.DisablePasswordLogin, LoginCode: policy.LoginCode, Registration: registration, diff --git a/internal/api/handler/handler.go b/internal/api/handler/handler.go index 60999fe88..d57721bf3 100644 --- a/internal/api/handler/handler.go +++ b/internal/api/handler/handler.go @@ -10,6 +10,7 @@ import ( "github.com/warmbly/warmbly/internal/app/aitools" "github.com/warmbly/warmbly/internal/app/analytics" "github.com/warmbly/warmbly/internal/app/apikey" + "github.com/warmbly/warmbly/internal/app/appattest" "github.com/warmbly/warmbly/internal/app/appdirectory" "github.com/warmbly/warmbly/internal/app/audit" "github.com/warmbly/warmbly/internal/app/auth" @@ -102,6 +103,8 @@ type Handler struct { AuthService auth.AuthService TokenService token.TokenService PasskeyService passkey.Service + // AppAttestService registers native app keys. Nil when no app id is configured. + AppAttestService *appattest.Service // Native-app social sign-in discovery (GET /auth/providers). ExternalAuthProviders models.ExternalAuthProviders diff --git a/internal/api/middleware/ratelimit_ip.go b/internal/api/middleware/ratelimit_ip.go index 261fa4e33..413408566 100644 --- a/internal/api/middleware/ratelimit_ip.go +++ b/internal/api/middleware/ratelimit_ip.go @@ -42,6 +42,12 @@ const ( passkeyIPWindow = 15 * time.Minute passkeyIPDefaultLimit = 300 + // The native app's challenge and key registration are page furniture in the + // same way, so they get a budget of their own; the request a challenge is + // spent on stays on /auth. + appAttestIPWindow = 15 * time.Minute + appAttestIPDefaultLimit = 300 + // The remaining public routes (unsubscribe, invitation preview, fleet // enrolment, the analytics proxy) carry their authorization in a // high-entropy token rather than a session, so this budget is not what @@ -80,6 +86,13 @@ func (h *Handler) PasskeyChallengeIPRateLimitMiddleware() gin.HandlerFunc { "Too many passkey sign-in requests from this address. Try again later.", false) } +// AppAttestIPRateLimitMiddleware throttles the native app's challenge and key +// registration per source IP, on a key of its own. +func (h *Handler) AppAttestIPRateLimitMiddleware() gin.HandlerFunc { + return h.ipRateLimiter("app_attest_ip:", appAttestIPDefaultLimit, "APP_ATTEST_IP_RATE_LIMIT", appAttestIPWindow, + "Too many app verification requests from this address. Try again later.", false) +} + // AuthIPRateLimitMiddleware throttles the public /auth group per source IP. // // This is the only limiter those routes have: RateLimitMiddleware keys on the diff --git a/internal/api/routes.go b/internal/api/routes.go index ad510d489..251727fbc 100644 --- a/internal/api/routes.go +++ b/internal/api/routes.go @@ -361,6 +361,15 @@ func Run( // has typed. It gets its own per-IP budget so opening that page repeatedly // cannot spend the allowance password sign-in, registration and reset all // draw on. Finishing the ceremony is an attempt and stays on /auth below. + // The native app's App Attest handshake: a single-use challenge, and the + // once-per-install key registration that Apple's attestation authorises. + appAttestPublic := v1.Group("/auth/app-attest") + appAttestPublic.Use(m.AppAttestIPRateLimitMiddleware()) + { + appAttestPublic.POST("/challenge", h.AppAttestChallenge) + appAttestPublic.POST("/keys", h.AppAttestRegisterKey) + } + passkeyPublic := v1.Group("/auth/passkey") passkeyPublic.Use(m.PasskeyChallengeIPRateLimitMiddleware()) { diff --git a/internal/app/appattest/service.go b/internal/app/appattest/service.go new file mode 100644 index 000000000..811d85a75 --- /dev/null +++ b/internal/app/appattest/service.go @@ -0,0 +1,204 @@ +// Package appattest is the native app's anti-automation check: a key attested +// by Apple once per install, then an assertion over a single-use challenge on +// every unauthenticated auth write, in place of the browser's Turnstile. +package appattest + +import ( + "context" + "crypto/rand" + "crypto/sha256" + "encoding/base64" + "errors" + "slices" + "time" + + "github.com/rs/zerolog/log" + + "github.com/warmbly/warmbly/internal/errx" + "github.com/warmbly/warmbly/internal/infrastructure/cache" + "github.com/warmbly/warmbly/internal/observability/errs" + attest "github.com/warmbly/warmbly/internal/pkg/appattest" + "github.com/warmbly/warmbly/internal/repository" +) + +const ( + challengeTTL = 5 * time.Minute + challengePrefix = "app_attest:challenge:" + // keyBudget bounds what one install can trigger, emails included. + keyBudget = 30 + keyBudgetWindow = time.Hour + keyBudgetPrefix = "app_attest:key:" + clientDataTag = "warmbly-app-attest/v1" +) + +// Actions name the request an assertion was made for, so one cannot be spent on another. +const ( + ActionLogin = "login" + ActionRegister = "register" + ActionResetPassword = "reset_password" + ActionResetPasswordConfirm = "reset_password_confirm" +) + +// Proof is what the app sends with a protected request. +type Proof struct { + KeyID string `json:"key_id"` + Assertion string `json:"assertion"` + Challenge string `json:"challenge"` +} + +// Config is what this instance accepts. +type Config struct { + AppIDs []string + AllowDevelopment bool +} + +type Service struct { + repo repository.AppAttestRepository + cache *cache.Cache + policy attest.Policy + now func() time.Time +} + +// New returns nil when no app id is configured, which turns the check off. +func New(repo repository.AppAttestRepository, c *cache.Cache, cfg Config) *Service { + if repo == nil || c == nil || len(cfg.AppIDs) == 0 { + return nil + } + return &Service{ + repo: repo, + cache: c, + policy: attest.Policy{AppIDs: cfg.AppIDs, AllowDevelopment: cfg.AllowDevelopment}, + now: time.Now, + } +} + +// Enabled reports whether native app proofs are accepted here. +func (s *Service) Enabled() bool { return s != nil } + +// ClientData is the exact byte string the app asserts over. +func ClientData(action, challenge string) []byte { + return []byte(clientDataTag + "\n" + action + "\n" + challenge) +} + +// Challenge mints a single-use challenge. +func (s *Service) Challenge(ctx context.Context) (string, *errx.Error) { + buf := make([]byte, 32) + if _, err := rand.Read(buf); err != nil { + errs.CaptureException(err) + return "", errx.InternalError() + } + challenge := base64.RawURLEncoding.EncodeToString(buf) + if err := s.cache.SetEx(ctx, challengePrefix+challenge, 1, challengeTTL).Err(); err != nil { + errs.CaptureException(err) + return "", errx.InternalError() + } + return challenge, nil +} + +// consume deletes the challenge and reports whether this call was the one that did. +func (s *Service) consume(ctx context.Context, challenge string) (bool, *errx.Error) { + if challenge == "" || len(challenge) > 128 { + return false, nil + } + n, err := s.cache.Del(ctx, challengePrefix+challenge).Result() + if err != nil { + errs.CaptureException(err) + return false, errx.InternalError() + } + return n == 1, nil +} + +// RegisterKey verifies a key attestation made over SHA-256 of the challenge and stores the key. +func (s *Service) RegisterKey(ctx context.Context, keyID, attestation, challenge string) *errx.Error { + ok, xerr := s.consume(ctx, challenge) + if xerr != nil { + return xerr + } + if !ok { + return errx.ErrAppAttest + } + rawKeyID, err := base64.StdEncoding.DecodeString(keyID) + if err != nil || len(rawKeyID) != sha256.Size { + return errx.ErrAppAttest + } + object, err := base64.StdEncoding.DecodeString(attestation) + if err != nil { + return errx.ErrAppAttest + } + clientDataHash := sha256.Sum256([]byte(challenge)) + key, err := attest.VerifyAttestation(object, rawKeyID, clientDataHash[:], s.policy, s.now()) + if err != nil { + log.Info().Err(err).Msg("app attest: attestation refused") + return errx.ErrAppAttest + } + inserted, err := s.repo.Insert(ctx, repository.AppAttestKey{ + KeyID: base64.StdEncoding.EncodeToString(key.ID), + PublicKey: key.PublicKey, + AppID: key.AppID, + Environment: string(key.Environment), + Receipt: key.Receipt, + }) + if err != nil { + errs.CaptureException(err) + return errx.InternalError() + } + // A key is attested once; a second attestation of the same id is a replay. + if !inserted { + return errx.ErrAppAttest + } + return nil +} + +// Verify checks an assertion made for action over a fresh challenge. +func (s *Service) Verify(ctx context.Context, action string, proof *Proof) *errx.Error { + if proof == nil || proof.KeyID == "" || proof.Assertion == "" { + return errx.ErrAppAttest + } + ok, xerr := s.consume(ctx, proof.Challenge) + if xerr != nil { + return xerr + } + if !ok { + return errx.ErrAppAttest + } + key, err := s.repo.Get(ctx, proof.KeyID) + if err != nil { + errs.CaptureException(err) + return errx.InternalError() + } + if key == nil { + return errx.ErrAppAttestUnknown + } + // Fails open on a cache error, like every other auth budget. + if within, err := s.cache.ReserveAttempt(ctx, keyBudgetPrefix+key.KeyID, keyBudget, keyBudgetWindow); err != nil { + errs.CaptureException(err) + } else if !within { + return errx.ErrAuthLimit + } + object, err := base64.StdEncoding.DecodeString(proof.Assertion) + if err != nil { + return errx.ErrAppAttest + } + // A key outlives the policy it was attested under; it answers to the current one. + if (key.Environment == string(attest.Development) && !s.policy.AllowDevelopment) || !slices.Contains(s.policy.AppIDs, key.AppID) { + return errx.ErrAppAttest + } + counter, err := attest.VerifyAssertion(object, ClientData(action, proof.Challenge), key.PublicKey, key.AppID, key.Counter, s.policy.AllowDevelopment) + if err != nil { + if errors.Is(err, attest.ErrInvalid) { + log.Info().Err(err).Msg("app attest: assertion refused") + return errx.ErrAppAttest + } + errs.CaptureException(err) + return errx.InternalError() + } + advanced, err := s.repo.AdvanceCounter(ctx, key.KeyID, counter) + if err != nil { + errs.CaptureException(err) + return errx.InternalError() + } + if !advanced { + return errx.ErrAppAttest + } + return nil +} diff --git a/internal/app/appattest/service_test.go b/internal/app/appattest/service_test.go new file mode 100644 index 000000000..1ccdafe36 --- /dev/null +++ b/internal/app/appattest/service_test.go @@ -0,0 +1,22 @@ +package appattest + +import ( + "testing" +) + +// The iOS app builds the same bytes; changing them breaks every shipped install. +func TestClientDataIsTheWireContract(t *testing.T) { + if got := string(ClientData(ActionLogin, "abc")); got != "warmbly-app-attest/v1\nlogin\nabc" { + t.Fatalf("client data = %q", got) + } +} + +func TestOffWithoutAppIDs(t *testing.T) { + s := New(nil, nil, Config{}) + if s.Enabled() { + t.Fatal("enabled with nothing configured") + } + if New(nil, nil, Config{AppIDs: []string{"TEAM.com.example"}}).Enabled() { + t.Fatal("enabled without storage") + } +} diff --git a/internal/app/auth/login.go b/internal/app/auth/login.go index 57527c2b3..3567bd23e 100644 --- a/internal/app/auth/login.go +++ b/internal/app/auth/login.go @@ -3,6 +3,7 @@ package auth import ( "context" "errors" + "github.com/warmbly/warmbly/internal/app/appattest" "github.com/warmbly/warmbly/internal/app/authrisk" "time" @@ -24,7 +25,7 @@ func (s *authService) LoginStart(ctx context.Context, data *AuthData, ipaddr, us // A failed challenge is the caller's 400, not an incident: reporting it // filed an issue for every bot and every reloaded sign-in page. - if xerr := s.captcha.Verify(ctx, data.Turnstile, ipaddr); xerr != nil { + if xerr := s.verifyHuman(ctx, appattest.ActionLogin, data.Turnstile, data.AppAttest, ipaddr); xerr != nil { return nil, xerr } diff --git a/internal/app/auth/model.go b/internal/app/auth/model.go index 62790bb64..c822cb9a8 100644 --- a/internal/app/auth/model.go +++ b/internal/app/auth/model.go @@ -1,11 +1,16 @@ package auth -import "github.com/warmbly/warmbly/internal/models" +import ( + "github.com/warmbly/warmbly/internal/app/appattest" + "github.com/warmbly/warmbly/internal/models" +) type AuthData struct { Email string `json:"email"` Password string `json:"password"` Turnstile string `json:"turnstile"` + // AppAttest is the native app's proof, sent instead of Turnstile. + AppAttest *appattest.Proof `json:"app_attest,omitempty"` // ReferralCode is the optional ?ref= code the signup arrived with. Carried // to RegistrationConfirm so the new org can be attributed to its referrer. ReferralCode string `json:"referral_code"` @@ -31,14 +36,16 @@ type ConfirmData struct { } type ResetPasswordStart struct { - Email string `json:"email"` - Turnstile string `json:"turnstile"` + Email string `json:"email"` + Turnstile string `json:"turnstile"` + AppAttest *appattest.Proof `json:"app_attest,omitempty"` } type ResetPasswordConfirm struct { - Session string `json:"session"` - Password string `json:"password"` - Turnstile string `json:"turnstile"` + Session string `json:"session"` + Password string `json:"password"` + Turnstile string `json:"turnstile"` + AppAttest *appattest.Proof `json:"app_attest,omitempty"` } type ChangePassword struct { diff --git a/internal/app/auth/registration.go b/internal/app/auth/registration.go index cd9b45488..2b8a91c96 100644 --- a/internal/app/auth/registration.go +++ b/internal/app/auth/registration.go @@ -5,6 +5,7 @@ import ( "time" "github.com/google/uuid" + "github.com/warmbly/warmbly/internal/app/appattest" "github.com/warmbly/warmbly/internal/app/token" "github.com/warmbly/warmbly/internal/errx" "github.com/warmbly/warmbly/internal/models" @@ -29,7 +30,7 @@ func (s *authService) RegistrationStart(ctx context.Context, data *AuthData, ori } // The caller's 400, not an incident. See LoginStart. - if xerr := s.captcha.Verify(ctx, data.Turnstile, ipaddr); xerr != nil { + if xerr := s.verifyHuman(ctx, appattest.ActionRegister, data.Turnstile, data.AppAttest, ipaddr); xerr != nil { return nil, xerr } diff --git a/internal/app/auth/reset_password.go b/internal/app/auth/reset_password.go index 0bbef47ce..ef9bd5538 100644 --- a/internal/app/auth/reset_password.go +++ b/internal/app/auth/reset_password.go @@ -8,6 +8,7 @@ import ( "github.com/golang-jwt/jwt/v5" "github.com/google/uuid" "github.com/rs/zerolog/log" + "github.com/warmbly/warmbly/internal/app/appattest" tokenpkg "github.com/warmbly/warmbly/internal/app/token" "github.com/warmbly/warmbly/internal/config" "github.com/warmbly/warmbly/internal/errx" @@ -20,7 +21,7 @@ import ( func (s *authService) ResetPasswordStart(ctx context.Context, data *ResetPasswordStart, ipaddr string) *errx.Error { // The caller's 400, not an incident. See LoginStart. - if err := s.captcha.Verify(ctx, data.Turnstile, ipaddr); err != nil { + if err := s.verifyHuman(ctx, appattest.ActionResetPassword, data.Turnstile, data.AppAttest, ipaddr); err != nil { return err } @@ -138,7 +139,7 @@ func (s *authService) sendResetEmailWithRetry(ctx context.Context, to, subject, func (s *authService) ResetPasswordConfirm(ctx context.Context, data *ResetPasswordConfirm, session, ipaddr string) *errx.Error { // The caller's 400, not an incident. See LoginStart. - if err := s.captcha.Verify(ctx, data.Turnstile, ipaddr); err != nil { + if err := s.verifyHuman(ctx, appattest.ActionResetPasswordConfirm, data.Turnstile, data.AppAttest, ipaddr); err != nil { return err } diff --git a/internal/app/auth/service.go b/internal/app/auth/service.go index 098446440..c5c6cd79e 100644 --- a/internal/app/auth/service.go +++ b/internal/app/auth/service.go @@ -7,6 +7,7 @@ import ( "github.com/google/uuid" + "github.com/warmbly/warmbly/internal/app/appattest" "github.com/warmbly/warmbly/internal/app/organization" "github.com/warmbly/warmbly/internal/app/token" "github.com/warmbly/warmbly/internal/app/trial" @@ -78,6 +79,8 @@ type AuthService interface { LoginConfirm(ctx context.Context, data *ConfirmData, session, ipaddr, userAgent string) (*models.LoginResult, *errx.Error) // WireTwoFA attaches the 2FA challenger (post-construction; nil = 2FA off). WireTwoFA(t TwoFAChallenger) + // WireAppAttest accepts native app proofs on the captcha-gated paths (nil = off). + WireAppAttest(a *appattest.Service) RegistrationStart(ctx context.Context, data *AuthData, origin SignupOrigin) (*models.AuthSession, *errx.Error) RegistrationConfirm(ctx context.Context, data *ConfirmData, session string, origin SignupOrigin) (*models.AuthSession, *errx.Error) @@ -173,9 +176,11 @@ type authService struct { organizationService organization.OrganizationService emailNotificationService notify.EmailNotificationService // opsNotify raises instance-wide operator alerts. Nil is the default. - opsNotify OperatorNotifier - cache *cache.Cache - captcha *captcha.Turnstile + opsNotify OperatorNotifier + cache *cache.Cache + captcha *captcha.Turnstile + // appAttest takes the native app's proof in place of Turnstile. Nil turns it off. + appAttest *appattest.Service appleIDTokens IDTokenVerifier googleIDTokens IDTokenVerifier twofa TwoFAChallenger @@ -207,6 +212,18 @@ type authService struct { func (s *authService) WireTwoFA(t TwoFAChallenger) { s.twofa = t } +// WireAppAttest accepts native app proofs on the captcha-gated paths. +func (s *authService) WireAppAttest(a *appattest.Service) { s.appAttest = a } + +// verifyHuman is the anti-automation gate on every unauthenticated auth write: +// Turnstile for a browser, an App Attest assertion for the native app. +func (s *authService) verifyHuman(ctx context.Context, action, turnstile string, proof *appattest.Proof, ipaddr string) *errx.Error { + if proof != nil && s.captcha.Required() && s.appAttest.Enabled() { + return s.appAttest.Verify(ctx, action, proof) + } + return s.captcha.Verify(ctx, turnstile, ipaddr) +} + func (s *authService) WireDeployment(policy *config.AuthPolicy, mailDelivers bool) { if policy != nil { s.policy = policy diff --git a/internal/app/auth/verify_human_test.go b/internal/app/auth/verify_human_test.go new file mode 100644 index 000000000..a3ff6c940 --- /dev/null +++ b/internal/app/auth/verify_human_test.go @@ -0,0 +1,25 @@ +package auth + +import ( + "context" + "testing" + + "github.com/warmbly/warmbly/internal/app/appattest" + "github.com/warmbly/warmbly/internal/errx" + "github.com/warmbly/warmbly/internal/pkg/captcha" +) + +func TestVerifyHumanRouting(t *testing.T) { + proof := &appattest.Proof{KeyID: "k", Assertion: "a", Challenge: "c"} + + off := &authService{captcha: captcha.NewTurnstileFromConfig(captcha.TurnstileConfig{Disabled: true})} + if err := off.verifyHuman(context.Background(), appattest.ActionLogin, "", proof, "203.0.113.1"); err != nil { + t.Fatalf("no captcha on the deployment, proof sent: %v", err) + } + + // With App Attest off a proof is no substitute: the Turnstile check still runs. + on := &authService{captcha: captcha.NewTurnstileFromConfig(captcha.TurnstileConfig{Secret: "s"})} + if err := on.verifyHuman(context.Background(), appattest.ActionLogin, "", proof, "203.0.113.1"); err != errx.ErrCaptcha { + t.Fatalf("err = %v, want the captcha refusal", err) + } +} diff --git a/internal/config/config_auth.go b/internal/config/config_auth.go index 4cb0400a0..551c54569 100644 --- a/internal/config/config_auth.go +++ b/internal/config/config_auth.go @@ -35,6 +35,12 @@ type AuthConfig struct { TurnstileSecret string TurnstileBypass string + // AppAttestAppIDs are the "." values whose App Attest + // proofs stand in for the captcha. Empty turns native app proofs off. + AppAttestAppIDs []string + // AppAttestAllowDevelopment accepts proofs from development-signed builds. + AppAttestAllowDevelopment bool + // TwoFASecret is the server-wide key the TOTP secret is sealed with (AES-GCM). // Must be set when 2FA is in use; falls back to AuthSecret when unset so a // deployment without the env var still functions (sealed under the auth key). @@ -99,6 +105,13 @@ func (c *Config) LoadAuthConfig(ctx context.Context) (*AuthConfig, error) { SetTurnstileSecretResolved(turnstileSecret != "") turnstileBypass := c.GetSecretOptional(ctx, "TURNSTILE_BYPASS_TOKEN", "turnstile/bypass_token", "") + // Defaults to the iOS app this instance's Apple team ships, when it names one. + appAttestAppIDs := splitCSV(c.GetStringOptional(ctx, "APP_ATTEST_APP_IDS", "app-attest/app_ids", "")) + if len(appAttestAppIDs) == 0 && appleTeamID != "" && appleIOSBundleID != "" { + appAttestAppIDs = []string{appleTeamID + "." + appleIOSBundleID} + } + appAttestAllowDev := c.GetBoolOptional(ctx, "APP_ATTEST_ALLOW_DEVELOPMENT", "app-attest/allow_development", false) + // 2FA sealing key. Optional: falls back to AUTH_SECRET so existing // deployments keep working; rotating it invalidates enrolled TOTP secrets. twoFASecret := c.GetSecretOptional(ctx, "TWOFA_SECRET", "twofa_secret", authSecret) @@ -125,7 +138,10 @@ func (c *Config) LoadAuthConfig(ctx context.Context) (*AuthConfig, error) { AuthSecret: authSecret, TurnstileSecret: turnstileSecret, TurnstileBypass: turnstileBypass, - TwoFASecret: twoFASecret, + + AppAttestAppIDs: appAttestAppIDs, + AppAttestAllowDevelopment: appAttestAllowDev, + TwoFASecret: twoFASecret, WebAuthnRPID: rpID, WebAuthnRPDisplayName: rpDisplayName, diff --git a/internal/errx/common.go b/internal/errx/common.go index 52b2f6ec9..d42fbd7d3 100644 --- a/internal/errx/common.go +++ b/internal/errx/common.go @@ -114,6 +114,9 @@ var ( // Captch ErrCaptcha = New(BadRequest, "We couldn’t verify you’re human. Please try the security check again or reload the page.") + // The native app's proof in place of the captcha. + ErrAppAttest = NewWithIdentifier(BadRequest, "app_attest_failed", "We couldn’t verify this copy of the app. Update it from the App Store and try again.") + ErrAppAttestUnknown = NewWithIdentifier(BadRequest, "app_attest_key_unknown", "This device needs to verify the app again.") // Group ErrGroupTitle = New(BadRequest, "The title length must be between 1 and 50 characters.") diff --git a/internal/infrastructure/db/migrations/000290_app_attest_keys.down.sql b/internal/infrastructure/db/migrations/000290_app_attest_keys.down.sql new file mode 100644 index 000000000..9d91bd0ec --- /dev/null +++ b/internal/infrastructure/db/migrations/000290_app_attest_keys.down.sql @@ -0,0 +1 @@ +DROP TABLE IF EXISTS app_attest_keys; diff --git a/internal/infrastructure/db/migrations/000290_app_attest_keys.up.sql b/internal/infrastructure/db/migrations/000290_app_attest_keys.up.sql new file mode 100644 index 000000000..950b2a42c --- /dev/null +++ b/internal/infrastructure/db/migrations/000290_app_attest_keys.up.sql @@ -0,0 +1,13 @@ +-- App Attest keys the native app registered: one per install, verified against +-- Apple's root, then used to check the assertion on each unauthenticated auth +-- write. Not tied to a user or a workspace. +CREATE TABLE app_attest_keys ( + key_id TEXT PRIMARY KEY, + public_key BYTEA NOT NULL, + app_id TEXT NOT NULL, + environment TEXT NOT NULL CHECK (environment IN ('production', 'development')), + counter BIGINT NOT NULL DEFAULT 0 CHECK (counter >= 0), + receipt BYTEA, + created_at TIMESTAMPTZ NOT NULL DEFAULT now(), + last_used_at TIMESTAMPTZ +); diff --git a/internal/models/contact.go b/internal/models/contact.go index 5fb02abd3..4aa7b6e39 100644 --- a/internal/models/contact.go +++ b/internal/models/contact.go @@ -68,6 +68,10 @@ type Contact struct { // leads are queued, in progress, replied, bounced, or unsubscribed. CampaignLead *ContactCampaignProgress `json:"campaign_lead,omitempty"` + // Outreach is the contact's engagement across every campaign. Populated by + // Search on every row; nil elsewhere. + Outreach *ContactOutreach `json:"outreach,omitempty"` + // IsNew is set by the upsert write when this call inserted the row rather // than matching an existing contact. Server-side only: it decides whether // a contact.created event fires. @@ -407,6 +411,23 @@ type ContactCategoryCount struct { // ContactEngagement summarises every email touchpoint we have for a // single contact. It's denormalised on read so the contact 360 view // can render counts and "last X" timestamps in a single round-trip. +// ContactOutreach is where a contact stands with your outreach: the emails +// that reached them, what they did with them, and when each last happened. +// Opens count people only; a mail client's automatic fetch is not engagement. +type ContactOutreach struct { + Sent int `json:"sent"` + Opened int `json:"opened"` + Clicked int `json:"clicked"` + Replied int `json:"replied"` + Bounced int `json:"bounced"` + + LastSentAt *time.Time `json:"last_sent_at,omitempty"` + LastOpenedAt *time.Time `json:"last_opened_at,omitempty"` + LastClickedAt *time.Time `json:"last_clicked_at,omitempty"` + LastRepliedAt *time.Time `json:"last_replied_at,omitempty"` + LastBouncedAt *time.Time `json:"last_bounced_at,omitempty"` +} + type ContactEngagement struct { TotalSent int `json:"total_sent"` TotalOpened int `json:"total_opened"` diff --git a/internal/pkg/appattest/appattest.go b/internal/pkg/appattest/appattest.go new file mode 100644 index 000000000..3417abba2 --- /dev/null +++ b/internal/pkg/appattest/appattest.go @@ -0,0 +1,330 @@ +// Package appattest verifies Apple App Attest attestations and assertions: +// proof that a request comes from a genuine, unmodified build of the native app +// on a real Apple device. It holds no state; callers store keys and counters. +package appattest + +import ( + "bytes" + "crypto/ecdsa" + "crypto/elliptic" + "crypto/sha256" + "crypto/subtle" + "crypto/x509" + _ "embed" + "encoding/asn1" + "encoding/binary" + "errors" + "fmt" + "time" + + "github.com/fxamacker/cbor/v2" +) + +//go:embed apple_app_attestation_root_ca.pem +var appleRootPEM []byte + +// Environment is the App Attest environment a key was created in. +type Environment string + +const ( + Production Environment = "production" + Development Environment = "development" +) + +// ErrInvalid wraps every verification failure; the wrapped text is for logs only. +var ErrInvalid = errors.New("appattest: invalid") + +var ( + aaguidProduction = append([]byte("appattest"), make([]byte, 7)...) + aaguidDevelopment = []byte("appattestdevelop") + nonceExtensionOID = asn1.ObjectIdentifier{1, 2, 840, 113635, 100, 8, 2} +) + +const ( + flagAttestedData = 0x40 + flagExtensions = 0x80 + + extValidationCategory = "apple_validation_category_01" + categoryTestFlight = 2 + categoryDevelopment = 3 + categoryAppStore = 4 +) + +// Policy is what a server accepts. +type Policy struct { + // AppIDs are the accepted "." values. + AppIDs []string + // AllowDevelopment accepts keys from development-signed builds. + AllowDevelopment bool + // Roots overrides Apple's root; nil means Apple's. Tests only. + Roots *x509.CertPool +} + +// Key is an attested key, ready to store. +type Key struct { + ID []byte + PublicKey []byte // uncompressed P-256 point + AppID string + Environment Environment + Receipt []byte +} + +func invalid(format string, args ...any) error { + return fmt.Errorf("%w: %s", ErrInvalid, fmt.Sprintf(format, args...)) +} + +func appleRoots() (*x509.CertPool, error) { + pool := x509.NewCertPool() + if !pool.AppendCertsFromPEM(appleRootPEM) { + return nil, errors.New("appattest: embedded root does not parse") + } + return pool, nil +} + +type attestationObject struct { + Fmt string `cbor:"fmt"` + AttStmt struct { + X5C [][]byte `cbor:"x5c"` + Receipt []byte `cbor:"receipt"` + } `cbor:"attStmt"` + AuthData []byte `cbor:"authData"` +} + +type authenticatorData struct { + rpIDHash []byte + flags byte + counter uint32 + aaguid []byte + credentialID []byte + extensions map[string]any +} + +// parseAuthenticatorData reads the fields; assertions set the attested-data +// flag without carrying the data, so only attestations parse it. +func parseAuthenticatorData(raw []byte, attested bool) (*authenticatorData, error) { + if len(raw) < 37 { + return nil, invalid("authenticator data is %d bytes", len(raw)) + } + ad := &authenticatorData{rpIDHash: raw[:32], flags: raw[32], counter: binary.BigEndian.Uint32(raw[33:37])} + rest := raw[37:] + if attested { + if ad.flags&flagAttestedData == 0 { + return nil, invalid("attested credential data is missing") + } + if len(rest) < 18 { + return nil, invalid("attested credential data is truncated") + } + ad.aaguid = rest[:16] + n := int(binary.BigEndian.Uint16(rest[16:18])) + rest = rest[18:] + if len(rest) < n { + return nil, invalid("credential id is truncated") + } + ad.credentialID = rest[:n] + var coseKey cbor.RawMessage + var err error + if rest, err = cbor.UnmarshalFirst(rest[n:], &coseKey); err != nil { + return nil, invalid("credential public key: %v", err) + } + } + if ad.flags&flagExtensions != 0 { + var err error + if rest, err = cbor.UnmarshalFirst(rest, &ad.extensions); err != nil { + return nil, invalid("extensions: %v", err) + } + } + if len(rest) != 0 { + return nil, invalid("%d trailing bytes in authenticator data", len(rest)) + } + return ad, nil +} + +// checkCategory refuses a launch category the policy does not cover. Devices +// that report none (older systems) are judged on the rest of the checks. +func (ad *authenticatorData) checkCategory(allowDevelopment bool) error { + raw, ok := ad.extensions[extValidationCategory] + if !ok { + return nil + } + var category uint64 + switch v := raw.(type) { + case uint64: + category = v + case int64: + if v < 0 { + return invalid("validation category %d", v) + } + category = uint64(v) + default: + return invalid("validation category has type %T", raw) + } + switch { + case category == categoryAppStore, category == categoryTestFlight: + return nil + case category == categoryDevelopment && allowDevelopment: + return nil + } + return invalid("validation category %d is not accepted", category) +} + +func matchAppID(rpIDHash []byte, appIDs []string) (string, bool) { + for _, id := range appIDs { + sum := sha256.Sum256([]byte(id)) + if subtle.ConstantTimeCompare(sum[:], rpIDHash) == 1 { + return id, true + } + } + return "", false +} + +// VerifyAttestation checks a key attestation made over clientDataHash and +// returns the key to store. keyID is the raw 32-byte key identifier. +func VerifyAttestation(object, keyID, clientDataHash []byte, policy Policy, now time.Time) (*Key, error) { + var att attestationObject + if err := cbor.Unmarshal(object, &att); err != nil { + return nil, invalid("attestation object: %v", err) + } + if att.Fmt != "apple-appattest" { + return nil, invalid("format %q", att.Fmt) + } + if len(att.AttStmt.X5C) < 2 { + return nil, invalid("certificate chain has %d entries", len(att.AttStmt.X5C)) + } + + certs := make([]*x509.Certificate, 0, len(att.AttStmt.X5C)) + for _, der := range att.AttStmt.X5C { + cert, err := x509.ParseCertificate(der) + if err != nil { + return nil, invalid("certificate: %v", err) + } + certs = append(certs, cert) + } + roots := policy.Roots + if roots == nil { + var err error + if roots, err = appleRoots(); err != nil { + return nil, err + } + } + intermediates := x509.NewCertPool() + for _, cert := range certs[1:] { + intermediates.AddCert(cert) + } + credCert := certs[0] + if _, err := credCert.Verify(x509.VerifyOptions{ + Roots: roots, + Intermediates: intermediates, + CurrentTime: now, + KeyUsages: []x509.ExtKeyUsage{x509.ExtKeyUsageAny}, + }); err != nil { + return nil, invalid("certificate chain: %v", err) + } + + nonce := sha256.Sum256(append(append([]byte{}, att.AuthData...), clientDataHash...)) + var certNonce []byte + for _, ext := range credCert.Extensions { + if !ext.Id.Equal(nonceExtensionOID) { + continue + } + var wrapped struct { + Nonce []byte `asn1:"tag:1,explicit"` + } + if _, err := asn1.Unmarshal(ext.Value, &wrapped); err != nil { + return nil, invalid("nonce extension: %v", err) + } + certNonce = wrapped.Nonce + } + if subtle.ConstantTimeCompare(certNonce, nonce[:]) != 1 { + return nil, invalid("nonce does not match the challenge") + } + + pub, ok := credCert.PublicKey.(*ecdsa.PublicKey) + if !ok || pub.Curve != elliptic.P256() { + return nil, invalid("credential key is not P-256") + } + ecdhKey, err := pub.ECDH() + if err != nil { + return nil, invalid("credential key: %v", err) + } + point := ecdhKey.Bytes() + pointHash := sha256.Sum256(point) + if subtle.ConstantTimeCompare(pointHash[:], keyID) != 1 { + return nil, invalid("key id does not match the credential key") + } + + ad, err := parseAuthenticatorData(att.AuthData, true) + if err != nil { + return nil, err + } + appID, ok := matchAppID(ad.rpIDHash, policy.AppIDs) + if !ok { + return nil, invalid("app id is not accepted") + } + if ad.counter != 0 { + return nil, invalid("counter is %d", ad.counter) + } + var env Environment + switch { + case bytes.Equal(ad.aaguid, aaguidProduction): + env = Production + case bytes.Equal(ad.aaguid, aaguidDevelopment) && policy.AllowDevelopment: + env = Development + default: + return nil, invalid("environment is not accepted") + } + if !bytes.Equal(ad.credentialID, keyID) { + return nil, invalid("credential id does not match the key id") + } + if err := ad.checkCategory(policy.AllowDevelopment); err != nil { + return nil, err + } + + return &Key{ + ID: append([]byte{}, keyID...), + PublicKey: point, + AppID: appID, + Environment: env, + Receipt: att.AttStmt.Receipt, + }, nil +} + +type assertionObject struct { + Signature []byte `cbor:"signature"` + AuthenticatorData []byte `cbor:"authenticatorData"` +} + +// VerifyAssertion checks an assertion over clientData made with a stored key +// and returns its counter, which must be stored for the next one. +func VerifyAssertion(object, clientData, publicKey []byte, appID string, prevCounter uint32, allowDevelopment bool) (uint32, error) { + var as assertionObject + if err := cbor.Unmarshal(object, &as); err != nil { + return 0, invalid("assertion object: %v", err) + } + pub, err := ecdsa.ParseUncompressedPublicKey(elliptic.P256(), publicKey) + if err != nil { + return 0, invalid("stored key: %v", err) + } + + clientDataHash := sha256.Sum256(clientData) + nonce := sha256.Sum256(append(append([]byte{}, as.AuthenticatorData...), clientDataHash[:]...)) + // The device signs nonce as the message, so ES256 hashes it once more. + digest := sha256.Sum256(nonce[:]) + if !ecdsa.VerifyASN1(pub, digest[:], as.Signature) { + return 0, invalid("signature does not verify") + } + + ad, err := parseAuthenticatorData(as.AuthenticatorData, false) + if err != nil { + return 0, err + } + if _, ok := matchAppID(ad.rpIDHash, []string{appID}); !ok { + return 0, invalid("app id does not match the key") + } + if ad.counter <= prevCounter { + return 0, invalid("counter %d did not advance past %d", ad.counter, prevCounter) + } + if err := ad.checkCategory(allowDevelopment); err != nil { + return 0, err + } + return ad.counter, nil +} diff --git a/internal/pkg/appattest/appattest_test.go b/internal/pkg/appattest/appattest_test.go new file mode 100644 index 000000000..5d4e9e96e --- /dev/null +++ b/internal/pkg/appattest/appattest_test.go @@ -0,0 +1,147 @@ +package appattest + +import ( + "crypto/sha256" + "encoding/base64" + "encoding/hex" + "encoding/json" + "errors" + "os" + "testing" + "time" +) + +// Vectors produced by a real device, from github.com/bas-d/appattest +// (BSD-3-Clause, Copyright (c) 2019, Duo Labs). +type deviceVectors struct { + AppID string `json:"app_id"` + KeyID string `json:"key_id"` + Attestation string `json:"attestation"` + AttestationClientData string `json:"attestation_client_data"` + AttestedAt string `json:"attested_at"` + PublicKey string `json:"public_key"` + Assertion string `json:"assertion"` + AssertionClientData string `json:"assertion_client_data"` +} + +func loadVectors(t *testing.T) (deviceVectors, []byte, []byte, []byte, []byte, time.Time) { + t.Helper() + raw, err := os.ReadFile("testdata/device_vectors.json") + if err != nil { + t.Fatal(err) + } + var v deviceVectors + if err := json.Unmarshal(raw, &v); err != nil { + t.Fatal(err) + } + keyID, err := base64.StdEncoding.DecodeString(v.KeyID) + if err != nil { + t.Fatal(err) + } + att, err := base64.RawURLEncoding.DecodeString(v.Attestation) + if err != nil { + t.Fatal(err) + } + pub, err := hex.DecodeString(v.PublicKey) + if err != nil { + t.Fatal(err) + } + as, err := base64.RawURLEncoding.DecodeString(v.Assertion) + if err != nil { + t.Fatal(err) + } + at, err := time.Parse(time.RFC3339, v.AttestedAt) + if err != nil { + t.Fatal(err) + } + return v, keyID, att, pub, as, at +} + +func TestVerifyAttestation(t *testing.T) { + v, keyID, att, pub, _, at := loadVectors(t) + cdh := sha256.Sum256([]byte(v.AttestationClientData)) + dev := Policy{AppIDs: []string{"OTHERTEAM.com.example", v.AppID}, AllowDevelopment: true} + + key, err := VerifyAttestation(att, keyID, cdh[:], dev, at) + if err != nil { + t.Fatalf("device attestation refused: %v", err) + } + if hex.EncodeToString(key.PublicKey) != hex.EncodeToString(pub) { + t.Fatalf("public key = %x", key.PublicKey) + } + if key.AppID != v.AppID || key.Environment != Development { + t.Fatalf("app id %q, environment %q", key.AppID, key.Environment) + } + + otherHash := sha256.Sum256([]byte("another-challenge")) + otherKey := append([]byte{}, keyID...) + otherKey[0] ^= 1 + cases := map[string]struct { + keyID, cdh []byte + policy Policy + now time.Time + }{ + "development refused": {keyID, cdh[:], Policy{AppIDs: []string{v.AppID}}, at}, + "another app": {keyID, cdh[:], Policy{AppIDs: []string{"OTHERTEAM.com.example"}, AllowDevelopment: true}, at}, + "another challenge": {keyID, otherHash[:], dev, at}, + "another key id": {otherKey, cdh[:], dev, at}, + "expired credential": {keyID, cdh[:], dev, at.AddDate(0, 1, 0)}, + "no accepted app ids": {keyID, cdh[:], Policy{AllowDevelopment: true}, at}, + "truncated attestation": {keyID, cdh[:], dev, at}, + } + for name, tc := range cases { + object := att + if name == "truncated attestation" { + object = att[:len(att)/2] + } + if _, err := VerifyAttestation(object, tc.keyID, tc.cdh, tc.policy, tc.now); !errors.Is(err, ErrInvalid) { + t.Errorf("%s: err = %v, want ErrInvalid", name, err) + } + } +} + +func TestVerifyAssertion(t *testing.T) { + v, _, _, pub, as, _ := loadVectors(t) + data := []byte(v.AssertionClientData) + + counter, err := VerifyAssertion(as, data, pub, v.AppID, 0, true) + if err != nil { + t.Fatalf("device assertion refused: %v", err) + } + if counter == 0 { + t.Fatal("counter did not advance") + } + + if _, err := VerifyAssertion(as, data, pub, v.AppID, counter, true); !errors.Is(err, ErrInvalid) { + t.Errorf("replayed counter: err = %v", err) + } + if _, err := VerifyAssertion(as, []byte(`{"challenge":"other"}`), pub, v.AppID, 0, true); !errors.Is(err, ErrInvalid) { + t.Errorf("other client data: err = %v", err) + } + if _, err := VerifyAssertion(as, data, pub, "OTHERTEAM.com.example", 0, true); !errors.Is(err, ErrInvalid) { + t.Errorf("other app id: err = %v", err) + } + tampered := append([]byte{}, as...) + tampered[len(tampered)-1] ^= 1 + if _, err := VerifyAssertion(tampered, data, pub, v.AppID, 0, true); !errors.Is(err, ErrInvalid) { + t.Errorf("tampered assertion: err = %v", err) + } +} + +func TestValidationCategory(t *testing.T) { + ad := &authenticatorData{extensions: map[string]any{}} + for category, want := range map[uint64]bool{2: true, 3: false, 4: true, 5: false, 10: false, 0: false} { + ad.extensions[extValidationCategory] = category + if got := ad.checkCategory(false) == nil; got != want { + t.Errorf("category %d accepted = %v", category, got) + } + } + ad.extensions[extValidationCategory] = uint64(3) + if err := ad.checkCategory(true); err != nil { + t.Errorf("development build refused with development allowed: %v", err) + } + delete(ad.extensions, extValidationCategory) + if err := ad.checkCategory(false); err != nil { + t.Errorf("no category reported: %v", err) + } +} diff --git a/internal/pkg/appattest/apple_app_attestation_root_ca.pem b/internal/pkg/appattest/apple_app_attestation_root_ca.pem new file mode 100644 index 000000000..4cff2277b --- /dev/null +++ b/internal/pkg/appattest/apple_app_attestation_root_ca.pem @@ -0,0 +1,14 @@ +-----BEGIN CERTIFICATE----- +MIICITCCAaegAwIBAgIQC/O+DvHN0uD7jG5yH2IXmDAKBggqhkjOPQQDAzBSMSYw +JAYDVQQDDB1BcHBsZSBBcHAgQXR0ZXN0YXRpb24gUm9vdCBDQTETMBEGA1UECgwK +QXBwbGUgSW5jLjETMBEGA1UECAwKQ2FsaWZvcm5pYTAeFw0yMDAzMTgxODMyNTNa +Fw00NTAzMTUwMDAwMDBaMFIxJjAkBgNVBAMMHUFwcGxlIEFwcCBBdHRlc3RhdGlv +biBSb290IENBMRMwEQYDVQQKDApBcHBsZSBJbmMuMRMwEQYDVQQIDApDYWxpZm9y +bmlhMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAERTHhmLW07ATaFQIEVwTtT4dyctdh +NbJhFs/Ii2FdCgAHGbpphY3+d8qjuDngIN3WVhQUBHAoMeQ/cLiP1sOUtgjqK9au +Yen1mMEvRq9Sk3Jm5X8U62H+xTD3FE9TgS41o0IwQDAPBgNVHRMBAf8EBTADAQH/ +MB0GA1UdDgQWBBSskRBTM72+aEH/pwyp5frq5eWKoTAOBgNVHQ8BAf8EBAMCAQYw +CgYIKoZIzj0EAwMDaAAwZQIwQgFGnByvsiVbpTKwSga0kP0e8EeDS4+sQmTvb7vn +53O5+FRXgeLhpJ06ysC5PrOyAjEAp5U4xDgEgllF7En3VcE3iexZZtKeYnpqtijV +oyFraWVIyd/dganmrduC1bmTBGwD +-----END CERTIFICATE----- diff --git a/internal/pkg/appattest/testdata/device_vectors.json b/internal/pkg/appattest/testdata/device_vectors.json new file mode 100644 index 000000000..90f06880a --- /dev/null +++ b/internal/pkg/appattest/testdata/device_vectors.json @@ -0,0 +1,10 @@ +{ + "app_id": "35MFYY2JY5.co.chiff.attestation-test", + "key_id": "AcP/pnpoNVPIJYZOvmIvWzDvmxkFoQCE4Uu7Nk6WiAA=", + "attestation": "o2NmbXRvYXBwbGUtYXBwYXR0ZXN0Z2F0dFN0bXSiY3g1Y4JZAuswggLnMIICbaADAgECAgYBeNT03AYwCgYIKoZIzj0EAwIwTzEjMCEGA1UEAwwaQXBwbGUgQXBwIEF0dGVzdGF0aW9uIENBIDExEzARBgNVBAoMCkFwcGxlIEluYy4xEzARBgNVBAgMCkNhbGlmb3JuaWEwHhcNMjEwNDE0MDk1NTIwWhcNMjEwNDE3MDk1NTIwWjCBkTFJMEcGA1UEAwxAMDFjM2ZmYTY3YTY4MzU1M2M4MjU4NjRlYmU2MjJmNWIzMGVmOWIxOTA1YTEwMDg0ZTE0YmJiMzY0ZTk2ODgwMDEaMBgGA1UECwwRQUFBIENlcnRpZmljYXRpb24xEzARBgNVBAoMCkFwcGxlIEluYy4xEzARBgNVBAgMCkNhbGlmb3JuaWEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAQ3xAT6K7-PvPTucIBXPV-oDE9sw6IvfbQ6-Sw5TnzRyIDJWrQilyYl6OZzrxvaKwlmVOm2AolWAfklu1lBxTCCo4HxMIHuMAwGA1UdEwEB_wQCMAAwDgYDVR0PAQH_BAQDAgTwMH4GCSqGSIb3Y2QIBQRxMG-kAwIBCr-JMAMCAQG_iTEDAgEAv4kyAwIBAb-JMwMCAQG_iTQmBCQzNU1GWVkySlk1LmNvLmNoaWZmLmF0dGVzdGF0aW9uLXRlc3SlBgQEc2tzIL-JNgMCAQW_iTcDAgEAv4k5AwIBAL-JOgMCAQAwGQYJKoZIhvdjZAgHBAwwCr-KeAYEBDE0LjQwMwYJKoZIhvdjZAgCBCYwJKEiBCCOPSSk1ZLu7Zc9Zd2TmGO7tY5ktIclyAclmfTBJdpmjjAKBggqhkjOPQQDAgNoADBlAjEAzHk20GzLdZlaaJXKchriZkmJWhfTCgQHRpn3D6Y7Coit7UQABhIABVh6D4qwPysZAjAFDGuGqb796A9H-1UVCgui5ufZnWZHl1SVT-6iobxfS9av2ahGkLF8hYQXVT3pofxZAkcwggJDMIIByKADAgECAhAJusXhvEAa2dRTlbw4GghUMAoGCCqGSM49BAMDMFIxJjAkBgNVBAMMHUFwcGxlIEFwcCBBdHRlc3RhdGlvbiBSb290IENBMRMwEQYDVQQKDApBcHBsZSBJbmMuMRMwEQYDVQQIDApDYWxpZm9ybmlhMB4XDTIwMDMxODE4Mzk1NVoXDTMwMDMxMzAwMDAwMFowTzEjMCEGA1UEAwwaQXBwbGUgQXBwIEF0dGVzdGF0aW9uIENBIDExEzARBgNVBAoMCkFwcGxlIEluYy4xEzARBgNVBAgMCkNhbGlmb3JuaWEwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASuWzegd015sjWPQOfR8iYm8cJf7xeALeqzgmpZh0_40q0VJXiaomYEGRJItjy5ZwaemNNjvV43D7-gjjKegHOphed0bqNZovZvKdsyr0VeIRZY1WevniZ-smFNwhpmzpmjZjBkMBIGA1UdEwEB_wQIMAYBAf8CAQAwHwYDVR0jBBgwFoAUrJEQUzO9vmhB_6cMqeX66uXliqEwHQYDVR0OBBYEFD7jXRwEGanJtDH4hHTW4eFXcuObMA4GA1UdDwEB_wQEAwIBBjAKBggqhkjOPQQDAwNpADBmAjEAu76IjXONBQLPvP1mbQlXUDW81ocsP4QwSSYp7dH5FOh5mRya6LWu-NOoVDP3tg0GAjEAqzjt0MyB7QCkUsO6RPmTY2VT_swpfy60359evlpKyraZXEuCDfkEOG94B7tYlDm3Z3JlY2VpcHRZDl0wgAYJKoZIhvcNAQcCoIAwgAIBATEPMA0GCWCGSAFlAwQCAQUAMIAGCSqGSIb3DQEHAaCAJIAEggPoMYIEGDAsAgECAgEBBCQzNU1GWVkySlk1LmNvLmNoaWZmLmF0dGVzdGF0aW9uLXRlc3QwggL1AgEDAgEBBIIC6zCCAucwggJtoAMCAQICBgF41PTcBjAKBggqhkjOPQQDAjBPMSMwIQYDVQQDDBpBcHBsZSBBcHAgQXR0ZXN0YXRpb24gQ0EgMTETMBEGA1UECgwKQXBwbGUgSW5jLjETMBEGA1UECAwKQ2FsaWZvcm5pYTAeFw0yMTA0MTQwOTU1MjBaFw0yMTA0MTcwOTU1MjBaMIGRMUkwRwYDVQQDDEAwMWMzZmZhNjdhNjgzNTUzYzgyNTg2NGViZTYyMmY1YjMwZWY5YjE5MDVhMTAwODRlMTRiYmIzNjRlOTY4ODAwMRowGAYDVQQLDBFBQUEgQ2VydGlmaWNhdGlvbjETMBEGA1UECgwKQXBwbGUgSW5jLjETMBEGA1UECAwKQ2FsaWZvcm5pYTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABDfEBPorv4-89O5wgFc9X6gMT2zDoi99tDr5LDlOfNHIgMlatCKXJiXo5nOvG9orCWZU6bYCiVYB-SW7WUHFMIKjgfEwge4wDAYDVR0TAQH_BAIwADAOBgNVHQ8BAf8EBAMCBPAwfgYJKoZIhvdjZAgFBHEwb6QDAgEKv4kwAwIBAb-JMQMCAQC_iTIDAgEBv4kzAwIBAb-JNCYEJDM1TUZZWTJKWTUuY28uY2hpZmYuYXR0ZXN0YXRpb24tdGVzdKUGBARza3Mgv4k2AwIBBb-JNwMCAQC_iTkDAgEAv4k6AwIBADAZBgkqhkiG92NkCAcEDDAKv4p4BgQEMTQuNDAzBgkqhkiG92NkCAIEJjAkoSIEII49JKTVku7tlz1l3ZOYY7u1jmS0hyXIByWZ9MEl2maOMAoGCCqGSM49BAMCA2gAMGUCMQDMeTbQbMt1mVpolcpyGuJmSYlaF9MKBAdGmfcPpjsKiK3tRAAGEgAFWHoPirA_KxkCMAUMa4apvv3oD0f7VRUKC6Lm59mdZkeXVJVP7qKhvF9L1q_ZqEaQsXyFhBdVPemh_DAoAgEEAgEBBCBsbdptlEbTsu5ktHjBTEiDsfbajKOKz4hxgskGW0mjojBgAgEFAgEBBFgxZzZKcm5JdXg5eHFzWDFzSDQ1ekUwUzVvWGJCM0Njenp3aVpZOXJxSkMxc2ZWa3J0T3ZIRk92UXF5Wjg1NE80Yk5zOEloWkV1eVRzNmZPQ01VMmtlZz09MA4CAQYCAQEEBkFUVEVTVDAPAgEHAgEBBAdzYW5kYm94MCACAQwCAQEEGDIwMjEtMAQ0NC0xNVQwOTo1NToyMC4yMDdaMCACARUCAQEEGDIwMjEtMDctMTRUMDk6NTU6MjAuMjA3WgAAAAAAAKCAMIIDrTCCA1SgAwIBAgIQWTNWreVZgs9EQjes30UbUzAKBggqhkjOPQQDAjB8MTAwLgYDVQQDDCdBcHBsZSBBcHBsaWNhdGlvbiBJbnRlZ3JhdGlvbiBDQSA1IC0gRzExJjAkBgNVBAsMHUFwcGxlIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRMwEQYDVQQKDApBcHBsZSBJbmMuMQswCQYDVQQGEwJVUzAeFw0yMDA1MTkxNzQ3MzFaFw0yMTA2MTgxNzQ3MzFaMFoxNjA0BgNVBAMMLUFwcGxpY2F0aW9uIEF0dGVzdGF0aW9uIEZyYXVkIFJlY2VpcHQgU2lnbmluZzETMBEGA1UECgwKQXBwbGUgSW5jLjELMAkGA1UEBhMCVVMwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAR_6RU0bMOKe5g8k9HQQ1_Yq9pWcATTLFiGZVGVerR498sq-LpF9_p46sYsSeT5zcCEtQMU8QIz2pt2-kQqK7hyo4IB2DCCAdQwDAYDVR0TAQH_BAIwADAfBgNVHSMEGDAWgBTZF_5LZ5A4S5L0287VV4AUC489yTBDBggrBgEFBQcBAQQ3MDUwMwYIKwYBBQUHMAGGJ2h0dHA6Ly9vY3NwLmFwcGxlLmNvbS9vY3NwMDMtYWFpY2E1ZzEwMTCCARwGA1UdIASCARMwggEPMIIBCwYJKoZIhvdjZAUBMIH9MIHDBggrBgEFBQcCAjCBtgyBs1JlbGlhbmNlIG9uIHRoaXMgY2VydGlmaWNhdGUgYnkgYW55IHBhcnR5IGFzc3VtZXMgYWNjZXB0YW5jZSBvZiB0aGUgdGhlbiBhcHBsaWNhYmxlIHN0YW5kYXJkIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHVzZSwgY2VydGlmaWNhdGUgcG9saWN5IGFuZCBjZXJ0aWZpY2F0aW9uIHByYWN0aWNlIHN0YXRlbWVudHMuMDUGCCsGAQUFBwIBFilodHRwOi8vd3d3LmFwcGxlLmNvbS9jZXJ0aWZpY2F0ZWF1dGhvcml0eTAdBgNVHQ4EFgQUaR7HD0fs443ddTdE8-nhWmwQViUwDgYDVR0PAQH_BAQDAgeAMA8GCSqGSIb3Y2QMDwQCBQAwCgYIKoZIzj0EAwIDRwAwRAIgJRgWXF4pnFn2hTmtXduZ9jc-9g7NCEWp_Xca1iQtLCICIF0qmypfq6NjgWWNGED3r0gL12uhlNg0IIf01pNbtRuuMIIC-TCCAn-gAwIBAgIQVvuD1Cv_jcM3mSO1Wq5uvTAKBggqhkjOPQQDAzBnMRswGQYDVQQDDBJBcHBsZSBSb290IENBIC0gRzMxJjAkBgNVBAsMHUFwcGxlIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRMwEQYDVQQKDApBcHBsZSBJbmMuMQswCQYDVQQGEwJVUzAeFw0xOTAzMjIxNzUzMzNaFw0zNDAzMjIwMDAwMDBaMHwxMDAuBgNVBAMMJ0FwcGxlIEFwcGxpY2F0aW9uIEludGVncmF0aW9uIENBIDUgLSBHMTEmMCQGA1UECwwdQXBwbGUgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxEzARBgNVBAoMCkFwcGxlIEluYy4xCzAJBgNVBAYTAlVTMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEks5jvX2GsasoCjsc4a_7BJSAkaz2Md-myyg1b0RL4SHlV90SjY26gnyVvkn6vjPKrs0EGfEvQyX69L6zy4N-uqOB9zCB9DAPBgNVHRMBAf8EBTADAQH_MB8GA1UdIwQYMBaAFLuw3qFYM4iapIqZ3r6966_ayySrMEYGCCsGAQUFBwEBBDowODA2BggrBgEFBQcwAYYqaHR0cDovL29jc3AuYXBwbGUuY29tL29jc3AwMy1hcHBsZXJvb3RjYWczMDcGA1UdHwQwMC4wLKAqoCiGJmh0dHA6Ly9jcmwuYXBwbGUuY29tL2FwcGxlcm9vdGNhZzMuY3JsMB0GA1UdDgQWBBTZF_5LZ5A4S5L0287VV4AUC489yTAOBgNVHQ8BAf8EBAMCAQYwEAYKKoZIhvdjZAYCAwQCBQAwCgYIKoZIzj0EAwMDaAAwZQIxAI1vpp-h4OTsW05zipJ_PXhTmI_02h9YHsN1Sv44qEwqgxoaqg2mZG3huZPo0VVM7QIwZzsstOHoNwd3y9XsdqgaOlU7PzVqyMXmkrDhYb6ASWnkXyupbOERAqrMYdk4t3NKMIICQzCCAcmgAwIBAgIILcX8iNLFS5UwCgYIKoZIzj0EAwMwZzEbMBkGA1UEAwwSQXBwbGUgUm9vdCBDQSAtIEczMSYwJAYDVQQLDB1BcHBsZSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTETMBEGA1UECgwKQXBwbGUgSW5jLjELMAkGA1UEBhMCVVMwHhcNMTQwNDMwMTgxOTA2WhcNMzkwNDMwMTgxOTA2WjBnMRswGQYDVQQDDBJBcHBsZSBSb290IENBIC0gRzMxJjAkBgNVBAsMHUFwcGxlIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRMwEQYDVQQKDApBcHBsZSBJbmMuMQswCQYDVQQGEwJVUzB2MBAGByqGSM49AgEGBSuBBAAiA2IABJjpLz1AcqTtkyJygRMc3RCV8cWjTnHcFBbZDuWmBSp3ZHtfTjjTuxxEtX_1H7YyYl3J6YRbTzBPEVoA_VhYDKX1DyxNB0cTddqXl5dvMVztK517IDvYuVTZXpmkOlEKMaNCMEAwHQYDVR0OBBYEFLuw3qFYM4iapIqZ3r6966_ayySrMA8GA1UdEwEB_wQFMAMBAf8wDgYDVR0PAQH_BAQDAgEGMAoGCCqGSM49BAMDA2gAMGUCMQCD6cHEFl4aXTQY2e3v9GwOAEZLuN-yRhHFD_3meoyhpmvOwgPUnPWTxnS4at-qIxUCMG1mihDK1A3UT82NQz60imOlM27jbdoXt2QfyFMm-YhidDkLF1vLUagM6BgD56KyKAAAMYH9MIH6AgEBMIGQMHwxMDAuBgNVBAMMJ0FwcGxlIEFwcGxpY2F0aW9uIEludGVncmF0aW9uIENBIDUgLSBHMTEmMCQGA1UECwwdQXBwbGUgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxEzARBgNVBAoMCkFwcGxlIEluYy4xCzAJBgNVBAYTAlVTAhBZM1at5VmCz0RCN6zfRRtTMA0GCWCGSAFlAwQCAQUAMAoGCCqGSM49BAMCBEcwRQIgUEClatNpJhJevokCcdbzCvmLPTGKgCpqTcAqo75reeACIQD6mKXj7_E__f78hraVFpg1Bgu44k8zimIrwFpp_5YogAAAAAAAAGhhdXRoRGF0YVikfO8rVdpyQQi6kSeW9nX_AL5x1S2uJo-miNNMptJ_cHRAAAAAAGFwcGF0dGVzdGRldmVsb3AAIAHD_6Z6aDVTyCWGTr5iL1sw75sZBaEAhOFLuzZOlogApQECAyYgASFYIDfEBPorv4-89O5wgFc9X6gMT2zDoi99tDr5LDlOfNHIIlgggMlatCKXJiXo5nOvG9orCWZU6bYCiVYB-SW7WUHFMII", + "attestation_client_data": "attestation-test", + "attested_at": "2021-04-14T09:55:20Z", + "public_key": "0437c404fa2bbf8fbcf4ee7080573d5fa80c4f6cc3a22f7db43af92c394e7cd1c880c95ab422972625e8e673af1bda2b096654e9b602895601f925bb5941c53082", + "assertion": "omlzaWduYXR1cmVYRzBFAiEAyC5S3pcvtSpmTfNSd8aJRJCQ6PbN7Dnv_oPkZNMLeIwCIBmxCHXKYyGswzp_LwOxoL18puHooxudXWqDgtTvRomdcWF1dGhlbnRpY2F0b3JEYXRhWCV87ytV2nJBCLqRJ5b2df8AvnHVLa4mj6aI00ym0n9wdEAAAAAD", + "assertion_client_data": "{\"challenge\":\"assertion-test\"}" +} \ No newline at end of file diff --git a/internal/pkg/captcha/turnstile.go b/internal/pkg/captcha/turnstile.go index f3f8363c0..0326efd3d 100644 --- a/internal/pkg/captcha/turnstile.go +++ b/internal/pkg/captcha/turnstile.go @@ -60,6 +60,9 @@ func NewTurnstileFromConfig(cfg TurnstileConfig) *Turnstile { return &Turnstile{cfg: cfg} } +// Required reports whether this deployment checks for a human at all. +func (t *Turnstile) Required() bool { return t != nil && !t.cfg.Disabled } + func (t *Turnstile) Verify(ctx context.Context, token, remoteIP string) *errx.Error { if t.cfg.Disabled { return nil diff --git a/internal/repository/pg_app_attest.go b/internal/repository/pg_app_attest.go new file mode 100644 index 000000000..1b35ebe86 --- /dev/null +++ b/internal/repository/pg_app_attest.go @@ -0,0 +1,83 @@ +package repository + +import ( + "context" + "errors" + "time" + + "github.com/jackc/pgx/v5" + "github.com/jackc/pgx/v5/pgxpool" +) + +// AppAttestKey is a native-app key that passed Apple's attestation. +type AppAttestKey struct { + KeyID string + PublicKey []byte + AppID string + Environment string + Counter uint32 + Receipt []byte + CreatedAt time.Time + LastUsedAt *time.Time +} + +// AppAttestRepository stores attested App Attest keys and their counters. +type AppAttestRepository interface { + // Insert stores a newly attested key and reports false when the id is taken. + Insert(ctx context.Context, key AppAttestKey) (bool, error) + // Get returns the key, or nil when it was never registered. + Get(ctx context.Context, keyID string) (*AppAttestKey, error) + // AdvanceCounter stores counter only when it is above the stored one, so two + // requests carrying the same assertion cannot both pass. + AdvanceCounter(ctx context.Context, keyID string, counter uint32) (bool, error) +} + +type appAttestRepository struct { + db *pgxpool.Pool +} + +func NewAppAttestRepository(db *pgxpool.Pool) AppAttestRepository { + return &appAttestRepository{db: db} +} + +func (r *appAttestRepository) Insert(ctx context.Context, key AppAttestKey) (bool, error) { + tag, err := r.db.Exec(ctx, ` + INSERT INTO app_attest_keys (key_id, public_key, app_id, environment, counter, receipt) + VALUES ($1, $2, $3, $4, $5, $6) + ON CONFLICT (key_id) DO NOTHING`, + key.KeyID, key.PublicKey, key.AppID, key.Environment, int64(key.Counter), key.Receipt) + if err != nil { + return false, err + } + return tag.RowsAffected() == 1, nil +} + +func (r *appAttestRepository) Get(ctx context.Context, keyID string) (*AppAttestKey, error) { + var key AppAttestKey + var counter int64 + err := r.db.QueryRow(ctx, ` + SELECT key_id, public_key, app_id, environment, counter, receipt, created_at, last_used_at + FROM app_attest_keys + WHERE key_id = $1`, keyID). + Scan(&key.KeyID, &key.PublicKey, &key.AppID, &key.Environment, &counter, &key.Receipt, &key.CreatedAt, &key.LastUsedAt) + if errors.Is(err, pgx.ErrNoRows) { + return nil, nil + } + if err != nil { + return nil, err + } + key.Counter = uint32(counter) + return &key, nil +} + +func (r *appAttestRepository) AdvanceCounter(ctx context.Context, keyID string, counter uint32) (bool, error) { + tag, err := r.db.Exec(ctx, ` + UPDATE app_attest_keys + SET counter = $2, last_used_at = now() + WHERE key_id = $1 AND counter < $2`, + keyID, int64(counter)) + if err != nil { + return false, err + } + return tag.RowsAffected() == 1, nil +} diff --git a/internal/repository/pg_contact.go b/internal/repository/pg_contact.go index 7ee9a91ee..0ba3acb85 100644 --- a/internal/repository/pg_contact.go +++ b/internal/repository/pg_contact.go @@ -1522,6 +1522,26 @@ type leadRowJSON struct { Hold *models.LeadHold `json:"hold"` } +// contactOutreachSelect is a search row's engagement across every campaign, +// the same counts and times the contact 360 reports. One indexed aggregate per +// returned row, so it costs a page, not the organization. +var contactOutreachSelect = `( + SELECT json_build_object( + 'sent', COUNT(*) FILTER (WHERE a.sent_at IS NOT NULL AND ` + progressIsEmailStep("a") + `), + 'opened', COUNT(*) FILTER (WHERE a.opened_at IS NOT NULL AND NOT a.opened_machine), + 'clicked', COUNT(*) FILTER (WHERE a.clicked_at IS NOT NULL), + 'replied', COUNT(*) FILTER (WHERE a.replied_at IS NOT NULL), + 'bounced', COUNT(*) FILTER (WHERE a.bounced_at IS NOT NULL), + 'last_sent_at', MAX(a.sent_at) FILTER (WHERE ` + progressIsEmailStep("a") + `), + 'last_opened_at', MAX(a.opened_at) FILTER (WHERE NOT a.opened_machine), + 'last_clicked_at', MAX(a.clicked_at), + 'last_replied_at', MAX(a.replied_at), + 'last_bounced_at', MAX(a.bounced_at) + ) + FROM campaign_contact_progress a + WHERE a.contact_id = c.id +)` + func (r *contactRepository) Search( ctx context.Context, orgID string, @@ -1748,6 +1768,7 @@ func (r *contactRepository) Search( ), '[]'::json ) AS categories, %s AS lead_progress, + `+contactOutreachSelect+` AS outreach, %s AS sort_value FROM contacts c %s @@ -1806,6 +1827,7 @@ func (r *contactRepository) Search( var campaignsJSON []byte var categoriesJSON []byte var leadProgressJSON []byte + var outreachJSON []byte var sortValue *string if err := rows.Scan( @@ -1815,7 +1837,7 @@ func (r *contactRepository) Search( &c.VerificationStatus, &c.VerificationReason, &c.IsCatchAll, &c.VerificationCheckedAt, &c.VerificationSource, &c.VerificationProvider, &c.VerificationSubStatus, &c.VerificationConfidence, &c.VerificationRequestedAt, &c.MailHost, &c.ESPProvider, - &campaignsJSON, &categoriesJSON, &leadProgressJSON, + &campaignsJSON, &categoriesJSON, &leadProgressJSON, &outreachJSON, &sortValue, ); err != nil { db.CaptureError(err, "", nil, "scan") @@ -1907,6 +1929,14 @@ func (r *contactRepository) Search( } } + c.Outreach = &models.ContactOutreach{} + if len(outreachJSON) > 0 { + if err := json.Unmarshal(outreachJSON, c.Outreach); err != nil { + errs.CaptureException(err) + return nil, errx.InternalError() + } + } + if len(campaignsJSON) > 0 { var campaigns []struct { ID string `json:"id"` diff --git a/ios/DEVELOPMENT.md b/ios/DEVELOPMENT.md index 582e3d681..e1b69819c 100644 --- a/ios/DEVELOPMENT.md +++ b/ios/DEVELOPMENT.md @@ -34,14 +34,17 @@ Local service map: 2. Pick the **Warmbly** scheme and an iOS 26 simulator. 3. Run (Cmd-R). -On a simulator the defaults already point at `http://localhost:8080`, and `Info.plist` allows local (non-HTTPS) networking via `NSAllowsLocalNetworking`, so no ATS changes are needed. +Every build starts on Warmbly Cloud, so open the gear on the sign-in screen once and pick **Local development**; the choice persists. `Info.plist` allows local (non-HTTPS) networking via `NSAllowsLocalNetworking`, so no ATS changes are needed. ## First run -The app opens on an animated welcome screen; **Get started** begins account creation, **I already have an account** goes to sign-in. The gear button (top-right on the welcome screen, and on the email step's card) opens **Connection settings**: +The app opens on an animated welcome screen; **Get started** begins account creation, **I already have an account** goes to sign-in. The gear button (top-right on sign-in) opens the **Server** sheet, which offers three choices: -- **Server origin** — bare origin, no path. Default `http://localhost:8080`. The app appends `/v1` itself. -- **Turnstile token** — pre-filled with the dev bypass token `warmbly-local-turnstile-bypass`. The dev backend accepts it so you don't need a real captcha widget. (Production is captcha-gated and needs a real token.) +- **Warmbly Cloud**: the default, `https://api.warmbly.com`. +- **Self-hosted**: any origin you type, bare with no path. The app appends `/v1` itself and adds `https://` when the scheme is missing (`http://` for localhost and LAN addresses). +- **Local development** (debug builds): `http://localhost:8080`, with the dev bypass token `warmbly-local-turnstile-bypass`, because the simulator can't use App Attest. + +Under the choices, the sheet reads the server's public `GET /v1/auth/config` and reports whether it answers. A self-hosted server that asks for a captcha but takes no App Attest proof (`app_attest` false) is marked "Email sign-in off": the app never renders Turnstile, so email and password sign-in there needs `APP_ATTEST_APP_IDS` on the server, or a dev backend's bypass token under **Advanced**. Apple, Google and passkey sign-in work regardless. Then sign in with a seeded account: @@ -70,11 +73,10 @@ First-time social sign-ins auto-provision the user, workspace, and trial server- ## Pointing at another host (staging, self-hosted) -The server is an in-app runtime setting, not a build-time constant, so one binary serves everyone: the hosted SaaS, a self-hosted instance, or a local stack. Users switch hosts from the login screen's Connection settings; nobody rebuilds the app to reach their own infrastructure. +The server is an in-app runtime setting, not a build-time constant, so one binary serves everyone: the hosted SaaS, a self-hosted instance, or a local stack. Users switch hosts from the Server sheet on the sign-in screen; nobody rebuilds the app to reach their own infrastructure. -- Shipped (Release) builds default the origin to `https://api.warmbly.com`, so ordinary customers just log in and never open the setting. -- Debug builds default to `http://localhost:8080` for the native dev stack. -- Enter any other origin (a staging box, a self-hosted instance) in Connection settings; it persists in `UserDefaults`. "Reset to default" returns to the build's default. +- Every build defaults the origin to Warmbly Cloud (`https://api.warmbly.com`), so ordinary customers just log in and never open the setting. +- Pick **Local development** for the native dev stack, or **Self-hosted** for any other origin (a staging box, a self-hosted instance); the choice persists in `UserDefaults`. Picking Warmbly Cloud again clears the bypass token and realtime override. - App Transport Security: a remote/custom host must be `https://`. Plain `http://` is allowed only to localhost and LAN/reserved addresses (dev and on-device testing). See the [README caveat](README.md). ## Running on a physical device @@ -99,12 +101,37 @@ Because there is no iOS SDK on CI-less machines, the fast local signal for Swift cd ios && find Warmbly -name '*.swift' -print0 | xargs -0 swiftc -parse ``` -A real typecheck happens when you build in Xcode. Conventions to keep the code consistent: +A real typecheck happens when you build in Xcode. + +### Scripted simulator runs + +Debug builds read launch environment variables so a script can open the app signed in on a given tab without tapping through sign-in (both are compiled out of Release builds): + +- `WARMBLY_DEBUG_TOKEN`: the JSON body returned by `POST /v1/auth/login/confirm`. It is written to the Keychain on launch, and the push permission prompt is skipped. +- `WARMBLY_DEBUG_TAB`: `home`, `inbox`, `campaigns`, `contacts` or `more`. +- `WARMBLY_DEBUG_HOME`: the Home hero style to render, `immersive` (the default), `card` or `fade`. +- `WARMBLY_DEBUG_SCROLL`: opens Home, the settings hub, a settings page or Analytics scrolled to the `center` or `bottom`, for screenshots below the hero. +- `WARMBLY_DEBUG_THREAD`: with `WARMBLY_DEBUG_TAB=inbox`, `1` opens the newest conversation once the list loads `end` also scrolls it to the bottom, where an inbox agent's drafted reply sits, and `edit` opens that draft in the reply composer. +- `WARMBLY_DEBUG_DRAWER`: `1` opens the drawer on launch (Inbox, Campaigns or Contacts, whichever tab is open, or Deals, Tasks and Meetings when one is opened from settings). +- `WARMBLY_DEBUG_CAMPAIGN`: with `WARMBLY_DEBUG_TAB=campaigns`, opens the campaign whose name contains the value (the first campaign when nothing matches). +- `WARMBLY_DEBUG_CONTACT`: with `WARMBLY_DEBUG_TAB=contacts`, opens the contact whose name or address contains the value. `WARMBLY_DEBUG_SORT` sets the contacts sort by its API name (`first_name`, `created_at`, ...). +- `WARMBLY_DEBUG_SETTINGS`: with `WARMBLY_DEBUG_TAB=more`, opens a settings page (`profile`, `notifications`, `security`, `billing`, `team`, `templates` or `activity`) or a full-screen browser (`analytics`, `mailboxes`, `deals`, `tasks` or `meetings`). `WARMBLY_DEBUG_NOTIFICATIONS=preferences` opens the notifications page on its preferences. `WARMBLY_DEBUG_ANALYTICS` picks the analytics page (`overview`, `deliverability`, `warmup` or `accounts`), and `WARMBLY_DEBUG_ANALYTICS_ACCOUNT=1` then opens a mailbox's health. `WARMBLY_DEBUG_TEMPLATE=1` opens the first template and `WARMBLY_DEBUG_AUDIT_ENTRY=1` the newest activity entry. With `mailboxes`, `WARMBLY_DEBUG_CONNECT` opens the add-a-mailbox flow on a step (`provider`, `google`, `twostep`, `apppassword`, `appconnect`, `account`, `imap`, `smtp`, `grants`, `users`, `vendors`, `vendorkey`, `vendormailboxes`, `file`, `filereview` or `running`); every step past `provider` uses sample data, including an admin grant, a vendor catalog and a file preview, and `home` opens the first step with that data. +- `WARMBLY_DEBUG_PHASE`: opens a screen from before the app, leaving the stored session alone: `launching` holds the splash, `signedout` shows sign-in, `onboarding` the first-run questions and `workspace` the create-a-workspace step. With `signedout`, `WARMBLY_DEBUG_AUTH` opens a later sign-in step (`signup`, `password`, `verify`, `twofa` or `reset`), or `server` to open the Server sheet; with `onboarding`, `WARMBLY_DEBUG_ONBOARDING` opens `referral`, `role` or `team`. +- `WARMBLY_DEBUG_ASSISTANT`: opens Remie on launch. `1` opens it empty, any other text is sent as the first message, and `demo` or `demo-approval` plays a scripted run (tool steps, a streamed answer and, for the second, an approval card) without calling the AI provider, which the local stack does not configure. + +`simctl` forwards variables prefixed with `SIMCTL_CHILD_`: + +``` +SIMCTL_CHILD_WARMBLY_DEBUG_TOKEN="$(cat token.json)" SIMCTL_CHILD_WARMBLY_DEBUG_TAB=inbox \ + xcrun simctl launch booted com.warmbly.app +xcrun simctl io booted screenshot inbox.png +``` Conventions to keep the code consistent: - New Codable models declare explicit `CodingKeys` (the decoder does not convert snake_case) and copy the Go json tags exactly. Prefer optional fields so a missing key never fails a whole screen. - Reach the app graph with `@Environment(AppEnvironment.self) private var env` → `env.api` (the `/v1` client), `env.session`, `env.realtime`, `env.badges`. - Every list: load with `.task`, reload on the matching `env.realtime.pulse(for:)`, and support `.refreshable`. Gate mutating actions with `env.session.can(.somePermission)`. - Copy is sentence case, terse, and avoids em dashes. +- Style with the `WTheme` tokens and `DesignSystem/` primitives, never raw `.white`/`.black` or system grouped backgrounds: `WTheme.canvas`/`raised`/`fill` surfaces, `hairline`/`hairlineStrong` borders, `ink`/`inkSecondary`/`inkTertiary` text, `InkButtonStyle` for the primary action, `WFont.meta` for meta (`WFont.code` only for real code), sentence case everywhere (no uppercased labels). List tabs use `GlassHeaderBar` and drawers `DrawerWorkspaceHeader`. Settings pages sit on `WTheme.groupedPage` with `groupedCard` cards (`SettingsPage`, `SettingsSection`, and `coverCard` from `SettingsCoverKit.swift`); a list that needs swipe actions is an `.insetGrouped` `List` with `CoverSectionHeader` headers instead. Sky (`WTheme.accent`) is for data and live state, not chrome. ## Troubleshooting @@ -116,8 +143,9 @@ A real typecheck happens when you build in Xcode. Conventions to keep the code c | Stuck on the workspace picker | Your account has 0 or several orgs. Create one or pick one; a fresh login always starts with no org selected and the app switches you in. | | Lists never update live | Realtime not connected. See [Verifying realtime works](#verifying-realtime-works). | | A screen is empty for a teammate account | Permission-gated. Some data (e.g. campaign analytics) is owner-only server-side; the app surfaces this rather than erroring. | -| Captcha error on login | The bypass token was cleared. Reset it to `warmbly-local-turnstile-bypass` in Connection settings. | +| Captcha error on login | The server verifies a captcha and got neither an App Attest proof nor a bypass token. In the simulator against a dev backend, set its `TURNSTILE_BYPASS_TOKEN` under Advanced; on a device, the server needs `APP_ATTEST_APP_IDS` naming the app (and `APP_ATTEST_ALLOW_DEVELOPMENT=true` for an Xcode build); a self-host can also run with `CAPTCHA_PROVIDER=none`. | +| "Couldn't verify this copy of the app" | The server refused the App Attest proof (`app_attest_failed`). A development-signed build needs `APP_ATTEST_ALLOW_DEVELOPMENT=true`, and `APP_ATTEST_APP_IDS` must name `.com.warmbly.app` for the team that signed it. | ## What stays on the web -By design, a few flows link out instead of being reimplemented on mobile: mailbox OAuth connect (Gmail/Outlook), campaign sequence editing, and plan changes/billing management. SMTP/IMAP mailbox connect does work natively. See the [README](README.md#known-limits) for the full list. +By design, a few flows link out instead of being reimplemented on mobile: setting up a new admin grant, campaign sequence editing, and plan changes/billing management. Mailbox connect works natively with app passwords, existing admin grants (connecting a grant's mailboxes asks for a recent sign-in through `POST /v1/auth/reauth`), inbox vendor keys, file and pasted imports (`POST /emails/imports/preview`, then `POST /emails/imports`) and Warmbly Cloud workspace mailboxes; per-mailbox Google or Microsoft sign-in is not offered. See the [README](README.md#known-limits) for the full list. diff --git a/ios/README.md b/ios/README.md index 6f2f81b48..e9b334fa0 100644 --- a/ios/README.md +++ b/ios/README.md @@ -1,6 +1,6 @@ # Warmbly iOS -Native SwiftUI companion app for the Warmbly dashboard. Covers the mobile-relevant dashboard surface: unified inbox (read, reply, snooze), mailbox accounts with warmup monitoring and controls, campaign monitoring with start/stop, contacts with the 360 view, analytics, deliverability, CRM (deals, tasks, meetings), templates, team management, notifications, and profile/billing views. Realtime by default: the app joins the Phoenix websocket and refreshes lists live off the same `AUDIT_CREATED` spine the web uses, including org presence (who is viewing/editing which record). +Native SwiftUI companion app for the Warmbly dashboard. Covers the mobile-relevant dashboard surface: unified inbox (read, reply, snooze, review the inbox agent's drafted replies and send them as written or refine them in the full composer with its AI tools, draft a reply from the thread with AI or ask Remie to summarize it, and the web's sidebar: Mail folders, Views, Mailboxes, Labels and Tags as sections that fold and move, with Favorites, hidden and reordered rows synced to the account through `unibox_rail`), mailbox accounts with warmup monitoring and controls (every mailbox shows its profile photo and the service that runs it, from Google Workspace and Microsoft 365 to Zoho or the vendor it was imported from), campaign monitoring with start/stop (each row shows how far through its leads it is, the campaign page splits its leads by outcome and charts sends, opens and replies over 7 to 90 days in the same scrubbable chart as Home, and the drawer filters by status, manages folders and sorts), contacts (each row shows the last thing that happened with them, rings the avatar on a fresh reply or click, groups under letters or dates by the sort, and swipes to label, add to a campaign, unsubscribe or delete) with the 360 view (an outreach journey from sent to replied and one-tap email, campaign and note actions), analytics (a scrubbable trend, rates against the previous period, a reply funnel, deliverability rates against their safe ranges, warmup against its ramp and where it landed, and every mailbox's health), CRM (a pipeline card with the win rate and each stage's value, deals you swipe to win; tasks with a ring for today and a check that ticks itself off, celebrating when the day is clear; meetings with a live countdown to the next call and a join button, grouped by day), templates (with their merge fields and an email-style preview), a live activity timeline of who changed what, and settings: a hub showing your workspace at a glance (mailbox health, the week's sends, open deals, tasks and meetings, members online) beside profile, notifications, security, billing and appearance, each its own page (a name card that saves in place, a password change with a strength meter, every signed-in device, sign-in protection, the plan with its price, renewal and what it includes, usage against the limits the server enforces, AI credit spend by day and by feature, the other plans side by side and a referral code to copy or share, the roster with who is online and pending invites, and an inbox of alerts grouped by day with its delivery switches). Realtime by default: the app joins the Phoenix websocket and refreshes lists live off the same `AUDIT_CREATED` spine the web uses, including org presence (who is viewing/editing which record). ## Requirements @@ -11,9 +11,7 @@ Native SwiftUI companion app for the Warmbly dashboard. Covers the mobile-releva 1. Open `ios/Warmbly.xcodeproj` in Xcode. 2. Select the Warmbly scheme and an iOS 26 simulator, then run. -3. On the login screen, tap the gear to check the connection settings: - - Server origin: `http://localhost:8080` by default (the app calls `/v1`). On a physical device, use your Mac's LAN address. - - Captcha: local dev backends accept the pre-filled Turnstile bypass token. Against production you must supply a real Turnstile token; password login is captcha-gated. +3. On the login screen, tap the gear and pick **Local development** (every build starts on Warmbly Cloud). That points the app at `http://localhost:8080` (it calls `/v1`) and fills in the captcha bypass token local backends accept, since the simulator can't use App Attest. On a physical device, choose **Self-hosted** and enter your Mac's LAN address instead. 4. Sign in with a seeded user (`make seed` creates `dev@warmbly.com` / `password123`) or register from the app. Password login is two-step: credentials, then an emailed 6-digit code (visible in Mailpit at `http://localhost:18025` during local dev). For a full local development walkthrough (running the stack, the first-run flow, physical devices, and troubleshooting), see [DEVELOPMENT.md](DEVELOPMENT.md). @@ -23,13 +21,12 @@ For a full local development walkthrough (running the stack, the first-run flow, - `Warmbly/Core/Networking/APIClient.swift`: async client for the `/v1` API. Bearer auth, single-flight token refresh (refresh tokens are single-use server-side), one retry on 401, `Idempotency-Key` on mutating calls that need it. - `Warmbly/Core/Session/SessionStore.swift`: login (password + OTP + optional TOTP), registration, org selection. The active org is server-side session state, so the store re-POSTs `/organization/switch/:id` once per launch, mirroring the web's OrgGate. - `Warmbly/Core/Realtime/`: a Phoenix Channels client speaking the V1 object-frame serializer (`vsn=1.0.0`) over `URLSessionWebSocketTask`, with 25s heartbeats, an 8s reply watchdog, resume via `last_seq`, and jittered reconnect backoff. `RealtimeService` maps events onto invalidation "pulses" that views observe, and tracks org presence. -- `Warmbly/DesignSystem/`: the brand translated to native iOS. Slate neutrals with sky as the single accent, status tones matching the web (emerald running, amber paused, rose issues), eyebrow labels, thin tabular stat numbers, presence avatars with amber/emerald rings. +- `Warmbly/DesignSystem/`: the marketing site's design language translated to native iOS. A clean canvas with hairline borders instead of shadows, near-black pill actions (`InkButtonStyle`, `OutlineButtonStyle`), medium-weight display type with tight tracking and the site's two-tone headings (`TwoToneTitle`), system-font meta text with tabular digits (`WFont.meta`; `WFont.code` only for real code), sentence-case section labels (`EyebrowLabel`), one Liquid Glass header for every list tab (`GlassHeaderBar`), one workspace header for every drawer (`DrawerWorkspaceHeader`), one scrubbable sends, opens and replies chart (`TrendChart`, with `CountUpText` and the staggered `reveal` entrance), sky kept for data and live state, status tones matching the web (emerald running, amber paused, rose issues), and the site's photo frames (`PhotoFrame`). Sign-in and onboarding sit on the brand backdrop (`SkyBackdrop`): the site's sheer sky photo in light mode, a dark sky in dark mode, with `WTheme.onSky` for what is drawn on it. The launch screen and splash follow the theme too. Every color is a light/dark pair in `WTheme`. - `Warmbly/Features/`: one directory per feature; each screen loads with `.task`, reloads on realtime pulses, and supports pull-to-refresh. The Xcode project uses `PBXFileSystemSynchronizedRootGroup`, so new Swift files under `Warmbly/` are picked up automatically; the pbxproj never needs editing for added files. ## Known limits -- Mailbox connect (OAuth/SMTP) and campaign sequence editing stay on the web; the app links out and says so. -- Sign in with Apple/Google is not offered because the backend exposes no social login endpoints. -- Light appearance first, matching the production web dashboard; colors are defined as dynamic pairs so a dark palette can land later. +- Adding a mailbox takes an app password (Gmail walks through creating one; Zoho, Yahoo, iCloud, Fastmail and other common hosts get their servers filled in from the address), an admin grant over a whole Workspace domain or Microsoft 365 organization, an inbox vendor's API key (InboxKit, Zapmail, Mailforge and the rest of the dashboard's catalog), a CSV, spreadsheet or pasted list, or a mailbox already on a linked Warmbly Cloud workspace. Bulk sources let you pick or preview the mailboxes first, then follow the import live. There is no per-mailbox Google or Microsoft sign-in, and setting up a new admin grant happens on the dashboard, since it needs the provider's admin console. Campaign sequence editing also stays on the web. +- The app follows the system appearance; dark mode uses zinc neutrals on true black. diff --git a/ios/Warmbly/Assets.xcassets/AccentColor.colorset/Contents.json b/ios/Warmbly/Assets.xcassets/AccentColor.colorset/Contents.json index 40ac7eff5..aca065bc1 100644 --- a/ios/Warmbly/Assets.xcassets/AccentColor.colorset/Contents.json +++ b/ios/Warmbly/Assets.xcassets/AccentColor.colorset/Contents.json @@ -1,38 +1,38 @@ { - "colors" : [ + "colors": [ { - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0xC7", - "green" : "0x84", - "red" : "0x02" + "color": { + "color-space": "srgb", + "components": { + "alpha": "1.000", + "blue": "0x2A", + "green": "0x17", + "red": "0x0F" } }, - "idiom" : "universal" + "idiom": "universal" }, { - "appearances" : [ + "appearances": [ { - "appearance" : "luminosity", - "value" : "dark" + "appearance": "luminosity", + "value": "dark" } ], - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0xF8", - "green" : "0xBD", - "red" : "0x38" + "color": { + "color-space": "srgb", + "components": { + "alpha": "1.000", + "blue": "0xFA", + "green": "0xFA", + "red": "0xFA" } }, - "idiom" : "universal" + "idiom": "universal" } ], - "info" : { - "author" : "xcode", - "version" : 1 + "info": { + "author": "xcode", + "version": 1 } -} +} \ No newline at end of file diff --git a/ios/Warmbly/Assets.xcassets/Cloud1.imageset/cloud-1.png b/ios/Warmbly/Assets.xcassets/Cloud1.imageset/cloud-1.png deleted file mode 100644 index e2c857a667f4785be43c86e16c37b1950adcd5b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 517807 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

q}pDTPxe>W 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

J^dWS=}9`CTVu>V=K@{Q+Va|->8l*b~ z(O@HkZ@h1y5YNyVL+$gAk;gd4#1P0RjWz+XZ83er>bEhYlLtBT*y~sG23;qX6`?KU z!!+`tsoG=i#5F2Q`=|?-CU)Dq-3Bk_Xkfbat*hM*?aAr?<&XF8yY;s28sqCWqqDkb zEXJp=NdY{4IUI3jZPhq>@%;0Pcz*n)pU_==?dv92PoMAZ`=T$NbhmQ()bpRq0>f?beH@7AJ=bz;!Raqt|2dUlo7~G^i`@fh{&(FsrE4ruG(D3rF2{*#fllV9RCUWh<61F~D*;*+eLc3Qmf%zXRey$nA0#T5($E2fFDA0;D?SFA zXhH3?qYW2FbI;Nl(qNlwORJ!YKe*|)$S*F=HbDlGyuo4xpuX=aG4|r|Q|F#qoW`pp zrhK(vdc<2cH+0mSe(;aDfDjbc7N|;m!@OkS%FX;D$B=i^7#rx0^J1gu)+TmW9Zp#n zsD_bcQD@RD)se3QMh48kTq!L%@u_B3SZgp($E&9YgsHvEv#H*=XY_{!5tBD>Gc%LF ztFF~1qX|IMsNw+M5s8^()=NpIg4>@--!{IbMRt$@$7V!xcCGd?=)uiOByz2^E540a z({5t_uRtl;~M9%F7TUqWEd4M2(qwo0dbj?+ep2_|cRe_{ z>v_+korG5!xcB|uo6*WAx;yT^t6w~EZ~yOK{r`2J`FR{4K!3jG)4#C$rf>XL{lydK zxFcqT`%N7y!W2h|j;NDdRzg1D47caUu3fl@22Z*jbZOO#dXVcbpS$xos9zYm04|k7TTBaeKPWM>2b9d0G6G#2K-_cLbvyiZKcmFRx z>o0X*{ZGGK1AcsYpF1oT_o3O*qC20owWI?CgxSx*Z)aoyR@K&yEAT zU!RIU#EC9i7AcPs7;fQH+0~E8I@~TuE6e~pYvPwQwPXTk^icPL%UMrga z?O(ZabiLa>Jo~X{kGiezVLS11|6%8Uq?lqKP`9mwNZ77ACK-y?tWXTV^NnwK9XG4< zGUH&Ud(r*(PrBXx?va1@qil3z2P~pnINIPs#+B|_U-boSl|*DzZnDw+_V<6o1U%iy?PP8K|G zVclFuUSlXu>M>pHtiLiVK9i zJhMbqa|njM4svJt%ABLduka6QnHq=JI8i-th*_UdcP2rP;~WCmCf0g@PKz@zTImt4 z-&k%%T+d-RLUIPnO~stWBWCmWSJUvcwIpC?uorC3nZDL*KanvFzlsQZUc5F|$rlM1 zDOv-Me(*>Op%q<6f_iJKyp0-Xr*ruWj_deCO@m+s>ZrF07s41^G&SCC&N5PyfVE4^pxvMljXsP{oPUt@9{pXi`R``Pza%?&r$3%XStW4TBZc*6oh`Qt4t#G0fU zW1u-yJn7d%|7-$r$6olQeDtriP~c*L-8TJnl#&e6WH)~nO+o|f5!?9@q(=m3>$ZpU z@*5lUWy5czF+t6Yc54Wlr+Gz=ID9k>f^6fYfiFhJROUr4v!E{Pwo;pf z;%B*_$;(F2#)(6S(5VFkb|6s7Hza7QCUNtm3A8MA7vCVr#{%h8+p0gt$-X$v3?znf zt_1@E;00~+%>s7mqJ}Jo3!K@rW*Pb$Md8h>h zQmJgzqRW5-sakwN@{o0j&eSM>3N;+<@Z1GX6YO~pGv$DK0VM%DRyT3PC=eUld z<-Q5GZ!$BT_S6Tzi`B2+!VT8zl+6x}<`I`jPEPX`ic{TV?|$5dm`t#9XK9BuJ;u`L z*Aj33cNqg59Bg-2uRq+KW=?!=o3RedBHpaP2Jmi=I19WH+Bkm>yd&P&^xZw&dGZUN z`xhn~>^k_^pZ*MnM|^pK1%#jc!dG?YuPk&Q_pSf7@1A*U_wEyG?Ca>eXI;M1E&Z2Y z=^p;ZZ=PKDZLb1Db{|c%{FD3*%>FQ+NZ7*bQ$b z-gII%aG_8gxHxd1AHeALrX=-86COjeAnD0p(l4HH3zK(Y+~UO_YcV5zA9>0XKP!lO zH-2VeL%f9HoY78xZ#HR38X27FPWque#%XeB@=2WFnWpJ$gsvJJH-kU#RBm!@3kZkI zZHhK^#hQ3@u(idRQ#zi@oUyse^VsG7i3i@(Z=&liuJJ~w+kD=A6SmB7l!ghz3APx} zoRNxocdRS^gSVG`f0P!6+dNlL;HZU zOv#M&Bj;H@Nx$kG>Fby9q-(s`?fh9N5XU$3%)FJ&5hM4K6P;ppymc&qcpMd=;yB3n z>MM@@aZHVim-nbJ*YM%e#A{c7Z+h}i-g0z!`N#V!N2j_w@BE?8JB9xsMke3z#$V?G zx~*=Vbk9-sZ)ZZV$>g9`Ar8P;JJa>6Yu!8fn)oFauDc@^x7pQq>&`>n=9C-QZ@-t9 zUc3(5x;oka?cbPOI@wKb|L7NY2M;~O)k7RjI&q##zOb;pwY9Wy>J%3>PL;QH)cVL( z&kTHrx{0isA7AAg{KWIgg0}@;9q`bpC#<*t-# z0STzR%5vaCQN~2CqjQ1TowtNese|bQ!c*c4O+SycV;9CGo=_9mT*q!9E{ml99m+!cMYW#);td9KXvwWcmHR6dcX2hKR>yH)vwoo&v*78`=wtt>EHEm zKY8}ECR^`iqIAdU$erx+BiyXqf2nsu(gf2(sN+ zmuam>E+Clye&bYAe4@ao{Pi3=U{#*XImrD0#yo0-^G^i~KTt$o6OT=hy88**+5s&a z`D68+=raFvF6&m;MfEOZu*apk9I46yhs8MFo!ZzB`^_$BCk z9^w{NyC!K1Ee}KDSI*%l_@Oa&kMZZrbR4E#L#IL-M~-NC$-lZZU7s?A;etrii`@uZ z4$0jTp3f{bX3c2V{N_F1u(OIEa9Sm>R(?e6UMd;2@nbw7Lg=o8*k zI_-DgJALf2t$t^+-aqi}NBd9u+^=BEHu^NV+I0`VmHyzd?jQV(zuSG?Kl=W@Ti@#* zS^e$q?3K&i+C#VSzV38)l3fTLpS$lS*Sml84c{{P+MoFeSU%hR)OWpla?f9US@+U! z`adV#i|_7s-u3Gfr}i6MKKB{l`BJuuqKkj%x&1?Ld1H6)^FN-g4OhEgeeExHce3+n z<7>XSyZiG#ms2CuX$N;KU_AZ%CkdadPqc?#|-=-ZpB#!UmCL zKK{+!_I#fcU0-Dw?Lf?dnFBZ$5ZVAnt;BsZ6Mtd!$o4i*(ZMaO$-#i9-8gw}ri<}Q z8laaB39F2OHW)q`qzh{>1I&Vge$gLknYMoN6gujVJjaNqU-G0o_Av}^!8gwQleG1Z zJ?RD}4k%@$mo$?`aK`zSm&hQr#xP;#HL?-LU)<2e+T_9D$Z+M9r}9kmRBq~1(XfGJ zAhED~{+6Tu;$`-SE>AlygY8bP_vfE^3+)%Xpj`-1C!cd)cl7>;7rIqz+feSV4cO*7 z9CQ*_s|B`pvQ#*2U<12$5st}*L08IPtY_wN{3J{mfAza2AS0OF2Kr|aAvo3r;~3w( zCta*%QtojJQ(l4kRfd4ddn|kH@k?01kNk(GVVbd9d(sa~ zn$j?SgqtrijB)S%RCKqu_BPO~QS({E|9-N!;H|8UF!+4*((QV?HN8Iof z+0#E%wD51cArHx?ZtXte_(YyqXSBmx(QWe$@LcL|2_%jqm+)LE*QLtU$nC0_!N(_`1>&FRj+sR#=o^aquLY2bNiIr&8}z&#l5N zxObQNTJYZLov?SP4--$bEC!VyTLzO1^O4_LdV|_~<2v32bH-^&I9US4j-Ehqq#;$+j z2*YRm3>Vk(NxsH;k6q|9FLUGG>`8qXhk*(*RbjN4>@2@(N(HtbUwqZb15?XpQIE2oR)>>;*WC}x~jqm`AckIPCfizf5 zhd3C;@h0CLY^+tggxrTkOy`%rv-NXl`)u&rVaEq|sPq@F^#>0;)UWg9inssZ_w~2& zA%JIm;TQGa_N%|rz4h!Z-4k3)*;LB=)tHZ|MoeJ_>TMafSbTc@SQ$TLjqeoS$2T+A zx%}o6|I|zSORxWx$qHM?x-Bk#%Fa`TDEo zUcU2{VLn`UaOT6Lc^oDqLrs}O9H$+7V4=#S79nrw%g$Xs{UHsvrGV}G&^Sa6UNY$7fp26Ycy0DF*e9PS$HE332 zB1__yoJGRjWN+RJhic_b#}tqIB}ASzLql99xC0G#4>TFsP-^tA{ONE3b!6bAD48ko z^DMfXV8oXV^AJr~jj42LV9LMJ9uQ(LJsSK3CY)#N);<#3tfP|fF|Fe~gvQXKH=5~K zikP^b7XY$M#PJW*`S8Hq2dxv^+dFbGfh;p%bmPbo$Fo>)JIObIH3z(Ck0M<9+mUfkclwlZC~xTBH?T3GE@`5k^v;7_CIEeJyztR2DmwjD#e)oL$4i@tM%xizPyZFQ3 zG5Ok;|354YJVIUFnEbJidC_G5!M81}eAJ7OM{?c7$vFplPf2})r%Psvo-}z2n$M9n3{(C3;?|)~vbYXd6 zad~y&)EehsR#(_Gy12Z!%Hm zfG#j)JBE^!&e$*U^^5;FedB1xI-y?N?8zXx|t{&3&P&}c${(el-4Sk`Kd@A>Rn0V34#Ho@P`6muu zv-+Y;g0FvgR<@-pK=o#~@0ppU?OX*@gC(H!bsHWTHyQQC z2Ro%WB2?SJ8Co2|MZT&~z`i%bTzxki{SN2|j6rV}|Z?gXl1_CRLkKlkW8!dI$dHKTqIo7V za(WjRpjsttd2)Ak%bzsLF40y^O`;6({G(8Oq1X6}zKGEHAQ^~@R?Jn*_EYZSnWaDK zZBhWe@@u-pEZT`yeh_OxHnYQ`L(y4SnjN_oVOTIp+@v2Ee_@l!u}{NM-&ogZRY_HJ zmqBB}#?8UACq5S0eT{IC1Gl*QGS~$KS!53x^G4PdaPLv|JQqbxog6N8D_3{A-+sjp z^yestE2qwNXX)?Xe&*b;^8mb=Vd0?Of6hFfww5NDr!9LQm@!5Eb${<~^Es?(cPk6F z&%boF+x(9|J2|tv-QDBO>wMmApB)M-&%Kw)25swE_8^>Kg1Cy^BMsb^>)S|o8q_;Q zlVi47--UO_G8d3CNtqm7*`g*f`a@bAeNbj}n?QFT5TPpEP?2qyMHa`Os>o$2x5`$& z&CBp{{X6z8Y#RY}84a!-d$lu2KQx!S3XEOp57Df!)_5j)5^aN1&Oi;7v-wrUp-wcz zM3C=_z`M5!pWw>|N8Br5C6q6QzqL@}TW9>Ltv+NSWyvj2Woj$JUA`#h1rf&7~%PaocHHJ4{+dy{Ez1g5@(B+|?SCk4fPK($0PP`1(%#(h) zrExPlc;8@xBQ$Q{*lwETraZ^t`uSA)WTj+^n?pBkYdW>DctH@H>B4iD3r>OHR6d5q z+T;lcc|;1j`?Qr)$&YQ5K#LmL)uL^y-)#pxH?XxMVBl1n=l(jsCvWHGw)2#u<)9aV?M8_Mol;kD}4BrzZox-d*~R~YR+W;rW3fdKjCK{ z&X*J9$`sGoDjnLv$fqFvHK*s8bjjDz;?X{5+Sn7u#FM^;7yC3t74Q1?hOj9(*VL*(Gij;n*ej{&?x`^PYA8 zz|J2Gyy3t87bX;3d`7qDwBC6U!kRr+#~NZd%%DdRvA8_hE{=+BT#fKNRwzs(xd5w**Zds~!xFBWXep>5zEqXKh z@!pyl4&|o4cvQ|VFlA-Gqx^|pTU%#(fM4_lYZ=SaCvoGpTvOJC$WO{t8aL<@?$Rw1 zOgUSA^}<44l$pjcCpcv%PbJ54AU)iqH?(i54=4%Y@;25pqcnmIhR@){4SlUMQ!>Fd zh6zkuVd5tZagz7aOWav#Hox(UoFn6;BOhfi!oJCLLahKSqXA;C>3~q9oJgc(R7VpM zXB-c4Gsc#VhJg|(cpQ$GLbzMz6@G@n)vaVy+hk}uGda27ZC+;!2)xFN&WM=sfp5l9 zvR`sC8CesyheYeha|?#fP`pxfl!j>|xWX@Y6*YVf`U1g**WB9WulZ>&5mwB|ppj|6 zbh8u>W8-ovKl4R4+;vS0*>lgnLELqKKUMjF1;FKXZ{lW*$q}jP9;rzy!0hs+Q0eineK;P_lw;Y7xXs~niSO) zl{QyO;HQ7`-;cr!ztOa!zR~Z4>9TS8kT&jUzs`hqi%-y5!XN)JAH_M7H%)%))vxNg zx1#%_U-qSw?swnbcOUlb2?wrOnPwd1#fP+~rD{wSdXCnyQZOhlrDk>aQbkMgy0_5V z@E^5Lo}fB40kI;`X$H0?*j!%Z!oh}qWu>^Rx4$l!&*CdH zE4m5K?5*}T;<0C1;3xsj2z^q9tAC(Ym+o+pb3 zW+Z+lMmvksW{;k?rCPs`8JspkPd3s>I>NZcjKB7osS-U-TRy@|pz$=O=X2bUAN$!c zhq1yP7EXdItj-O8J35-oQtE_TM_T;$D@xnBV>MtofPdrL8~HW_8Vocka$-*E?uZ&>6xpN?)# zpm^hF945_ie8V)MZ5e1c)7r-m&I(I>q4eZ0ypHLQ@nR32a!7ovGy9lU@-1GB{A5fe zpW#nG@uizIgps#;n@3%aJ}14gyrda)4W3?J1j{6R-)Ia?C# zYK3Du^sD00x(Z5P=q@wSDN4}1K-eAp3(p0or>Wy^OQw{?r3G1I}DcD z?Y6r$-Me&ky1K;0qz6aS&09}Rc@adjP1DVn6aK+J{pRkU{Ht&7uR-=YyWOr|XRtnf zv|B96b4l;g2Fx-}spMpwLTXu*w?D8+uP;4I-Aq>l32jAK%0gY`%9C!5%Zcyf7WOqJ z6w?!@IL@%xJ;Hj(ou|12nlC{7!r%Ivlb8O=Z**^b^$$!w>P2^W+1(;vpITgATU|Wd z+mo~@&;*ny<=(GS;6M!ay9`h0%S_V8wpyqT`mpE>msLzNy|yfZA2^oEkmgLEbq_f$ zsNKgn#Sc(AwuP;Ho38UVzQ!4bnI=w0jLrvJDS%&Z)(u1Vs*A^72B+ib;sres&KA&- z#h54Y!(ZX!9z(-*YsP$s|GeG_8sI%^%%N@8V|dgwZzc{sNvG@(pDB{SU{kSS>evF>xWb*+8W2f#-%^@l~uhQL%WyUd9V*X zPdIGx{^lBE-*-L8g2Hb1E8p|4`wcEqebMKBe*g35Z|ff6D@uM*&`-2eAsc5ly~K4gtTK5#*vmYP#$-J_ce-RqzGtnPW|PWS7tdClYwF1LC64}5q3 zVSo8Avxx9k77?DqExD)%=hghCsT<%q7&qZceAEDa@ZLQulIrIxQ&;Q!RNxjnj;Noz z>}*(KyEKlfe_o2Kep2E{I#PQ!SgD~}>f z`Lv>|8^y&?5vpP1f&?xWK4PK4zMRZRIRF4a07*naRLyk>8a&cJ9;}oQq*;&aJs1)z zy0uUcF|lZ&yDls&evADIwTE^2(@0MFLr+>oPzZZ1jn<-(gW2FzyKw^(2d^^9RwFbl z?)V8cMSpTz+lM zo$Nr-4{5uyMctUvUBamYUiNU*tJhhcQEBwil{0Pw8^i~r>IvN0D=1%-5+d!=#AWiJ zlJd>Xgtc)Ye#RMy6f}qN6Q<1KH?K#^Gcu0crJ?*ak+)%*gvDRCVba&`6PhW{K>anr z3x7gQ+?7|{;{}9zQ$6PwJxqLQXp&BNyqRCZlK1FaV8V;wKvTcSNW4t89Gq(3XSA6K zhb~5Htg0`G=N)^E@`rTlpDoyregV(wL`X z+Tky{6~FK`55s$85s#&NV)_$cly&JZ@n4}J3>|1ohVPm#TDAH(OL#0``WaT>pEp*j=FeRerkp6N9X z=rhPWAI{=isC)ZYj#f{cI@-Tdg6KaQy;B4j zeRsb_tMzxj?MJ&UI9gnzJKz(F3%e&6Yt(yCjt;D{qUX+k8gok0ibx&(Z!*5L(n!ZI z{J5&F!R;MrU{eeOLEvg3}IQ@7pTeeXB^lgVFuEqDDa-_1+QjQhLwiqrT+RCf(L9qaPLzYLR!dg)0#I>#ChDp!rU;i*xX_UMFm zP09=QXj9sx-7wip`H2_5=uXN`oRs%GG#+`Z7c1gNuY~h_gig^_E}1}UAB-I{&hpUH z$9UmI9Sq&j3s1V^C!SA?{xKvViNXy`TE$3fcndu=1Iu&tGmaN~g2Rh2VMTw=?V1Uv z-|P;maBFNV4&@wtX-Y>~`|jMX!2z#%ua|tBpetR|ZE`ii1;+&hRu$M<>2!rJ(-FTF zm+mSz$NsZ)2H7_<62icRkc9zjkM@G<61+1H8t@v9Bduo4k7h={I2OC&3manF!BFm@ zY%0ALXqF2P;Z(UDlW*CtM2Zituc|oa$Fzp@%g?mjc++$Xs4s-g@NnOoa}qpRI3UlJ z4HkIz_W2Ae)lWBg5};{e*EY1+X}f&H5OT`#Z(6dWt(|`H3ZH6xKNpGf+2*%>$G7zC zT-wEdVwPu$uEb7$y2EDV_t(~MZ;ti>0rhBacD!=j1p#13VFyT)H zAu4!HxsBjNrY7m**kwP)QH97S3ZEG97LVkZJTl8@?XOQzHqxMCrJ z{MM`E${t+9*X)ehY+;e3k2tdjU7wFbaG9B` zaVg93lQ3mn1qO^=D6anEg%_-aGcF(PG2zqv7)QP|WB=?h$O3{e+tm{`*1_;59n+eB zyLc>BEYvs#4O2a2*l5&cFcmU;wwDcdR9k+Nf zp&?%ELer2Jbacj3(PFntLE39aAT)-A^MGszWM}5(2}i7DGm5N1qv>j>zhD{LVO$x% zXXgP+ylGXfcuZNOLzf^MWhy;v!sJ!nh7PWHjXns+}suavAGYbS?TNZt{n<=p|2~JBsqIxUj-HG28k%PsIn7-uJ%g!llRh$qVoA zPrT?k{onuO&+Pu;Kl@kx-}-0Y(QPfA;=)4i>^aRn1APAXkW0>%7x<(BqFH5J*mI}g zbtde*#c#bNFP^Gr7<2dEVz+Nmdez5ZaUND-v6o@gM(_ z$+_43Sog)B^BI#TUi-6?^B?!(?%pr>?8(l%AD|vzXPf!f!php&g~^e}>v*}j!(ur{ z%!YFC?Nx2OvusFUcxr3G$X)d%3xc!72bmhijB;&xRG9!%#?f~(FgD_wA^lCqcqwzk z@))i?MjY`I*Raq|oH0zi;KUs`jxWu)!;5L@7Zd-uh5Bg{U;8+Y?wB!d{F0_H_T)Q$ z;*R6$uNj9YuCQ<^V>$&!Nf;LoDC35YKjkKlJ5yW)D4BvI&GIKo(xY&&69?m-YWBEs z9G{Eed9P!ghUg5pkW5cx49PUF=4|}pqi1m3>VO_q=fj>5lX7%k`baO-7Qv5;xhM_6 z1JxUWnUi`2*#8)EW? zitDh*E##>V?v}BaWf(r?C?cNDO+2#DP1t#`a0sq9dlSZu+}-q%_j4!9R`-kF`(6FU z=4$tXKmX_ZUpjTNd-&uzzUb-(5c_WUDb8C~s${7aZ4ZL{KfTRN(VpIHJ_UDh|0#d= z(<^Y9DNCE!PP-Rey4d}>2j1Cz_@#@JL%xr_yS~(2IC-jj@mKs6?nU58CyNOCY#Cd* z?HmIw+P@`U_;4>my}V>|f}ePFVx(a{f{m#U8&U}@NOV!_rZ8)wv zWMCa#G^~YGb6^}Rei5nw2qq>fj@=-2wCQ;f3Wgj~8CpCWo5A!fR<{b#X5pzELXAtD z@?CCQ5K?k`4*e;gBf+k5JxpX5Exb6dZqoOn6&F0Jg0^~9VO%0)KDIAj;1heNz&-S= z-(;EXI*0pJu`{4$z}p01zMOrU8lMB?q^`%#rA@Wm+oRl$XdqkMCh8gyJ0~R8Vtras z327i9tICDySPe$&S_xxwd-;=Y$;~wJp5bFLLIy*Om)u8j>}G|-aGw?_4LO|Rcax{m zC#dif51Q%NtECUkgcpxPoY)P6pIL`4UlfFs3riR~t$M9AbM&qhj@<`-kDHcs*qTUu(yLQprs={^(T&W(HGh_4 z&N5kj7F4<^pMuiI&nLJy#3NINjpN`vmM8It@|g|dl=M{X7m(;{)wYdv4{T*FrCQc(GPolJ}h}mo+vy;asz+T4iC|j zK__RE{N#CzD;-VviCq|;)#;jGkS|wq_kCkI_z6P~>yW48GvniOneji!M}B6su}dpF z3rm&*Ox|#!G`gCRRN+x3;TNT9BNb3847D$ayWR&;ZE6Psak#jyodc%{b_aqq7@<&v z)CHQ}%3HPDwB0qpAQ|>?I|Q^FGEZE1FtiWk+w}z3BB1T=9LtgR#KwBI!vK5Tb&*{r z-gDrc2R`0+ut9|xyVu}RoY1hNG2NRP%hAFt*sO&X*%!aWPkEPnz?fjJx znQDa5fhq&ymmKj=d8S<~$Z$9M;{CxZ$IqcJWa*Av{&PF78bKntzi6nj+uhG%FwI#0~O5b&Kve zF7{fH67aYsv7q)m=tKO3=G`ZTiBILf%7toCX+p=lAzD6%J0jxV+1@Tb*0?ZmV`J@T z=fYzu=+ShG>jp1en|5!0p#Q#C{c!&mU;gs`^2P~1g}BDCgq7~{<_eoj=|eo5hOxId zshVwO{*%3VJu3;%FGZ0-6R=Et2_WOo$ zL!>khLBB!Aq@$2&<7&WH_BkBWt;yQpkN(=3(M@ABt`GSuyaC6tHP*&EVX+5}`LZN@ zW-`HUzRiE+g_ufz@p_T~j6ie02`vN0cHQC0NkQ?6oP?31{@TgWFyL)*j5{`=BQ*cC z`!$vd9sAEIivvf;V|rfEI37o`ySqCJEH>MPvoTY3Kq44u)dM}}5M?)j1gwpsl#vnp z4q*)Gmw*R%@dq6z)H7a*obt5)V;zHQNEZ2y8yjT6EWEmR;drdfpo^hnb&D`(7gcPM zN{V_YSc+zr&VWCVERJTibI=j^A1d5XMrsTEfn4KBY;=9Y7^y*L2=$t)-j_Lhkn&8= zR=D4Q#m9=oaYK$KSaSS{M&A5m=*vaP=q_%vyU)#Adz*Z5foxv9(l7Dy^yqb{FAM3J0edrp>jzTQ{89`Mc(BgDE+;i~mlV`h=2mAfq+gB!=_DS9X|L9{}PIGs+ z|G>lj$_wtB>^*V4Up=wO4l%}B6E3dh+A1!qqv#IV6piv!djoyud@k8lZDT57!)3Fe zLSiHRnUXr(Q-RgCR7~yQHa^<|n;!bAjuIk@deJn$0)~oT_R)_t$Fz-8k2B4|G|D>c z-Rkey3qGj7j0G5y)LVV{t+!YQrpVV5`0P;IYU>epX|rg+N?EtOJlVN;b+Ufy3>?_q z+VaqnuzlxHHYsEN`rLmoHpEj%_QE>nv~-CT;18UHgi*rvoW6X?4rH zct`A97#167q7jTUOpBX$B5YVMy9*iA;6ZXl52}r>78}hbvHT|;FF(mSfv4u zf*e29NsRok&hnV}Lg~kybcIj#Bu@BJDB1(Zw8D=HCO;0q90ZI_6u<^v9C6Ff_75W; zWzs_1@2e3_F^}_1eB zF>Qwcy)+f?xQuucQv)PxqcZUolRZ!5Gn1Rz4zdI#X*?WHtY&NlysbY8c9{d;TFHIyNr1;DwfM?J=g8$Mom%;vVCh*YKLS z2~T?AWt<c4KEuC$dCapWP+F0TcH?OD(|$AFt`(_n=Wt>m*=z14ZpCvCYTjRU+ zX!0`m7%ZJS-|cQJbX(g`AT8bqPS4SOu-3)+t+6ai8uuvvk2mQzvv80Uy%xn?c3x}k zaD>x$DBfasjk^!n4$*bDoSJmcdFEtc>)PUZJ{)|sv$wFgxj9)qv9vJV*=2cPd4aRo zoC)+Di?2g!q!|60^)sZWpYHext*1V-g@nOvm}O^qjmzG$NtsG7`jzs;tBmnt5*9j^ z^Vo`qdW?H#*bm475s|K4^pVX3F=uS$8>{}xTddN9>g2llaCJs$6<*N znU)6|S82jfWMx}RK5Cp~n9oz0&^BEA_;Im>w%z$Ea}r5vxD>me@^+gAgnBtsi_6E8 zZfKa#$Qx^!O2;wxkl+X6DRFKFlOJUmd+m;>Ziudk*Mcxf-cv4Z2%hwYtl}8v zMgz^8rThEwOB#h+q+Rc%x-=H__Tv|HzzDUvNf!^$a&)Q1RoEO;s0dz%fdqt*6ty8 zuvhzFZ|xe)AdMT_jHu`DC(HlyacoFFBu#3_Qq@zkK%q=+JNeSk<9t)|m+!c$*1Sge-;cThrF?7Yl`~h z5r>kFb(lhR{$hbwp;Jvzy!!f~b)Y=eO6-KUU#2)HovNpRkCj-LC@lwQa(PtM23cy& zqoOsML#p^&Hw_4yivY~osTNLUiWfnGNw!)2t$5Y{_*Q06^bg)xp3*mLEI0Ay>15&|T^~nP zLI-ky;@x=C)JPyV${ zE8jN2aDxtu2##_bB~rB*T64yR#RE1K*dtXk_8qPLbMZiaHKt#@;m1xc&}%|gf}vTT za&IWTS-YLx);l_@{_a6B@*FKhG!s1WxtPHe=PwkqNRpO<- zCcd=CvQ*xAER#H?4%h3C5nhwNFi-Lv82*Lxc}V=w zlXlY3t`TRPXK7eQh9_?+ljPYjbst@+2~FtRhsIvGLp_NssxKYd?%+vVdw5Mg@tWm1 ze!`SX{KSiqPV#8_DTf*VFi^bv10NGE8D&e+K~0bjJl?p%M2Q`t3+^vd%m2`QlP~zP zAMUR(o?Dq*>rS43pxfI!;6>q!83Uc@_W2IG<3Ps&?$hyUEC6m|YBY5d|NmZIjE0aJ zAC6#Sn@z#N!CrU3X3xv`Z&S(}CpdPob!}ny+SP@%)2G;3Nr$?>x3I9b%ASFhg+o3g ze&9zc8Q}2+24~p3|8ewLx)t5ft&Rxi!^ZuRIKfM~rHtZEnd**iMmO+!l1cn3N6Ike zEgeU{hL4T@n!=xhl^$b^QU}74?mP|SkHhBePo;}V+xTT{TjxyT797S!K}mf18{4gS zl^^S%58?V5Z=68l=pPe5p)wcWi0&?tgo}7AB6-0%gIXGII)%!wJ9q0H+JHaAmxekZ z>%fX&Nxk+Gq?7!3Gea~zAA6HZ-7Ish7H&UwI%t7Z2QIYj0a^DD+%B@M_mq+AJjSIhbu0 z54>mp(i45pk%jK^<6U>@Qun?e{xQOjy5G3_uKst=obN6$C$%l&&TkYfapt9Z2(HO9lE84-#g^x%)h_qL@!;dZk1=#h87 z=)Vn4#U(?uB#kF{C2t-WpM%$^G>bW`TXe7K{3=gK9(GGE19 z>kjCwJ+ltIfj1T*uy1oQ5SO>;$7T)W#L9U^XR!iiT=-KO6)w~?R?6YGljXVh0vLmM za4MH-07W-Gg;Yljw7cv|Us`Xp2fD607)zR>Q2Q&p<>k+qhoXUBI^971=bwRUH8S$4 z0u;Z49Z+sz%)rwuO=wE?SO$YVe&aM%H2D#Z?fQ-J#(b%vG4f|Tp_41(G+7`I)u}pa z!^RC5Zp9v&k)08!UTv#Ab_ajPFB%fV?h})I$8A{rgyz9POa?X?)FhwgPrP}Uyay&6 z)EUpQ85R+8{DfZ7SD!|H($KA`aG>-k}g(9TpB7*r`rXPv^a!XzBR=g}0aNFrZCfP0=tPw8@2u;u1R_W-7+uXGq zR{0&;?Z_r_Aoxk9@bQgIB9HhRA>}KKP6f{ELe&fSN&Se=^uEE-G-f+y5Jbfh~B z^RP7&UIOuL{S%fdH#;coC0C%b$fIB4MIO;F-FdLi@T565!I!tlAa>oMpF(`yWM5dzV=~msk^S%E(eQ!U{KJWhi z_y6janw8aAp;pfSzu!K?KKtx5pR>H#o4EvSa;=28tFfI5vnq*OcP<+ z3I8nB$4z``n-{9oYqsiiIQ!Y%vkyN>Ct=bNx+7kiw$nk=&X_!R940TD+n z5mwjlQJ-UF5GtSsyL#EL#3kmCv)6mFyV$e|af|?M@=YM)bWEB^IOj=SnV~bZNHNE8 z1`^SydjyTPBuE(}QneEx>=PcqFue)4vb4P3h*W1#Ho2^;oagY=!za0L?_|02oo{RB z@xRN7q5t7q|4RF|PkpA_d0=+zshqc_&6Q)BuK(>q8IxKv&+d!QYD@IN*uE}Sj*aH--m|JDyQb8JPq^uSho@R_$GL|{HT zLnFS15W!1;rw}XA(3b(7P>i!E0M5G%I2I|pEVs;2uIhZXmgX$UAvA~*s$a;+*jORg zZ>`FdTiSvF=lOUq5~1~`jYQ$ey0X4}x!K}e&fMHwRu-s6X|E-odSIhc+Yjqz)yKuX z)GzFL#*S!tr#x!NC5J8`^R6;dO;)ug*dEA*hB3Y*CD~^SOT;hY+j5Kk0uh{ORxd3N z=4O2&-0BA@URfe28wW1Lo0k`(7*g`N*?GmVZYb1_4B9^ci3oJDu|x3ca_r;-(ssD; zKwHD@%wh$)bO^TJA)pTdf??DS!jU)1)YKba2tsI%w1$oycJLW~w7{HSG}%3OaAJ)j zJY!FT6KN=M(~=Y-1**!NO&ET_7V-sOFk`T3M_RdQd5@orNAknk%ZNAabk8s7V^(FD z5o^qf0U}=rKk*Yr(;U76F{I^t#>$&zCh40Gwz?Lh2uEOs=)JQV`R~jbr;)w5eDYvC zaxf!w@Z&ZW^|nWTiI?e+=7bS8c&f~cgqarN=9hHFA;o`GkCMNHiJRtt{G_?M*9lZV zJ{ga22U#9c={J@7H23xL@0an(36Q;^dSQNfi+N6Z5~jOm>1b9Z-M(J;42#kn>EU9x zez*xe>W6XYcpa60y5yK&rQb|wD{81W7$WOmQ!&4cTzQ4>n>w<1wIz0)do9@!noX~bf zy`Qw>9D`#XEl^fQ4lnHPGN0IGK7}9w7w-YKeQ}0@G=QOQ_^H05aC2x;LqbLri~{arAab4Shsy2)l+8(I8}FNvFORiFx#dD zFLoj#!HURPN1zveGyQyu5Cu zp@>55|1UM_Cc6OYKy(z^V280B3s1fl#&zvwiKM#j%b(kn$3NGUTX;5Xt_*f|ws;?o zC6}2Q`lA7RLm5{&Kk-(+Gs|tpJKRJ>C4<_jPySNh#}!{?yO#Ds>B<8)eMWr5b7Dpd`Wu{Jw_xk-cF2UgTNo+TOTn7K=Egvyd}yd3q~GNc(}*ys37 z3++d0zll0Y26mnV{d8845i3*FMrKbW$P6s1$OQ>F!m?br zE)}Ek8hSdAxc-L_!S;-n%3wRBnfZ3O&Se8U`^|~-nA~)63s#LbtblCCXupYHw@Jeb z(>N?63S7C3KGrrtrK1fG5qT)UmywNQ>rR!7$2K^An>6d|o7^ZgUAE7j=juF)*5kA^ z%WLJnfBOsVjVr6=^0C8Z__}Xv-?Ok(&dj;;z)T>G4Fe?9jf z49dpC54E$;xTz^;S2)hF%7ZEOUwr?el7tB);cbM=)i`!EjlSBjO08p!> z(RhTQQ>IF!j)DX#Aap%1MP*_Ojw+;=K3zFI?a^}VmA2_(9aMNw+bY{an*;hjB7!aV zLRfL2YyB4q+EFDPWtbp-2-;&b%wAi}-2?=tXQMl~nVOBE-=k{!5Ft74QC zI{bHG)B%|?*nORY-oi&TA`xa7rP2HLc-`~grz39SRC-CJb`+-Z_$Nl%?O|74KkU@^ z>8D;OAIVEX?Nb@XD6`R9Dzy`8Zy^yzX$4xY2s3Wb)^5Dc%a8t3X;$^2dO!IH2+ars z!+4x^?<>vW2bl5833m>D5*lCK`cQr~_dkq5Gt)v|GR_%q!_-gu7y9KuD(&Sd<2BA} z-!1h*=?as^mFOnF8TX`}Q2%{5jG;0;Ge0wKeVA@S^V_dKQFE5TA z`Vrq94gDm2am=SQ8@?*(3AHl~q@y`;(RK}G#nD~2RH;v>z2mH;6Jd}(0kd;S&va3a z4`~kzLzKoRLVVlH>$90^FqhzdpW290w;er7AezjWh2et%9D)OK3L?x#XiaJT%M3#G zbB{jSEOO3zn-x#TchF@YX1m4CXwIiiM8`*Lg-)y$Bp^f>Dm19O5P!ZNNA2cl zm_w+5IpTv|#1rDy4L{StwCsPTy?B0o)lVb+`DvH={il_8`A&CFfn;5%@nVMs?tTgo zIIlQNv+hYh`LPSi@caCO8ukFA8!GTfmyDB^{kWz+>1obzgnhk!GrWZ2r(fOE&%X5T z?6uQ9-HcbJ3EGig?Zwm0;-=YM1nJi@7-2g6$1TGb22NL=F@_2u0J;ococu({IA?iC z{t_q3JadMi?ND9`d(dNDwhX4>Z<$fhHbOLR!QR~7J#gfv-2>AnhBtrVRl|$#|Lykm z-~3J7l`zkQVY8i_<#<4E5FrEqwUyO@SFX55%9W3{JmZVLpgH;B_YM~3*9M199AX|g zH^I%o6AY>*xfYSgvH^oMkK6TWjA7q4gC-yZ?Dk!I!n-|vzfUubErY_;Yfd}!PW#MD zw4pc6(=Gk=^XE!=8u`@oufI`Vc6z`_>8463&GZuvojJowyTtFC^(S8PoPH8F<0szu zmvn^U`z3y#ruLfk|5PgcQE)$ai~RtCaPq4#KGd8bMATlGpT~ zF!8DxT74x=&C&&EtO&J(9wFNZ^!!o(0##vw_I}!AT5GKlz)3mg5y;B={w3w&X4nw{ zT9Jrh@Sr0q(}TWF3_d3-c%fGG@hUbu4`S0XY!Yy_tH1jUBL{bl&v2kgSsW*@eN7>R z2h4jS5LuH@M~uml@sUw*iRKo^7ChLu1&#s)?;^dt)|R!4rG5NyAWtbuTpYd>E~EO+2s1`4esIRA{<=UTt`7uIAA?=_1<|i!TKA8 z!2)4nz$?wZwozSN)zhSkYqX-kjBF^el-nJjS1E4)Us+ixiw73km9@2IlNSl}r4-Nb zsEpB2cwC^i1$81Hq-$dkJcZN`OUL*2{Z@*N4bB#Jl}@QZutES~5s3sg0sSJ(PM>zdRQ)hgFYMzcoxYto<6qJgX5M8BkY-`( z6TeT#Fvi2r^y!D6c!?`5={mquWjI2482@4**x@A&!%_9kCbE9_=;>Nj>V)Z@;UxWp zx`*1!-ckBRyeKHPHSiFE432chM4o|9Y^+hM$aY=CSsvm$u4rf_lFFM_9tO;%6K(K1o-U zbnDaY>&4NWs_!@LB7D1bENsTc(4_1L2gPpOtehYk&B)48{{ z*`4qe9z1c_n$_)){o4E+t`lwRj9>0P5RP7IKyTSnpdintSC+$^*!1g$>6LXL>!C37 zL}=copG-&7O?$tjZ&+EbBfWZV$xHH+cnS>E3)e~iG$+2{_w&f`}VpK;fmO1uace)|5>Jz>&Gzv3FEI}-FCmmqX@L6h>S{RrO%Q+z(t(RP;dHk_v4 zb>E@(?g9Xe@=Irg>P4+v<1Qoe8#54x81T!4m5yXHV|VTzAuO?q#n=WHw#S-2X718MjI8 zN-AU&V-7Itm{C;+{XNe$5@Q|$@yT{Qo0)~lvbnKdW+&#$7d-FzO?&2Z&2?XJM^k23 z2fLTfGOC;AAT@U^Zf#C5rehd3IkD9pTX1m25lzdB(=zLlbU1X%DUB8|g zfy}G%e9N>opKC=C((0=;Q+h-n z(YCgvn|vf)?ef#!uW!aU!qty%<9?H;q$`d}`{X$+dO!Uzl3qHe|Ac9u;b^X+V4&k? z9QFwXWQ2kDh%QBy7CmhH;i}itFZIAkx6W!5UuappB2H2NsDd;H5rjW%1Q?}vH3x6C zoxq(c8^|7GXql^U9&Was^v)87ZBS~KS&J(lDldz^o-fQ!>mK#SgbRBHU zsnR@!0~yzl(=e!jw*FAj8zXLR8}3z{+GMD#AmK9e!!@3XeehH}&9ktd<29Hgt83-v z!F+jWmP-=9xmXE|hsD)Sr0E&$VCh zhVO1>wi#2fx?Xruz}=q%g$O)~Rkqm$NoKR6LlI-V7?Wv2v`DfkA%qC-0HmCekU;CL z1;0yH!bIwZRS3DL54A8$%E}>6J4nUY2E>99LIlQrp84C}uH#nhxw%(STu_wi=+kd! zwxWdrbHb>Aa-*`IdnCdq93xB?X4nr4*@?2SbdaYLiRbwX5T|BKxAkI4cvomgbgbRe z)3eQEk3YsD*z{nY2flnd2GTjui^&uT=f+ybywMXg{tYrWO^p97yXCvOS+_Ug5lA3v4hCI88X=EO-lhLZ!WgxcxumuW6k^`W#hCtmW=_p3hf zGVDGLocEOA@}HBb^pj~Q91q_? z0(kqLn@jxUA>-VSN5;Qz2l)}-Nh9MY%(#e`D*Zo+FA$t_^m)j19rv5&gyVj+&-~5s zlE2I!?Z^4kPWQA=x(RXGr(9W*u1d(Lq^^+DOmeD{bxOD758F-J>n#Xx(ZUM7RgSqr z8P3no&_mEIZQ)hHG-FIgJ#n-w7E+=#&FW6HB`duH@8n>#G2 zK*61DY_X)9;_NkKwDed0XnyO&oOetyTZXz7(4l2$gA$u7_(CT&DP+icroa45E7Lj6 z39}ur3>aS4t*lpAMH=hw=CqvbSKg{0`O(~W%l0Ylp9-emO5bs2RpxKxF?~`%%*Mel z%_AJ_RGRglG_+GCzJ86jW>w;9jxy2N>6T@s?^k{L6({|RoBBQ!C;eyI8&A_b!xN@| zv=KjXl1_#<4%0pTCe&V~@F3F4i#oJm)lC|f#ekR@Mv=IbO-CNSY>zWvpd%(jZpMIr zhs%7CI`1|!ymyEYlan(nTren~rOfZ}uEFeFJGr#bKJ=g7-`w=#SGE%f$hdlt@PZ42 z4(0UA`oVuyF>I3|j1E=mgv|24FOd^{96BM;YdwkBcV&72jU8ezHN8wNzXzn9a`)XI zZBCpx)*Qa&7>~?zvC#TD5`w8_YiD<`v9U3jUf^j7(u~?mJl$Z~3D|3XnP*d!|0$Y+ zT6emI8tfwm9S0dbp`ZB@Z1!N}OJ~;YN-Aj5{*T;K-~)2f%`o(@K5-L{yQf*6`d``$ z|1_2E!Y7rt&SS<+m|w&NbDuBK)2u#u&@S|(b*5b(Z^Sq4ZtByobX0x()Q>~)(qFob z{2I1tPnzrIRM-nKjE`ZaKk-%CJ8TYIoQ0i!A1~tSH&xJyj@0mCo)T?;*h3(3!;Gg9 zgukHS5T8z{tgfw6f!CNgPqM7&=3{DVuwH#(6+(s?=1?K{&M?fuHr=vi*s>cm-yzOfIjN`*=?FdU}{CUQ@ZB zC|v*Azuf-&rKR!+FRV0fmZI&7b_D7Q4^r7KC_Jc}57YMZ6OuAd7gaN;N_A=tvr4`4 z8($St=t-*H($-EnzOh!Gec@vHipL&rZeXP!;Zj*Ydbr&9ov&}!5H!r+dK(wp%u-%9 z%H+~?Gr33`KE?TmNha8oT_)TL78v5x_8o~=ZBt#eaj~6l&N3MV)zVB4qae+G(0e&J zdD_)+%s5!2S#77IL9bb{9RK#IQUTb0SVhCEUGF29u*WJYg&trMBt(3+2XPc2=Hk{D z+K0U_{Y3F5z-W|o-`Uz|*GZ?%&GmBNzyWsgY&QoF9cbia6^gV%K$z{B?<^S=tUFDpX(J zKu=t~2NEFCM6;3Xlz4k|I=z8+?m?F%OdPGr{hGcVP6FwRm*MDF<+vjKn?|OMZjnYp z@(Hs$l*3-!{G?^mCd-jGKwBmC!qoTOu?{7Tz6x4c*g^FD+aaZYp~JZFXCv2BHoVfn z_x?-vU@-aU!iXM2vJz4XWxVMz;-WUraC#e744?y&-o`!C#`MUv>B>~3O}b0duOGir z+^|ojyLgtz7<8c*=A=d#^x?0c_O(mfqn}}AxXD}k5oUh%A=Xb)$y3q_{=mvGbWas& zjUn?UJ6>AQ9yG*U$KeRoF%R zU|m0+Zr+BM4g76!1=SXVD&`P7TSG=VOq8}blD0kV&I5an?d{#+<~kw-T63BUy9h6} zRjh+zOr=yJUeqC-cblE<-DaEBlDPv%Lx8ZpveHgW(-hfuVL!z#w=?I@HOFtbzS-Jb z9jtD!8p^Xn+_5t`n4G7VbJtJo03!Kn`mz1mG|IZbo7_?E%PI2F~AzRbvRje43DTr(TQ?S9-FqAACU)?$IOck#*Puwc$7Ejb<@0M zx&yQPd&h%%>jn$mQMSd)ytLOfYL^!I*g6` zjMUjj!4XskL9E{ILS&K)^T&n{ zKCsYkH%H6*)+&XFMHrr^zIf(rIXr(5$}A>9&wH2N_rBjDf~*YM4R?K?Rc>JPNvgl| z#vd}Sd&)?3O6?E*=nsc!YG*penca8=TI`6WD1PY+pIc_8K3$F<{N3^e&$_Xhp7}ar zeEneK!s&_GrNv2BQztxa(QZtz0|Al8Ed7y}CAM>HBDEe4Nr<6?#wbJNXY4>AP|aM} z6?HP|3TBGes9egIgHstc4~2Zep=Bw{Q)l0mr;3L&p2!8TM|q1C`WPpg2U+F+EV)jZkY`px4DI+Jl~6`q~NIejL2$NebO==m-NN zqe?}=aE{ZKL&uNTdj&WWjQ}kK4Pv`1!S313caV%3kBlpXnD7;r7%C$_U`Khzhf_a> zUd_g-+t9G1kb$D*1|HG|6q1ejFhc=n2-I%7;ct7Votc;|n;d1IQ4YSt z#qRAQFZOX{VU=#;v!89trOV}>x4)yE;-!Uo!kuMA`v`)|KfL)9gO@a6579&CM)#BP^djPw_e2 zG;BkIHh+{hFUAgWGvh2OrsdGxb({c-wk^h|bVSrwD-T6%moAo|^j#;TJQO#D@W81( zmAp#ItS7bte0Ai|G5x23;NLL#3@cR)S6(|sIO=Fr7!KD82QQH>wk)nMvI}V2p@4|( zVRW}yK) zJ_Aqdicf=&yWWCMXFqaJJYewB!HTOep&JC~p{F8Vm?Qk2z1l1w!4KvPS9|d_3w2lD zSK6t9_YU^W;%C}e*D|dV;vN%Z&Exb9Qy%iGEe;ka-SX@E>+_NJ!c<99TKPFp%rG*} zeSGzOf5s_kYOg;1qYZP$&&fdybUNr@IwlT4(?h+u<7t!WmUI$k*a`6(D*4f%TYl2b zaB`xO;ioxiOC#y3AODi(I7~dej8x`LLLCw>VLvSOD&10Pm;Qz0D(R#jam)wv)jTz= z9i%xyaAGG^c#!&>MCGIbTzk=&fF(`oMW+u4yIOTeeA#XpZt^0!`YWZ8ZmNunu>VDQ zWRfh*^5k_b>c#8q>VPf%(yV6Kna{y9?#V|&dD2aDpJwu-eU?S_ei^Rm>1Ua-Je#g* zCzM`7_4#F7gwnFn*DufAIBDCh!W<@U+z7?{ZtOtV+TLE~tl1RviP=L3cH7GrVmW4K zoqgM0oJi7g?0{Wio2=>KiJovOZ6)QF? z41$hdbsUa%n(4V|rfoYR%&xLFv)f#D#1$fO<3)t_=L5s|h%>3r?g)ln!<|hUZOfMB zE@9UFOt;LVejUtuX#SY~S$0yNd4W@xhMuw8OaIJ^gqh}zjiHvDYoi z1)d}Pu0KkigxV*ssn_1{G^Yyx7}8F6>G#cPmploz3m$-~#5c^;hXX(2iJwaM&PNa3GbnZ(dBg;9A7qMEAP z^6KUC=}-Jo`-NZi+H&@HKH46+{_5emGZ%IbUwxvToSLD|O$~RqRyg9pkjhoq;EW`L zMWc_!=0dE=hQon);-N=_vzCt?Bn(EwU@5YFVjSrdfol>rxN-_f_Hkro_me@2v1zg zYx>LL6Vv{ly0LNQ_Yg`Ij->V>JC*gG62WER<)2!b5s@sSc{9%N!{Xx)& zMGmgjGxwrBNg0Pw#?ko*hO~nZYM2(4UXB5@ssX7()rcUia2`%iWfu+|Ae8_BKmbWZ zK~xiJuRbMBiE+|yjq3x>^9<{9SzK6ZmkuH1&gi+>je6&rT6Z+V(5U}34Gardfu+mB z-R>7((dTg=P+b!sRC!fC?-b3m4F~`c4MHR4WBSma@`8wO+!IZTV&H=&_Z%p^nA#zE zC*9q^-i0$4+5v4ydEh?Umd$d{TYkQs+1x5yUXVC7S=Kq-eeb~o<&#H`l?N9WLWrpF zQJ&2p6U*shB!WNLuEekfb9GVkd8sUjPY)G2RBM&3he|kEC(2|T5+UmyJHpOz$+BL>=x82+#yJuaXi_sxFpc6enid^gihxb{P8pD;|7^Z>pemAuAe*$tky0P%n|b zMJuRG5;HXl!2Xu4f50X(P>p4cg9ib`ET|+r0M9$?l!a?VXJ^Ivi*oI(%ff zaqi4;a%;6+=gyvq$tCWhS%R^HWt*dSgDD0_lVsKOPT9P)+0M)zfoE26XLg#Y`9ZUK z?(ATCYQ9X(aLxN*mK_OeoN!>EH#=1pXO4ghdJMR>nyJBbjBvOynEFo&J74qHyou;X zd?G!t>!*`>WRGXuIr~?(C@YpT%Tx*xYW?3Uiy^{EU$^I}wX zu3(oq!pI|F=9~P5;0$7sZ@Psr1YA5w*Kkzwle}oBUYco_?n3STRKlbo)GQyCCH;z@ z_PW)ytdqqIKmFr8@}pl>`d2SrA6GZiR$O5}%(PGb!=3WW+sv^WB=QkIkuDBXvW#Pw zVF=}U#5a0*jyM1*=8gu?P{tfevvdI&6i$pYI5X{b8iwxfH-^r}aGi>bpKZ1uJ89rZ z4O9PSmledR$r&garI=NFts?D&VIk}saH;4nuQP0}4yP~fv}fLNZ~2+G|I6}2Z~foP z^wuM#+(Y!*tICO+uPgV)wE;UM2&~&ky|%|_#I_u`C|D$U-5U!5547`#9*yGvixA%Tv{KLMMWy!IkhvK zG*!s9396Jki)emGx*%#gNmPoN{+csCO`r%3s9v0Lg?*x=Q;I!m0%My99X&Fzj@zVX zt5D&S>FZBk(jD!HmU`)RGy_L`%ca5tQ{S)eSH1YDsvG61v#9jy_%dlHefh{Q`4aZ& zNhZTf*p-5Py!81>y)gCTex<8Qo-*7t$6&UijBu(4+FptkTbrW*N|%}QC~a(Kts3?@ z&h{-2yA+M!1xF!O*xwqlSi_6*sxZLX81YT#;9Hu^LHcpAes)D}gzp$Ye^DHTKK$dn z9RE&!VAF!Z-~h{x73rrE4S5E1sn4tIh+9}-fzmnCkoyZFg^;CNhtxYHjK_U2AVZ^F z@J=*j0~{rXDzlHEUBj^oU^K}>^nxDB1KwI3IE;w;95lm^J)5cLU5PxI!LzS4`>@b( zg%EOdXt1e=9PdLA%P%f`wadux3!usX>cOwx@W$ zKoJ*vVU!k7T9MUZH8G`xost-BtR;~WN|-PcZ65jwcjbY!+ilUIK3M@R?-uT;jMhg7 zc5Gi8N&O(%q3pFiQ6uq#O|2N}t4gS;uTQ)Yw4vDAQtSqKtDVXUhLV3*0(Q4JUco&O zlM@{0nBY03nzW7v)Ysh=Xw-LK^&T+~y9_S^5YdWnLnD3!Wg_myBk}vZtB>%2{f;5| z$*}u=q_2v&RqZ}~XB8m*B^@m@ytGT0_8GSP=r(SzIeG2FzJ1?M(#M;nW|W?qGY);I zeTJKQ%^6mPlVRwll6HR431JqdT|bPp6N=-YQu@+N`nsh`H`^7zoGhq!LgB^sTZ2hPOyZUW3mNw;$@HRmt`j7n!Mq(7jK#v&8jRz z`b!#20Al1FlV(~>WU+PilXk&AJ|^VQ$gn&wUAN*x#4S|}_>Hd(so{$kAMJ_uhSOK$ zd6CRzTK1v-^D_;_)qkc_Ot3H~%=n9=65sH3XSYGS!AmxRFoB&6O+scFg( zH0qnZWl%?`lHp`tWFDkhJaPQ`WlGv<7N&dJWtlTlS)LW-q&~}g(n&rHKf@DdSqS=+ z&E!kS{4w_YCO%f70vFvR@zj6%N&DonZ`Pyc#FY>A!jZxtj!H~3(m+V*_; z(O-UFDc3ySl+S&(y#Me1Sb6E+|5xqeCQm4G+1V`PFhf~q(7%m-RNA_x!mY+J=>YtB zRN#vU8+z?_PqiO``d>TH(%eD z>rb>3^K;H>kUO~BGxo!i{v7q-jfP&jnh%y!)7kPoa84%Vt9eM2RG3wnuhq2oYx;Fx zx6&MfwpgBMB<TrW6@)I1iApnReY>u^cXHGB4U`#q0@9>M6 z+8X&|TaPhRXy|%1xRV*PdME7)5446AifCABL>X-WA@L3{yPFY~wd?E{(tcr)#aWvX zKdQ36!#hQZ&^1IookaNHoGns_CMhU-Wr|(wsK^_d3VZFs9{xxkN++azIj(U3+uznM!Ow-Ig|d0a9qlKN94z<2 z_g#k%LBMvzFyzIct9fttdyP(Ye0u#laC}-SYk~!Pn_ZO(5o$+)ZM3@<@j*Gu8=b#@ zS=@P*Um@prtXz2-Y!-z@M1Wc$FQZG#Y@UA@E&))Qs^+N&&s z^cQSX;m9C!Z1#CFzVZwly~hyA7bTHajOPw5PZV&@t6HC$=?QKPtzCA=6ucK?b#Tb8@IknbEcE{{qR!{xyT>QVTXt0PqUT4@De}iCB!MxK4D$&*t2tx ztLo#cH|p7Px9`c58O+$wj!{VmPy-|*G# z%BSvZrq9nb(+3XnUL&iv>>;^u`QqU4)yI6kk?Rf_EwLNU7LPaQY0Rh!46HWRcbnx4 zs|`5A)$L1zqgNd!rMD2id?rgR6He&Um(F_X!11J0;?5_mA69jM`NpWmLH_WduzCnckN zS#~YQNKibs!}N1VM;PTj+Bf~Gf=8fF>lyhN!U{L`xZr}P6F z_AwHOGL!!H0D?e$zx?inuOID&nKo!WXA;JdUnM=L5#JcfDEUE~?e#WnP({ZjKy2OpCL{3(_z&&G-qH z5g0J&=M)fCr`@dRqAQDefkEq>;>o^O~=HP5bd5|EcnY-}Bw1-2AY)bslNTHZQ~# zUPxJ@l<>|K=V&RC1Ga6OC*}vuV-?tt(3QzrCUlEDg9XMY-8e1saD*pYWKq{Hl9`yz zpXx=|P=W7=&p|Ucd~r(3G64v$bx)FhD|TdknxbA`C}<7MO~ zo_^9_LhUo|6uq$aM?1fM*nRuH{|q1WCn@p#i9qCNV6M1<6C|L*D^$*bto%u zE@=|iiU?7gbSyLa6))!%nE&wDP;Y%JcuT~dP;I6Nq4)9 zPu6?zdUyFk%gZht>g2UOgpTEji-d}QHWDu1_33uWVGVujT|fPE?Gl3aLo`&UIks^A zWna~P_Q)ahymrJ91}b?3XSYJjN8v;I&M~Q&RS>+#r%c``1?ZlvWL72K=bv)${Pa}j ziv^JkRETHx)Y)Ne7cAP#6oC6Un&2Gv#V`NrcJdMzV|?%f&D6$9dGzi7w!JjJSnhZ& zyAkeMZ@1VoI{&O&oAShRJ2-N{t7}-bVF80ZY7=wJiP$~r*mMGc0p}B9D6Ry`dPL}M zJCK{$T|jN2!{UMtYWM;dUeST_E)N4m>IEx5pjG9nlX89iGjoX;;e|RFQiGsJtqWxB zY&^P-CP`%Jw8hb`nw7@c%v!QdpV$#aYH1G_gb*L@!a(FljSb1jqB=ypBpx3loD9#nX|H;!c#3N}=O?bJPq$Ay?ZuI%{R`Q5;q>?W!bk8s2mpr6dm~@1hFNxQOiJLS* z4`rD7byiOa^s7pk>68BZP`q@{u(j(e-BTrQpT7)8oW4HIi7S2MYMy0&n1{&^+9(I& zq`MOjCk$y$y=FhnF@XRkEwuZT)!8t0m!6+~+;PzN>)^;q2X-9EXVlD92*?DOw0Olb zW;Q*?%)~tj-Z2L299!VMLD$V0B!ClXRUd{SggwGexoIJe%+ADA7SJAGy_J3qfWH$Q^} znMwVSqvptG=pI~&B4>6PCL%vD4OoSyM=-8Yr_HPU$WJEhHP7*vbwBD{*RPQ4qw->cTbyEv-kJHt-@LUC2%Ug@JAM1L$! z`j_`nJBPb^?W(H$8fR&nF7h0C(ZQ^<3Ro<+mS?vuT7I{fXt0f%d!VVY+q~+5hNPt8 z^1>oG!zu1i8KqOKa`qGCOBZ9B&_9TWMeP&EL#w-=k&bfm6-= z3%|6SIrVUJfMYdN?3$US{F|)Bi9Z)R$0(gdUcPXlU0P%i&wMv#GwhHoOuP@>M$}js zTBjtHxogYvBcClZmsZ+Kk6&n49(=sLDh9eT?unc7A7}& z&mF6wMH92Iddv0>mTm5IjCi-FOgEO2q#4SW+k+t|(z%M)8`<={5E9yXWD@BP$2 zZ*D%fTISf1z*E?G7?!2^`SO9c{6hPZ0|$9Ee9#{K$}iqsx$6O{8skQ$?jGMzn2557 z8I(JtBVQ?h!YF${%VXHnNSe1+n}9lC4rPX*5oA4srenUCGW!#>I8oXtgM2^5Et67SH$$nJE|7 z3T<({5Hqy6ICa9_hz(Ee#&SEcv08>6PdC|U1IoP*$LkJshGl7et9$^LqdG(tG;t%%ahD&yr=hZye*& zQ+t_9s_yvS?`z84C)+i4n7Ip~96)Nt71f>5UqQsKXA(6p#-RdP8Z--#w^ zZy42AoMc4&RDFHg!2;>hUGj)!3NOZSZ8oGCAN=eKXT(TS?c$G7Jk`i=Pah7Qxvx*& z_3NiOI>ru;I?B$ykJk?;{r2tf@~0|s^{48mLDHx#SQNgB)cvOWKFce(=|6F$?>8P^ z+Gkj9QB;v$;MIkI-g>Wn3J_9oAj}Cx3Jd3)i`f4 z1i)U%dN;2wxP-kYJV1cJyGjZaaI=wO7AzU7IX1Lai~z7^W!DE%A}%qA!wlX?;F+tc zPWmG5xErS|2MIHtdQRRmKAJPVl5ZzhqX`yzu8)qp5aN}EFgH%NIA706OWg)sj;Ose zE+We0oK}yalhaY|Pb7y(D!L_OM_m9AQ7IY0MosE`ORnPMmp_uAM;Y zG2sd*`9yXo#sPUS!H)3J?iJRVV`bkLC7hIQ5-o*=u_K9mRH7g02~Ep}X=0k1*G_IU zcWE8{QRam(KeVIrlzF6`?)`jJuL^o}oe>V^$Opy(PK=rP#uJ*BBi*~O^|p^5T-!mh zvz#bL-Jt)$KV>g=&Lto6ApKOv(eJ5vPk-VkPR1jlZmFcDpYc!kaax%ck%zd48J@*; zz#BBWc3qw$U4YJ9w`j(>w_~_PE^IMO=dyua>>7{cY;gp}9X8_cqTgLzU87D?Fj&sV zJX~K}ZVxWb4ez?^{&MzW+b$lwwteu?N83eiH2YYbFcXvC@{am~4^l*}+9<0i;t0&qGg?NNWO>@FzUe<9Ih0+Lz zG{F2FO(R&hNL!?L6eQBt43)LlHKit#@#9cf)yiA*fI_$#@f_p#78(2=w ztE%H`WPh>%Y=NV|nC_G&(d4 zY`3G-Auy*~*=g1(R8(Z~ZR#y1aR-7$kD?=kihUvN8Y~Cv>>AlOh5!OQnqs!eFq~}M zos`LI*wit15wNjuiuv7u7OPyQNkec+uU0l5INdHNoZEbYR~FXGBX9quc50Q^9oV=x z17Ek%Htcd~;v{^|yx@!5JFmX3eERsYa-Ice2Eid5@G_Qd&oB|r6nxsLd5uEEo3jyh zsB9W&_w-a&^ry9oF{R})`tQA{Qi?FRa>envxw-Ng-um1+bfjEIpLpYoU)mnxD8fUZ z_(XGp%gcGOp`848ztEoH{nF>X;oF{({}Ys!u2Fh52Q;wjgOY4wKHf zeVWrfq4uhzDaK)MK4_ujL;Qs4KVkCO zhv}C7bW4@=GhE}HU)m*ZpJwXQEphehAUkOYGmP}p=cBJr_dg5v!|aEX`V3Dz>6^}` zxAjYyJQ)Y;pA~V?iqGhZ{w-7Oph#o;@~d^NX9{x z{O1JM2^Nj~-Yx_5aXBKen|yivgHv?wq@Yn}0Oj_6C#(*K+~o;u7@2b-b9;luMsAVc zK8Um=mc*gH)ei6dbUSy)bK2ki)pxaD{kp%=K77|BZL@HU*BDttq7Q3lX~-E&UA4jU zjBMXFJGR-Ped@te?KCT)Z~cMSmB0P(-rAn~rSmJz?a#WsJ@owN4OiAS+KJhz;q>gxkf(diSJO0hAn-FFQm!hI z^7Ix!6ccccy|62R3^Jc%at`F(`bd*0#$1*+>2zrv<;64>Hv|aew|;ASV~M`6^p_J1 zT*EnW?9P&Q=D*NSW%&^|%OV#m_QBRyt+mGXI!5(!+aSo^@!* zb9*5)r3W2##Unc6m^sM@+E5urnuVjV`g+QLrkDKW*Y~fT4guA7$}mS?mp;iy;`ZZf z{7rw4d$3eK;3f33NyofN+!+<4ZyN9N;QYZZ?}lu$!Jyq;SzFz`ys|u;Ltwyj&+S7G zpJ^Ys|3Q|ncgscY0QiYFy(<{|;D>*|J;ZK;_Rde1AN+g&s5~~o_{PUOW)74W|Km5c z+xI3vmF;a8FT>BEoMsn;cV+#V%5kKL4qV`P&`p;vmaUKfQPUonE3f;1 z-&0P%_07$RZ+KOic-FJy2vPBU_~$>TGhRP9_YSA#7Ac=>f8{uVd#wn`C7-BlvD&h;L*=u`akh)bgjTecpBUf5 zJxwC5n9V1RMF7h?Z7U@=IIl5uIH^!f%20@-3%D>JiXAu6F6sdq(of}Z5j!SSj1dun z!k_hT$P=|8Otd}LZ+@1$%HLkt{j#@@r!J7h?~FZQaJ6jf&oIW7bP zZaptgsZIaFWs;Gs8 zIkf^K-i)LFfG;FPWHuM2cj`*~q}w>maK`P^OsU(K^vwjByRK&E0m4X+h}rLkxDLH}%k-;?Pz*P6*FEpVq0ZSdDo;!JpHpByFB2e(uvw~# zj0Hv!HTF?Vbm77qKK2#_)O-uy&t7+=96NuhS*IyoW_YnPGgU706y&qN6F~x8oxp{bf zt65)PDHkuFYi8%?n#rXln(zSvhRx>Sp@R;dS!H5O>L6N$;DA>V6e1WwW8_Cuj*}%D z4UL8S7nBI-q_2Sdj0QW7yQqm;i8T5Y09r|`l@-R8O$n&%bw*)^Swee!B%ZjTaF$r7 zr}EPV+WFWDKwsYUldGO==yhe03&erg+oLB8J(XE#nA-D2I`nzy>yv)+42-6rXC9?t z-wx6dM$*dgMk|}0yM7W!KbloZEA@%fw-3bbXO#Y!$Mt5Cb`JD98P5m@s~Q&NB6&1j zEDZtEUBpf$eT{v6nme>`%QBLDXBa~BA$J^vzOze#K|mNub00^2$7ke!rW^c3p_MOH z#=V;AZ=V+nW2SAwq$Nx{VT1?av`ajx8eW8jWu$XwjtU|IN}TY6M%e#!QzgIB$S-M# zlVJ<{pR~r^l78B!8PrhH8xK!&e!9y;ogCE3FB9B2$LvHnC&cQ-30!J@nuQ}h^)>Z@ z>(Ep`)Zq+Im~_OANj2_5Cm>yT_09v@07eQ74|YcrNtfu|5A9azq-z|akpM<|(eyEg zwVB{C0d8AkG|d+;0a(s_Gkx@iI%f5jwJd|Ih_@bH9tpE(G%Xi?47bSBx_Z;aEmm8N zlat+u5Bh{|?T+o;Lc-C0lY!4BySq18G1=r5n+;m#IB$P>`Qpy{%KFaSC>Mr2cLao`}oIxuUvEc_3b^s`5($NU;m@+2R`^G#GRvVRH30a z9nyBb`7Qst+`76_zWT9q<;L?DiQurDJbJjimz@T)^fN#5H7{Ynv{~Nu&wjdj?Qj2D zDMxq8T|f6TB+#L<$^h>#{@@P~{mt@E-uO4mv4e-`qNdBn@=9~VH7A-|pY@Ev)Ukss z$xKbm%*;&q3eV*9)L?mKWny-Q2^^J~;uYo4_L=mbU`L-5X=LHtD%@~BqT6YNs5{eK zck@m~d}1Zk{Eb~E*hM)2+O{!ga)9XM#9;O*Ei4cFl?TtwyKdJ6`l#p1*hR!aV5b)4 zlyVp49HTsBnU1=OnO-*fKXFxfr@JPu)C){vV0lG2p1UTRKI@vreBr+ zu{dN!I0VbyS9wekUWq)*Z?J}AgX0M@ODJ9d_Fga#8^ zmSJ{VQnrViQ%h5BJlLZ2Z(lxpVW;qb$eA-w49{O)9&R>U!+THN*FJH6wfw|S{ANrg znJ)xi#!8KI3Pn+lwN&iejE>{#FqLu|XeIK--P`%zbj>x*EtlDCLsN3{z@XgmzkP2r z@!V%93~QDSA7g*pEIl2^7g%Pb)UkfU5+d{0EyhUZ-i+OcfqVPL^vrPg%=va=YSyi% z+&_xc?e-gn<&kqt*pIgV;bpHWFaQ3(&Muz=<*plUD)%2)EMNbsufg*uPtf-i4aAT9 z$o~?P2UkPyICrsp%iZ^uvmgBZ=JdhE^4#zHu4eVnY+3k=w>RYrpI^%T_fdE#7V>oV zEcZB&)b~8pmRG*A{miSsfvrkg<$3S_-Ln4c?`kHWbz3uW-O*;btPW0HIL$R$3xjK~ zztR0xzGDgV^+|1-NA8N4VCO0|iQJo-SSafV4yU<3VPj*1(H}=;ku`e6L^v;Gj?zmcA-SC-Lj&oDDt=}9>hd%A8voGpS>_nnuGoq|TB+8|8qsUi_6)9^SMca)! zedZ#vl`HKL>SFKig{TkMTi`5%p{!qM^2=hPThNaJgMo6XziL-uS8&5#deXNa=)$h` z9=j~>fsa|$qZ8wczFi>naOBCaYbR=ZrJ1<#MSTf(+7jtz9569qh~{X-fAT3WindzZoD-whv|ob`lXapn4_{nw22o!;6Esk7R06iM+O; zR0c5X2kwGK)%zPKAIxvr#!t6n8PB>>z1_}FFr5X|D6%A-si81{jb0pIXs2iGb~#P3 zxz-*(dQ3-OSD=A32810S)l$g;J?rJC6|24?p?GTna2b;_)rt+J5G%UR;h+B)AJfT4fg6k5kV-z(uAH9^jQD zrV}9t14lu@Z+zr~h1pzTp8~K;6ZHGig_v0AjL;S5nc_c9m5s#HUhP$ZJzYdP%KTpR zEhzWz84DZE%BPPWDL2qYZf;FBQ|p`M1eYFq@8-k5@Q(JPg^aPo^S+gP5YYN15Ifr9#e%&LVIm^Mczx7yfz zfTsuXQPCoV9R@9f28~oli_oZ?peK%=(zE)s@9?!szoD-dHQdgEjd!*%v_dp!(Mi-W z2o;4r1ftSf{lgA^g+|yWBkxv5WngvnFt$K4aRkEdN<^~1_?=HMaq!sN}um^Aw^-G$IixPAH)FZom7_a{!~Rl23SZtA7$XMQ+Q&UDKB5jx3Ab4;c&8$b2h z_v0%qX(YdBBb*FNvud0l+p$;?qdk~(kOPimlH@o22fwy^DBF(=o1+ggRbyQ)f)2b0 zss5zd7Fhn|T|50JzqXbPRvi6A{BkutVF(LgsS|`eNdU9W`U(dH25kN2=)$CLE^;7~ zy#_4gZcniTdy`EFTjwt9Zan^Qd-GLW?fi{5w;y@OFP9hmmA}^Vv|G96tGso)vUXrIf9?nTa8 z|Kb1fkDCLq|JwKcc6s8L-r5|zZ8+&Y&U22%8@-?SnTUgM2N(Rywrb|Q}a~4o-%B-^nXY; zgzPkC@)3FOJq0d%$w!tAaVtMKzzV-{D7|*5QEXTyU{MdocA=SmBYh~B`uE3lQg2xe z_~f5(_a_ht$G}2>Knf#(kfolg{c|N+t<~qJO@s?iLcSnizn^{r*UF_osPEMwt{fzS z+!Nu|f9MD8=IL|iw~-QUPwr0dE-$a|Ot3uh*?S*g_sYfLJAVCF$_rom#oYZlTfX;y zdIMEwq5O-V`e*X6rwC;OF5Ie<%EWpw4IOkWb_v`U{m9>^AaWx*Y+b(qYv23|qQJcc z?3~$o^idiKx)CM_h;iz@PRKQxHn2|LjT}5?W6Zp%V|SgK390hz+F_;w7V?h=KUb!Y zT|a!{XMVA~{I}oRo`2Cxnj`=754MX}T|Ogk-`3pxy02{~rYG797gh%=7cMcs;SA9f7e>wu5a!JcH+Ojr zmQqL2@WrfVn%5j0-BCUHD9D>zEIKpa+67XqH#gRJgoUFZWcL)~PPPuk{GRgQIV200 zFE3cDEia&v>)Z-Q0gQ5JB4`=SYYbqm77k`j-yzam7ksEov;(4nEp(~bdM5q+&_)=- zD0_W~9|9D$mP?JDN?iGqZ19XW?GsUGm_l*$OLwfoO{nVIr&&8c3qpQIm}=bZmhzgj z&W-4bBkOy9>P)-FLUwEYMYt8gndo>K@uq%Ubu?qVjy|3}B?OXH-U6VhkdhF|f|K4t zg&pDQM-F7qz~igh4l{uKjQoOyxy~>4kZQhEvu#|Jl(#1&`fX<2P;Us(^QP98CqQe^F*=T>u`&9i`%20kWNbJnIjep{e`$-&}!cC~sUX||YH_hoj;;EvK@*&+5cFqws{rDNp)Q{8A zU)o&>NB5*Hl)uE+e5H;Y>wT(^pY(zj9Z{y~I2@-N0tE6&sNkRv#SM3$`o7-`59?6L zOU6~pv{Rq>39pnN>DGsRyrh$KGb~}|#b}_=+381hC7RV`e;y`n@m0d{G#uwC!`J>w z{*zX^3G+j{uN)+f_Nm70GA_n7^GLm8d<6%YXDLK*60J(U#ZyVgbjvsh2Lpl%T;R0V~m+-88UtW9T(Xa@kLl5aRjVRvq>yo%Q> zHn-MyHaFK<|J&X<{lLS+yWex?@UQ+~{{V^fZY?Q6?8iSRKvfg89q3N6FcZ2Wm-wwvx^{eGO*kH ziud3%c)=;~fJ8RZL-gdEtPVQCZx_$div(8i-Qnve_~;;@rWtWEEMpznF-n%2JmF7< zDeQG}#JvY>diJC-1)|-W+>QGVHn%xD!>Ns(OXpUGAOGXev}abI7@odxx%}im{nhfl z-}65*iFXe@Lm2w)nc0k%Z2addSN$Ho`l_ zj*t(?Ya$^DlWV0+b#LBb#>#dI7ifU~NA42e;0nk)BA$(ALNdi}9TsMMX4?%>KA_@9 z)N2+$1@DwLPvj_tw0J);Hz@z{wr8+=bh*6Xj_0-?d&OUBzUbp0HA*?4>RrV z@>;uc_QG&@fMZG=mu&%tdgZc47a#sQ`8gW+w z5;3M(?O?r397Mx;IxYq(M~)sXXL!ELiTVzeWQwPaI(DPxP%-zJyM{=&Sk(twucM~X zn8o;xTX}TWU(nDnrq4=liy$RYx;DVh13TLg{nv&s>4c^B9deq5VV4y?927=Gx5OyD zz7ff2GX|grCQpP?S4=u{c$3zsa_*l{q1mt##P6qx zqxJmKUOe^M_x)&2`OzFX4m!wf^{*UuZx zD#J>ZcAERNlOOHHNjG7pTOUXJ#6vqO2WcnFaK-Jbq^-Mnekyr4tW@ciP<#FAF9v?V zjIU<%&_R4pN!Z*X2IT zJG?oBh{j1i(+}E+L#B`R4)jK5{nF4FCztaLLCLFp#-JQ1y*fB#-2*p2Zt8D2@)4Kr zCEp|7ai@v)5_v z!Gq0UeXSf}ZFi0_=JoV9FZiwBDBHjI&SvMf>ziqAw%*(eh}%!kC!oa@)1eKNLo7m_{d|QU-dO%kf5ojT*^c8mJq8@}US_R)xINJ_*r8m1=I%$hAaO8!;Ij|4zxXTfET4SvbotKj ze{K6cKk(fM3>GP?7w|SHa|?@QnThm&iCV|=1FRI9jcn&B*Q}i{cbq;|e&y9)TVC*8 z-&+np_t|Z;$Q%qI6`T{RS|Yg6DU#PRv%^sa*6K~X5F$9hpk`95IT^LR-A-;|{=<)z zgUjpXKfL6t%gf*RMvgEL4=P)?X7Q9!u*LB6QZ>~Iwl{Gu0^TWh=RS&nSbbTI8?X9i==0|)0BYi+apfonV1E)XJ+!F1etMM^~bYFeRZ zZ$1qT<&`pP%0?VXW$UNEmOzdE`X4E5Im3zs;Q}x&*ra$_{}5|((J0x1zW;Spv90A9 zudY-h6``0yu!a)NbIvfag$$+Ltn|_xsups&>OWxcRO^CfqBHuW*H?rU#`@cLsrsZ_ z`wGfGv=ttN8D32q`w8(Zfhv6_J?h#>9~42h&P5^!^=f?dr+G|u@vrq7oDdvzfp{+v z{nebJTvA;(%-OGQ-P!?UN5eJ0spMJ}~ZLhj`q0F%}=?Pv{D9`>2Aw0N$=?HTuPBP8X zrXauNRAD)F?1=0_zblq77<LVQo!P*a*JA21?u+c#RKJcZ+=Gk z2nE;6X>Mg}-Cw0fmXH2H)cje*-^X|Ya>^#tnzFoAxP_S8t}nAw0V=jTYrGUn2g9)= z>i%xo*q)*>;YCse$@<|v$I`L_#L`bgX(t%QWVDn@>1+rF-1h6LOFW4}J)<%6J+pAL zZKh@#vUSi}%HB5m25i{DXBCl8&rVhTs6}ugx+>z}sHPgF;p0TGm2Ed3NBRya&2AgS zueMTGEI@SYq!p537mhYly~f2I2;$R-($U+;hY~gHgPNwQ^xSV~F^<^nVkNkus`U1p z!XqrFy|8OVYWt2kaC&ghch%t@B_#t*h-)U=C^#A@VM zL*j_%CynU5JH76-#?jeY@57y3$~dRLgkevcu7q=e{#!$(3 zLU|JJzeE}Sl~nSTFmNy!b}CafdFjJ+r!vIKp>8#tuKaf9q+Q(-XMY&dO1yrWX+N$^ zkG@KO$y=KHP<-hoPQtY7L-pp3DrsnExc$!olX>qXD)6kY=qZMk#cIT6kK;_E3=hXp znr&vJ$6>}eL+Zd32wheH06+jqL_t(+m&vxiJzTEeK&s=4F0E;eVK(`Kr-?ee=+3d@ zg<(*gfaxD)SivU{QbAS$1%BfW2LjT0q-ZmPehvyb9Y!nG-Oqskm|O|*5ke0j^Fp`0 zhwwm5gdh`K-oV8N+(f^O5 zH{2@I6NkAlVWM1|I6?cyZZn^cvcF&=$|4DUN=-)Jm3Gu?3Z3C;srTP-Ls?{%mW9Rk z#+A$EC8tl8oqHeRf;l*g$SjdbM@fmpW%~A8N_p(@=Hi*t%?7L53x^IgYuirKSS_Aj zq^~;At}pWp-Q*PKNeKl3g6GR=#s{o!4!E-csSAR0ZoZ$yjeZOPFgGVMF(xq1*|CN@ z5b_m>v_m#pPbfU_ZU6-d*?ypn@=1Ef7J?{O#teIERJ18}VKKlby``_4i4b2cfAk%Z zrMQMQj!`VZ(uxnW_!+Kx%ey;M)Q>tF^p+3Hmb{F@K*n!d8@Ske_d%9Fj8##f3`=GE zYNcSz8-)$0S{^qL0(qP~LPR>`njcAk&#wKgcL_nF7E%H<9Ql)O#6?F9DBB?%>DlX6 zaXop+T~S-|m$-osorn|cS6Yl27+2ut=s-r8Q2Q)YE!T*-IA^o5wzYM6d3*Wd+3l^J z)t%E9FYkWp!3*s__(%UHIN|<{_Cp{0eG&{hj8oP)GQ*t&hF3P$*)_?Y{mL=!IaTa) z6_|h84|h(yg+p+E6B7&zYYc060|;Cu-^hZnn_%aR zcOpa->*S>F1_=vu{KA>D?c9SW+q?hu&$ciBfxq3BtFA4dJA9y=nV%)t%+@FK7@@)1 zPF&$aTEZhn3f7>UA}xOJ297}B{fp)~YQYPp4-J;eH~!eaY`3Q`m(QJHHT8*y$}N{x z%Bx@bHRa^XUfeu3vsk|5H-C$lRXA3}8j*fiNIsrSML)+C4#umrhj{Yw!lm=Wt*uq= z%35!yIH1G~nrB^*Ic#mW+q?fCdv6~1=~WeY-sku3YwfA5m4t+_CM-!qvxv5~tul%- zhDAXEMQz&d=~esl869WF>CLv=wjJBCK|o9?z#K9=bpQrl_1qCo2<|xbs-eIBYm76FgHKV zX<9BRf&Uy~H_-?e$i$))=Vs;Ipmg;*TgACki#J-~Q<0z``$W#N5xW&OHn^n$ITElE z2g;E5?zsh@)}FO$bM;h-P0OtVUbOH12evDc61z<8e->4=!%i8~{&KZ_yU$j40xOF^ z*)u5+egZL?eR7ntQBq{z4(^%AAsB%pcROU?1te6%`=$-Ol}+oCm7RLiM#u(!e&&I3 zfg3rSV+)$S{>%vVw-1`cV2ZFu{!%AxO@1X=z{s43AJooW35~L72C9uedXVOb13k*4 zkzvp@$UxJzo1PX404A|Wu5@$qZj{^sE6I-3+G;IwMwv*B=~9s(js`Gk5AxzjqmUzt z#kfFc1;iK)Hz}=C?iiJX57<;h5#%Mxgrw8|4PiTj5C#BErL_H%D&DG2o;X$S;iZEn z`Glca^$;GgtUz$8nYj=90NJ?%9k5OFBElNG4)(BDs&EfbSy?U*y!FlXJ}ya|qK!Yy zF{cNgcUyfI_W_-p-pL3x#yD$vP?g+*&jYblz^S@ zl6ssHh|WTTlF<0-!u_0+aqF9EmBH%J#ALaK=XlB;pR3C1S(@8+@p+KXyyX|`=e+K9 ztlq41uMfqHbh_}~Ht%jV9f97YWSr{|=$xE8RZ7l4$0JDfws%-_d^U!BI@y^sXNq?p z_}RJL#k3JSnSw}>#HNFDq7P2Z!8G`kNFxj!ecMirv{oIe*U((OoxY#fH6&$0ESjUC z5*|N$y&a6W<-Jvn=Adl1^GsK8R$+!oX~LP5AUyG7Fx@-K^*=yJ5z=tn;{(QUZO;z3 zPLLrS1I&+sGonaa8~8%@L7c!C-#Kh;pdn5FZU#uILw!qa&I68&CTzx?5X0_Pf^Nfl z!Wk~prk-ZYGjVreg>NWdgOk(Cf!j(n4nO<8m(NPg{gM`lC*u%D`swf2Q2)j(T$Wpg z>FWA*KdhmIQDxdqk1E}V^~QIo?9;IgXBgvBb4le(e0X6?hcA20vI`M8)} zyj_)bbg{UNQ<#i9!;0T8!=;|(oAxezmYHsbwSF`H)a~uUWqcV%_;l~;F(JgyaDJJt z;c&L6j6*$^vAggxSJ+b}tn)J&I<}YhHsN!f#Cr_F?dQg4J_BC{q?^d+=trNSGc+{Z z?vrJru7AeS;Al9ba04_19l*5AWX*!lLy0%Nv`0Zg<=| ze*Xjgss4EX;~)BH{l=erTm7lu|C4%SYQ8K$`(^G*#bvxE8>R+|9c*jzG)6A-Wl1!p z(M+|^GNv4yXFM_(5uW7?_Ku~~Wu?a zft{}@OS^kJ;en5`}RjWYNC_g3Xa-(IhN`cIt@vDJuni0pFj9M4RSjUz1JWeRxBqsNcSKXTq= zv%dQ3%c}<;e2`V$Y2S^l=XcIjQ{1P8tbmnQ?=@v2sq6`XqzxQFU^IMoEpX7F2SMAU zd;6rwI2@_bjET2WaKP&tJQ+J?gQG1ok7l10hbJ&wNah^6W#b0@7;np1%+WrZY6*a# zjg$bu%@@TNLv)KvDvyIrqUV|X|iKBks+=U249&PcTv#xLrB3ITXZD4 zft637w*HB!X$Lx@NPnh9oJN;+;rK)ym2AIqG*FjTggYrzH(bDzzlcvaKBE`!KxJ}T z2Vr9e5*S2cfP@Wv4cc@%Pmi#;7=Kqqysd-g#2IGo_LWwFBLtoiH<00M4kKR6Jt5J} z2}SRMr3kDSDF^cvhs7Wwfmo3+m*`R-;$|p}yyaO9rAtj;G!ARdz6$N4Tac9o7@Z>K z;zYK;AV2_~ixWe%Yi>P)!z%6e7rszWZIUSNm;1u6{Bm8`fwxZoTG%~RRwS@-|=6P&qQW_R2cuLaTdAlkge$i<4> zcfi)v;xk+LDXn)ek!Y!VCJTE*BEI^72s7Z&v`~{9zkd%`~cvL#>U+AR_il1~2dl)G7n!mu{&C zvb3~tT6NDb>Q~Ew zk?z9f*G;Qt-BVAPfi9v}CC+YoEF;sF=@Znjs;)l3*KzN{7=PE^S_4NX34^j2jx*uK zqn|44%J7+%@EEcu{>)e6&O8}5)0g;%VRcWq)OB+-whiT{-AR~!>IxDrq!Nczqe-7M z2S}(%8&|^!;v}pp(8 zMO+@^pKz@X)@^r-aoM!&dtFbBjcu=Se)-IOhx&Ja;b8qIzxtv2wcq~HdW3D#-2Bwg z?1prbaaVTS5rBdmGKGi1;yObT0o87t$%Wus!AhGT7&4QE`*B_c`q;HkE+ec2Z?kP- zFBeSx%C~-F^~w*vw?6b+@8M?Zr`7j9aSBn~avBQMoH6;WL4~eNsn4AX z4d3XgDN31QJi;!AJNNG|Wp=%c@dCw{mYHbz#<3Y(~U@R9rX?J1K};}y?nM%LlGs3ML!c@kh`vOMX^Yf6uu z4gHm+%BNbbWez+z_p8^rPm#S+@S(kGW_DISv+s)xaH0Kece+mSOb<6cDj(eJZ;&no z2+S8ZSO^P|sbsoY#*daZ8Y|Ou0{B;26mLLAo1@LQJtu?>(WM%P=*P{36a*BJ(^8Tb z4V0f~oeghm1TJ||67~&0RRE#edR;yiOc*~}dn`-=8{kqjo$+gQ`PIe%dq9N09xbNz z13E$z$iD{I0HlpvMcM*Eqz-rcz8%T%Dh&;WHsX#w;-g+GkuuIO7&&0rcar+=>S=JdxKLS^B zoUzb8h@^=OAg~yr@6rCp7*`$Jb(f?KYKt@n9gCesZEG>Lm(&GIK*sNqdfXDQ2?w!h zb-Jis9yia)J$l7uWe!?!8y5*JBRrU4P;jMx4hixX-u&kJX>WWj4_J+r&GkjP%_H?H zt#*=2bw;W=`Vq{ZHDKqW2h!;n3|WzqLf32bA2zIVjo9UTxgqrahiv^^j5Y1xz-}A{ zi4n+kLsUQ#i85gf?jeAv-DXOs0Yo8$mlKB3e%aC)sY0k$3o~$b+_?D3KGrHnXv-nW z!^m=NF#5Qdbz{#OA3UiW*BsUv+*<@{NsQ9T;UL24$JY?mCKB=bb^W`z@Cr5TW|GrQ zbN4eq*WNW}n1t!tbxUO!Rfe@t(%kh6prN0xe}?Hcu5?Q{gJ(Lrde=M@MWiMD6Q9g% zYYyE}HtZ7qh@=^X3>Wp;BGumgbWWTR4tu6w`!KAy(jQ~^3#Xf~i7V^5iv#ZgKFuoq zRT(brjqAB~qg|Y~r^KzE=HYZEK0pGu>ATRUe^-eoRi;Hf-Nj*?UAOczT*j*|Z0Z@e zFse*%7f<7J@!w%wPAvQqxBjY3kLgrpdJ|4Pw^i?qK*h0@1pO+fS8g zaTlj%!>3!CrKZSgM?Kr_oeIGSg*+8fj&!#_$t~$Ci!1dq-^}Pteb?viso(PM|5BfZ zJs)L~Q(PAN$ezx4!-5)h*xu>azRho9hQY@u_N#ZQWxWky~3??oG~&(es%pIO#W!Z1W7} zANe)+&oTZ;z%AB>f^0JDAlP+}(wz0F-Lx2I zw29UnX=s^iVKe<1uB+P?{Gh9>mm&ATEX{QtH3SK`;}=t1;h5{jc-hV$z}}V%x_DK_ zr%Jo#CatW?VW#|HxqX|D3UTr;A5KM@7iRZS4}_J_GfAMpXlmTKMoSY*M9=6<0^L00 zVg$Ifcov8H0|qrSGh2;KPW5JHN9$L={M+jL?s|Xush{~Nn3!F(F($Bs2}c9(45LXx zYyUDeC+DWuZ^UiPJjgJ*F+)b!`M~6u$p$)!bx|go1a^lsVX1=Ptt=9Ey3?AsmsUAW zI>9|w>-Fdt?_tNzc6rxJUshiD@Bdx7*K^qj%v8}hyCr{te3&L%lOh!RF2*(_T3ZfH zAGHtLv{afK{LAbhdUWspvNp#~0+Mus?zl|eCqh*3K+}6{5cYdf^zS?GzPGFs_Y6lPCb)BDeT^r=$D~XM6xn@HZEyBAHd()A z2L<_tlLRt z6rIHvyL)KKbebrvppUw1lU4>fpq*-`A5o~{K~kXtDOWHMQbq(_ERHR03NxOIQeOG6vZvTBQnVhrIAxT%ErBOb_(7^7|h zrv8kFNjcX9Ghqq*QC!X`^u#rWURM9D7X^_fm_dhH3_V_3sMy_7aqVza_%`ipgZ8z; zqekq6+4|D`_2lAm`TV=yQy<`^1tvUY_M5(;zI^9ijt*T{4$+U+x6eQpHjBIT8X7gI z!bp>J#TibBqoPmhpG7T5BS;9R$YBJ#^fOcf=QWxkzf0Cm31ri%r7Y2NKBYiy@E32%GT_q>6_K5V)1Y#S>-tKMx4=^Nqr!_@UxSA~lj zdDj;y@jO?~An6@jVaLuzu@NFH=yFryVx4h&=G7~upfAb?;D2XtgoX$RQ2yaO(V2})S7FrMx zu;Wa(M5HdhP@KyPKWIXP!%s!{^GYzn=-&C#E%l5ebO@X7P8b~NhjmD6oQX>q_47Uw z*R^}$SK{xwr<=Opuu76bQBhb@o90V*;WbO3439a=D%@JXfQ7t=E@N}k_Jy5W*Tq~Mcz#QAdluX^OJg; zR%Z&42X*80V{#Upd6--O;WP#;X>fwd9R?wt)h*J@6h6~rI8~N+=(&TcX_oRoEG7HL zg9pHh2adbuq%hYWux^W)18CLO>e4cI!C7l28_i7T)a04R-VVi#6+~tyE#(>VqNTQmwG;NvqqpexD(f>(P3~bm% z9ym#kI%8?jb^IH;!Pe<$Pi=dPwKel3uZ<3{w;eHXO6d4uH7xM7cxBkNi;uVzlb|&; z3QA;O?9q;CgS2JrUIoaEpXvVwhZ>pBkqY~K2$2-&h$^CL?z&-~&EbH~;4Iz)X;q z5Jo8&Fb%CcPJbo!mbbnQB8!BQl02|hVQZ+gA&(jjYx?p8LZ7$6xR@Ofn|x4_|vN z&$w}?0)hu?bjy`W+Qx7F=5Iy(7fZamhJ?>-HY|~iq;Vg3bP*gZ^|5+`R~;sLSJr2ao~c(x zR?3wxdVX9S`JVsu|5VrPzpUEL3oMiK<1}Q7aD1jWJvF1G)cX=Dg$R+{NI_F}Dc{C&33wJaW_~Dnt>X zH*_Y`GXNGn{%I$j0q6yi5f>ia{;oOFp8?Pf9C50*r4fA*yMjp$RYm6t0RnY|a}$QK zD$J%&74DQ~`m1NR6i_9xQc)I-p}{5P(H_V{hXyGWrzp6il=E#QY>OKZJ;5h^qM8vR z5Gl1LeR1&MiD|I?l%FO5`>!FEF72e!o>Q(fonO604uRRPSd8&Nx|yz zll4?hyIW;<-l0Ra7mXf#%iHU{%d2IQmr@>@pQ(T6z%}L0o%_p)@!ecA$6RY)2ABD3iRYfEcL>_@K6cf0dIe1u%6z3GS z8S5JU2wldIZrC(qj^@#b#pS1$q%_DW38KTswo%hY--RD+d~^@isfB^F4MH!Cc1{?b zx*>vLmOBd^tprgr&=OdkRr*V=&4a+&n^6EWLqhmFMzpZQdidklRp~aYXV|WLx~ZpG zTy}9kt4MhDR2Q-fn|KqhtLrcRiz)q8>fJ9K+n;pT+D%V})jeT`^={fUt5VmTICM+1 z?p@V&*Q`*;JY`y_{@|Q*kamD}ED@%wXT0h%)H37xYtK5++=c793$I^>({K1QO&KQr z3=`=_Puv(o>3*?KSii)X_|&^@38#J`Tv<-)`m5A4oOaEr5=MK%4Vx1_b>YOHaSWRi zkMO2n)s3fdX?_!D!X$3%>Oy!EkKrWRZT>!!^x`6W(u+l5@E6Y3N`8P=~`{@N8X z7)B+ojQ>J&oYqlBAo+4hUqY^n-DP5pXHQs4AK+q4_pW2 z%{~HO6mdD3Hh$q$%Ax8_CULyD(C1<(X(#1`t|o!S3LcO-t6qoUNt_# z;v%P}neX!&P)@4bJjcX7%2ApDFJ?j+SsYz>JPw%yV?(q@X+81-e=Pg>-~;jV)Lm2q z6Xm#1fUzV5HToG(Fq-HJVxs(si;1xU1oy8-=9;=--a#P4C?heO#@(iMpySjkeH$f= z%5>oxM`Dai2zM|99yrvcM zLM1tBrSIgIGP5m_3r{?_RiH@|X~a>EJ8DxiaHcPWc;F3r1)l7$RVcwiG3kd}r~M*a z2nHV}oQYgb6s&41+j4P`RKW3jqn+)=xFb^{N8w0mzyTN^slk~5E)n*sMYg?9j89cl zJ1;AfH}=bo-}Qp>%=f;p-n(_QULM;?VYtp{Uc}P0#%6lcIyBCI#a|K=&8flcYX@I{ z`>X2rzU>|5n}6VY$^Y;`Mv#^6(=K=d#7o8&<~UnF=ou6n2HuAv=AFnM(vWyqkcy?3b~DhH?@`@>v(lfSp6Yh`a-o z?j5IdM!P_idO9^y__#Y^d?$_`B-$#gBTMBORKtm>x$^Aqe|>%BvulSyN=LoMpaLl%>ZkPG_@v^*prkbASAP6U%Saq@zX$~|GK6IKz zra3(7J$rUUuW1AbTS~T~dD+Ai5=3}hbad9PJsO>4CbAvYb4c;m()6pKMOvdlwk&G! zyg@)fq+~7t+C2+4c>Z+@_h>)jZ2FX~n`9u&lpi8V&gS~ zj~SrV(_cONch{V5>fP{}jy5_{kC0gbO&hPe`;9_~5P}5KV;=_(wG-c)C)(&k2oH{(EO)*Am+C9I zNO6pQ{SZ5&KD%#Mxr5gf9^eU7j}$=%+ua4^jod`WBNN7MQQ_8Tq${kQpJtE=hsXGJ zz%Ci11TF~>zRZT;U~^=8x_sp7>v&6ax_r&yFO}=qT4p!wu}HABaIEa*-O(|&>KuOi zd+UcO@#lU2_q)lF`?7c%a%r3nujTdnsR)9mfk?Eo71a1$b_PxMtsI0y{? zK?J;0A-at2^mwSaD4{wq6R{g0&SXMV+({r%5D+%|@h+uQ#*W_hs%GS92n@(XC^Lcv zsgjcTitmuZU(w|MmvFUg2>q<^}r zt0GU0G0d&;yl|Pm^h;c+8;9o9(_MJYsnXolyJq3KaSfXjwu`Upra3=h(l7CJ{dCLp zs>}3RuIj_^`upjhWuJP&s(0NI);Ke+^jDXY%`j%+Iumqnk&p13Vd*;l!b`M<;w&*I#?afgX%a#;sqZ z7xq&<-6cteNhK>|xkeh{79ozj+~DeM;|9@-a=%d7M;aB#f^&eMl@{Z6DLm2}GqX*u z;sU9&W>(|-o+E~kauHeSPqK8ny0ucj<{$rXeTrv!Hz3CYsvAkqr2YkZq(+!-HDy*) zKOcwB5I?kQN4alqvV8STHkj^k~&W3sZ68zGhCAfFgDEsk8{nX;d^m1dSVut6DJMM!EN8P3_C^~)g7frXTg_vzv4I~rIbSs68`LK-E*k`1YQuxM z1A&*jHP{})910NvM-Ex^M~J|R9__B4o|T6XQ5uhuzZytdM>XZP%@%OgkYtFGMB-!*@{+BklH&GbDahiC(p z%=y6K2{CXHA$-)Q_8llU{J=k|-}TGyC~y3=_tYEjdS^Ah%<79Rj~$%riyQTn#~F@2 z#OnJoCL$v|b2?MTUi>60wd}a{Ys)YFU$>Xn-uV3b6+ih?u>RZmt(LzgS)K)lX%@bwk9q3Q08tDUgLZbO7rQXj-D&emOt7_FAO7?7WVLt!p5BYv^RKC=d4;Aw-!AuY^` z#kk#3$*8Y%vX(wNN+L&iHizv`h%-TFTv^{>id{Ooi7(R-`xUf@D+UP!XwyGwpLV~r zt4l|KCR6A9ForS?KRciP>LG|hXrLefYm}F}4=ji1q{JO*Ysv)xLXr^yU1$$NgGE}V z+3^ffK!Z!6fG7>Cu7q4gNi-fADSi|MT!;M&#bPM2jBUw`pQMxIhTJfi?n^M`5Mm4h+&mh;mRnSrj{AZcUV=3(lv9Vq|Hk=CHTA zV@JX%z`!}eq(1N)a!(wO2d7_?=tj5ii%++%JJwM8{Y5In3D?Ef4Vy6fXIx!#x+Pr3 znf75_|HQ98{AGCcF7At&6E4FgZp&1qU9)L+w21hqKlQ|^pR_@L2fVD0fw`?~Z%#|U z#GAOoohFg~>iLOZTZUWz2{WvVC)I^;>X+`OOS5`>^uKhAeu#V4lW}MHq@MXvPn?NQJ(Xr*GW}gW&56q} zU0jK$>n4op>W0-n^P!*S)GobCL&KOxhrPEM>T_`&@c8`@EQ(Q^WyIxUZn7)#m0_C1WEg-QdEf z<42E_m6fIPdms5o`Cp##^<`;uiTi7~AKH{}bKz6rW_A(s{ngdQL%VRZ$YzK|Zm3vf z%$enW1UAXRplx#@8av=|AM<+lre4l#Pm*oYsUM@y2rIg6H8~bFlWAw0%49D&dB4 znvP6QjCI&`^HX)h8K2=(a1eRLZeAn5`tfBLaYS0t6JOv44`&Yf;gwJPqEOIN38P!! zq4*+ocCp7LX_KFxPLHaRFj zfKQ-Rdj=w=79g6Lzn*CtiJ3 z`NcQg&NYgIe1h$XSIW2SPh_&VQ($RwrfkADJ?~p@uh-u4uJXzEeXzXbRj(}DT&y;7 zfMWm-H_v)nUH?qoUJ{E#q@Y$bz6M2deBB5t$llhI%)8T(=jS+Y;L+NPD8S|nDr{&xu08J zi*Q?zsmsnhP}bRHw8)(lTdcs=JR^SDEFJg6>AF04q?FGdEFXNwe<`o{r$1D0u*2Z4 z5C37gp1%Aw-}iURiGTCv>MX}5mOuWn>Z)fyx#Dsqn88LetE=ljdV@2cG6d`woGD-oVHuB4B7|r`Y8a@qn7Z$7krram>|{L3LU+FKZ_V2C)4ls$2sSbWobl?f%J38e zMv{?!=-L$!s0`~`W+>7Yx->j4Xg8yg7dke6B-tl6O}lZ$mJ!1@p(EQ^+Cny5gD>KU zNe5YB?qJMyj32?S7&>q_q&$iTn9$97o47U}>5?%<@*7xUgq$%pDKp++oa(RkW8rmc zdAam9IDUiRthack%-SZ{^$k@HQss_qYgBP)6OT!Cu4JKGm%3k4Ux^ZM5WJ+mj1q_y z5*jFkvmBY2D<8e;#&UdezW%z0A1rfg%fV*Kttv^KVC6z-fYpyPj96rpw*W7Ho$*aKQ6BQQ_*A;gw$lNuA zPa?{hKzk;{l0%WzB!Ytto;?{E8}->AB=w^R5qOOO0^n9hw-ZT75KKTg>28b!DCmsc zPeDQ>gNIgQhv=|%SEA0k2k=e2!mA)P`q9C<9syazhmr)fs zM%vaquv3SPd!u{CPro(|5l(zC{gFQ74||Kpu)?aRA4Y+i^kK|&>yYUWPvJUBzx3}o zhnx0HlV;N(Y${7v|5RyCoWnZt54UYmo`<80EAe&H(1q7s1mQ2^)0)-8?7)v%W!{y? z>8{y&QqMGE9Hc{-uIj>Q4qP2Q{nazRG)LN6Wa*b~RQsS^>oz7&)8arp8N|d9T)&8e z>=?H&nZ{w9i5rl|sLZb(fsg1zZy^nvxYaYC3JFw_V&M~yTfc3C+1BwRh0U_G#Em27 z=0R>J1Pxo{Hv|quo0DO@xC@svzdU}%qTK}MK8q-<1dopQ_g#LV`i8Ily7DdG`P%Zo zz49B%&9AzqW}8B(*Pl(S`wjaQQ)cqz-~PJlNB+S#mq+fIE6;lJ&Gme}o3p1>!WLr) zPi{}lmxdJ z^`a0b>es+1<85)F(R8@RF5LMEcW3UMI0y7J@sM8YIakmOtI9M!MsJcIFl{;p^jp|Q zHE|k0Q@Cg!Zaf*}Rd?`MUh2Xb)`nwRnikaN6RU2~e($#E1 zdV_80T!qPw1fE=6T4KCLxHU3EnfD4e?)T1~U8t5<*X!x&*&es+mv!D&ADxW8t|F2LZ$Ow7%@S(Tl#5*A8*va}_Zj)a=y;APz&zHTF#jS^rma@Q2l4fISiRUaIWVSV39_im!PQx=E zm|QMXM-P{`{2xD6?SlQBI(vC}#Si~jeF7oG>0LX^YBgUr&Ymq(t0&4DP54D0{Ufpq zo}&k=rF#xmPrml1a^%R#GD*ke^2~Z-a=L$dae;*?*1JZ>6c1FJOtx2+m#f*iIm(O6 zO_j*<%p^P^eHH$cRWmt9cO1}da-s@su&K0F`Aj%Pwl~OsqNoO`jkG1o1!06zD*Kgg zp&a`tqIQzn@HMgUW=Ao2)6KvDa(3Lp|H7}v2`YQu2J9_oSrag?kU6S45oRz^kZK3t++3%h29YIK-cPc|#W$lqxx(rK z1Jl-e1>e}vDn~0w2_!&rpjeU~9faF{*zIwklzQ>0^Nb`N9edrWWVLVLqyHQ{vce){Dn{g;NoE3^WI^I;tjj4R_e4cfEJ zGaWdEO1u7=6F&2h;W95xsOC3eyKb5jXX5LI)oobm-~BS}sSm?z&$zpBX*Ru?mu_4M zXV^3+oYRL4%OGsDq4d|{XZd$k=BXP;`lp}v%tJSS38$WExsbVwC&QbjOiRX{IP_Bq zYrL-h+g4%%j-L5Vcy-+_^d(HjoB2qcV4)0a`}H#(!)Z>XJ@b*c^wVq~AUwpaIpV;D zkjz%xp}+-+_{S&T3x`a5cb%lkgJ)5>_n`3VLbbgC6Fo7(9tGCccI+J4!}-h?zu?97 zCw}%n)UUbyTk5C2=>=u^@FV4e?>WfS4%#k~h#kX)RHiol%)!M}7Zy0L6`QBj=hkX2 zp&Kh_Pp_6e`+}$fDh(g&2Wy5OaLEtLqmZe%3)w zq%nr-)}iHO7|TzkIhae$?eHL4@IX!?+Ce*IdqY4NMn!avLs9Ng{w;kmzHZ5wru-rw zt=(u6PCW&PVaBd9u1pBim`G5Thfg2n5Z4U}0YYndGTVE|Y*!m##9u+}>VVTvXW0RNi*i+vc`>ClvKM0)S0W zHrZwR%L^Q#eS? z^2i{PG*%X9*XCcr5%cxBf9m+@{?r%}v0c;KW%v9xOZ@#u|LC6jcmDa0m)HHD|FQm| zSA7@YUwIY61Bwd9qpZO<9p$yF*-c&?7@sJYeg7Nl4}Hh0t3}pX$JlW*wXsrO`Vamw z3oot0m;?pxnq%KLtcFz};ads|t%>ofHN;n%nK@Q}qk_b`r@FHt^M zkMAg7`qlTB8(#CR_0q%lBOKT$R~|S}AAj)C`pn6*W#?sk%F5X#S}nXLGeqbdFMy3H zFhEc`S|QM4R!$RTdQa-1ipj z&ozcX@db{+jS2K!Awtk4i3q}4YA9B~47we7Ou*&_#E&vwS=r*u!gzmzqdkx}Pk-4i%PVI?I0C;Mmz2}DoH;l1=SWUu%9Pn}lfKZCp$$0b-hy?tq%rzw z?!stSh3>=}6?iPI)*SI+wp0gU@lO8;gr92Qk9pu9QW_TyeB}CH7O1+77SXt(##7N9<2z>~D z?-%baPrLr9W!LUq)yi>b7mKYBOI{UWuM+~D8^7x{)tBD>&U%(34$ic8Ei6`J2%?To zPtj|);wfYA7`mkX|0#h>CH+?{=Z3CjUujC9NUpdT8v~ec_cO!i71Z>z1D)icvPG|BEows8SGf{Z%Z6Mt71pExXo#Fb@h-n(Y)hE;d4)Gt5ns>G!|Vbpcc zvQ*ceD&y_y#xo2fykRp<+Etk!%^9W}{z7hDSk1%A@Tn4i>biIR6TiBj=}U9k(=E%Z z>mOzYPj%I>U*p>RW*WLM;!O91&GZSE=7g~f)0}=8u8TL#>6g0hT{Vm={nMQu+pONQ z^x-(;(jM0>2LmJ%6lG(##%$Ouqx91bn;CsRapM$uFfZNw=f)%o)1@uOw^-Cror`sQz|-}CQZRDI^~$+l3yY^e=$**5nq zNxU9c8SVnGleoWd?`+w(FjY-nR`FEZG-)`|o8PyyOmZ)Rj6RFZOa$P(8%8(<2)vvS zm+3H~1PebXZpMb_YH4a?%Sl~y+DjP6pENla-+zR*>piJ zF63kpfJ@4&{*fbx`+N88++JH<>mNCGqTV~dyFT{75f&=wUVNLNnAyLl-r%U@ouBx4 zIe>Y2?O6HKKjY^9-mK4}l; zO(n5fkF0Bx-6{{#o@Y3^FpvL%fB8>pU$vrKFC>t}g0WW_PQzFVaYLaU6 zO?W@uy(`q+4&DqERmy26`?BF4Po+32mvA2scG%BZDN8#zyCTn}+Q!XhlIhKr^7JD| z%H4nX@#^)z{t?c7|G(AN_(X!V|%B4HzVIRi)wUo@(w>sXIBsrb{JIp z8q`9uK+`uQ9y;<-GwyVy~7U{DJC=vj~XnE5=Fo*1>t&bqi zgHR%iagIGzX(3bCldr2Z_6ql;%2D6NsQy0*c_YIjCCPcg}s zj_qI&Lzp%sfyn3m+6Du962`8BvFScLr?|K0s{Pd{g0Br;U>N5v+#6p1-PI$%{L4I# zd^U*t-nEtL8xDP`T)DDP|IUGHc~wQx!lkM0prpTohD)XVgcWY~<&n5$`#zuAfsEeG z^E=nv{Oo#iWV}51xjU=fJmENlM2>Z?^1wUZQD67nuc@Zkj&u4;2kTwe-&A>a77|#G zOmb$6L1KfQ4C6E0pu^zE*|chYYJ>Bv%j_)h8YEsw^OY=wdD2)X{oC*-T(RwbNKaSP z-k=QSi{86|gb(T`nUc^7BO&lr>7WP_`6vz%0!4q9O5lcfI6!{w+(Ej76vQYHR?u~e zQeudbu!i1f2_y9hr9N!dPJ~jN@Ke{W(l6b^q4U$lrOi!k002M$NklxVV$>84$!z3Z0Yy6&1YZo{b3 z-c3v6)BI-m46CjZzjfaAPd5bzPNw9PU5ZfemPxlfGIx8mYFt=;)HBJQAIR=K%qvlm=o<3*4t|!FV@6D2ZZ0VGp zV$}+ewJm1WT~zYvSd*~e}ik!QVu`7eafnK1=URgDvMY%x)YtjWM>Q4B{rHbmGP|| z?EIVt!+7uH(sFN>OBFY;!AdJgh6CmjHl{H_-h(#}Ze78F^=86i^&J{-{leXwrC@rE z+_6B-;X%bxB*Rfd{Ie|xmvxbCL^nU#dj9!|B< z1c)g7$+*IupTrk9ou72voO}QuQ%m8^gL=TCXFAiap8!py>W-eKqhjfn_Ck2iBHGT^ z0CLv>ZOA4wYm?2l-Ve66;eBCv^K!G%QRm7!dc7%TDoiG~$2dW-RnPA3^%u{c ztv6Un-Mjy~{>MM@v9e>wTz%-!BQ!C_VqzQd=|Pg}R`{j6zF1}^rph!cuD|cr+;4EdfU^t_gpqvojP^2y5UJr zJ=`V2YNXdZut3Rv%yG8cPnUHj*$T*Z#XIob#4(|v1_NI>i=T>) zY7Zknt>C~o8{qVKtll;qkAOM}KG!tP2MzqdTFar@a7<^t{*qvS-O#>Q{{92 z?T@POe$TI#2j2Cr>bmd!-cmmD0RmDnc1uyvYsT4aan;wouq@wwN40b3-fDE3%OuY( z(W2omuiRHQ7MJSrV-M7q-FR*P?vMUqdFpGvuYBr{57kTXeQ}%t-tzVz`|DnLpgl-ST)HRhADQ(9)I*C8xckkE{u5{ z7Ca_AA$+Mx-`w8fd=75pMILi=lg1ruQ%)iSgjs#?kLuCawvf*{yQQjlDw4Zapf7HM zl?pLg2a5t91Iv%HNtXWE(u63+=r_&A2IU0=G=8sVv7fR>cYL%z#&MOCC%K%D9XJR9 zIE91IgF|M$9_2*Z>4d~JVuH$%qerUQnb~?|YZHG&Q6W5_6+rX&Mg^7ho8Qi-e|$}A z8W0q7YdX8FONXxAAOR#`M_tIxIJ;qu)9`-b-jJ^jmUBjqFHn@-(5;_oXPgTb{~S0- zV>c4MND`}1nnC0*ZBQxBC&yvF^z)S|flHD)M56}MPPny0%VGi?$;pJAI3 ziP~m0VFrodINeEd?)EbV<7QhC6q~II43ALT!k`09l!&)I528e;=0;ivr~ zR~0=!@I+Y2_W49xd%6vDqL0#Q(_xw}_MOAsq)mH%hEXY@O*eH_>S1XGB}tamFJ#7f z&_dEb!dt3gIEOdw;q0nr>wh8Ko>lF-x1i^65<2mzQ%g}lSthbbD*gQOE(84=cs87zsIf4W{ZA!lZ41;^x!;SdW2VaP%&)Em@WE=#Kcw2j#Q%`v9`C%NWZdr8A0%%vI z-q_CJ$vC>Y$<26DPaG}&R_JyPZ^moUB9e>q^Sb3^IQ4802~SN9aAjN;r+GfFOtBA_ zcf#WpN}MXgrOL8Py&Gnb27tTf44b-PR2kM)i*$={B)FMS$$vBx^%NR7QIBW(&<8M> zEeF3S7m6V5sdvkZGCHrlL$+c9C#<*98<(GxIX^C70@C# z;Ko`?XRFUuGcJ)~?U%I$60tB*Z?E$t+ldqPg9ne+Q&U&ezy7(!A;fPE9QH<_wTA^cF*+2W=2Q$T)lT>e(x-|^R08b zEnak-7#kUJsci~^H%Xgwzce3GhYHE}`9g&3|IxM_Ht@Gv$h>VGE;9u*)G4)<^=D@Q zl%&Fp`z%3&w^_|=>2b-nTu9YrK}ZON0(YrVsKN`0X#o2Ym}^ zP4)qtqK`x#w4fr9jqzMN2VbTw{23Sc8|C!im}%mu%htwLy@jx#UT5T92Yd~doD&9! zX^<9h+1Ta;O9l6R{xDTJwLLbuv;XjsQ)O{sB~}f&C5)Iy%Zpy{4gE7GdgcBvE|q;( z@2b!A|E%17|0iM&FUjM3zF@tc@=Jqf?nc(q`y+R5`0ljZtruMt(ltcNLo zOif1(hOv&D#`97+TeD01v3!k1sA40i+6PuMbkQT8W{+|2qgIvIY!OQss>Iec2wxg6+z4|+%=P0GK zgRwz7vhkd2n5c8y&xk5XR528_KfP;w>*no2{d;}<2aDqX%)K+uGmv;U>$!l z6RSs$K`#2e&FW0WNe1qletstzI3Qw00&!PIMxJB zdElY)wB^Mza^m6gv48y|)mMG;cT3?o)|-Fuf3I$Q`ZKGo3646^ym#%~N70XzsoCi= zIi&z$gk4s2rw{@1o`H83uw7+(cD@`xc>-a=cG7#i1pTnT@XUF z(Vs%fLh$~PM^7=9Q_>X~qMl$gvBM5S;Y39Y)iU=wz}K?tV7!`~8dv9w9Z0+|!i(H$=%KW$ipsxoZ0V)gUP(jArVC<@o=GHoLJD-hleqp5{t8|_t1Y6U2F7|8Ar-TrRx6i;;uI zO&qJIPUALK#uhp5{lEk4mf_h^`jIgp2W@v&oc(uHcAk$#3j zWe;0)3Z19G1dek{@cPjs^)$q+@b)hvfKs1XsVgPRlMugA`MS;erUOr*t8G{JA9|>) zomnNeMu6ZzKQ=uXg11ptmR1)z_vriw+UtQzHxnQ?U{)+~pa;ifO_BtKlN>gyDM%v~ z9LR$VyFhEJ8aE@scL>fQLYXIUhSI5a2D zj3@2-tJ0qSx+RXTZhT$X3&CgDZrO`t*e+bEj3e#piQ72!&rd(qa5@sc@oj$7EyJ1y zRoYY6JE{G6bz%OZFT)9^IpH;DdJ^9-?u3uLNgE(^!EA~PS`v$vVBx`< zZFt_k`^q=aH`%SlIj_pC=ga_E=-AraLb|a1(1~OH@wvIWI=Olof9_4(*Vs+g!pIqvi+s>^2Q>b13%^6-O8<(3=9>xU1Wt;(MYVPXsYJ9d=&F`A6CTB*f zsT~|$n1nVWrlmAFRPWLg7vw+_;gC5BFWrsp!O^~8P8%A4&IrMOd`TCi+flY{-JnIC z=-*Y{cB0?#r@w6{>odcqz3WGuA+&76*c?LPjDUeToE$Rg)Dal=yb>Q{lkJcV&W$)8 zf884#G1NrdnU_Xy#H)b_*idbLDJI$>gJ_hWLaAzdU4a1&h#f5G^~O34YGZx7x4F2u zu{AX^zID&RBioNY-0vSec(6Wn>C4KQM~@)ETPrVk?sLoLDh>4V{biZEuRitpKPkuW zyuW_Q^IuTbo%iu-*VWfvUo9OuQ_no<@~Z#HF}LS~Y=k4P(}Z1M6HC7=9DbzCmYwy& zQola2HdPMPa|nGDR{+Ws(M7BPc0h^06EkDw821QXvD7bL^`?JTmxB*gcYOMftDA3m zTD9x)D-cj1N@2l>ovfZGL)bKqAjCx@cs05kM4=G`xJ1ote_?@(Ie7tOc7CopcI;R+ zJ++J2AS#IUY^U;XGJVX)aaG>x&>%!Sp#U4oTf6S?8t0v{-WK8)Q&+cZ(yH8rO%il}FUahT!=l2>Di;WG1ox0nK%?0` zv3vJUvjAxbZdgHuG=kMJ7+&s>B`FFItg`rsIkKZ}A_xXb&IW*)FO+=+qG`?pF^=i4 zu1ei7X%3I}XMigmO&~=lk(P>!-%`l%;>gcttXVyjS;HE9vE>gA{U{U01o?XA5IS=$ zu;C!4?jng;BK>Amc=jVOAh1J&G8PWAX|T*==QD|_5eyK<0mN5gn4^TSh|0jxWT8iz ziJ7hdoTaU5P&Q`DkJLgUp^-kdI>H=ilS@Pizl$T{BWK+xhzd-Sc>5x4%WOr;!uQh8 zSEvLm@k{E9pe4~2p(AqF^jyxqZEvna8so(-F4SnLuqed(ak7!B5DXeX$pKTjFC#NT9`C7txYL}v zFkO{#4ae7YH*8m>y{o4=;Syik)e~ptH}gEK3)gk)!t0)Pb-#qqFlo>DQU`QUu9~~b z^yjC$Vbb2!byw;37pcdC8Lk^~WjfW(OHNERi!1#x4pcX7IzC>UnfAml>;ShzZYO-= zNm$|hn#s@kb&!6EAFzQ+JOhW;Fzl|~@apN8dg4uci{d;@KjHGzGx50+Y&)?$)t%h4 z9v}TtH`8z4v%EFq9p%xOWhLZN8#u#@TRqdHp0L729Bmlw&Ludj&*oy;|nR@Qrd7Mw*MEF6XxRl~XL)uap}PjP`H1lD!7cnyZ&K zM(V%wvKMo?)O_uhZ6pk3nM)C?-b&d!5B{m=bC_ZUZpw43o7K);bJh4XEHL{FSQ~|o zudy8%W{$#QQC^WT8;*lWGR|1eGI%nRGJHXMEj)=R_~bi7kkGAnidQ9UR*&{rq0>Qb zJEC)d!0xBYI!trGhEMa8$kd|_J34NyG@LrbObumwiK!)^%?>GdN)i7k!=3{aoN^;b z0KmMOmW;>tq(Tp;)_q_m`;-a-1lBt_+7i1THW^Pn2D8o@-uecISa>U8b7_seEM;tS zadoVJ=bcCUk36{9fADarKmEB!>QhSx%R`UcMT2F68JlHnjz&GoO57Y7g*kVjt(@iP zqG$Uza5MX^2aK25*%|76l7;6Z;r3Vifg?aXF+GJ~VEdY~vdS(Ni^9`9E_iHSR{D## zQ9`6^^U6UK4APkSq6RIOFbw>kNJEVBf$%FAhv>~wqb_7hzYFP-v8L6lk5V^l8>cus z`sp$=zFDprI|CQAvmAjGx)OWyRU_p)zxmZ=YI09Gd-iPg^joekXIIWtyLRoa_B`+A zYMh4YZqiXidW#DuXuTWkkz&#H%Z3DegFNg`i0-~ef2$G_WxkBsCrjjQy#eQKBxoFcOpFKL&0SoIr|Qo;F3YA z#rZhGFlV6%P+6=x<0Xddj-`F_I*oj05Ejd)>H1-C)f)EIm1^(hV(ZTOdefLHCW#K{VY%-={cL?TftWrKMmRoxJq~1ecTfb~3g=5dU#SwfBtZB|mFxxZ zE^!&j!TDKl*sb@ku5n=zM-;g5Xd0ow7vJ*c`lj#w9+*bD)2S0>eR;LshNw?pa}_-l zWJ`2v-v6an@NXZ+5os2GoMtQ2|+RLseaIxjid+vRqK>m`Edf*WPuz zSa@*_<1`=XmgdxjKd-=A*e?Dw3#&?8n!9DBU6pR?`K5c}(%t;18-KcEJWpkKbyez( z?fkTK{l%B%rMq!xS9Ni8;jBC9v~Ygfv)y7Gq%qT^n=0|8-ngFo)!le57VaEm10$?T zJ-h#-Ndb){Ye;SN(rCtSq|!chSN`TD#K*Bj6dNN6ew(n@NK6wd^oG~L1N%M zWG$0mvgifLQFstXE8scZg&<$Wf)t9w3`>h^+h^H&aAIkxe`ih3~u$+bf zefF+UwqR^hucGF}5F1mb1$X zJTU3aSBQGy5h)i6S}6@>N0w#wAjA#t7&{RHDz>CrfP4l~kYM3@(9E_d;~MV#gcrJX zp`Xe?5io4cPq&^8oG__(K+p5D{aCktE?>fiR!rV2j;kP`at*R+V^pKYXqSve?va*P z<_!wc?0AA7{PZY-@|NA#p%H$!X#f-^H8U+Tlnb#k+Aec4C_CcSOjS5dLOQtMZ*z5f zYHN9IYU}jE*7m|u-T&;L-CrNR=M3%UME!;PkCwxW50jxsK*cqG&WG$0PSQhdmDT>q zCUJ3E3@^?kDm;KSE>~QBrL_>VBxg!ruCgnv^S(N(3?ZoSrKnKxoZ$qrgqyH7@mNYR zX$Sz_7@{=~*KGLz_4tv3%rL*be941Iyo@k2RhHRax^MqfHM?hDx%am}TfO+zf4{u< z*MFnD=iNVA)*m`iJ>#mUmKCagc6LWKGSRP=H+J;)UcDE=UR|cf<~WoEt9P1-@5GLJ zW^TN{K|iPY_N(Jd<(`KQv#nvGzW!CORKmv#UW@f3?|5r<)vI4puYLBGA;Gvh2Nb3rA7(0Y^MNIYD)>E;``MkmHDA(N!)y6djx ziOlVaYd&}>mJ7iVM#<>dUTM61uF}&9ea(jUH#OxkgY|lKmHiP2%Ysw0RYCjQOhC_q zUUJ7wz{>@iaZyN-=nZsW?p$P(t(y-R1Sm-REMX_Dh^ zX{G)N9I#EW_)YhYQ^4xp4QD+{qCh#AM(ZCRew5*PaTs1Xv1iES$sG%gBY11wO{lu= zO+8TyLG2ry`YBJLOrne#I(QjQ5=bxwB#`_jY+wgj)VW3Is6zRMRLJdY5?^4shleDX z3ia5n;~8v9O1g9Q$ccK6``^yqcR%}Qa9cfF?tJ^(>Z{mtGU=`aluxqq(n@{*j@h_> z&Tz)dM505l0`$_)6I=q91PD)XfexcXC>jl!o>d;59WB3o?G@$l>_quH4<4-#aI3A8 z_X#?}6>De9gFo}r_1ez)@|5r9iAT0}ts{9}xa-ck$EApK*IozxLt?4`G$OimTJdTx%+{8VFc)KGvho_vxYtucXS~tEECfb-fc-S zmk}XMAVuu=jOSQ5Nzq?iTtfKDmLN#3+r%Ksy|vZ#{>I3b+rpIIGUI1#0fDqfW{f*k z1w-c{Fo6W#KY1m&Z( zwx}YZ=)e*i6tM}{tayUHrAXpxK8dL}va9>)o@R^<;f0cFPSt{^l_Z<%hW@2)0LW<* zkO0~N5`Cx$fT@iuhw>(VsB-Jx#P1+Fq|Qr_LZGgaL}Ty9k#^k}BqPD;rbIvEOEkmw zbZ_#NwnoRz>IxNco?l!x(a1kA;nNH{O?kEW2H_h#jX;D^HUvMJIsLLAGJTx25BsIv@Xql3gi|+M znuSX@-7`M(Prr+HY`;!-;fKxXhSy`tK^%%hVQisn#H9laD3f&Nq;m7LZTtTS4ED_0 zR(1OLsb25QsrseQdv1S~n9uP1ZmgiJtisHc>gwIQtIMz4UG3gE%UuJ!yRc)L>fNq3 zSJtW>T&BwnhV+8fYU+vutU9jsrY0s?Ya8#4aNDM~o4%9|~^p5NfS_L^f*tP(O8@+vk1lT{Me z)*S2`{2Qu{%`-z=j$`4`{l#`^}m

?gQsYA+`s3s^{E#YeaeI(4p4JB-2Q}t-MvF4U^x6 zR2JR&ehrp$Zai&A+zzj3klZRBOd*rrRT=FntMy#ShGN4y63%7f!3cH^?Oz*{Eotw{ zVwpJ1P7tWoTYm2Uu72bX-ct&FzN~FmFMh)hRof4rsBYsPgELEO)!g1ERdWalu9@U@ z09NPO=FNiX?%w9;M#WmV1pvZpfddVhJ_x4gW(=4al=ohy%& zHF!7{(Wx`8P$eE;vXI5sp$_^O1*A@a#4lN-3mY7pq@R{Ny2V)wFWe+jSqXSg2n&MKsmW@V?M^Gpn?3F$M95$tf=`5&(tT{( zIJiBYy*A*NE%9yz=Juq~#wfk9ZL^R?6KrG;umuV!5Z>A^B|~&_1qTpvWd%}lFw!9D z@QmEhcDlhhhYu!3Cy9eYVUuG$UKQYqKMG-l8!NWfB?E9x&TXN;1OCVjbRjs1Y>^T= zM@+PvM44lhVmD3Hpd zD>+680hAdgOz{7<2p11YP=@r%ENhxN3Iw2yv>KUNbB6|blrWbKj`)r2gs${CKEa%( zzqnk_GJj%g9ryVFw8D|Dx4yl;f!%h(TP1$Sre^EkzIK1PlRFTOGQI`v3ZX3CB9C?y z(O>#`f=l3%0O1KP&|!4VV5{pE(y?Co(gd$F(CDu^%jF=PF<9%f6JcYyT*GF^t09gH zbe1pu0-fXy-&ak*8I6z8k&ybX+6Tn!`R~e744oZzKJ-t90hT{w9?oXSn zHmo-BB(82;X*NZgQ`bEF;nb!~Q-d$+7;{eQoX8o@xWtulCSKuHx~J-z(@otlIU*#? zu-$mO=`>ubbWi)Ro;cOJpW#v^OvaPxzZmYsli`Q;#Fy?FSK{m1h3VQgXE~->dw%Jb zVKRI-&1u%pv~*$9O*q7<(rcpczuUVzP>BzQ{{@N{PKmGl>cEdSSGA+WY zXSy(+rvhg%W^%;D3B6HwDHU@}G$VjKksTP7aT-U2QE&UW_`=OO{rrwuZo)fNUAOUU|t5wA^{iE1hT{A-6b#ad1OI}iZgnr56pnv2-n2PFybtL!XRgH84w$mxeOD3 z#~FfeIGN$C_>D3>J%`h1(?sF~oflhLN)(0CBnPGDW;cZxz_F{l8rfQ0so7;vwii}< ztliIUA33>R|Mu^FynfHSKVA0hxry-WWgo{@9zA?F@g3zm&UcEO(mYARvu}M4MUNB8 zQ81KSyQz0paU1(r@VA*GS)s;d)wXHCH^y#KnW zQ5JP3S?FPF&;Q5Xdw|<|orRg}->2=<%dOHa>fN%88^xFsz!W#|Fw{^&dms#fnRzB; zo(Uuq@+290p3sd0*g%F7EO6`q!Ny=58zEVijU`#qm2{=6t1I1p>ON)ff8O_7|JrBY zqbu7O87sqG=lpy1Z+)wM>s#My>7zgRPpkjygLlzghpH3zpKR^kJKGxGHB_Bh>cEOk zRG00VrT2|jOkwHpFfh!YhDS$e=^U|V?kfMq*#}q}xSS|qChQ$H)zI#SC)(YG$*Ep@ zVzRe9yVkpY|MgT)-TSKBf4@$5{Yjlh*=_pRiF9J+p0vS=>|wUVeA~bHm+2gLB6JWE z#aaBOo!Rahwgx%JIs${yG`_r?T5tHuI(_7hYLnfsEiQW;yZ-84I(xd}N`k7Ip5xeT zn^y`>BL%QE@Tx%&Ct65wQ|zCzUv+(mh2|2JYcpPN=pf?sr3^Y@?Q?%-9Gb$;7X=SM z+VmE@F0YGB231;JhF;PfD`b6f@g$V2D2X4X143rTKI#oFQU*6rLEdeMuy*!$IXw7W zSy$k2se+uVQd941l!=9;5*)5Nc*&so0hFGO4wkVvRd`F?BqWY07%xzeZPN8!3X0Y| zH7X-nYy&zlvL97Gpaw02W`h`hr=rbdXXyob(H13RKxX%uid#^*b4%aMM;}4yBaTFj z&)r!u4!F|!`q76fsixru->SK4KLP9`g2vsMR|Dc*Uvz!)K${OL8(WPJf`T7_{;im8Y*0{f592lE2 zGQk)7Y!lRiT~)rsPz|x|i_YtTG+piDhy-B4>FQjv$h1D)a@8&L(O&)V(FfD&)>=I| z<2BLCX=G}g9SdHH0~ZS2_@JL*@xYgT)25{4AYm8tqI!H|I$g)$C z4wCM5*LkOEeT$V9wk2$AjCfar%q%hq%Y$J8+#vTdwG1{vw4mrj4JHr#<@yK%l{S1) z5Tfh=6anE`R;Xov<$8kXi--PxnsE<;*>?x$!YMWW5ssjt>*g0K@Q`dVFg8viRm|#x zeuM6M83l5z){hewehM5Lh;90Zo5FK)u5ZsJ1=W!$0+r!w3izQP#{XBgGTb2HwcD)xd`u@Ax- zOt+W|j1sQ6m-zY*ni*6hD_NynlDJR@hD;RE9MesFudkL zdkLdn;;H+Y{@^$0kJkm^OS&a)iEq7Iul7U3s1JUQ{spc=#$wL#oz>*+q=xeX7j+00 zgpoxII;4Vw@_ECO1lTwQ@1QhIpDuaNFn|ZGVl4|kmPL?ZSa-PR)}H+f-SM%B;ZrBi z)U&&GbtliAujiT2@7_IMpGJ^SwdXlUK9uHex~du2;7sblZHwE_JiZCn>kEoEYf+WSzh&nACu$DDkk=1mK*;z-C^L=+qVUKto<>LwBj5xlSxu% zM;pK_G}E`d)K!!@V@fc~3NZ|#in4@eT9;^)B4079`w=Z<2kq%+pL*fAsIh+?p*KaiSxa^*MD~RcmMeP^|7Pt zy`^&#>0R%_;?jI>Nz&9>b9}?#X1*MD#_`c`lsp z#hH0(06({*=e#skihopDALd03{UNmR&EsBJDEDVXv7S`@s%)zC838}74wMl$#;5q2 zGvO@6oPGZX*aftge$V7}an%O{huY)Q2n$AAHHTa%Zl8`}#{mT=eWOz#KWrXnCErj4 zXaN<28^nYwIeE^dSFNqG17Ui$J2gH9PqbpEqDk&!;Sdm<<{G4e zi@+g7PW#cFpppdtwh76L&BK{&@R1NXHZ4-N7OEEjA})X-W;29%;V6-$%(>rSXb5_X zP{SbMPLa@pW8n&o@FB54a)y7@hN6;&zazfB88$n`XL7MMEG74k-!;1}HsOQXc4 zDDfXugMNeVnhhKNgWU*63L=6I!V(AVSqw5T`EOw8cR^a)Lu}w{1|S7q1w>Heqf=Lr zkTU8BAH_=B0TNE}1r-R|fIFe(@)b78K6^O@)u=N??^p$3bPf$tDGCo5x}y%E1@j1V&q_9F4>xfh#JyLN9Sl>OyMCbNRsKkN;!fHAw0`8 z8;lh$XfXiBz9)$jcq7!P;NB#}3}?tCf?5S(woCU3Fy_+5)ge2<_?duV97%F`7Mrk> z=^*;(LGZyPD4Oyd{ryx@c*72Ux)-}dQgdJBWWry!l9uKYr-UE$EB+-9+BF+C+{lk^ z0*pM9tbRLTL>PXa6;9))Kd8p25oSxs$jwAn)CgicnHw#oKD1b81wSV`nxFM+ z!r~tj3ny>Fvhip9vhD=Wuee>19`1p}fQ~V%L4dZ>Kpt`6=lYJ!WsXTZT@&4A=M5f-3f%x_%L% z(e)p+Yc6Fm=#FzgoMx5&#y9*R9PQ#}ean>$mPLV$b6=G-jkEJJzHZEZxEYXH4orw< z1qUu~Ir}L>1lydS!iAD1Mi9+AKLfVqrO*QM)bexzlyJ+Zz&z)Zz z?8(GhPVj6%0*L2?H@Qs=J0zG*#jN1*Vr0}2E1t-6ko` za}qyTXZri~>&f{&EWmz;T# zMND4gR)ahlHH0q&2T?`>v!4xzC4f;-jNIjxo43m+=XS4#ITm z&y_N^Ih;Z|)v38qzdnBUd^)+bQm=LAyRF4j>8F17owPPC8Qh%a=KcNk#P~X6?31K_ zmhUlgOOqp4ule%VQWVUj+$e!PCKpzlMJUhDCpAT&liD0DaY4>GPLwd-Dym(VY$2Z( zT2?j=R4FyXYi{D{^=vAJ3)?5K2VvNj0!LC2R5k+=i)~U}oMSm4EZbqW)5;hY#y;Zi zz{zr^E=zljsKw1K@6TsNpHIsOdS<7m({(@fA9(YS3sHTM<@%R#k-^EB+|rhu+*I5` z1%dMHJ-wU`jLvL~)@i9XWfJDdFfATOjuVCS%Y8~iTw=)K(YzQlR@d$Mv1$n^;`GW| zdi0r$1huCU-Xe8I^K$$m9E!s|-*A+HB8aqClZu_BsS^wl$ ze_i#z{m~!S?N`3AzVFxGRNZvhXCP#lNzBhUt1*|J`oJG?0pUm*Tb@p5KYFgJr`uI~ zdc2;QrRj1}HytV3#gH@+lH6@|II7XEJv!Ctz>so%D|HJ^qC|#95Lk}bx8pU2id#b= zguK8oQjPPlCDcNKnA?T@+ESvlGHDn>R46T@-AEA$g?oI#A<~g@n{on6u^^JOEE)HKT-??4#7hPa2K@=v@H^+`st?-9zZYI-ShA-zp)-?5%O{9;`;Dhy5$SMpgzeZm>;H1KFqyxViW?- zz)_T~Dpk?5?b7daTLLmGm(-`Q1m5xN7zO1S8UO__3-uemmGa4 z9b8&v9OshTao`Gk*!XZYBsi|q69;)h9 zHXX1^mf9mDP>WtVx42ksB0~sv&TV20o?d(dh2R23h^>MFiG}P)rhXqkf{=}TIX z220eC$OoDdcj!@2O!-Q~7U`kXXh1Ox2ZX*e!kOSOq>+U4lVSwT(##DHVV5P;9ZD!V z7YqWr^A#0ls9x9s&WI(v3*u#sD1I3d+H-M}Nl@UwHL2~H|TlRip@2WFtWjZFjtaIDnyVKO*1 z9?#SofDxb%JV0lhcE&JFFnH(<4iTg<2iZUJwq1TZfi(8Pu$GTsxKT~&#cpuzeU*8E zzO}&VJ76efLiNXJZwCEzFK#6aP65BzBaDtaRKdZ`M#3ug60DDhOjzR>dgP{rig-cs zN|-XWvkapm2J#oU(0nWl{UZ(NL2wt>G;Mz3R-T;hdn95KPD<>^H?}9OJ9g ze>75;UZxPZSZ?mxjp?OiBk&-sJsC1giQooftcNr~oatv|7n3XQT=AehgoSuy2MQ2i z;?8u=^Ts!sX2=N@lX689T;s?V>M0S-xN_a5Wup42>V_5j*%Ju4R5N z&GneF^{Q0afPjo5a=}%1yF>H^>NDy;LMs`MMcWXB#D-<+4n(5fJo0R5#3~>#P;#Rb zsoZ#OCp3kqM)Cs^NHsc}8{O5F^{%VBPaHqlUFZFTy(Am^J_c$~DtGLN)Uz%PRtrySSj_*-Ej~z=+IIXgrFOI6;dmja5mMz!JKV#^tFaOHdAuYn!b^~$aNPRQ7X<0`?%rWniL;&$8B|2jk$H5og7G9h{K(o0Y9oO_MKB<@B<#TTxG{4 zHrhxGiZM>jom0wWX@lTB%!OoIBt?LM}J(g#z9`p=ZB04_bRREsIQ1rW`i5`%#wd5YQ`ApDw|;XvTDjLX z?M1g0vR9`5k*OPXPFG?6@gJS7u3S1F_Q!Xn^!e|61J@!jVH^9l^tSK$+3MiueRevx zv{>(*-&H;S#Ie+#+rztvt$K2T^&(yY+uU5`OmTh6jWcFtWV7uD~V^SHLL) zS}0LyY_5VM#f9R~$lP-!*>A`fY32nfyoewdh3tWJK}gI(MTP0uR|H0ZN3P4TWb$h| z;1bysDe#MNk^GrMG8Ev=W?1>joD4`sB=a7s89}3ON6*WB#^TUlI!_GD0Z3QOF3;t} zoxg*#wA=7DvxpaQ%{?)?o3Z;K%3BWFaF9{+MM>mzEJMhsg%SP%i!v1tOL2=`B%sXE zI~oDA1%*Z-QE*`5^V(ZpzTjE|1aQkddpa_O`$pR2nR~=-Y2*I;>rsxlJn)Nes`qgB z!9M8T6WsIm?gRVkN2X|h#~$Sf!)W@C@A>n@mBic13Mm*_+ojyLLtHXFhb3@Hfbbj^ z=Ens^!|v0ECa~kiGCL9$M`IG6E?ZentD|S39z)dx%*I{@*fy6t-SbQTvA*p)zJnWX zrl4g&;oKM^T)GH<&=3cEPYJ9)b}YsocV9_*+E7?oUxshU2!^0bLB`W4T-V02Q}z1O zr_##gzBjiZdBM%x)C5~T*AXNzFc7~QU8`2X zV|a7|A}~QR(l6OwdalPtUCNV4L&e-y1RayENQxObb(S_~6&3^bt;OX6Iv{y4qIxl7 z46{0!Y=}O(WKVcdufQSvGR@728zU?2DoKzk{2{dQ-=HWZE^rK|v$`v5#l7GZ@f$eX zT84`~;HyV^(p}8PRTZ8edoFB{sVB`^Z3#{QpwLL=(=C9zduKNWUXkt1p>Q_FE1x6F3 zUv`6V3ap}+u!FjOa<7pu%q5MYNB*h)&?9V)JqWXyGpwA4VjhfF+=Ni#XfAmv`k>#S zS%2%(PiDau9&X^LUgBfC0KWD?zd`>J&vXXcN-^tSa8MsK3#X_8zv#Lb^PsMI5QgQW zvONv@>88EJ6`!r9U2U>@%%T2zgoe0I)o~sn4q`ISG26;J5ag_*R|^?`C@tgxrN-RM zbm`8V{N*?V>wcCcUoOY^C2c!A?o4|#U6Dv&SAgKdWe`309snm6y=0+?FbZ(UqoM-O zDKIH>!fvus57M3z?_Y}#LQ`sGGONRKQBIjzANB`*^h0;!<;pB0w;sct_md%X0FFp3Iq*o zJCnj#4wN;z*|(llg{Lr6O+9(!!s%kvrTt&oa>jSNZIwDzkFpgQs<=lzkcT*901v7j zFmNm34NG-O{i68xBNufXm6y|sgZPcYPx>3MfnUJOi#Syy`0xQMDy5-6vLwm+;dPp z7P^#@aR2~707*naRIe+GftghZ;Wm9YZD*Ay*^LFQ6ouJ%Hf0!E0L7LwjkO6Lxz|c= z`w;pD;T8B8C1+9eQ9jv>o2@v9G7ZdpRuK}dgftF6Rval-3p9iPxRh`il6c9D6uqR2 zJ-P~#siw*Uw%(0W&X!M<6c^H;9<41=^dz_cChN{i=H7B|kRn|2PDTo78 zZMz~nht_&DrCxWn*V})1sDAkFx7C03li!oR_MdzU`??p>8h2zNY6M=aw?~`E^^+Ti z^>=}y5}klOa)D#EEK%FHy!?ymeT&@L0lc~0Pp1F&Tfc_@t(C4uSaR16PJYzULIiI6a)N8m)o+O}|k>W~VrJ2<(QV!9ud_87yK zvt1B&laqu7a4uX2U9l^9ZV6dIOj`9_G&y1`1ppt8^I6tf91yL6 zz}KRdk}8s>Zs^vO7TXb!NQVbwfjiq6M>wd*XzNgk2NmW8n$)jyBg|f}u(jT+r#J$* z&Yf`Aa#!03PsyeS9;ioI7`^Y8-&7x1U8O{NzOs-Wn4hcfo#S{8^AiQCBE3>-;(}5r zmP`7lx&+E#|EW&r?;ZSRn15!zcQp7IRB?0geQJCn{mG%jX=-ynonyGZ>ilB*!p9%0 z_VIkg_PijQX>*0+2oQ|1 z_J}X^k|^KEXm#?`scLq17njzIlcvoI_qd4xZaHWbNwfYJ&M~4Hd0Rm`i?RFfC!lDe}?`u_gRq{xXD|zkXhWs)tVuJdVkc9$6HI@yn;(vAUF-wb4%> zb5XjfcIy2!vv)sCz(5LJ;1}Jryj)Ekt}*a%*M|{>W#bTsLAX23!ZJe9cjAOsU+s*m z$DrGwy+j&>SIot4P&a+cvE*&gui$4|1%}~N+T&~5+y!pM?;^V4E~bQ4(z#gPN?jMd zl&@jSS8y!wi#_lxj_8B#Ivd}76*%gqvojn{{d{YFHZ=%m&}?|^ssh`|V0J06z4mHb z6B;J4U<-GVg2%7}Oh4GnvQK;>Yo%`uBWL$%FIb*&kc$0!HAwG>g+rSxe+0)zT8e4c29T#qxn&$OB0WZA*|_1zGJPI z;}*(ktV`-qkPItXK9g)E``;Eo|*iXL%ukLjaUHSHgI7=5L{%ChohgxrS%Q4^d&gwA#Kg zo$kFTtDvCi-HOw&;1r*TC?zH9DeSq)i$SA^QaG=r^N^H2Z zK^X%eJjKNcZRFkKY5m+*ef92r^~BP8+IrwfJ>1zykG<(F^}eN57C?LKJZRVNK5&q` z4)&#!yc!}6++>GSRu-_uy+cJWvV9G7ryW7U8YOZuk4tW!NC}i$_(Z~93iDi)z_T=1 z2j>--4W(;zV!CT9EwMA)3dUatg-Sn;hu$rJ3W~l+y zDBOS@lrUy#LB;4mg@#2pb7V(JU{yn&e;XO+o`kJ*)fHD%%WIqwzZF zdnVSnH3LSZNq8qkfFkX@H+XOW)Qo?WXg|D(G^(V#Q`cJ@$``?7umwNbf!tz|&`VE9 z2dbYZR@f2sQ;HF3`$xO@s5F$HOOI!g?EWW@|*m*gn43|;QNdG&l}zRjDRnom>Y)x8Vh zu2;C`AIx@VvmT)XKOCI!yE4Z-TXRgjW%~>m!e88th*|!SsUo`y#E~NnX>wwcOV8R| z(#GnYLkC1N;(-*~7l5aLW1~VO03X3QU2(7h4|X7XyV0zxDevVMjA#A zFK3|1uyOcQC9nGH<|loV))c#8EdQuD+})xNj4XU^7l+;wNV zanIf~bLg`4z{BU$%U}JX43ypd8j z%i+Y2;Xg5DtK;N&6L&ja7A#mW6cGOX@iK}zCq$u8(Y;5`&1loVh5@|RMDjP1DPrh(4@OjEL^%%cJZswP(+VG0Z@G=vKc8k7hFAh<_c zZXEvy(Q>_jEM@0Yi7PzO&Gl~S75~#4>W6;yr_;4R{JLIRJX78CXJ_g&$2RL-3)8)k z4*NQw7#!h@%d4q7hDghv!je*0-odNTf|!W2@DlSkC7>SA8Bc`Xlw9 z-|@k^Gcl8vDt3)-O{bBq%+g!N*1>jL`X!dK;lL^Y1i~j z`p{!fraON87t+7|XW!Gi`+aw|uD$+XJu^Sq8y}x&@#2iQt74}`)V((IOn#NS(kZb7 zuNN=9@Ca?t*N*o;&`@X_L8NUT(5xJrU+*SyrCYMZU9Jc{wj(~H zj^HDee3Pz6(PU~6Aed++gUVnCqm>zIh^~}~K{TLA>g4`nwl3otfQhG}IV)S-uscUq za4ZbNMCP32Pofs_ zq~XTPi~w1J9_RQ`;f5(+ge&RdKB&aCd}gMYHHJBB+jwODI1iGbZfWOqT-?xN!EI;U zv{i%pPP6H#O4`|G1rsm$9*PO0w8X~X4ns zk8rV-+hN#ra4VBOY}@!YbscWm!zPhoT~J<42#P1t>qlTJRr1?+8!*UwX!Xa>Ns{?w z9XHG9sMo+Bz)`;VnSMl4Z&>n@hJGJU8K#8a8Fny!n4=5jP{ogG@8i5PzHkd{0~LGG zOZXC|*wqK!Ov}%_m$)T;ocd}oj*i+5SK^4nAPn7gD`7B(+6iaSy}&AAioJwU7hd^H z&w4ChamNXHDhwubO(vzWvdu%;abcfJdA4oi`oT3tgJ!0s5Q*7Z^tEUcwhwnbM0>C@ zn7Sg($a$i^;ypsBlz0j&(r@}P=B8RAmGG0&@WDPCD56UyNC9B@E>gch@LXDEJYK!ieq^#<23EzxndmgQ7}?NaHZA zg_Jhs7Rg~&dKwHZwPQw&3oT+D6OI=4*2Oo_;9?xyxWux@;ey`ubXzpZZmT=JIoh3{ z9ot%2+w68a8{L`7neGP1J{GxjaemKiZ})94=skAkI85+U>F^B)>JI>WK!m^E$&rPT z<5GllZn>&v_kLD={%PuP_c7RsU3|D>}j>65K zDqV5aRZvSBDUg;qp6LSg$cQ)Y%K|t=WCYcVxqx~$-Ci@OcA_xo_gtFcR)UyifeU$} zl$I!uN4ZyOWNagydDjorFZ#@vra!soWPQukudT<{y4BM0W7YWlM73-GUN&#er{l*@ z#N_(GWtXRuPd??lsnx>lypyiPGv8^971$?_pH9mgtM%O8cJHxMt331Z!usy_t=6X( zzXjfFByDkoMzskd(T6NUx?6AwA2Y+-b)SQ6m!xgTry{o15F2;c*@F8z-KFI-dYFIm zXMU!hSYJ**_hbLAdi9rmL49~`t{$3bQ#9-K#_)PQ#;#P9XY1hsIh+MQc;@WcG&egN z6WzE9L42Vk8{H1Vl}#=p<=IG@nLDD`c@aVe$p>9AXAcs@;Va5Wp@uK3@Jhvc2YE!z zj)Sq*-o5*|cYL@MdKEFroG0DaDZ=uXS>byg7A&KgjWxh!DGzL4rCkN zmTqVOuhT(Oj1A(@$Pm52u24oMD)Ey>8itIOZW4C=b?3<-#tMchO2e@$bfrAdT=%jO z+mJ{C=;|1ZCtN58PDJBkPh>U76FR)EK!x+iEw`y&W0%OM-`Y*VMN^^dLJAcBhlvyAdoF#Sev#oj*Yj3$Yn& zrexyTROEcX(+poypL_{8K3r0Nhb6F0o}VpI2UaPVI}%#yh?g3UY^1UI>2%=MTkE#c z--nM>vvjhfzw&GKdFE+b6BFshU;EWnVzM8cgPkdQ2J|8LH&f-4M(RF}(4ou4Hf$9d zW1x!>AL*^!p@(OurzX?MlPBw$J##zz8$qDPuIqWr80Hb;uqFif*r`-+Y`F^o=7Ze} zo}rT0K~fA_NE^9WMY@L^n6w~F_{kv1z~U~eDQ$uT<*yJrbA!5oM8x<=ICDmMdEPD) zG8rh~O3yO#js;N|@zcQ4%qKaF5z-*KIqesu2K5lbsxz@LeHrC~hkE%iW_N*Ra~2dd zDCU95^|81fDAEY{nADAA)X+^F#*!NRQ#y zuq7?cs*C+bShReC~r2eBN@p#>uq6$$I;=fLGx;;1`tdtHaR z@k0la2^nW6UO0ss^e=8jkMsuWzceD^t<#9yDc(pJ@fIM9;Thk)PxtX2us&W+>uLJ({1P*{Qz%Df&>n^n>7+Nrz#m~ zSoNU6L_q8iuCeVr%XuZBu8Kws1P?_x03WAMzaLvJrJU5Q!zj;2hk^#t5CNy0CIo)L z@M18l6kh3}+xZtxDI<0YSXMBp4Mz@0(xAe!2kT-KUz}vHOq#OEd-=UI92}+j;-=8U zfy>b<&OqJ3L>!EJMOXYt|mdvE@QboA&^CSD{0rYjsVeDMB< ztDA1Uj_tjr+2Q#tO5}1gZl!6)=-r(~jyP@v=IfB&lT5@qyqvVf#m8Ovh5H{q>R1yc zX2}|#r-9BHr-AD0b$*3+>^9)Wlw zT4jH8yFE^W&bhQI{b*Ged;ovmDvQ!`&L8=}VI8V*k_+DAUa0nTdfz=Ct#5wWYt!BD zdnDbk2(L+J?ML5rGZ|QUizFW^%dyZ3-`UZ*VZ9!P4Zs zNr-x3QOV`gIsOu+A*IVOYG&Ry|^CEM?Gqqt8~}w@e&noF z#Wjb|yC0;^_^4$SCNsc=h7Ih{^%Vv*KjM4GjXX8wh=2*_?3fw1q4a9ozyUE!ega)*&?GYxmR%=gs!`o%ZglsX^zNIlNc z=sSP&*XvOhM30cvZC~*v_15e{`pB8Hyt2T~1B7I@!Dw??gt?vTD1u8rpN= z4ohI0r02mV9!nwpJdcDQ^wwPnR;FAYBp6O75e&Tl>ceUDz+NcfSlWMhUw!ra-d|mI z@@(1-U0dO9nv_MBMGMiGAaWUBPf@4N00Ex>=NN1xHveF zYvwaCeDy4nWW(hYy%|QV0gIp-EtYry78%hm!VxNmztB#cKt}&>bn`vt7*f-8v@9HTih)W>9uO0&WP4|P8)@`AY7ffMmr z-Hk9dX>nJXMjs#ANZ%a3*}sG{Y%vR?k6(6v#%~E<;*qy`Av~ z!xq1icBxat6u%N)yXC0T>}R|ZuIM<08m!+i)7jx(N}ulsFK~oa>ax_KyJqw+feU`t zCHF=vJYd--bCe|vEw!|D*OcMH@Q2@G1`tK3HwLvFuF(OhYfNBEnv(D0UEHvH@-&15 z`b)CHPVvA`LBNB^O4_zu@QJ*;o!%LH(-fgDmV_r2GBer;L=_~+8af>(EWzlWT1Xt4 zF54J86VPKv5WP40Z!p}zV|N8%C}-k`uW9?)r%Ssp`6zY^MWWaAdA(7Yj!G}}_fskP z7=%lbmSMG0W5xK@C?F#ClpZ*ew% ziy<)b12z5fed&|6<=)#pwxrnQwt zcH^zqH^1=Z^>vd~I`Y6r>lx07vtu{?>mUDVU)oC#-Tz>9-St=ZGjC=urYwJzE8P26 zR@3Jne~b(4PGfJSbEA`K==@5$|J-tV0JM)0jtvg1LQ_I{c#OFD@4J-%u`1e>({?(R~miCUGnc7@ed<5SfNqSmLQi){3(^& zWL1*caka)SgbrO~VPSzS>3LT}vtk-}eeyrK>~ego___+9)h_!mpzJ>bUkA8$5s_ye6=NzRS;Uex{w@v<6 zTkZB#yyVbLomhmDzjZ}i8b+J0*VfkM&1lm@)%f&SH8V5g-F&U}^-Yc{ba+M=>6bj0 zy9_*clgDHWQ+%|C@IXBzkQQ>ouaQPm#kq?H*|B;rR8X9LdFiJ`z5j`?_8`R=nz19? znxBitGmicrLlyrEbolbXfysOxaUjspwY+nKOjv`!j8g}~CZ7`2EKq>#W6yrJS+ET` zv~<<0gp@$SDN`BrQ(6ML^x2CI-0#K?59&}7&PA38hTL_~+a!!5CySM7b+g_)vsRD8 z3SPbMs(N^0UrKl1Temwa>5*T1OWk9BGV;w|Uq3ZHoBoXJFP5mH${~8kQC*S;*ct+?9 zg!l#j=-Z$fYh09rWS5XSu2ODSyq{go6yV#(l5EDj( zBfZ!q#c+gtNZncd=1HN-`)@o4**vnvbtq(ulBO@h4ShO29 zbl?{paI#EtaGZ@lsPrgbfnV%~%MrKpI_OrynN|s>zxK#C=|;Z6#(eta{N+59^mG$< zzlhi91&+GvVs_Il{t;;4NB5n0>HTcs2mMNzLH%N|E|$J=$|uZcQ-km>7DoRProgj| z29;%~-_Cj+45PWgQ7>)Ib{7-tM%OGH{Y%vF! z;b8e_Hm-0C7YfMQbyvADt%QkiQbODd+)`*kR1HrO`sGlRircRU#FjVaR{6a{1OV~G zr!RHjKCltLAPA}OaRSJ}gzEBi z+1|srt)$(%rmLm%XRF(8zNxzR!$(?A96wTxu|W}0N_zVAVvlF}>YLd)ar4l=`oF&C zZl839$+v4k^jLIo9DmiTzBu(3k5@wo62?aMfoGkrX7S_Ns}I)0ZT2R#R(L63BaO_B z)hip^u+F^!|NP(lYZ^+O&Yw9S0xX|5WXYJ?WWpGGRdS=SVz!%#W~=boRB2Mr=KtKf zTSo<(n7~J?<>vp^!L;F<_S8YkBcR>Ubo<-iUVr0PzPkGNKl8hZ*B_(e#n#VGgUl(d z(XDw%JN*9p+ui}21^n^FbZ+QsI3$jja+#+`Q|zP)FTAaoRzi&E6fw!q4c3*Zs2CP+(6jCg<0%J z7)cWoQ}w&=es`L31&mCucb3xm^S;=ykgmJt#p#Jho~p;kdsTai8*#^>L99%1l@|B4 zNOgv)t@SSQl}%nYpQwh%IB?q@;RwSzw{vxeCMPEmKD1dz-;C{5plh*$vL%w~SHm~~ zEV5$3nWdr^b1u+a4Plnd60WasEVN18CeXJ-TnraH5n49r^BeW%iIerMFML^A zyZ^y@m^S=@H@&Hzp$)IXY+wDl*VgajqQnPT+#F%2iWkE!vU^J5)mAh(+c-m>2wzgq zixP-d_q@R5?;8@OPq2CXbN}HtR$QUWlagF&a_yDXpWS;;y5VIn zNe@2pD1Dh#hW2nZKRL!N-H;mYx$%T;#U8t%_9(BGVTJ>PLtwk^P-_z@GTprz8}3$Y zkK~?%v8qivqdXAIc1k%eCbdu^@3~@E?8q=MSQg{f6{N^rPEoUxwOiYSMvKSl_e>vvK_Oj1h*K+M?UH^4+0$x(CBmf#{S z(vcoln;YEn8~A11$b-8s#F4R$r8onsm_Hz^fXgOpipuiv-Yb zFxE{Nd>SRmZj^rDF0URLQ!~}j`3Wr4b#Fcf(kz(J6F1sHw5~AcFhQyH3e}`n;;YAC z+$1FK&EOn5BB5BJq%~wg0VU)%LO!pJ3VzuFWeZCP9t`gUO&FmYwwN3D27XMw6o~{b zP5M!xgfru6)MTz_jAktAywSsMJvVl=i>l(^lysC&V~+3^ka(zzTi{FjeY5V=x9-+w zgd?BoBDqtK{NS!4ROBOPCc^jGz~UC+A~gQA!^U_~Z7@y=a51;yH>d~TT-<@TekE?n zgLc0``(QZDMG0^4i-H|+(;juy=wWa2XS@i%lYyg)4aTuEC`ENv1Gkzsi0}G`=5>0x z4_y1YLink(Wk7%9_(}u*6?dKY?R0c*>T)I%aG6ko0A}r`1w&=lLq$1IUeOMq9qL@( z=m{;i{pVY!=ud_#z%M$9hAcVWBmpEGo94 zmM$W4QBUBZ*|ceB(N822VQm6OI2_!FVBq+GO|a75qdhv&i?H~qdv}Ck85N@c4)lef z1KY^tyG=@eg%}3{#uZLK9n);w(6&`skuNSqN{l_qlsYbTW0_K4UdY3oEA!PJW6-^{ zCrT}s18$}4)LF+2L1<}9tfMhl#WFK8xY>K^iN*S<<14*KA3t56IJrbYx9jyyZw9sExXYmKRG;yJtJAJ| zF0Y#%=VnnCsF|5i_~*`?hFCFLG4tSvNNl5-nVhUYe9wm{*jD|oe(|THVx~uCIOf5u znr8I<-~WB}qYppCIcg?~T;R-Y`)qAzPbM!}tgbJyKvAWK9(sV%v!Rm9XxUUQP1UJ} ziUpR?bM-dH=TOV30NvKBYH*0woL#ov!fp)fB6qIR@pT16bh79OjXzp}h%qa7t-3+p zxRDO#CO&$`$Z3`lZOqS!+L^xw=nwzjKa5GS-Eg|@{JHc+58szg|K)$LZvKBxOgRU_O3aqTsStKF9`R1141ctv50HrcJ#I%n9UivWsaJLB+@)!0xqH9bvB?X^a| z*o8w9v;%e@__hN`#i~!xVn*!Pfz=dM@DotAevw-xvKRVGhs?3U)Kavi1aR)F+}m>< zK@x&q%S>AA{6^L39tPZGR*hWjGL4!`n7+M)0U^0lWS0@$#<08qTR zpiG&a2wY;hwtALVGS(?{`uWmu-8oC7HTvgSjx1bvO-c_w#Dy_S>Bw)twVpe>nofvtXA!(9gp=`?p8tj5tUi@lfr;O%eCZM>Ae*lJe4n0hw%i-o=9_O~tpncPe2(^&$8 z4L*3LO!A+V@DqL&d><8OI?@$fFtWxZ_wtn$?o1eE4`!~?y!c`dFOY&RO2N`3@26bO zHp>|#gdHxwnXsd~^NFp5lFjzkNLqgEvHJ6GzP0+(zxc~kO^($t9956^u}28U8MZVs z!I?CVF@Q6BM48FDJAvyJ*rLbtExcGZs%)~g-dRR^&P9pLjG*YO*UFp04ztw?f2bHY zV#yf5ukrp`?R(iMUhLUI$RI%n<2XIbEF0RMp^z80I=WsYk(0(11!W7P$!KV{S@pdo zpzLppn|pB#g6%AfGt6w3@QNOYq!iICae2?$Ixe8i3}2>K(#3YfEiU%ibP^eiv}2Tl z1HrLmrP&FC;o%1<6vDZZ=I&Uchwy>?kx&B?-+Yvr;VzkaK$D8b)p*pH;r+}NohvCSpur$lJXbIQ^R(J4Kr%K~l zM;PxIpcOSKBtT%`tDlOUIOYheN~I|;YK*^nx9RTxQ%{6&`67jtUm@*0^UuHAg3AtC_38Z*~J@kl!v(MKByO% z>J)$GFfgkq{Q#?<>f`Ab3lk9segfct{gW{Yqu^rvPXwl62EU#0gjdQ%bNO zOxp>sFa~ipoSilVoak_0GIs&T4#t0M%g;Lj=vcOE$xIW^xY22G4p_RQ^w%!Y)J})Z zXLT_KZVGXMgJ(Y)R^^*+HKW~Uf!KhcE5Zq^lq1G|J>#YzErbXGKLjofng&D(*Rl+~ z={F=9aCJ9t`sMf-8kIAU-Anr7P|De0#xbt$?m&=eXfENEQfnUkqTS%2@PLKg5J)Ke z+;Vdr@fpTy_SYdaAq=stKUO-WE65ZY`U5?~&Tfba-a;Q4Mx5TRSQYJ#bH?|Hr;n#w zuDi1L6F>C*_3gj;d+DAdkEa>N)wM3W02#Oz#_RO%x4f~s=KQK#fMZXK2f*6wGI$ci zy1(<=)gL_c(X=!*&C4ERX>Rwf>bk4;r`bKT)yULXb=8&EAfz8lql_zO&OFH!h*y;m zGE{6I-!n5$f%MYE@FXpxm-fv~RVN;Qh!c%NTsk)mxbbQVx3TdN?$6t(mR6Tjduk|6 z&rbB_cDL&TS8w!g+d5pYtZi_Xf1_UZOf!YS$OnbnN(*z-6_fpHVuH=|kp0b-9s-DV z+P4Z{faGHFJWoT9j@746pGm7rtMyGcT-ST>;U{{(@T0$4f9F5_fwY7`!YcGk{ZIY$ z&jERv0v}Fa@#-(-Z1ouTHH;;3;-Y?cFcQ`Z-WDEcXAp~dTJA2od}@^qDwOEhl2k>{ zwt?RqTJLCR`Vg<_jxlHmMn9F|3jEv&_{CB8XxI(Eb79ylJkaeqQzp1mfoPWB;z3(- zacXH|DqZ=?&#V9QSARowhGn4d{OYeshhOxH`oXupJ0^yYo?S_||Ce`DKNIPpr;nvY zqT128dNSSl(f^mDF8kAs^S7qYd+E(_v8ENd?uB~D1y(vs6~`E==~-TiVdsHow4g}P zhc3q!)>^~kQ&K6qDjQ*YtYT$8%wkfQKz9wIl8Z4HpXR~OqL<#Ohq=+wE~*T(vt$PC zn#*T37QaD#r#ZsIZ-qOkumTmdoU8&tVWO#`M7*i#J`82Z9(aT92OPsmiyHnacv+mn zPkIPxjku5L(_r)BSV1d1YZH zj%MYYfn=!#Gf{HbeF8W4z`!nr=tW)hv=tWhKatz$1%`Rfk8J-PmNEdKfdBn znsi-_ZHX#Z1Xy>7R5FPOXZB^b(pB7<@MVu3tqv}6aT1sPbUW+ma`?Q*e&sjn!{7dm zYzJfc>D*bj-qkOeoKN!y4kF7PsXuuCJ?ZJzDsTTzSDWpvdUSfS+GN{WZxm9)-8Y*M zk6~69yvex*-!%+TYEMomLFE~pUOIdF6leZmY{uKY@u^W}lOx<0w8{M{zUeLbVipE| zTrLHf;MTCME|kw51j-$pSzAUhR1irQ-4Gs70L{>wvlryW5rhS&V1r>TC?{v*nFt2~ z#sw}pwjKzC9S>aaxY1i@dmVS3fv#+~93k^WgbFUQkHGvm#}z14mYo$m!88&aj5iBc zM0Mcd!_19o2q_RGP(3*E6VpqhizXPW#}|u<8Fzn$;F#I>CppInRm2rsF@q*%#uo-s z$vu(v8Vn!)5k3nHTsE{#Sdb#?GG>A2XhPm8?qFjGfhuh$@<3RWf)mpaj(m>hq6fo| zU7kSN;z}KQkG*Z)Z0|rug*hlvDi#)D3O>1VGc4l{!W3>~4!xvN?BYMDgrhS4#o+5_ z82wa5FXj@bxEEdjlD7DjbaXE`sF(84U1faZ6;72|MUl(kggcwxxUwx3j(q9CiIJ_SuhZ%)%6w zbr1{`Zrc4yx_x-jF0(KQp&mQ1?T}gc<7D2+b+Bi|Ei2t6E=~c{wo%g4>~f8QCRgE! zp3@BE0F0A(iNEcYG-5|WaT88~?>z&a?*fMXub~6vF~G7C-h{PpVa(~^XM7#h3p|fB z^~;oesqiL{9sqzfG$90&5f73Zr=SgIyi#t2@6%u1n509%b6J}Qz7QVt^9{X@xRN>H zz=Wz>u1)w%HxSBNcBR|`chWX)KW)q^{Vw*EaO$Sv%+zqDtz0Zl$(xzg-yhvdeS{7k z>Q-UEz+f7N>nb^>`0(+ehq^m8Kg*)rRyu!bsbU4Tn&KGZ%{L!R=a)~V^)tunSAXv3 z)ZhC0-Srp0=1Uo_m$|eEG|!$%^NS~{xh2NX4tEt*45(lA6?J;s?bVV0^xO3+$*#3{ zLhr!gsy(?o&FtFkQG;rB_d+!?IfaCLv|3zVLVB^-y5id1Ou!IMu#JABvsCXrFkW*O zgO{7x2gsK4$$dm*5;o1m-z7!1gSW<~xEdLGLkA)E?3^3w$=ueOrxokTX$~n?qrH)3 zYOcG)S$vAfTBL}1)q}|d^;>nS&e|$t;%1tknB|7j&9t_4o-IDDwExgTZ*pRyp4`)_ zJ8N6@;<>H#Q7#C4?_YehcX0j{^>OZV=+&!qh7(jYNwc8PWm@_6KlTx9cm_3YqjVq4&0x4ezv4a^ zRuJwo|2tFQ9gQRK@1>Inxb8T7FpY9o!MV#1)>m@|{!c&aHR%w+xC1f0>&X-8t)O=t z1iR@hA4h8Am-9m0s&VDQ&FQv1H>6vyy)xZ!1COiDZ&iD)9BG|hI@w|mYiswx*=k~P zA)c7^wwX?+Gql;|)Fk}K2+{&~O$GbNa*vn2Dhnk!cPBtgf+$*CqO3k>hJ(ufXi=mM z9V1x3JdHO{Q`kPfGQ0rP^OwnGu?NfBfGKXFLsKH2qfd_OVFFa2+-ivdBO8DpxEsY$jzBAAe9 zcM%x0$B<02qzsR-a{e4QmLok*ta41SV*-}h-2z;BtpLGus8BDD(!1i%KOr-p1|`da z19u%XgidNA-+Y0J`xCgVhq%G#ISIxrMUn&y*EI^u#SL80N47xl=N@35uo>!|UtC5+ z(5ktVr@PYG0F$BK22ui+(ZPkYcU#OWs#R{=ZgZT2qZclRFiMdQyC#AmHZhp=Ape?4 z6Hn(4!O!P$S9kMj{z@Jl0i7x6hZ64?(a;Q|`vsrgl%L+f4{=3gEypgnK;_-|AtX{$ zGLOX|BpfXxf?K`=ZZd`uC_E`V644%m3S)^8t)Z}oIah{ZD0pQPF?o>BMl53iIQm(J zQ6c1p=(^*f2!!xfrZkD-kIFL*KPwX5U@<`{?xw}pFE8sye9C8r{IrL;49vxybRw)H zW)rT&)$X{f-E>S-{KQ428}?=bn8o#`VHn5Nz|FRYU3ZnRgrh3yXg7=sw|<#7ZaeM$ zu;HIuM~~;uy9>7<4NzieIr0>Vx5n zx#)&7u4(Pmi<{+M%ozLarle^(TX*HtUdrBd%2(X;3iP(1K-i{HzG$b|buUU7OJ^b6#5 z98d+8T(sq>SLWumgh?-rQBIauDRam-Y%q+qJ`M?6-3{*5Yqb!Cr{RgAdUa!QXq=-1 zz0IZS@V>d;{+GV6UOIEGKJ%VGO$*mvQ6te$r$2C4wfpP7nkO4T@ea1=GY<0xWR>H6;+d&Z#hc0)a+z`B^nFJ=I$2tRU3y4DoaxLjRT45V8a>LzB5@ zUPhkW^VhA%Cx?2Mjn8o6aD|-O7((FAs|pje0j~8!dXC6FtuHPyPV!tR&qK3tP$Sq# zXBHQGXBW?d!+3Xc->&q9U;cTFyAN0Izxx4hz}sX;#ol^obvm6qMc%g%5)6;C>+d{u z-c9fLgWD1FxVwcqL(NX9oJ5=fC&+s7JPB-lq zjQY+`TAAJa9q@;&=@OL3$$S8S&_pPI28`jB`Iqc1Q9?<3`tURCaMr8%qeFtrYYYnH z7z{ki8+;77F_xHC^lk5BBrc()0~mdZv97sxqF!C1u^`GpTPLIq?rH|~I12QK~GFcbBZ4M}G zmwuklB_I=YN&Wwz1iYP;8;zk@o*%?W|Bp2zT!K^up{H{~Cr|L~;~yWsDm^thQ-AT3 zk5vcRR>*11)MjJmWy@RX)Gz;9?TZbD9c`Y8=x|4ZZp#QOUivNHT&45()h|HEz*&X5 zweRxk{SW?is-`E?X1kqMH+&5lUTAWH)smGoHa-rcGf}NCvmFr_^~OePm1lR>*GH5l zLx5tZMBJ0R&g5LC6lnvwa8(_Oib>rGZd|GawkT^&f>#tl@+6zxRI;1E;Sv|-U%`Fi zmj?!EBU~=v88MhwBRGKXCVUS$0GA%L>fL*Hac~-Gii*<)uGWBKFwHH^WC9k2 zeOioR>_q5Qqh1Ul8I<4R5{Rx_y=vTGo0Z=xha;((#CF};SqJT; zF1+GqSksTPrKk*S!`D8zf?p>2grGe0rK}N;+!a4{>zQR4_GZTHC(cSZf}vZgwf74CWJ7E zi#=gy`NvTa$T9-}unF!ikfy^{f^~5OKejh&?(%@a~*_7^in3Ry6a6~b|h<7`yb;TLM_SJ`~U8^^y znq7dS>>8MyovL{HsI|e>iKmy&4=wE4#UNyPZL~%whFi-ki&cAgg6E$(QaH>I!TapP zJe_E3nw^>s`X0OjOA9Nj%dM%|Hj-Z+p`fx_BS<_H`Y4Pq^RVU#H>;lN>a~VuDGSbd zV0S}vT%=r$Iqp&e-89AaWQ%d6HEvg~r>AB)mC@}DkG6X&8ynTRwKHjEYPi1UrdE3C zE9QDHn7p<=zu2wL+~2NeThocB;?uD+k5Hr>g`mrACGJwdHo+pu+irhbRE`Diix#}M z8Alv!AGWNryU)tHq&~GJ;9kb)mvmUE2Um5ZvvX7FuMX`_qn%ksZ|>@#Z=89MyAXz0 zvF7M3tW|`&;lNz_zVG{?v~q5}WA93M$BbYxbsZ;1d zxG)7zihGm83@a~?;alL!r-j+11e^KIvJhwA1rsQq^bEcdK9NI2!=v?PXAO^Tl1KNL z?>HB+d*4BCbE7`D#49TZ7tWnqq{DHcCpW?HPEBGPQGNXG57mcwo#nER+*3dKzW1bq z>{8hKIiFMi)&7O_&V`wDoL$aa+=t@b8Pb*_1hig4C>6t>Ik286PHXKsP))7(Aze_j zeb-BdPqYLs2@pQfl6t;{lNF85)gV^PxWi}R$S29TpyM&yBitH;@53`5b?Bwf+`mwt zdHPA-9bT$d*47~uo9sj7vPI{^s5T@`_OQ#upMzy-er+{9^dEk<9-bWIhScHo!f*bz zYKyawXYV_b_TF?I+mX2G`TR;zjpN#nYWSm7k7)~eZlsODJ7f6yWUqr&cVU$DQ z5$tO-fZ!z*g$ND^Zq)-_=M!AyMb$@g!93%GxAOqwaNz`?L1-v486Yf6#t7g!fD$a1 zDdl22GXJ4WFVfUz-a^j-a*P~Pvk?QHIl)XZ3%JFFbpa18Dp1J{BP8RNapJ0sm`FLH z5C&qazy^Cv__<{>?7}omF4Ua2NC&*cQ3T_cWMTxyV#0pf9WTR7DD?)N$RE~7TzKFV z>E$vb9Bvu@wznmF-3vY?%*WF8E2_Xy zAB3TQNuw#Ih!Wv5KNj{9CM-=H&4X}@-%h=xSM))D-TX?qek^@3eo5EzRF!hqy_g5f z+At-4Nkcc4acp0W;2_L~8QhgnU`BhwPo-ij5A@K*hQS3VJ@%--NS|6A?+~^df;Q7^QmH^02X?&RMOeKTgI@u zI<|$B6oylp5oyK>mI0eC2pV`X`-iy){t&bc@*B51LTcgqIpu}7`IBG+1E4$_PYKv< z<3$%>#W4oxuX(pWGO6uz{W)4LN8u1J%0~<$Pg&CgUo0Y`9-p?r-RW-RLBRzXWVddY zLuq*i8f^f?K)(lzY#IuZ%x3WUO*+5^#yaC?tc41XKdyp@_{C+xQ7TBJS{=?9w<*LC zE<)U3EF7O7Pe+d*PuCtgw*WFCxOa{1ou*Z5~)4l?oz#UALhC1T9 zo6V`$&{lWLGkZ7-kHOEj=u{_{ok$W(vK{rOyNx|=e#j@)EDfUA14v4wjD$3F(El{VS{9?B3qvN6)6A&mKvgv)%gIn_f~cEuT-1J^UeJ zo?_*5G2MRqZ?bSvr;i?aG&+VAfAqnJLzr;G_192qTZu^~mo7Hac9Huem4&4;jZ5mn z60mHVr3Si@!?*sy{2-3v89vUkJ}}WvR5-0xzz5bO+sfJ{FntkOD?vRh~)VIE9z7K$vvoqx1r zn7rV3K(W+d-wBiPa2s@M(A3ssIIkvF!p^wyG`+^sycm2j& zYN{~pz3sNT2Ty)u_uFdrw+ZchmJf=3f30+G!aOaKvshnz8nXgC3*0U2@n?IE`_ z;YFFE2W+duNGSF4F}7!f;#^0bnM4C66?Kpc928qfg8&l~E>SbCZUKX+4Xh}$ENIB- z$izo&pqF&1g2AkkP9Ds445lAl{9}@UZgbMEe?%mFz`{}8HXy#5)pve4h3d!0COkjG zsvEcX2hNSXxR)^6FZKyXrC(7coc7|bZaO=4!>CHQV%`}x0)2u%##ITke8sM=Dq*ti z;=en?XfL1TqIsuY{7Zhc7jw}|*{j<#E%#{b(dKg_5w2}Zzi4y0uPN}eFG@++@y#W9 z!5u}Lp)GJVl>L`xC2VFW(JpOgSR*asMVqk=6Gq|{TWSp-_@GC_RO1s5aEK1Z95r+& zt>P;l;-_+wYu6M#-2+E-s15Gm>ddy;T~Nxbl$G&|Dsi>*I*#aVmw8U#yGlGM#*$M! zFcS(#&1KNg1Hu`;p`H;Zte|Iom-2Gk zfx-i_1&mBPOs~nUc?O@{eoQwSfI14h(v8RpvmOZ@H^p*D&dC#!P>Pb~!^pzDyb!MO zc!saFv79>WcYEUeQhmcKudh#i;I1^%rA`RL!*}WQlMisO{8oDRd+$!`tnA<^ZhBMtd7+bCi(XaJ;Ej`|Kb08rVpj zo@at*b%$=adf(Qm^^N+fmtM}rYm12q3dbGps;5R< z>2qFku(!E3Q!k!5Qvb;R@sI2Gzvn&aJKylC`pv)k+v&*3b7_fWl?OCYST5CgTe7(g(3$3v(yHtB#&mFrEC~o9wan6?$;9H{AsAb&fbqpjp+C#(}jPno^FV2EdHsVMk+rp@Pa5fb7_G!eKv0bXOsBn{C@ z11?l7lY%_P&C|*g0@b~|x)!SeH z73r5g^xNsuBaha%zvezLVbMOwLcoD% z9l5@T^l`jaf|dVMV=mlbd(Z?X3?Tw>Oye>iU4nX&BMqojftPCxjd}?XIG}hOBfm#T z-Fem*Na8z9A|i5SEiZqWx6Fk!980XF(5^8u&iSB;d1j*)9_tnn41msQd4iGqvJ7Go zVIhbIUY?Nj4#NZyv%00ygX99S5>OuWp8wzm<>y%`n3I_0nFCM-e%OI9fw>ONHp4W& zzN8LYHzvxBZC;tS0EKBwRCu<6sQJk}7ej$h6Suf+Om`zodU5b4TpK`t-5T>PjiS5# zGrSnn2t&K=E`HjYlD?Ed*!ty}?hpt4OPrEMTQ~()fo(T3&ti<{cd5o$)cSqwSK#BF z+X{z9o-E?pW%U4j*t#22VENg0m+-btUq581nt)ruYo{sU#kQ=){kd$@x9g_BD}Kkn zOZ}DhD)EYKKDtYOrZ0ZQtsQlZZGD!s`WIswe}`IpkOTg%}k|cx;L5IQ(ziGJjpu`lT5F*G<4hMIiXO~C+X~$HZ#TXDjjtWeFVA%beGUooD$@MyY3@0m@}UK0 zbM9TRaBd@T(eEUeFmh8ddDBR7)XKWa^#cwWcV`8v&Ua1GUbbV@Hav0&X;t)@+-yQN z30_V}REJBH_|8QqvgDn>m>XhX=pt|CUnMAgT2XRQQf_g zR+f3af(sf~R#Aqpr|FHO(ZbZ}(apt8-kRL0-~2USUQczVM&I@=Z%uQj&)1tgH94f) zsew2NU-Gj*@^0HLee}xBXdOFn431n{zQ!i|yxcz`L{GsLv$VbRbHp1%)6w*~80nu+ z{3D6~V13x~$g5~vTD>7pE(%?g#y<`P&2z)&&;R@{xa^O~^auaTzn0$c;Fs~1$xdf> zb_xBHy@?)r@$iKcv!}Q}i<6cI2%mU9wA0z~Essfr1i33(yR-qqgP6B+ztk^pU6;x` zQtQnE-7x%fkiA-1F|=iHg^_{3Mvp^kqj4oGX{fM#1B6x4?`Pzq8oam zoxdACjc`nWAQv3r&K}0~6>~R$#85Q7B@6#B7F)<>Yu!hQbmPi0!zQ9pKsgFwMDj6H zFE*unlH6&ENDN+D5I4Ti?UAYls0JSlcOho`_3}cOxXR4^)x5yQvyB6^m^aX6y0%q! zk@c*9_%X)yZrXk7@%pno!McjJ!5iQ9t@Zik<@E0UPWm+WrcLt*bEmC(g@Lo%nnaHBg%8ivV$w^gn71lol+5$M0Bk9AYJD zKWg;J7(hL1zI=i=#9^{tjH@|Qt-LbV@?e8JVWG7@} zem1@89p7E0Q>*O$kJ2wc`pL9(-#yg<>PkEC3q3^56THwcH^X$$g_p#J!{VlA_!P(- z7cHupAo=CVYo36D8GwqZ{>qL%H&H`MGBt$LWPR+VhknE31fh|*S#I8^RXvUgXP@_` z(TPWMz_i&gg+YK_G&wB^G}nxTOoA#=<}w%@BaVKeCTUGV#|R@cHccW0^tkHHbFq{9 z70pD$q$vjmv)17>gnTe3_x922kU1t#gL8gC_Mx9dm#u0@Bpj7Rl6MSg@^ul#)N0uas~gjs&;Q$rMc zl)u2G;nzhe(ijI*+!3ewj>;st3n0RJdMW1Fx3VdK`e8nkWbSSV64 zeh2Q@CB9`8p(8l*UFr*Gb_0K0hQ{xf-vTaa+IEv3uW?-zx3;F_*|u> zQAywQvvEB8P6@k(9UZ7dZfx5_6ZY|p87NJA1!6Q*w3SHua}97befc7w6=qyRSRTf% zP+mL01>xrc*@3K^5gxnW@l9Duc*Lj2NSYjaenWO5Zg5k=X<(GR%#Y&4n1!-&rL1HI zl7K&bBlhM>Kfo)D)FJT9d34Al${V;50|{ho8~IH>Zni}|L}$iLQJP(^{M?|pMi~gp zBtwxau}ZtqPoi(DqeL95KWzFb(BksHk_V?1c$ZKm11@!eE>PakzOdXuh_J~n8^U2r zLqI@zno9(UW*#J!uyv-UIJKZ+J!6LKy(itH(hVIL_apG3uJVFllBvTB6+MI>V+%5& zU2q@MDX^ftDiBy7EPX?bE!P$4#Y1EpdKtYg<0fflND(J~F7mA~D6T>j%Nha|ynxT? zJI>$X=XM-z6^aQQ4<7Pj5UX=JUZx%{50IJXMFxm2uNDPPEP|`LH`?7esCRDej7Ixh zLPpzeU46EG^s(QqJFCm}kNxydrAME7DLR%N(t>)>&|4(cAJo2h{&f1Y-}~L^zK8Cr zF5Gdu&m>Z#GZXXkz0UkXZ-O~*V!yvR(VLr^K=Xrwb73)6$EdQrqfU3SzIyd)-Rt%a zW@jcT&W`0xTWdTH&4oT|!yWEHnD5MXnV~{da0+1 zdVkRA@9i*Q)*YUz^vzz*q^lT1#k=0IVxr24knxCm6(3;QwL;^=&QCU8^k_T9#%Weo zaOx#{n&h@Ks|PPU_w2#`&ThT7zByW+KV5(F@h1~kLer2459lzrpF3Nl(wKhh1HX~Z zoxQ#Or$6zN>35!eF$VlDnQ}^lGLRKRAcg_0ZTA*ON1v4Zum6qzx}M{rzkm5-KjFG6 zje5Kozy<}Ys^~-A>0b1w-~ITbK*Uhc+${l+yIXiikRvLL-S+b}<3yitg8wM-e*DM( zS$V_z9=y)A#?Czf^g3_G>SkN#FCQzODM!Z~LCAU++)sS2re? zR=S%7t2=93I~+sc07O0rPg8IWirfxO1}Sp#V}NP}?Sh&ytXg!;!Aw&`f3x4^ zg=+Nuz!Q2}>PZ-md2JgeXo|gCZ~8(B=W}dK?0D9rxb4fj8Af(=yL&{Cj1+f?JGO(_ zve!8H8d!`e8yz5_k?OWf5cmu(aE(4koN<3`=(;d8!OxWV)Wev+F+Zoh5h}jUu++MTgV8mvU+m+A!EABH9Oxjdg^a755yB_Gjuzh|~IW&(#}` zKUuG?_tP66cuo5ByMLs<$8WLw&68=Fr>W3jsL%7R^!Amj)dCkiJ^dr^s`ohO_Tcxu zv-;x?J)GYE$RqXa!w*#5rN#8BJMOMO^UTu-4LF|W@hZ4ec1P+{E6bx7uU@Y<*Ey#- zH;;-GDwGmBI1BkpL=8}LXJ-f;$VnWX1YpzhoDBh%A&?1FMRby@mf#Q$CMJf}V6aa? zB*vtcZ%fxY%IiEB1=Qo@gOq({Vyp(L^FRnUxYdhGBH^piGEnLc#F(VS z4i=eolgQa!Ij|B3COHGsNsWx7YD2pq=y#r|OizFU2cnAxQv$1PjR`Dov{LZ06fvem zr+`D_B+^80CPX+>r!`A~VZv4J01GTn<_;6(qfQUF1X2@mLL{wdI?u4p#1!fI!=xP1 zlzN0izb4Qs%=LQcXN8!#`0{f>0SbImKo>TFZ z@-rWCDBo?{3M5FA>lw$m%;9}39f87X|7gL09X9xvFu&Wsf`eeiL1T65E=Yu*e=re; z7LSjnAB3Af1(t#37k;@#$9~aajB_l#a7wzIL6cw0KX9ToOSox@`Mvx~Sg}jl%C|7u z?gF#K^SkXX;ceS+e-^hLx4_k}xN*MBSXZVs&hej-4KF|2u)s5}-(`WL?Se7tKE{(= zT{guwZNV|}vJW9cbZ&)6MOxj4WjHt*qhHAzr%RZzI=@lcX(*3FD1->6DU7Qyb!&`Y zOu@-->q29A`)69qtDz^vR$_r2LdZsL$3c!^2p4nrXADt5(gZznJiCYG5?fg$6ePmH z64`gGzE$LMS!p$P1<8h#JA0tK=D?B#3ezx&_*kMxc|`Aun_r_b)W_~7W`ZMUVn z@4bkWc!y^e-K}Tsk9=cud#BUwAt(=0Og&M&gZ({CE|hmjfpK-G0Rj&QR)pwX`(NPO&#BTRU8wV;2l;n6oJ0_7=}IGOsYTBI@sScqiV= z+7CE~r;N%fogt zSJNK(A?z5foSUt@1=~K@=#q2%F_5#9k1R!n@!yzE)<}YQV^`rg&{tx{fd=!+7(!H;FfFhxiAH*^? zDBx529Q7zeCl@CFrO4K|%i1Hxs(6JNdPUr*!5EE&UyLrxNIl|)5~L2tV5}wdOoAnN z=l6V9`kL3jA>F+CVzqkPS-R9zwR~nJUaz{jyRL+hPUEP9!3x?GA_AERKq{A&H?w{- zy^!-GKYsByCR?1bNR}ArZt)om0{F7rH2JT*TJDc_>4kcK z<2v#~o>Y})QblSW@V;BxeCA5MGyuq_AFcoR{STyn`(r;@Kln?zbMy1* zSvCzr{7K;uOODOa(pVk0GL8Sy$hV4k;`b#`11AE6FM&q*qEPt%X`mJAITZ|pgIczR z?gC$Tox2Zy=tseQ{uRCeilRQ0@7G~kvn4Tq+gBxic0@$6NXV_srzh*>-)wgBxk zq|BU5vSEVpXkF0th%R@Ffq9`0$Ol3kkr9iN77qmo@U+fsUJU6J6!FPgKi3;EMUjb& zlx(Utyp~lAZxoXslJ;P>0t@|{A6B?w-OPYpAQ>#&24KoGSDFj2Ai&}*zF|A1*^Cq+ zd-K=%+&v`{L|!1^%wqy9O~BF7zz%%1w}?C z*R$AxOXG(XM#RSW;x@j#NkQ1}XiDs2^wYQu&>nMq4W4=){}mX=ZR6=ze!?p5<6#7a z5jV?Zyn?3z#y@V_ex)7?T;mqEcH3RT^lQ7@b=3qN2`_PPWw&uH;cdTyLkaV{9j<>d z#lP747k9zA#BJNgIsPl*pDVxOuigHY`qwUfru2mpk1nC&sN3aPNW@aTVN)YpSFZA5 z4yTe9ZVv)-SRP_(7df~?2m z#rO*3B+NJfM5u5a-gpH(!&;{JYq#<7+n?!;E`Fwm;MSZ_w~YLTk~oO)5fiiok|YUr z=b!Wt8c0ph5^xb#F%YiPpJfIueCLOdURCteL7$G_(ZmDkqTC`J0w6MlH!)0v;Tre|KbV7W9i!cI}Tmyq< zfcBCxGXNo62k(8ayh6CU<0c;$#Ua12apCE`cHr`jjnR`=Z`3y@U#y>gZZN9W?n=M# zQ@;rE&rn!i3rgHnpLTKEoVm)J?H15MIA9NtD;3j&cizVwdXQfChOemRy9?YAFi6il z`2s4%piYw8?>Lt>*4ES9+;qJb#f1i~Pcyq+rl^|k)5QaB1fb-=su%UOjXA_Ihh=uKqKB zVyPZX@2Bb2#d^fXhwa2+ku=9?qeJj%ua6^3>aI-v36ed@3DPHtfAk!tH$W3vMmHid*sqg@j;4ucxU=r1L zY$QCiM<;D?N#Zn2M-R*joHfq(i z2{N7BzZ$=QK~KTXWHR^d$h-6z=t{13M`ot37HLwWme(yicFghBkop{_rN27efU&rCJ^Z0^+og_FB zAe{7p-?Ik1j8Wb(Sdb>Bs!2OjN*QMpZ$~FCOXdQ^)9FE&ljR%Nsso;dynu?|vp?}K z>bJe)JF5472v zc;=;y13KoYGcDZ(Hd#mD!83hQ?N^~V4f{Fs*I1#2!RR^e3P4QF=Dw~<` zG8e(2fHNeVMLtewmKvvpf}plQAyNATW+vZ=ID+895kd=@CW(qdFY*H8$UNkUhL3IxRxph* zvs%*_k8K0Nt9>{Q2uJf9t#Wg&j+nRydxyMA?QliGE?b1rE)EuHYezg2%0F!ME|V zF(TiR4!CU?C9LgdgaV_u+wqFqIOV6`IHM8)yWpr-+g+lR^u<2zU%rpqB`;x?`qQtt zOMJsi9K+f_{Y$>uwxPV8{+hOJzb^($q{}(vJWMOs zY2F2g;x?XhxT{X%v|)>q>^EsVS`hdJT_T<^3%=qw#t*l72unNgCn?v{c-lZkS8v@y zjtQ|;x44NH`7$<@o|vCP1Zkf6GR{$(B{CqD-Ik7Em|SrwTZ5B$Dh{EaDqck%YnMgw z0F|`RWMWyak~wgwN=P0Qn_okdm~9jju<~Ww zou6x2+re26@T$0FV{+U`(VJ3OzM$QKBWEqx31=%0GC%C>?d*>R+q|s92L8=!8}&2K zzkr(WY<;u8l-~c-zd{|I=9%CguMj=U{r0(i&%qCniy!A0Sv53=kx6JP<8|ot>R}V}mov-HFjOE4IDeVP}mC%{ucl?y443 zvr8EQgyqwxYBUr^qp8LE#@2rQ?DcJS?Ys5kk3C6Yx!;I_`PAgx>PA{yUsr&TPA~9u zBuJf_pRZ2O&mutJD#%5y$@2<)PMM%`;S@eruK9gaWDe`r|1e|XEoEcYJFAi21~^O(pxxaEJwhf`Tlaberq zde!UAjc%-8uY0E!>Yd%u=;A$R>$Tza)H~IyhiDRR?ePKxousGqoO>j;cW0?$kD{`5im(2JKC3@nO5OgEW6{^(O+J4g>d^Z>#y+KR4#n1lj|xovt9dTG(B}Wt~8g=&ex2Ne*c!1J2YeZb=N|1k8&%m4Vp(cg4tpyZ- z32;J;q;-IjZ;A~qLJ!$B~Jn+X&%nA+FTxp)xrhbXMc5jerMs+mh4Rnvet z+q+v7YseVtb7?t8ea(+kN@_*yY;2>Vu+OoEVS4HL%k@&Vk{Bqd|H9+-&gOdB<9@U2 z@WXQuf_uO2>*`C-T}oG0meVH|X47-L%%)t`+RxNqN+RYb=9O9lG9M@Aqy}DA1DOJG zsUlAg$ol0KFyvsYVG99+EKN?$rJJkW^ou>-cAc9|Z+*H`ue^A<>Y?ISUBAIA4L@GL z?a#flO7j!x7ys>V)*Un!)*vevA9^)6C!=o2RlB{VRV3H_dSa@ZCVMa<5Wp@>$|M2> z$&WVx9I%x$(ed5beJ)Abt)~YtNBC7}E%JJpcpYB5kghU#%IYo!VF^Zt-po|M3J=fX81XwG$w-c zy0Lg2u_J!t6N#LTV5BJ_Ot{>B%v3S!$QCz%2_h^0NatY&147B4kFjQi0pegjO>vws zkC=i33xymn_F+kNkbmGj+!8Y5 zC|k?6$^%y`$k_Ze$L-?RjuR1&|DmS!qN)SuQoW`Vw*uEVM@*^D;t4)F+wlcFhSStp zRNxW++%Co|Y1?*5Z@UvE;zZos?1%81UeT&gqZ^(PV_bws_M>o3g5rr?(rUZI92L_F zKjNge0uMa3HN}n(mvESX6?QO0hk0ZcCF0!rPfqV&f4LLpn8LLBOITy)u}B!4noHs+ zU}*!H*%+e{9t-U<^pEs0$FL(w-~qR(cf4|0O1+iJG5}L>3AZE!=tx1M(uK!znt>d! z<1D^z8^rFchPmyFBgQhkrG$k1qKLU(b8+!$`hO{Z({BM64DewigOP9q;rVi$EYkUm zG0fmWjY&5+Kwro|Ue3$21-?ckOf;jq8=KLYRc)zbnAbyGqTCjTRU>$l$kGTR%R9-- zHJ@7Tc~Qae$0>&L_ORrfrYAq!OFyZ+8EdrpWn6X3d>aR+>jo7^B!5{?I(kYz>SbXO zo)DGl1Xt7G6Z?SfwgaFM;Gm1o1vp$9F)=$c-C1M~yLn^1+TH4>vu795m(SmS@UfRJ z*N=VlaSjnw^>oGE<<)HJvHBhKuhVF=VAM-@p1+vxxqUS~c=yGsyVt3hld3m=(>GO1 zXQtCVXk=`x@9^Y$j~({a`uQiHOf%jsG&dWyG-&oL6;@2obw?mmZSC)YKSF`t3=0+( z;T%2O+S;zKZEn|B*ZcJoSJvuBU%FnevBM}i?XY;5qjviHy9oIa+%p}1#lx@T^@l+k zT)kG^edcVnfBr(X#PgH;ybaM?a1N#-5b&rHt?-EXv9mwit$NKoKplYt(U_1?R0!<> zzpct>f~J|6qH^2Ol}HMum9M@~Kl#`* zY2o}#{p^!3)%U&r&GqK!YP~g>sXuY!GoUMK9yD1?kACtKqCqE^Q+0(951AO=Hig`j zF4zuxWw?1UfD5fTivy{g>u;pjUVb+H+K>J7YNMJ@|JnQAmlB&qX{M9bKK?t^m)(0u znx5-bTWefwIX7Jmxb0w<#p=|qf~NtrqBGjt+m%~MA7C?48n9w~mM_6wgPVEr=37DOU|G2ZnKH8ZazbJY% zAo7#?Wcnx4Qf+`(ggWhU@u|yvG=1v5!9IeoIrhcimrgN5ckwlj92eMA)y-pI%0=R;Qh9j#F`jVRyS< zPb2KyxV%x180+g#JXeo)pGd202;TYJQ}xWvo2kq5sdv2P8|&Y`<3jpLc=t=)URtM{ z-2Jj;BacDzVH6mBbq=v6d`GMVTNN4JM}IU2o5tSkPC$lM0SKU z+b3a$JQLX;qDnYDo935St8**lI^C&=QSbJ5ImZbg@EdaL>vUZ3!w2*i6Df)95ayq_-}j0ONqe_SN5bN9?GxmVdMOD*d3qHU9#)_=Q~>w!oz?lsxbXQ{um2}#sDL>0%zwxJElnqks!$K##2!UlAs7Mq8oq`|yg5Q~oySW(7! zQBdH`ctiO2AdeIi7;MQSM1ZiNBoMukcV)!h1oY#K(*j?ZBi;gb2s5K^-Y%g-B2>~B;HXUSx$&(7aOH9O}uXVdizT6P!iI^7h4xr(M@QIc+KZ`51tGWIAe&o_eA zMBRnK_a!81ii^_viG`cT8MxGVwm!W?1wQ+n>tW8SPoxVM&LO1dj6WA3P0vrI1vCa} z@-*1rj%WF}FQ2MnA;gXCmG|0tp#b$V@InGq7igH6YVfUg_V%bCheLD@tCyD|xIxpY zQiQ3;=I8usy~mgUpbCMsGWWLabJgR19|6L!-r+8Zg}FuEshnmfb-&tX;l408U+vx8 zjH8RupXn3<84=GkDvgF;zWxF?!7JsUT>SIY_~>9SW}g}E2A$+S;fa|(M;>mY$|goj z7tYof?jDZrf1pn9`q6)t7ABU`^b#**P$yTeeiD?=fZ;ZaXBNC1J#jd>fXhRN&oEYt z#vzZnzpL;3?sp(wn@(%*`r&kySGb

eAW>?$Nn>}Xk2zAgX~ffCA%Y=@X!+g<3BniF%6A~IOZX&2m_8`LC5g$=xX*4 zS`=|0xpIZjtB5Bd)IS6U(k1U3nVp}jyS(m&Kr3+>cfAWwJB`MR_^Khq>ms}+#(}2o z9WMlrJdXd7>~Mz|S4{F+2_x4VZzZ9^2*nr%=m>3t;jXVLC~4z`vdvB2(5=$S(gHGs z{d)b%mDJzk=n|V^BQ%XSUb<1w?(_8G6HnFi`v>W^^^LUm^k*64hzSuUKKylW;ckST z^uo$&dZag(E}uP}p5E99&4_46+NN+5xn>HfJdXXz_ba6aP6P7 zW1N_oOSj(-Lj$vL>h{yAw+I=X?2q=`0U6xjJQo6si8+vyW$2<#3VoNwZ1_Og*Xx%( zL&nYofx+lfIQQY0w4yxhd{jJX!(0M)4Fd;LRdtyJohsnRJamgt1JMJVbgW!qk^l%7 z8d2m<^|wN}EJ!ZZ;4tLJ%qZ7G{A^`^zsrv}?F3{060QyN()Nd$VM3+E7|@6oA}>li z$t~BQW?rfYHio>#0Zg!528gbPi8*%#-4qr}oCB6#em6g?JR9o(fEIyy0u5)58{PsT zGu^^3Ffzuict-dfrj*w-y4x^{+oZ)^;_0U;>D%r=C_+E?p8~I>(=HVm#p1i`B!b88nhi+T&D)t!h28j8V{-|Ak za&i93d?`%h+U}7jITf5u!Z zpaU^f!VGuO@4&Qdx+A|9eDPr1M|2M2=}u2*lk{mj8S zcm2HawO>E__y>P0b*EO+#KN8Fw!6+Hj(}IQvs2aiJLaoXXBN;<T)E_KZo1=+JJRK=SL$9hTX!dWAlpfM z+$*G-^MD5`8>O9{ z{dDTonRMmFE3W^ly}^2#7;xMA#8SP(Jp??V%*;_&951Bds1+7IJRcd4BhzdwZE`(M zG6C^Y1Us!LRr?Ndu3xNd`upVxN}8Bv-W~Q49_)<}9E{wpzJC1%nt?B(9WmsX!bUwm zx2P5%4?)dU_uO+gO-W~^1=z0`jtS0Cti)S z0V|~odeo2w`@j)`EN#ow(6rlW%@uMu*D8LN%$&Ilb zWS7mg5%+^}5h}1!;!cygw*cuxFmQmdXN%)b3S(|wyIgk_2qHMR@%S_K6vOYX^|iGB z=qKyN?JZtY7^U-XdSm^_#oN-)aBs+vxHq6d&moY6nS^#LT^2Jo*laL%)?%FizaQ9^ znm5XcdBxR0VTfLF1v@Fwzn>a_d_w!OiAgq`Fk3;+2;)eB;T{c*1^0fxA#_;_0d4;@ zJINxR*A;4hNIX$O=%!EpqaUd^&_<|dm(!=8dY1hch!F&njs5hNKlVqfgYC=pPPLOp zs3*cP!`?!mi1Xop^8v^n2F(I*Q~o1w{pRY*voF>c?!C9Vi7Mv&XeP}p&T`>XcQn}8 z>Wp@`z0NSz9M1}(UWbZVL-cqaYi}=2p@y}+wX0eJ^O1rCcgtcM4L8Ro*k+nx;`4H; z?Y#|8PH?vZf^_xsnHrp;P$NTGLB>h7iKrbfJXBKQ5<<{(%T#!r8L`uhtv0K(tDO#+V(6Kn)FEtz9rc0D5j11Hm*=j$fDg%LNm z6yb&h6*v?-s@@Mw!OciHgYX{X6nNlO>>S#PYdsWz4X%-)5yw-0Nj1(Q3Ny}A7)EcR z0WL#gZK0PvM-M(SL?W1F<7W}aSsK5@N?l>cO1Gp}kl^}5yu_i{hC8oEespiYi-~d1N5Q4oCEUD%dT8hsB$kyExWaJ<-H`T?2DX=I?j^%4!&A%QLNQgC5qzxOB2R?0 zN*tt(K^7GbU;qL$KICm2vUG~UFX*b_Aw+<*i;v%)tst7lswy}5DN6vZ=z?ITh31)m z;w>HGmNCjC@dndS6N@${sWx#f9_x}uaFE^5ZRN3)15#<-P=1TSx&~jFf3Ot{0|W+3Y5u|j%l`v* zLWmN;Q^cU%b`U^Vw|qN`qDir18PYC4v;;j?h!9~Ng-RCy06+jq zL_t)o=AuLwV3cW4%LjCORrUB2Pp5NS(hO+oa00>01g}D%z3sC|Bd?UCb(jsAlBp5W z)1ho!yCSc1a-h zdTH^FbbTWqYp5xFJ=$=aAUd}N`P{~$(_yGf`rqe{_9Y%NM39qTShXhkq59t8BFnuG zez2NY=~ct0K9yz{XR4VVqM8}>TM!&2HevdVX_m4O5T%Z6Q&9&)G+KBv)W$#ti6qX! zh8hgAM8_Xv6zL@WTCy;%v&^Gdk5r;K#JJ{L!qBus!we8Mu4w6j%vW#^rqX1d0lqS? z{_%5=GYbVFntg`x1f^gp478#9Z0|r^C^vdLPXm`DBJ6>u<&p zU1oLpRPA%0{zC%vG$e6kf0mxI2e6pU{8m4>MB>cd8ey;wSJMQHD-eJ1` zo!?uhXI@Cp^DN_IXdOH?zmN`S+XLDVP8ER#7iNNo<0y=FTn|I}a7(Za$vEdICx2gA zH9+&9n3Ec~bqzFRAp#)@VROhJ>|n>}J>T=)e z9~9wb*uG+W&54POoOE21$_qJZNcefxq3W^2fhua+=bh}y8NTP?Pub<*vT634cLi+$ga!qbe@yy?Xq3n4wC0+i; zizpgqr?3KMOpr$BSMW1|MGSnHBP|QJMZ`?6yZl_3fHk}ve&A#gBX0O}A6dj@vs1gk z1CHO32eu61v3w(+5>CERu7F`WYS=KpHBndCr9uj<@=Z|GPx-c7rn^PFj8hX{@-KEf z{uov(Utxw}6{FpblLMMOWkp)y^p%L(_ABn=cED-su?W-Kdmp)2UJ#epIp)(dg;xw&g)CdQ>_37}Nh_~d> z3noM9M1<$6h<0|d5aqGl7AxDV!TAOUbkV$uH?g{gjptQIYKK=9JKR@BeH?TML)&6% zf=mB5Yj50S@tT%6M<50CN{O}g8xzyh6CKV*cc!@!kr|Ro2|7m>=14Ydcv}@JCcCxfdWZ*~A+n zPJbzOGW*=QhLD1;v&+*1>pNQr4N!sJ-mfpcv{vu&0L5^DtxMDsr}o%p-r)jB(sgOR z^Ydq_J1^W(&2x-kpQDA-%#ZBadJlr-03Y2bxKRJQ2=l4G*qNPRmlFr?)bFKT)U9pb zZH_M>@K;^C=J`mEFoZ^h`?OwEX;ZGOqOGwsTdl6lcjghoOe3eD%_rvPb6rwH>!vCr^7mq=35YOgZf$fT4=fNF1@LOLwC_SqyG(jp|ekQYZ{M2=M47h+2fJ;kg&e=#OdvM|6Q;6#HpweXX8G7~uHEpTW(j zAkJW$!o&CaM$C=NS2$S4>0shL^TcCy4}s$1_HO$4Fa1jW<}(-55=WY*2Ak=H`Pupd z7cQpf=NHq@|Hk{{fX-F&-i{o_f=p~2%9XzqV_@_Pe`0{H7%Jh;v5atHUTHNT6Mte( zYT%YN;J}xMI3xg&(^gE0L=Ze_9TV{;#O+C*Xk1_-IK$C}Id(k`Qws?Kh?nWQF4&RS zOVo?B(%g6{jAxZPFe-KWqsuF48;PgF2_C57<%dps&kIkc0Y@Gtd1h(o#fZ)?{M-?l zL}d}RNuaX@APTS@xRA!D#rm8nWq-)W#}POvn3h={IZ09lQTCX?z&KXP zOb%rwPlU!eVUV2+B0k~Igy&pWzH=px$@G!tC{UPuGDy=3$N94fRJ%ZQ+=&c7=467R zg-e`B?7VG4(*Y*~%s53n!!f~~>%izye&ShvWx-#*UuJ^~a~+M6(_lqf^YkZjkr}q8 zxQ(y7jho>b{S3o$M=Av!JLNcL;zTU6~^eq-7~+9)gKjRmsnQ#o+qx||Yr<92P8g#r+g zjE@A*bcX_)5FU`k@GvY*gYnHu2~b8*XVEI16dwfwgv)GOd`NO8J8WQcVJ#~Ns5G=B z=wUOAavk##Q@Ma_{a^*Z&$c1I;Be#Dhm;E z>qs|qd2^kMd0wS}7{>lnV7dXwG6JCoa6ldv1h4K@`wT9gS#5ENV+X|Q54@><8x6go zyX6R~Cpw%{mPDiFZI%`!NG&A*1Q!LN*}-ltySU6|oL@%1kGlTks9xYgHrChGE{mC_ zE`w8^@}gwtgHE%`o@iG9u8pcK2^`b2MpJ5Ru`9-C<~Vxa+Z5}X&FI2audSrDjfcc z1`t`R3}HL6il|Cz9>jRO!Ok+pOAAcI@w!E?*F#{y&GAS_R+h6?1TRT2_i`))%?D-b z)E%e|ssVQr*#%@SCMd5JM72=8$cUmR*xsll*w8#I0$L8HiNQgiH#F#Yb|x;w>rD}c zRw0`a2leX2Xa^o*Yj9&Uxl|u~@ArSz=r@1kX8jFseq;Ts|K>yN?yjU4xook+F6

`yk9=B(-NP%rB0H@WFkB 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 SOhf5t*R2~M;75Ij7ykjC`1@u6 diff --git a/ios/Warmbly/Assets.xcassets/Cloud3.imageset/Contents.json b/ios/Warmbly/Assets.xcassets/Cloud3.imageset/Contents.json deleted file mode 100644 index 4ea00c035..000000000 --- a/ios/Warmbly/Assets.xcassets/Cloud3.imageset/Contents.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "images" : [ - { - "filename" : "cloud-3.png", - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/ios/Warmbly/Assets.xcassets/Cloud3.imageset/cloud-3.png b/ios/Warmbly/Assets.xcassets/Cloud3.imageset/cloud-3.png deleted file mode 100644 index 4774e2a6cb3be19f856a32088b858a79030b63dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 351670 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

xNUPjHnqVrO-niSfN@Ff{cD*K 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 PlG|Q@et4c#BsX7JfAk_{;cY^ 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

-)ZImox>S*h65+%0LRN{!e}I>w39T` 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 z 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 C6d|$z diff --git a/ios/Warmbly/Assets.xcassets/Cloud4.imageset/Contents.json b/ios/Warmbly/Assets.xcassets/Cloud4.imageset/Contents.json deleted file mode 100644 index eb836bbe8..000000000 --- a/ios/Warmbly/Assets.xcassets/Cloud4.imageset/Contents.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "images" : [ - { - "filename" : "cloud-4.png", - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/ios/Warmbly/Assets.xcassets/Cloud4.imageset/cloud-4.png b/ios/Warmbly/Assets.xcassets/Cloud4.imageset/cloud-4.png deleted file mode 100644 index a2f0ec7c5ae32bac8bb3c95634eea86cb5b3ae85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 247404 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 fJkZ7pS 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 LvNR+hZ$JJIN@}F` literal 0 HcmV?d00001 diff --git a/ios/Warmbly/Assets.xcassets/Host-fastmail.imageset/Contents.json b/ios/Warmbly/Assets.xcassets/Host-fastmail.imageset/Contents.json new file mode 100644 index 000000000..04a6cf078 --- /dev/null +++ b/ios/Warmbly/Assets.xcassets/Host-fastmail.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images": [ + { + "filename": "fastmail.png", + "idiom": "universal" + } + ], + "info": { + "author": "xcode", + "version": 1 + } +} \ No newline at end of file diff --git a/ios/Warmbly/Assets.xcassets/Host-fastmail.imageset/fastmail.png b/ios/Warmbly/Assets.xcassets/Host-fastmail.imageset/fastmail.png new file mode 100644 index 0000000000000000000000000000000000000000..a1d054399b96c583b450bb13b2c7169fb591a5fb GIT binary patch literal 1654 zcmV-+28sEJP)C0002eP)t-s|Ns90 zXunOg>o7h^|GfaCr>p>Gz9~3F|GNPH{`dO&`~T2gc722ZW4-^s07tUxkk9feJ4ygx zyhg0%?Dzdyx$J?-@eXpuD2mdi*z|6}?z7(Z#^(5DzV5%^_1*FNyVmX8>h`S2=Fj5u zVV>2Nz2Y{S+lP*nP?OOcddESB&2y#LOpMK-#pXMq-~ZNc|M=oRO;_aR=i;jmAT~^W zY%+?q-(9EP|M1Dv)!6^%ti8a)7b`jc$2C-6XaDl9d}kfHk{?k~KtoDF?Xm&i)VB=% z$|nE-1z$--K~#90?V4$S;x-V*Z9@le*5GvvCLG}iG+gPCZqs(N-R=4Pzfxt)sTs*5 z+1bAFyv#4j^M6L8(PhW|pTnsDDu4>00;m8gfC|9=PXU5M0DN5lp&UgKxa-Ysu~@8j zn|0!fAJ}mi0|<3UHrwTN7W>X2{CGB9ZZ`>7Fc<=etgpB8hu9$^ewc69Vm#gsK$uS! z^Rsaremq|!W@#`02;ALrrWQZOY`KGg?}-f%M4Klv^Tb#@Z6Y25K%WT!uzBLCXYsUQ z)B-^AoyP+Rk{71?(?Gl=c}W1bf9tUTAXq(^$*1wK(k4OJ|JL(Z0K&exya->Hgv>q* zAWEiI`XZ)Dq%^g+&j0{eF{Yj>W;=2ig#C`k1csyZxP=+{$E(W+4Wony9( z4*LCDSziMXtP9LPi6DV<>*E4|egDBRO@Oqo0|@N;FCG3%MB3K?1gjGD1;H<*eKi0i z7VDobCS4-{fMvP*j&s*B0SI;_&A@ZS1Db#ah^A%hJI=iUK(H%c-|^`bPypc0-vGcF zvH{+p0@8?k6afh!?Z8{VwyYF?lh!ga1q1*jQUY2x-~V7P|NQt)0*I+zKmbHr>0h;O zn(dE&9+$*o*!$C1_BuI05)<73V?duBniTPqgKNJ@fZ_e zfB@|S_W<=~otuQzevJa4#sC2jO&|jh2)}>i=)ZnW~hm!=d=K0Jsy#005Ib0JHLWUIBnMB?SOPPe_w+HTSIw;lrSEJ*GDT+`^=0xiNA6W0Ku z_}_E%tv4k4Em^zGv#$VPY{>$2F1Z8{_CGN7Z8xRF_0$P~JNilh*0vm!2a~+kmk+=> zn7H_fAOlG4=g$2c0M5}&^g{A*%A5Oo0N&x$4W<}?)%tP)c*k?RC1~B4+b02d7ZhS1 z%wzyzzhNG)@(3`mXxu<u;9pdd+oHl@a8*m5 z(F=#kWi_=T6%DiNdKb!kG1`aOgN3NWlAmm5W=}Q(U|g!cPu`Sk0Qw#8u1tN^04N&K z{*A9YDi2_!8US)RKD_UDx~0v8xT{P6byIqL;_UQFBA}m2XaInV_x(;-&htIB3ey1c z`+g@Z13;^P1%My8J0(m7^#qUr$oKuiInd|-5Z+7fE(nvG^uK)s-{R4qrDf)K|{S-hk`j-eji|<)x`RUI9l%s#01j9;*S@u%^ z#m6lOVQ_EI7X6`O|3d)e+dmL=21D*gtwNrw?>XFG6bN3AgJ2|Y1dwK-8;-OL@hI$? z$QuIe8OGuLg#NU9avzS()GYu~1g|>?hoi~m$L;ZG7!JCgvAhjH29ZjQ2fbbx_IiWy z@h28x2XMy7qQE~X0#Hg+02M$5Pyti`6+i{>AItKmww`e|X#fBK07*qoM6N<$g2)I8 A#{d8T literal 0 HcmV?d00001 diff --git a/ios/Warmbly/Assets.xcassets/Host-gmx.imageset/Contents.json b/ios/Warmbly/Assets.xcassets/Host-gmx.imageset/Contents.json new file mode 100644 index 000000000..b6668b844 --- /dev/null +++ b/ios/Warmbly/Assets.xcassets/Host-gmx.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images": [ + { + "filename": "gmx.png", + "idiom": "universal" + } + ], + "info": { + "author": "xcode", + "version": 1 + } +} \ No newline at end of file diff --git a/ios/Warmbly/Assets.xcassets/Host-gmx.imageset/gmx.png b/ios/Warmbly/Assets.xcassets/Host-gmx.imageset/gmx.png new file mode 100644 index 0000000000000000000000000000000000000000..9736f7ca35eea1f2dd9d4add5ad98d4c3e35b561 GIT binary patch literal 1285 zcmV+g1^W7lP)C0001NP)t-s97LP{ z|Nrvz`QzyGRdci`PM{w~oQ|T+af-qF{QV(FozmLt@$>nqxY;mNq{-6f>+bfq#NT_8 z#Wz}~qO#V)%;ZsUv#h(@MP{wl-R(YLs%nM4V}H6$Y_Wuz$tqBxn5xoWd$@_6%frs) zAtT8U000D3Nkl0cd)(VmWUVrh<8uCP>+Ip#*zbV+puu&oFA3$@dKW4*T-)P zT3%=;$qQ6G76^% zXlJWbom@^*;w@`P)Y1gaz&QJDZOof68$p*hVk93`7MNwR91id#!79cI;eIxUpKd8o^w9J8J?jt!qsA+L2<7^a|Bt z90qy`NA{uDB#yqu({m{3FFCs)l8c&wqP$V-Eg~1-DoW`xX9{K{t>gis%)4C}NlbKi zspI?Lswj6FxKZ|!Op)J5OQ5DSCZ?KUF@MA_4jh0O9JQw%@+d>eCT1N zBzy*>oE|WnuqC?I4dC~wESj3no|-C{Z{w6 zp(Ifr!mxBw{li}g0>`slNN`Fgy!o{ohiaIQt#aRznbCd>n9WPa)h5!|6zVbAR zCD>%9@sKOZ!e($&P{2%f73Yg~(SijRo(h8>=ITr_pkX%UFBgJ&Uggp?+@N7~ItXB! z|E4l_gFB{>tuu>(hI9AHl|W3ziI{v;zY@8URo6?=+-v0Tr+{+LTFMMZZYl6|;M9(A zS|7VG^m7#iId8k@kq@`ULwGys$zYJ+ta#KeQG;3H&KiiPhZSx4@*x`1ki}XWSpt?W z41GrhA$PlrGM_h4%bID(-^t9&NP4w)cj%gv$j>XpJ`wSy52A(jJW6wzYEc4s4up^P z06#$nTvtZ;Vc%qZOaho(CmQm9Eu7D-sFXO`^C_JkPm9)V9DX%tB{K@X9Yz{L=i$uk z@OxVnK2h8>npAe#U{7P}HCzC(%g>+Z8$Tzs>2L@clJI+ypV$6{JJrWSIs8p`uF@!9 v*C0000mP)t-sM{rCV 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 literal 0 HcmV?d00001 diff --git a/ios/Warmbly/Assets.xcassets/Host-hostinger.imageset/Contents.json b/ios/Warmbly/Assets.xcassets/Host-hostinger.imageset/Contents.json new file mode 100644 index 000000000..3b033b42d --- /dev/null +++ b/ios/Warmbly/Assets.xcassets/Host-hostinger.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images": [ + { + "filename": "hostinger.png", + "idiom": "universal" + } + ], + "info": { + "author": "xcode", + "version": 1 + } +} \ No newline at end of file diff --git a/ios/Warmbly/Assets.xcassets/Host-hostinger.imageset/hostinger.png b/ios/Warmbly/Assets.xcassets/Host-hostinger.imageset/hostinger.png new file mode 100644 index 0000000000000000000000000000000000000000..6f69412e6b6df45e92bb892565ae007b90ef2401 GIT binary patch literal 1317 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 \ No newline at end of file diff --git a/ios/Warmbly/Assets.xcassets/Host-migadu.imageset/Contents.json b/ios/Warmbly/Assets.xcassets/Host-migadu.imageset/Contents.json new file mode 100644 index 000000000..35f430a22 --- /dev/null +++ b/ios/Warmbly/Assets.xcassets/Host-migadu.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images": [ + { + "filename": "migadu.png", + "idiom": "universal" + } + ], + "info": { + "author": "xcode", + "version": 1 + } +} \ No newline at end of file diff --git a/ios/Warmbly/Assets.xcassets/Host-migadu.imageset/migadu.png b/ios/Warmbly/Assets.xcassets/Host-migadu.imageset/migadu.png new file mode 100644 index 0000000000000000000000000000000000000000..d71e9f9a6dc7ca87f1a2802b9291411d2364cf1e GIT binary patch literal 13777 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 Hu0mjfiEbz- literal 0 HcmV?d00001 diff --git a/ios/Warmbly/Assets.xcassets/Host-namecheap.imageset/Contents.json b/ios/Warmbly/Assets.xcassets/Host-namecheap.imageset/Contents.json new file mode 100644 index 000000000..fe80870ce --- /dev/null +++ b/ios/Warmbly/Assets.xcassets/Host-namecheap.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images": [ + { + "filename": "namecheap.png", + "idiom": "universal" + } + ], + "info": { + "author": "xcode", + "version": 1 + } +} \ No newline at end of file diff --git a/ios/Warmbly/Assets.xcassets/Host-namecheap.imageset/namecheap.png b/ios/Warmbly/Assets.xcassets/Host-namecheap.imageset/namecheap.png new file mode 100644 index 0000000000000000000000000000000000000000..9c80657bdd8409e2f69ed601df1eba593533758e GIT binary patch literal 1496 zcmV;}1tC0000pP)t-sM{rE- z?d|91=H%bp>0J!zT@3N^^XXj->0J!zT@3100NdBp&&|v1w3h34IqQyF!N0xiG&Iuy z000VfQchC<|NsA!|NqSrP>bo=Q2+o1N=ZaPRCt{2o85BrDhx#f)NTR>{Qgh-0Rk-k zY0f0fnX%fWy@<1yHzV5n>Yox1(PMbNK6dUnep?9Nkq3mD z{^y3iLhw`Se^K5cWW(_MvVKnRef^AJfxaO?`L{yfw1n^1UmBqrS0sQZfHZim(%-h% zS_8ZV3k?7Z7L@>mDTL=r{cU@$9RWKAOGm(t!NMA_@%vb-zil_b4R8b805`x5a0A=` z(*V4Tza9A>0l1b@FcgQ>a|q^0!9?@ba{yeOY|nxap~nP#69j_QUp)t)&+|OIu79}y z^-y11QWras?*eeE4+JE0VL-q&!BHca0Z{UA1PogMC{*>2WC;MP@Xi3}<8TBAxke#` z?4<#hGy&Kv7EAyb0}eo7Q9N2exCC?3w=l4uBTo5S~E<>rpl|E#NZOe+xh{Aua@pYjE!ug3Ev`3spfo0^m|Wcm$FU zf$1*|3rYh>1$O8F69OZkEHF>*4=Yd084!BFWx^X}$fcclFak;YfXjmVk$WcpRwGho z1{C%uGF%o!4pFrrX@az6zyJUYa1kL;0+6-^&;w{K_7UfsaZSa3h;m zKz%Oi0~iCS`C-&AMI3@ANSrh*2nJw^`huVbU|Jcq!7K#xW=NA=Sq_lB?D3Qad0;S) zdbxHTkklGL;o15i7*$-;+BvFfC&AxWM9~2F0UzvX1Pf549foUW)hV{2)vtOE zNT+^5*ii26AZ4hxs}6uMfLsPR6h^^nSPfO80M+L6MbsP*p+kg&$jOTDs_(Tqckj#pg zg!H&5D)aCFfU6z*2&oW@jUVaRyQfIUXr|w2f_(?BRu<#B65=YG5pXY%xx6{Dy?So} zsGWq9j|k{AxJ)c?e<<)N*D+%8xOZq9&;*d7i;nrq(~)n7ZV?^kZs6z|Pz68+Tt1YoOvZM6 ztqio4cL*0l_xiQ&KzU6^Xu0UZ76b~nXo8hf7>7;|XaHaX!h))L0VeZqZ2pCnBdnys zg}wn50IuAMo+b#@OHdUiMFhf*Bdp*Vj6~mnngbeXLo2GU=GSe-JU+K96ItKHM!c3nU+ z2xq~0&KOXgjMBMid_OvE1UA5e8U4|0xbNf71azE}FApri%m55mL}HuxR78ucA)27) z%#kes^f}ASdvNz^9CGr=Ho)MMrpBw^_(ZFJi)Qvs+-tf0^^ZRs`2YFb@CLX6Zh#x$ z2DkxkfR6zz|6=p$m%@-|)D6 y%jfqAa{b5pZNKX`KCj>U{aC*FJurNA`~N@Yb2_t literal 0 HcmV?d00001 diff --git a/ios/Warmbly/Assets.xcassets/Host-ovh.imageset/Contents.json b/ios/Warmbly/Assets.xcassets/Host-ovh.imageset/Contents.json new file mode 100644 index 000000000..f3556ca05 --- /dev/null +++ b/ios/Warmbly/Assets.xcassets/Host-ovh.imageset/Contents.json @@ -0,0 +1,15 @@ +{ + "images": [ + { + "filename": "ovh.svg", + "idiom": "universal" + } + ], + "info": { + "author": "xcode", + "version": 1 + }, + "properties": { + "preserves-vector-representation": true + } +} \ No newline at end of file diff --git a/ios/Warmbly/Assets.xcassets/Host-ovh.imageset/ovh.svg b/ios/Warmbly/Assets.xcassets/Host-ovh.imageset/ovh.svg new file mode 100644 index 000000000..8354a4199 --- /dev/null +++ b/ios/Warmbly/Assets.xcassets/Host-ovh.imageset/ovh.svg @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/ios/Warmbly/Assets.xcassets/Host-proton.imageset/Contents.json b/ios/Warmbly/Assets.xcassets/Host-proton.imageset/Contents.json new file mode 100644 index 000000000..43e867429 --- /dev/null +++ b/ios/Warmbly/Assets.xcassets/Host-proton.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images": [ + { + "filename": "proton.png", + "idiom": "universal" + } + ], + "info": { + "author": "xcode", + "version": 1 + } +} \ No newline at end of file diff --git a/ios/Warmbly/Assets.xcassets/Host-proton.imageset/proton.png b/ios/Warmbly/Assets.xcassets/Host-proton.imageset/proton.png new file mode 100644 index 0000000000000000000000000000000000000000..36d5a714c96657847178de0c4f33ae5eabb0252b GIT binary patch literal 1319 zcmV+?1=#wDP)C0002SP)t-s|NsAS zUH5-$`E+3SW>WQeW%!YO`*vdYigx;rdi#`s{B2qGg>m|6RrPyk_=t4+ZA<<3_5PQG z{QUd>WJBp@MekoW{Z}{6S~}HVKi^U`$4@c7W>5C%=Ke`6vpyo4+0^}7Li9x_sqXCl zv#I-;i~4t3{JF3E-`f7HocyMi{JgXK(aijzk^IWS{l>igv!wh~IQDU1(pyH|PB^|D z0DFUYwcXn9HXDj00EV2D$}tO-tDx922b@tlwOm8QWlGmj8vO{7SC#+(1RP03K~#90 z?U`A7n>Z9eS)EIO|4$VJ0tsx4BLyC+^I-eM-#uJyR~L?B zFc=I5gTY`h`tZ_%2z>OjUWc(mU%+{s=NJV%&x-(AmaQBCU;=Dg)n;zCS*0;;0V$8D zC~_GTjhP3v)dHQU;@IW zF(?Icv}FAz0_VrzoPqA{DG3B(-y}d%&@ynf4V7U)1^TC9wGi|s2^$*A0Serfg32JF zkOL>+d&c0J0fkY(1g@n38-+qaU(pjdzZLWv66|2>%`UXD_TisL<1E`>-XYcDTjH0XV2+DL@63s{)*}Q}HC^CBnud7T^a9a9nC*J9CapbTBpoz~H(7w{I^= zmFQe71?pKaK)^fL8bUq>Taq!r1(X2-oHJ8343lIls08>M1h|#i5+IobPGF!0g9PGc zX9n0i5&<6(5EXuifU_~t<3Y1GGz3b6K?2;q6o3+HLLv|tsKGFSRK>7Kc4Oy@@B2Z6 zK13jD3lJ@X7DN6MX|PJ5An+O@)dox^@FJKtf=PHH-_A;?inU6BWEH#yC#efHAYzj2 z1FvCinHU1ePWT$O0xlp&NaMfo&A% zpi%4?T_tj5p@l_Mk==wB9?VXBK_t8yoxzFYuuJrkiDJ{osuQ45j=p}*TusIMQ=sgz zc*U}s4k|>UnE+><1wq-jHLyxeX?i%dLis5lD9(T=F{HXaf{o)Qx-7RH3JZEmAWr7N z9C`MO3ecf|;sB&d0Ndsr1F>aLODG3w@ppzapLY$gBy=RijMgdO9Uja0my^&Li2N!| zuM*k?k|bdQ-6V921Lw590S2Gz!pxx9F8Y-nNS0Hn^Zr z++hu(8*z)Yj^7ycD)5H7r+ESjh(NCaaNrHe+EJ|lqDM*UF+ddzV=kH*aeKH$7D!TC zK?;2Q&I%B2&(z z&oRSup4(*LxIB#>pL48Q;OptM%o+Kv?=;yjqA&mYd))Y(#pD>Q23w*)izn?(hJ%%y9fRFJD3Ve8n@tFxQfzbtie86}&wgBg~7&|_L!C){L d3C0001KP)t-sM{rC` zOiVc*JVgvbOiWBZDnB#|I5!nKOiWBnOiVEVHB3xQ?Vt4j|Nj600L{(KKtMno03!9I z{O|7YCjczn+})?3sFsSCx3IT=cYn)>(Wr5*KOjPWT7gqFRm8u=V`F1yNogDz9033F z8vpNzv9WfA-M_P}B(UoIbf@W01jCjJ(%UQjsx%<%_@^@76Rf3kl8 zT&}+v9|Hdw0{J-$qth?B{MF8D7U(+P`L(B#};B1GMg zUX=rYfXak9bX7&hsCgm6NUE@XT5Jwb1RxATPN>OeITHmu)KT!QiMLJ zL6vLv6#;NU?sGzlzkjKL-#V&=H0B3Ayf(%VmRGo1R)DvgiM69zL;N?Qa<;&lR9 zj-~&mtV<02kpgpq(*bhl$yuqe2;8ee7DQXM!7@)Qj3$N0ZE)4KN!l3iE&|l!gmN`A zkQX}#4!Z=aN4AzS17*>lEds1U$y7KL^Ol$^J8oa1H{VAr31&!k!OTHGm575A%o60c ze_+5QI1(77#IjBv2*?d&)Zd|GBOTJd$-qtoxw_i(oCIiYJK;GQ{twwFCfCWV1&#D@ z4kfB_5m0Zs?w6ITA?%Q_mex5P*_dRKnXDfi+}UVbuwU zW$ATa4@Y2zFrWtl82f}+1Y8aX6HwdccyPga0_nDxxE(ZsJBZepLHH5@$g1LaUJ4UX zc}wYg1nAc0SZ9^mByc=YO24th)za#05Q;(sb!|A>j}h3KWUU_)X&A+xhP)-2y{&GH zfI7h@gMLQ{Xo?L9oxII{jKIB-!CUA)MfhOVW2Ra5F8DM7)k5pV-PsPC&^Duvw8h>9 zpCz3f`D{_ zaWs!af!>ZN0XzqFi~_QeGQ#kdhwSH?{Z0yS^^Gdp1VKPLfh^j(*nbJ` zi$YQu3kQxS+VS)uBfxRiRx9HO$Wp2|8Ek1!IWkT#Y~MI^!LKPGM=FIeqI$R^aWV!3 zqYxnX&n&SDNGIfnqqidvdj0pz0U~_;V?R8Bd&!p~=9K91=oifq>(m>QDi$ZXw*;Ri zAe&@s0CMa4aaj5Dn$aFo4aDw(!vvB50ol{AZO(c~;U3dHZZZIi;K25T0`g#8gdY{? z`VTS#!_Q#o6Rm)1tIY9(7pzV=yWn>SKx0YR&Kwbe59^6_4t<+|YOV8_8Y9RCV3fRkKxGH4DZ(hkk*;aeiiF@|;7zh`@1vW}(fo z0l*0)27xDr0EHCyw3!V!Ao%#xM*yY3X2MzJ)u6jhQ_S=0R}?7I(eDHbqy8~vz+}N` z1t?z`p0K)3+cE%#RG^HCa9V*eZTWtyss8T?T!C3+&tlPRvT?rZ3P(>i-29rP* zAwbhvEjy_BnE?on1w4gda7uwP-Gx>2GvfmNaoqOqIp~Hn1a$jbwCPSzqYS73C=uY< zHG+V(oIUuv9-i~ijj}%*QY-=cc3^&1Y?nA@!KP>!1-$QbIJ7YhI%mOAH<$`!J_2f$ z*;r=MC5Ij2Se&%PK@jjLKs`dLpyT_#cNV<6VRkK!A>el;sLq{G@2#4jze5BBf$aty z4G!!)?LGB>>>->DQ3By80w)wr;DaCHeO?jg2m!j?zB@dj|IcGxu=hS91mbx-YM&|% z9YcKC5F~)9rEmm6biwYup$QPcZD{Z)BK|2n_j&;Warq_SBT0xZ*p&@l0{fd|#|w21 z#I=*hoAMFZqd&f`Y{PJ$BDLI5nR|iyBq&yX33d{}eHQj^XG7&uV3U8w$jbMDJaAAu z!psJj0_cWvUlVx@0>1kC2L(6*TrYQEaKgSB;I;zi-2WnWBbEZE<$n#koyt(4Rxdl7 zhku7b^V|uj1JxWq)4gk7>oYb2PnDss$xj(dS~8^E#oAv=sK17gfBVqZt%Q`jY)OkjnIF9ClM!SNK3zRNI3^luUocKq9CvqzyI&`SHQXAyRZy!40+zRsgcn?wsj z5rfT3E4_%Ued+{~tSPHsXWf9>3))|J`z`{%%ltkg`i1zx|NT(-5(3(K-+z4H@a_9I zg`e`v!sX{hztp(gSU|s;UG$~+;^jX0;DZm&;vWdt|9C#I7To{<002ovPDHLkV1gCG B6$bzS literal 0 HcmV?d00001 diff --git a/ios/Warmbly/Assets.xcassets/Host-rackspace.imageset/Contents.json b/ios/Warmbly/Assets.xcassets/Host-rackspace.imageset/Contents.json new file mode 100644 index 000000000..ce4dafe9a --- /dev/null +++ b/ios/Warmbly/Assets.xcassets/Host-rackspace.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images": [ + { + "filename": "rackspace.png", + "idiom": "universal" + } + ], + "info": { + "author": "xcode", + "version": 1 + } +} \ No newline at end of file diff --git a/ios/Warmbly/Assets.xcassets/Host-rackspace.imageset/rackspace.png b/ios/Warmbly/Assets.xcassets/Host-rackspace.imageset/rackspace.png new file mode 100644 index 0000000000000000000000000000000000000000..e52547618838ca1a837b13c3f425a3dda783cee7 GIT binary patch literal 7248 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 LNkvXXu0mjfgVmxZ literal 0 HcmV?d00001 diff --git a/ios/Warmbly/Assets.xcassets/Host-zoho.imageset/Contents.json b/ios/Warmbly/Assets.xcassets/Host-zoho.imageset/Contents.json new file mode 100644 index 000000000..c8229a66c --- /dev/null +++ b/ios/Warmbly/Assets.xcassets/Host-zoho.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images": [ + { + "filename": "zoho.png", + "idiom": "universal" + } + ], + "info": { + "author": "xcode", + "version": 1 + } +} \ No newline at end of file diff --git a/ios/Warmbly/Assets.xcassets/Host-zoho.imageset/zoho.png b/ios/Warmbly/Assets.xcassets/Host-zoho.imageset/zoho.png new file mode 100644 index 0000000000000000000000000000000000000000..5a764539161aecc4c4488a0fcfdf358194722dad GIT binary patch literal 2984 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

+bSNq@nY8ZuLzEOzd4Emp>=3 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

`%fTp6P#-KU-k}h^*j(DZkbc^KD<81{) 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 kaMmf7W&$8jeufPBVp00i_>zopr08jx4rT_o{ literal 0 HcmV?d00001 diff --git a/ios/Warmbly/Assets.xcassets/Vendor-inboxkit.imageset/Contents.json b/ios/Warmbly/Assets.xcassets/Vendor-inboxkit.imageset/Contents.json new file mode 100644 index 000000000..7f39dba4f --- /dev/null +++ b/ios/Warmbly/Assets.xcassets/Vendor-inboxkit.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images": [ + { + "filename": "inboxkit.png", + "idiom": "universal" + } + ], + "info": { + "author": "xcode", + "version": 1 + } +} \ No newline at end of file diff --git a/ios/Warmbly/Assets.xcassets/Vendor-inboxkit.imageset/inboxkit.png b/ios/Warmbly/Assets.xcassets/Vendor-inboxkit.imageset/inboxkit.png new file mode 100644 index 0000000000000000000000000000000000000000..fca618f9b9a7bf4e5b13b675c130583374d973f7 GIT binary patch literal 4468 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 literal 0 HcmV?d00001 diff --git a/ios/Warmbly/Assets.xcassets/Vendor-scaledmail.imageset/Contents.json b/ios/Warmbly/Assets.xcassets/Vendor-scaledmail.imageset/Contents.json new file mode 100644 index 000000000..9a62b2a05 --- /dev/null +++ b/ios/Warmbly/Assets.xcassets/Vendor-scaledmail.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images": [ + { + "filename": "scaledmail.png", + "idiom": "universal" + } + ], + "info": { + "author": "xcode", + "version": 1 + } +} \ No newline at end of file diff --git a/ios/Warmbly/Assets.xcassets/Vendor-scaledmail.imageset/scaledmail.png b/ios/Warmbly/Assets.xcassets/Vendor-scaledmail.imageset/scaledmail.png new file mode 100644 index 0000000000000000000000000000000000000000..ca9e91ad594e13c11b658e44da809a58252c0a62 GIT binary patch literal 6893 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 URL? { + var origin = serverOrigin.trimmingCharacters(in: .whitespaces) + if origin.contains("://api.") { + origin = origin.replacingOccurrences(of: "://api.", with: "://app.") + } else if origin.hasSuffix("localhost:8080") { + origin = origin.replacingOccurrences(of: "localhost:8080", with: "localhost:5173") + } + return URL(string: origin + path) + } + static var apiBaseURL: URL? { URL(string: serverOrigin.trimmingCharacters(in: .whitespaces))?.appending(path: "v1") } diff --git a/ios/Warmbly/Core/Models/CoreModels.swift b/ios/Warmbly/Core/Models/CoreModels.swift index 5a330ede0..472c47e0d 100644 --- a/ios/Warmbly/Core/Models/CoreModels.swift +++ b/ios/Warmbly/Core/Models/CoreModels.swift @@ -344,8 +344,10 @@ struct OrgCounts: Codable, Sendable { var totalContacts: Int? var totalMembers: Int? var emailAccounts: Int? + var emailsSentToday: Int? enum CodingKeys: String, CodingKey { + case emailsSentToday = "emails_sent_today" case totalCampaigns = "total_campaigns" case activeCampaigns = "active_campaigns" case totalContacts = "total_contacts" diff --git a/ios/Warmbly/Core/Networking/APIClient.swift b/ios/Warmbly/Core/Networking/APIClient.swift index 96a173c7f..7a7f4d4f5 100644 --- a/ios/Warmbly/Core/Networking/APIClient.swift +++ b/ios/Warmbly/Core/Networking/APIClient.swift @@ -22,6 +22,12 @@ actor APIClient { let config = URLSessionConfiguration.default config.timeoutIntervalForRequest = 30 session = URLSession(configuration: config) + #if DEBUG + // Lets scripted simulator runs start signed in (SIMCTL_CHILD_WARMBLY_DEBUG_TOKEN). + if let raw = ProcessInfo.processInfo.environment["WARMBLY_DEBUG_TOKEN"], !raw.isEmpty { + KeychainStore.set(raw, for: Self.tokenKey) + } + #endif if let raw = KeychainStore.get(Self.tokenKey), let stored = try? Self.decoder.decode(AuthToken.self, from: Data(raw.utf8)) { token = stored @@ -286,6 +292,41 @@ actor APIClient { try await request(.delete, path, bodyData: try Self.encoder.encode(body)) } + /// A file part of a multipart upload. + struct UploadFile { + var field: String + var filename: String + var mimeType: String + var data: Data + } + + /// POSTs `multipart/form-data`: text fields plus an optional file. + func postMultipart(_ path: String, fields: [String: String], file: UploadFile? = nil, timeout: TimeInterval = 60) async throws -> T { + let boundary = "warmbly-\(UUID().uuidString)" + var body = Data() + func append(_ string: String) { body.append(Data(string.utf8)) } + for (name, value) in fields.sorted(by: { $0.key < $1.key }) { + append("--\(boundary)\r\nContent-Disposition: form-data; name=\"\(name)\"\r\n\r\n\(value)\r\n") + } + if let file { + append("--\(boundary)\r\nContent-Disposition: form-data; name=\"\(file.field)\"; filename=\"\(file.filename)\"\r\nContent-Type: \(file.mimeType)\r\n\r\n") + body.append(file.data) + append("\r\n") + } + append("--\(boundary)--\r\n") + + var request = try buildRequest(.post, path, query: [:], body: body, idempotencyKey: nil) + request.setValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type") + request.timeoutInterval = timeout + let (data, http) = try await execute(request, authorized: true) + try validate(data, http) + do { + return try Self.decoder.decode(T.self, from: data) + } catch { + throw APIError.decoding(error) + } + } + // MARK: - Server-sent events /// POSTs and streams the response as SSE, yielding each `data:` payload. diff --git a/ios/Warmbly/Core/Push/PushManager.swift b/ios/Warmbly/Core/Push/PushManager.swift index 4355172de..173dfa824 100644 --- a/ios/Warmbly/Core/Push/PushManager.swift +++ b/ios/Warmbly/Core/Push/PushManager.swift @@ -51,6 +51,10 @@ final class PushManager: NSObject { } private func requestAndRegister() async { + #if DEBUG + // Scripted simulator runs have no one to answer the permission prompt. + if ProcessInfo.processInfo.environment["WARMBLY_DEBUG_TOKEN"] != nil { return } + #endif let center = UNUserNotificationCenter.current() var status = await center.notificationSettings().authorizationStatus if status == .notDetermined { diff --git a/ios/Warmbly/Core/Realtime/RealtimeService.swift b/ios/Warmbly/Core/Realtime/RealtimeService.swift index 167f1f7ea..2f75d07e3 100644 --- a/ios/Warmbly/Core/Realtime/RealtimeService.swift +++ b/ios/Warmbly/Core/Realtime/RealtimeService.swift @@ -361,6 +361,7 @@ final class RealtimeService { } if name == "EMAIL_UPDATED" || name == "EMAIL_DELETED" { return [.unibox, .analytics] } if name == "EMAIL_REPLIED" { return [.campaigns, .analytics, .unibox] } + if name == "AI_DRAFT_READY" { return [.unibox] } if name == "EMAIL_SENT" || name == "EMAIL_OPENED" || name == "EMAIL_CLICKED" || name == "EMAIL_FAILED" || name == "EMAIL_BOUNCED" || name.contains("TASK_PROGRESS") { return [.campaigns, .analytics] diff --git a/ios/Warmbly/Core/Security/AppAttestClient.swift b/ios/Warmbly/Core/Security/AppAttestClient.swift new file mode 100644 index 000000000..2e955f156 --- /dev/null +++ b/ios/Warmbly/Core/Security/AppAttestClient.swift @@ -0,0 +1,109 @@ +import CryptoKit +import DeviceCheck +import Foundation + +/// Proves an email sign-in comes from this app on a real device (App Attest), +/// which the server accepts in place of a captcha. One key per server. +actor AppAttestClient { + /// The `app_attest` object sent with a protected auth call. + struct Proof: Encodable, Sendable { + let keyID: String + let assertion: String + let challenge: String + + enum CodingKeys: String, CodingKey { + case keyID = "key_id" + case assertion, challenge + } + } + + /// The request a proof is made for; the server checks it matches. + enum Action: String, Sendable { + case login + case register + case resetPassword = "reset_password" + } + + enum Failure: LocalizedError { + case unsupported + + var errorDescription: String? { + "This device can't verify the app. Sign in with Apple or Google instead." + } + } + + private struct Challenge: Decodable { let challenge: String } + + private struct KeyBody: Encodable { + let keyID: String + let attestation: String + let challenge: String + + enum CodingKeys: String, CodingKey { + case keyID = "key_id" + case attestation, challenge + } + } + + private let api: APIClient + private var registering: Task? + + init(api: APIClient) { + self.api = api + } + + static var isSupported: Bool { DCAppAttestService.shared.isSupported } + + private static var storageKey: String { "app_attest_key." + AppConfig.serverOrigin } + + /// Signs a fresh challenge for action with this install's key, registering it first if needed. + func proof(for action: Action) async throws -> Proof { + guard Self.isSupported else { throw Failure.unsupported } + let keyID = try await registeredKey() + let challenge = try await fetchChallenge() + let clientData = Data("warmbly-app-attest/v1\n\(action.rawValue)\n\(challenge)".utf8) + do { + let assertion = try await DCAppAttestService.shared.generateAssertion(keyID, clientDataHash: Self.hash(clientData)) + return Proof(keyID: keyID, assertion: assertion.base64EncodedString(), challenge: challenge) + } catch let error as DCError where error.code == .invalidKey { + // The system dropped the key (a restore onto another device); the next proof makes a new one. + forgetKey() + throw error + } + } + + /// Drops the stored key, so the next proof registers a new one. + func forgetKey() { + UserDefaults.standard.removeObject(forKey: Self.storageKey) + } + + private func registeredKey() async throws -> String { + if let keyID = UserDefaults.standard.string(forKey: Self.storageKey) { return keyID } + if let registering { return try await registering.value } + let task = Task { try await self.register() } + registering = task + defer { registering = nil } + let keyID = try await task.value + UserDefaults.standard.set(keyID, forKey: Self.storageKey) + return keyID + } + + private func register() async throws -> String { + let service = DCAppAttestService.shared + let keyID = try await service.generateKey() + let challenge = try await fetchChallenge() + let attestation = try await service.attestKey(keyID, clientDataHash: Self.hash(Data(challenge.utf8))) + let body = KeyBody(keyID: keyID, attestation: attestation.base64EncodedString(), challenge: challenge) + let _: EmptyBody = try await api.post("auth/app-attest/keys", body: body, authorized: false) + return keyID + } + + private func fetchChallenge() async throws -> String { + let response: Challenge = try await api.post("auth/app-attest/challenge", authorized: false) + return response.challenge + } + + private static func hash(_ data: Data) -> Data { + Data(SHA256.hash(data: data)) + } +} diff --git a/ios/Warmbly/Core/Session/SessionStore.swift b/ios/Warmbly/Core/Session/SessionStore.swift index 71d74dd68..9f10a2cee 100644 --- a/ios/Warmbly/Core/Session/SessionStore.swift +++ b/ios/Warmbly/Core/Session/SessionStore.swift @@ -29,6 +29,7 @@ enum LoginOutcome { @Observable final class SessionStore { let api: APIClient + private let appAttest: AppAttestClient private(set) var phase: SessionPhase = .launching /// True when the last sign-out was forced by an expired/revoked session @@ -46,6 +47,7 @@ final class SessionStore { init(api: APIClient) { self.api = api + self.appAttest = AppAttestClient(api: api) // The outer task is one-shot registration (strong self is fine); the // stored handler captures weakly to avoid an APIClient<->store cycle. Task { [api, self] in @@ -68,6 +70,27 @@ final class SessionStore { // MARK: - Launch func bootstrap() async { + #if DEBUG + // Scripted runs can open a signed-out or first-run screen; the stored session is left alone. + switch ProcessInfo.processInfo.environment["WARMBLY_DEBUG_PHASE"] { + case "launching": + return + case "signedout": + phase = .loggedOut + return + case "onboarding": + try? await loadIdentity() + phase = .onboarding + return + case "workspace": + try? await loadIdentity() + memberships = [] + phase = .selectOrg + return + default: + break + } + #endif guard await api.hasToken else { phase = .loggedOut return @@ -178,15 +201,88 @@ final class SessionStore { // MARK: - Login flow func startLogin(email: String, password: String) async throws -> LoginOutcome { - let body = [ - "email": email, - "password": password, - "turnstile": AppConfig.turnstileToken, - ] - let result: AuthSession = try await api.post("auth/login", body: body, authorized: false) + let result: AuthSession = try await verified(.login) { check in + try await self.api.post("auth/login", body: PasswordAuthBody(email: email, password: password, check: check), authorized: false) + } return try await resolve(result) } + // MARK: - Human check + + /// What stands in for a captcha on the email paths: nothing, the dev stack's bypass token, or an App Attest proof. + struct HumanCheck: Sendable { + var turnstile: String? + var appAttest: AppAttestClient.Proof? + } + + enum HumanCheckError: LocalizedError { + case emailSignInOff + + var errorDescription: String? { + "This server only allows email sign-in on the web. Sign in with Apple, Google or a passkey instead." + } + } + + private struct DeploymentChecks: Decodable { + var captcha: Bool? + var appAttest: Bool? + + enum CodingKeys: String, CodingKey { + case captcha + case appAttest = "app_attest" + } + } + + private struct PasswordAuthBody: Encodable { + var email: String + var password: String + var turnstile: String? + var appAttest: AppAttestClient.Proof? + + init(email: String, password: String, check: HumanCheck) { + self.email = email + self.password = password + turnstile = check.turnstile + appAttest = check.appAttest + } + + enum CodingKeys: String, CodingKey { + case email, password, turnstile + case appAttest = "app_attest" + } + } + + private struct ResetBody: Encodable { + var email: String + var turnstile: String? + var appAttest: AppAttestClient.Proof? + + enum CodingKeys: String, CodingKey { + case email, turnstile + case appAttest = "app_attest" + } + } + + private func humanCheck(_ action: AppAttestClient.Action) async throws -> HumanCheck { + let bypass = AppConfig.turnstileToken.trimmingCharacters(in: .whitespaces) + if !bypass.isEmpty { return HumanCheck(turnstile: bypass) } + let checks: DeploymentChecks? = try? await api.get("auth/config", authorized: false) + guard let checks, checks.captcha == true else { return HumanCheck() } + guard checks.appAttest == true else { throw HumanCheckError.emailSignInOff } + return HumanCheck(appAttest: try await appAttest.proof(for: action)) + } + + /// Runs a captcha-gated call, registering this install's key again once if the server lost it. + private func verified(_ action: AppAttestClient.Action, _ send: (HumanCheck) async throws -> T) async throws -> T { + let check = try await humanCheck(action) + do { + return try await send(check) + } catch let error as APIError where error.code == "app_attest_key_unknown" && check.appAttest != nil { + await appAttest.forgetKey() + return try await send(try await humanCheck(action)) + } + } + /// Maps a start-of-login response onto an outcome, completing the sign-in /// when the backend already resolved it. private func resolve(_ result: AuthSession) async throws -> LoginOutcome { @@ -207,11 +303,7 @@ final class SessionStore { } func confirmLogin(session: String, code: String) async throws -> LoginOutcome { - let body = [ - "session": session, - "code": code, - "turnstile": AppConfig.turnstileToken, - ] + let body = ["session": session, "code": code] let result: LoginResult = try await api.post("auth/login/confirm", body: body, authorized: false) if result.twoFARequired == true, let pending = result.pendingToken { return .needsTwoFA(pendingToken: pending) @@ -276,28 +368,22 @@ final class SessionStore { /// Returns the session to confirm, or nil when the deployment has email /// verification off and the account already exists. func startRegister(email: String, password: String) async throws -> String? { - let body = [ - "email": email, - "password": password, - "turnstile": AppConfig.turnstileToken, - ] - let result: AuthSession = try await api.post("auth/register", body: body, authorized: false) + let result: AuthSession = try await verified(.register) { check in + try await self.api.post("auth/register", body: PasswordAuthBody(email: email, password: password, check: check), authorized: false) + } return result.needsCode ? result.session : nil } /// Registration confirm returns 204 (no tokens); chain into the login flow after. func confirmRegister(session: String, code: String) async throws { - let body = [ - "session": session, - "code": code, - "turnstile": AppConfig.turnstileToken, - ] + let body = ["session": session, "code": code] let _: EmptyBody = try await api.post("auth/register/confirm", body: body, authorized: false) } func requestPasswordReset(email: String) async throws { - let body = ["email": email, "turnstile": AppConfig.turnstileToken] - let _: EmptyBody = try await api.post("auth/reset-password", body: body, authorized: false) + let _: EmptyBody = try await verified(.resetPassword) { check in + try await self.api.post("auth/reset-password", body: ResetBody(email: email, turnstile: check.turnstile, appAttest: check.appAttest), authorized: false) + } } // MARK: - Logout diff --git a/ios/Warmbly/DesignSystem/Air.swift b/ios/Warmbly/DesignSystem/Air.swift index f753d1811..cc4257bde 100644 --- a/ios/Warmbly/DesignSystem/Air.swift +++ b/ios/Warmbly/DesignSystem/Air.swift @@ -17,18 +17,14 @@ extension EnvironmentValues { // MARK: - Cards -/// The in-app surface: a soft rounded card on the grouped background. +/// The in-app surface: a soft filled panel, no outline and no shadow. struct AirCardModifier: ViewModifier { var padding: CGFloat = 16 func body(content: Content) -> some View { content .padding(padding) - .background( - Color(.secondarySystemGroupedBackground), - in: RoundedRectangle(cornerRadius: 22, style: .continuous) - ) - .shadow(color: .black.opacity(0.045), radius: 14, y: 5) + .background(WTheme.surface, in: RoundedRectangle(cornerRadius: 20, style: .continuous)) } } @@ -47,22 +43,23 @@ struct AirSectionHeader: View { var body: some View { HStack(alignment: .firstTextBaseline) { Text(title) - .font(.title3.weight(.bold)) + .displayFont(20) + .foregroundStyle(WTheme.ink) Spacer() if let actionTitle, let action { Button(action: action) { - HStack(spacing: 3) { + HStack(spacing: 4) { Text(actionTitle) - Image(systemName: "chevron.right") - .font(.system(size: 11, weight: .semibold)) + Image(systemName: "arrow.right") + .font(.system(size: 11, weight: .medium)) } - .font(.subheadline.weight(.medium)) - .foregroundStyle(WTheme.accent) + .font(.system(size: 13.5, weight: .medium)) + .foregroundStyle(WTheme.inkSecondary) } .buttonStyle(.plain) } } - .padding(.horizontal, 4) + .padding(.horizontal, 2) } } @@ -76,10 +73,10 @@ struct IconTile: View { var body: some View { Image(systemName: symbol) - .font(.system(size: size * 0.44, weight: .semibold)) + .font(.system(size: size * 0.42, weight: .medium)) .foregroundStyle(tone.color) .frame(width: size, height: size) - .background(tone.background, in: RoundedRectangle(cornerRadius: size * 0.32, style: .continuous)) + .background(tone.background, in: RoundedRectangle(cornerRadius: size * 0.3, style: .continuous)) } } @@ -126,47 +123,42 @@ struct HealthRing: View { } } -// MARK: - Hero stat chip (white-on-sky) +// MARK: - Hero stat -/// Glass stat chip used on sky hero headers, matching the auth showcase glass. +/// An open stat for screen headers: a tinted glyph and label over a big +/// number, no tile around it. struct AirStatChip: View { let value: String let label: String var symbol: String? + var tint: Color = WTheme.accent var body: some View { - VStack(alignment: .leading, spacing: 3) { + VStack(alignment: .leading, spacing: 5) { HStack(spacing: 5) { if let symbol { Image(systemName: symbol) - .font(.system(size: 11, weight: .semibold)) - .foregroundStyle(.white.opacity(0.85)) + .font(.system(size: 10.5, weight: .semibold)) + .foregroundStyle(tint) + } else { + Circle().fill(tint).frame(width: 6, height: 6) } - Text(value) - .font(.system(size: 21, weight: .bold, design: .rounded)) - .monospacedDigit() - .foregroundStyle(.white) - .contentTransition(.numericText()) + Text(label) + .font(.system(size: 12.5, weight: .medium)) + .foregroundStyle(WTheme.inkSecondary) + .lineLimit(1) + .minimumScaleFactor(0.8) } - Text(label) - .font(.system(size: 11.5, weight: .medium)) - .foregroundStyle(.white.opacity(0.72)) + Text(value) + .font(.system(size: 26, weight: .semibold, design: .rounded)) + .tracking(-0.6) + .monospacedDigit() + .foregroundStyle(WTheme.ink) + .contentTransition(.numericText()) + .lineLimit(1) + .minimumScaleFactor(0.7) } .frame(maxWidth: .infinity, alignment: .leading) - .padding(.horizontal, 14) - .padding(.vertical, 11) - .background(.white.opacity(0.14), in: RoundedRectangle(cornerRadius: 16, style: .continuous)) - .overlay( - RoundedRectangle(cornerRadius: 16, style: .continuous) - .strokeBorder( - LinearGradient( - colors: [.white.opacity(0.38), .white.opacity(0.06)], - startPoint: .topLeading, - endPoint: .bottomTrailing - ), - lineWidth: 1 - ) - ) } } @@ -194,7 +186,7 @@ struct AirUnderlineTabBar: View { } } .padding(.horizontal, 8) - .overlay(alignment: .bottom) { Divider() } + .overlay(alignment: .bottom) { Rectangle().fill(WTheme.hairline).frame(height: 1) } .sensoryFeedback(.selection, trigger: selection) } @@ -208,11 +200,11 @@ struct AirUnderlineTabBar: View { VStack(spacing: 0) { HStack(spacing: 5) { Image(systemName: tab.icon) - .font(.system(size: 12, weight: .semibold)) - .foregroundStyle(selected ? WTheme.accent : Color.secondary) + .font(.system(size: 12, weight: .medium)) + .foregroundStyle(selected ? WTheme.ink : WTheme.inkTertiary) Text(tab.title) - .font(.system(size: 13.5, weight: selected ? .semibold : .regular)) - .foregroundStyle(selected ? Color.primary : .secondary) + .font(.system(size: 13.5, weight: selected ? .medium : .regular)) + .foregroundStyle(selected ? WTheme.ink : WTheme.inkSecondary) .lineLimit(1) .minimumScaleFactor(0.8) } @@ -221,11 +213,11 @@ struct AirUnderlineTabBar: View { ZStack { if selected { Capsule() - .fill(WTheme.accent) - .frame(height: 3) + .fill(WTheme.ink) + .frame(height: 2) .matchedGeometryEffect(id: "air-underline", in: underlineNS) } else { - Color.clear.frame(height: 3) + Color.clear.frame(height: 2) } } .padding(.horizontal, 10) @@ -236,74 +228,210 @@ struct AirUnderlineTabBar: View { } } -/// Detail-screen scaffold: sky hero fixed at the top (behind a transparent -/// nav bar), a rounded white sheet whose underline tab bar stays pinned, and -/// the tab content swiping horizontally underneath (Gmail-profile style). Tab -/// contents keep their own Lists, scrolling, and swipe actions. The sheet is -/// clipped so scrolling content never bleeds over its rounded corners. +/// Detail-screen scaffold: a clean header on the canvas, then a pinned +/// underline tab bar with the tab content swiping underneath. Tab contents +/// keep their own Lists, scrolling, and swipe actions. struct AirDetailScaffold: View { let tabs: [AirTabItem] @Binding var selection: String @ViewBuilder var hero: Hero @ViewBuilder var content: Content - private var sheetShape: UnevenRoundedRectangle { - UnevenRoundedRectangle(topLeadingRadius: 26, topTrailingRadius: 26, style: .continuous) - } - var body: some View { VStack(spacing: 0) { + // The hero keeps its full height; the paged content takes the rest. hero .frame(maxWidth: .infinity, alignment: .leading) - VStack(spacing: 0) { - AirUnderlineTabBar(tabs: tabs, selection: $selection) - content - } - .clipShape(sheetShape) - .background( - sheetShape - .fill(Color(.systemBackground)) - .ignoresSafeArea(edges: .bottom) - .shadow(color: .black.opacity(0.12), radius: 18, y: -4) - ) + .fixedSize(horizontal: false, vertical: true) + AirUnderlineTabBar(tabs: tabs, selection: $selection) + content } - .background(alignment: .top) { - AirSkyWash().ignoresSafeArea(edges: .top) - } - .toolbarBackground(.hidden, for: .navigationBar) - .toolbarColorScheme(.dark, for: .navigationBar) + .background(WTheme.canvas) + .toolbarBackground(WTheme.canvas, for: .navigationBar) } } -/// Lightweight sky slice for detail heros: the brand radial with a soft bloom, -/// cheaper than the full animated SkyBackdrop. +/// Header backdrop for heros and drawers: the canvas with a faint sky haze +/// and dot grid along the top edge, so a header reads as a place without +/// a slab of colour behind it. struct AirSkyWash: View { var body: some View { - ZStack { + ZStack(alignment: .top) { + WTheme.canvas + DotGrid(spacing: 18, opacity: 0.05) + .mask(LinearGradient(colors: [.black, .clear], startPoint: .top, endPoint: .bottom)) RadialGradient( - stops: [ - .init(color: Color(hex: 0x7DD3FC), location: 0), - .init(color: Color(hex: 0x38BDF8), location: 0.34), - .init(color: Color(hex: 0x0EA5E9), location: 0.66), - .init(color: Color(hex: 0x0284C7), location: 1), - ], - center: UnitPoint(x: 0.55, y: 0.05), + colors: [WTheme.accent.opacity(0.09), .clear], + center: UnitPoint(x: 0.85, y: 0), startRadius: 0, - endRadius: 560 - ) - RadialGradient( - stops: [ - .init(color: Color(hex: 0xBAE6FD).opacity(0.55), location: 0), - .init(color: .clear, location: 0.6), - ], - center: UnitPoint(x: 0.6, y: 0.1), - startRadius: 0, - endRadius: 420 + endRadius: 320 ) } } } +// MARK: - Site primitives + +/// The site's dot-grid texture (`bg-dotgrid`), in the current ink. +struct DotGrid: View { + var spacing: CGFloat = 22 + var opacity: Double = 0.08 + var color: Color = WTheme.ink + + var body: some View { + Canvas { ctx, size in + var path = Path() + var y: CGFloat = spacing / 2 + while y < size.height { + var x: CGFloat = spacing / 2 + while x < size.width { + path.addEllipse(in: CGRect(x: x - 0.75, y: y - 0.75, width: 1.5, height: 1.5)) + x += spacing + } + y += spacing + } + ctx.fill(path, with: .color(color.opacity(opacity))) + } + .allowsHitTesting(false) + } +} + +/// A full-width hairline rule. +struct Hairline: View { + var body: some View { + Rectangle().fill(WTheme.hairline).frame(height: 1) + } +} + +/// The site's two-tone heading: a grey lead, then the point in ink. +struct TwoToneTitle: View { + var lead: String? + let title: String + var size: CGFloat = 30 + var leadColor: Color = WTheme.inkTertiary + var titleColor: Color = WTheme.ink + + var body: some View { + Group { + if let lead { + Text("\(Text(lead).foregroundStyle(leadColor)) \(Text(title).foregroundStyle(titleColor))") + } else { + Text(title).foregroundStyle(titleColor) + } + } + .displayFont(size) + .fixedSize(horizontal: false, vertical: true) + } +} + +/// A live/state dot with the web's ping halo. +struct LiveDot: View { + var color: Color = WTheme.positive + var size: CGFloat = 7 + var pulsing = true + + var body: some View { + Circle() + .fill(color) + .frame(width: size, height: size) + .modifier(PingEffect(active: pulsing, color: color)) + } +} + +/// One of the site's photo frames: a soft texture with UI floating on it. +struct PhotoFrame: View { + var photo = "SheerSky" + var cornerRadius: CGFloat = 22 + @ViewBuilder var content: Content + @Environment(\.colorScheme) private var colorScheme + + var body: some View { + content + .background { + Image(photo) + .resizable() + .scaledToFill() + .overlay(WTheme.night.opacity(colorScheme == .dark ? 0.45 : 0)) + .allowsHitTesting(false) + } + .clipShape(RoundedRectangle(cornerRadius: cornerRadius, style: .continuous)) + .overlay( + RoundedRectangle(cornerRadius: cornerRadius, style: .continuous) + .strokeBorder(WTheme.ink.opacity(0.06), lineWidth: 1) + ) + } +} + +// MARK: - Buttons + +enum ButtonSize { + case small, regular, large + + var height: CGFloat { + switch self { + case .small: 34 + case .regular: 44 + case .large: 54 + } + } + + var font: Font { + switch self { + case .small: .system(size: 13.5, weight: .medium) + case .regular: .system(size: 15, weight: .medium) + case .large: .system(size: 16.5, weight: .medium) + } + } + + var padding: CGFloat { + switch self { + case .small: 14 + case .regular: 18 + case .large: 22 + } + } +} + +/// The site's primary action: a near-black pill (white in dark mode). +struct InkButtonStyle: ButtonStyle { + var size: ButtonSize = .regular + var fullWidth = false + @Environment(\.isEnabled) private var isEnabled + + func makeBody(configuration: Configuration) -> some View { + configuration.label + .font(size.font) + .foregroundStyle(WTheme.inkInverse) + .padding(.horizontal, size.padding) + .frame(maxWidth: fullWidth ? .infinity : nil) + .frame(height: size.height) + .background(WTheme.ink.opacity(isEnabled ? 1 : 0.22), in: Capsule()) + .scaleEffect(configuration.isPressed ? 0.97 : 1) + .opacity(configuration.isPressed ? 0.86 : 1) + .animation(.spring(response: 0.28, dampingFraction: 0.75), value: configuration.isPressed) + .animation(.easeOut(duration: 0.18), value: isEnabled) + } +} + +/// The site's secondary action: a hairline pill on the canvas. +struct OutlineButtonStyle: ButtonStyle { + var size: ButtonSize = .regular + var fullWidth = false + + func makeBody(configuration: Configuration) -> some View { + configuration.label + .font(size.font) + .foregroundStyle(WTheme.ink) + .padding(.horizontal, size.padding) + .frame(maxWidth: fullWidth ? .infinity : nil) + .frame(height: size.height) + .background(configuration.isPressed ? WTheme.fill : WTheme.raised, in: Capsule()) + .overlay(Capsule().strokeBorder(WTheme.hairlineStrong, lineWidth: 1)) + .scaleEffect(configuration.isPressed ? 0.97 : 1) + .animation(.spring(response: 0.28, dampingFraction: 0.75), value: configuration.isPressed) + } +} + // MARK: - Web handoff /// Points at the web dashboard for work that needs a big screen (sequence @@ -315,10 +443,10 @@ struct WebHandoffBanner: View { var body: some View { HStack(alignment: .top, spacing: 11) { Image(systemName: "macbook") - .font(.system(size: 15, weight: .medium)) - .foregroundStyle(WTheme.accent) + .font(.system(size: 14, weight: .regular)) + .foregroundStyle(WTheme.ink) .frame(width: 30, height: 30) - .background(Tone.sky.background, in: RoundedRectangle(cornerRadius: 9, style: .continuous)) + .background(WTheme.fill, in: RoundedRectangle(cornerRadius: 9, style: .continuous)) VStack(alignment: .leading, spacing: 2) { Text("Best on a big screen") .font(.footnote.weight(.semibold)) @@ -330,10 +458,11 @@ struct WebHandoffBanner: View { Spacer(minLength: 0) } .padding(12) - .background(Color(.secondarySystemGroupedBackground), in: RoundedRectangle(cornerRadius: 14, style: .continuous)) + .background(WTheme.raised, in: RoundedRectangle(cornerRadius: 14, style: .continuous)) .overlay( RoundedRectangle(cornerRadius: 14, style: .continuous) - .strokeBorder(Tone.sky.color.opacity(0.18), lineWidth: 1) + .strokeBorder(style: StrokeStyle(lineWidth: 1, dash: [3, 3])) + .foregroundStyle(WTheme.hairlineStrong) ) } } diff --git a/ios/Warmbly/DesignSystem/Appearance.swift b/ios/Warmbly/DesignSystem/Appearance.swift new file mode 100644 index 000000000..32b8bd090 --- /dev/null +++ b/ios/Warmbly/DesignSystem/Appearance.swift @@ -0,0 +1,34 @@ +import SwiftUI + +/// The user's light/dark choice, stored on the device and applied at the root. +enum AppearancePreference: String, CaseIterable, Identifiable { + case system, light, dark + + static let storageKey = "appearance" + + var id: String { rawValue } + + var title: String { + switch self { + case .system: "System" + case .light: "Light" + case .dark: "Dark" + } + } + + var symbol: String { + switch self { + case .system: "circle.lefthalf.filled" + case .light: "sun.max" + case .dark: "moon" + } + } + + var colorScheme: ColorScheme? { + switch self { + case .system: nil + case .light: .light + case .dark: .dark + } + } +} diff --git a/ios/Warmbly/DesignSystem/Components.swift b/ios/Warmbly/DesignSystem/Components.swift index 2e43beacf..bcd971b91 100644 --- a/ios/Warmbly/DesignSystem/Components.swift +++ b/ios/Warmbly/DesignSystem/Components.swift @@ -32,8 +32,8 @@ struct WarmblyWordmark: View { .fill(Color.primary) .frame(width: markSize, height: markSize * (764 / 746)) Text("Warmbly") - .font(.system(size: markSize * 0.82, weight: .heavy, design: .default)) - .tracking(-0.4) + .font(.system(size: markSize * 0.86, weight: .semibold)) + .tracking(-markSize * 0.03) } } } @@ -51,21 +51,14 @@ enum Tone { case .rose: WTheme.negative case .sky: WTheme.accent case .slate: WTheme.paused - case .indigo: Color.dynamic(light: 0x4338CA, dark: 0x818CF8) - case .orange: Color.dynamic(light: 0xEA580C, dark: 0xFB923C) + case .indigo: Color.dynamic(light: 0x5B5BF0, dark: 0x8C8FFA) + case .orange: Color.dynamic(light: 0xF2700C, dark: 0xFF9142) } } + /// A soft tint of the tone, for pills, tiles and notices. var background: Color { - switch self { - case .emerald: Color.dynamic(light: 0xECFDF5, dark: 0x064E3B) - case .amber: Color.dynamic(light: 0xFFFBEB, dark: 0x78350F) - case .rose: Color.dynamic(light: 0xFFF1F2, dark: 0x881337) - case .sky: Color.dynamic(light: 0xF0F9FF, dark: 0x0C4A6E) - case .slate: Color.dynamic(light: 0xF1F5F9, dark: 0x1E293B) - case .indigo: Color.dynamic(light: 0xEEF2FF, dark: 0x312E81) - case .orange: Color.dynamic(light: 0xFFF7ED, dark: 0x7C2D12) - } + color.opacity(self == .slate ? 0.12 : 0.11) } } @@ -78,10 +71,9 @@ struct EyebrowLabel: View { init(_ text: String) { self.text = text } var body: some View { - Text(text.uppercased()) - .font(.system(size: 10, weight: .medium)) - .tracking(1.4) - .foregroundStyle(.tertiary) + Text(text) + .font(.system(size: 13.5, weight: .semibold)) + .foregroundStyle(WTheme.inkTertiary) } } @@ -106,23 +98,13 @@ struct StatusPill: View { } } -/// The web's `animate-ping` halo behind live dots. +/// Kept for call sites; state dots are static now, a ping halo reads as noise. struct PingEffect: ViewModifier { let active: Bool let color: Color - @State private var animating = false func body(content: Content) -> some View { - content.background { - if active { - Circle() - .fill(color.opacity(0.45)) - .scaleEffect(animating ? 2.4 : 1) - .opacity(animating ? 0 : 0.6) - .animation(.easeOut(duration: 1.1).repeatForever(autoreverses: false), value: animating) - .onAppear { animating = true } - } - } + content } } @@ -136,9 +118,10 @@ struct StatCell: View { VStack(alignment: .leading, spacing: 4) { EyebrowLabel(label) Text(value) - .font(.system(size: 24, weight: .light, design: .default)) + .font(.system(size: 26, weight: .regular)) + .tracking(-0.9) .monospacedDigit() - .foregroundStyle(tone?.color ?? Color.primary) + .foregroundStyle(tone?.color ?? WTheme.ink) .contentTransition(.numericText()) } .frame(maxWidth: .infinity, alignment: .leading) @@ -302,23 +285,32 @@ extension View { struct EmptyStateView: View { let title: String let message: String + var symbol: String = "tray" var ctaTitle: String? = nil var cta: (() -> Void)? = nil var body: some View { - VStack(spacing: 8) { + VStack(spacing: 0) { + Image(systemName: symbol) + .font(.system(size: 18, weight: .regular)) + .foregroundStyle(WTheme.inkSecondary) + .frame(width: 46, height: 46) + .background(WTheme.raised, in: RoundedRectangle(cornerRadius: 13, style: .continuous)) + .overlay(RoundedRectangle(cornerRadius: 13, style: .continuous).strokeBorder(WTheme.hairlineStrong, lineWidth: 1)) + .padding(.bottom, 14) Text(title) - .font(.system(size: 14, weight: .medium)) + .displayFont(17) + .foregroundStyle(WTheme.ink) Text(message) - .font(.system(size: 12)) - .foregroundStyle(.secondary) + .font(.system(size: 14)) + .foregroundStyle(WTheme.inkSecondary) .multilineTextAlignment(.center) - .frame(maxWidth: 260) + .frame(maxWidth: 270) + .padding(.top, 5) if let ctaTitle, let cta { Button(ctaTitle, action: cta) - .buttonStyle(.borderedProminent) - .controlSize(.small) - .padding(.top, 6) + .buttonStyle(InkButtonStyle(size: .small)) + .padding(.top, 18) } } .frame(maxWidth: .infinity, maxHeight: .infinity) @@ -332,26 +324,29 @@ struct ErrorStateView: View { let retry: () async -> Void var body: some View { - VStack(spacing: 10) { + VStack(spacing: 0) { Image(systemName: "exclamationmark.triangle") - .font(.system(size: 18)) + .font(.system(size: 17)) .foregroundStyle(WTheme.negative) - .frame(width: 36, height: 36) - .background(Tone.rose.background, in: RoundedRectangle(cornerRadius: 8)) + .frame(width: 46, height: 46) + .background(Tone.rose.background, in: RoundedRectangle(cornerRadius: 13, style: .continuous)) + .padding(.bottom, 14) Text(title) - .font(.system(size: 14, weight: .medium)) + .displayFont(17) + .foregroundStyle(WTheme.ink) if let message { Text(message) - .font(.system(size: 12)) - .foregroundStyle(.secondary) + .font(.system(size: 14)) + .foregroundStyle(WTheme.inkSecondary) .multilineTextAlignment(.center) .frame(maxWidth: 280) + .padding(.top, 5) } Button("Try again") { Task { await retry() } } - .buttonStyle(.bordered) - .controlSize(.small) + .buttonStyle(OutlineButtonStyle(size: .small)) + .padding(.top, 18) } .frame(maxWidth: .infinity, maxHeight: .infinity) .padding(.vertical, 48) @@ -410,7 +405,7 @@ struct SkeletonRows: View { } Spacer(minLength: 0) } - .foregroundStyle(Color(.systemGray5)) + .foregroundStyle(WTheme.fill) .padding(.horizontal, 16) .padding(.vertical, 10) .opacity(1.0 - Double(index) * (0.7 / Double(max(rows - 1, 1)))) @@ -443,6 +438,40 @@ enum WFormat { return formatter.localizedString(for: date, relativeTo: Date()) } + /// "now", "12m", "3h", "2d", "5w", then the date: for tight row trailers. + static func ago(_ date: Date, now: Date = .now) -> String { + let seconds = max(0, now.timeIntervalSince(date)) + switch seconds { + case ..<60: return "now" + case ..<3600: return "\(Int(seconds / 60))m" + case ..<86400: return "\(Int(seconds / 3600))h" + case ..<(86400 * 7): return "\(Int(seconds / 86400))d" + case ..<(86400 * 35): return "\(Int(seconds / (86400 * 7)))w" + default: return date.formatted(.dateTime.month(.abbreviated).day()) + } + } + + /// The spelled-out `ago`, counted the same way so a row and its detail agree. + /// An address's local part as words, so an avatar gets two initials. + static func mailboxName(_ email: String?) -> String { + guard let email, !email.isEmpty else { return "?" } + let local = email.split(separator: "@").first.map(String.init) ?? email + return local.split(whereSeparator: { $0 == "." || $0 == "_" || $0 == "-" || $0 == "+" }).joined(separator: " ") + } + + static func agoLong(_ date: Date, now: Date = .now) -> String { + let seconds = max(0, now.timeIntervalSince(date)) + func unit(_ n: Int, _ name: String) -> String { "\(n) \(name)\(n == 1 ? "" : "s") ago" } + switch seconds { + case ..<60: return "just now" + case ..<3600: return unit(Int(seconds / 60), "minute") + case ..<86400: return unit(Int(seconds / 3600), "hour") + case ..<(86400 * 7): return unit(Int(seconds / 86400), "day") + case ..<(86400 * 35): return unit(Int(seconds / (86400 * 7)), "week") + default: return "on " + date.formatted(.dateTime.month(.abbreviated).day()) + } + } + static func percent(_ numerator: Int, of denominator: Int) -> String { guard denominator > 0 else { return "0%" } return String(format: "%.0f%%", Double(numerator) / Double(denominator) * 100) diff --git a/ios/Warmbly/DesignSystem/DrawerWorkspaceHeader.swift b/ios/Warmbly/DesignSystem/DrawerWorkspaceHeader.swift new file mode 100644 index 000000000..16df44afb --- /dev/null +++ b/ios/Warmbly/DesignSystem/DrawerWorkspaceHeader.swift @@ -0,0 +1,59 @@ +import SwiftUI + +/// Every drawer's top: the workspace you are in, and a menu to switch it. +struct DrawerWorkspaceHeader: View { + let topInset: CGFloat + + @Environment(AppEnvironment.self) private var env + @State private var showWorkspaces = false + + private var orgName: String { env.session.currentOrg?.name ?? "Workspace" } + + var body: some View { + Menu { + ForEach(env.session.memberships) { membership in + Button { + Task { try? await env.session.switchOrganization(membership.organizationID) } + } label: { + if membership.organizationID == env.session.currentOrgID { + Label(membership.organization?.name ?? "Workspace", systemImage: "checkmark") + } else { + Text(membership.organization?.name ?? "Workspace") + } + } + } + Divider() + Button { + showWorkspaces = true + } label: { + Label("Manage workspaces", systemImage: "square.stack") + } + } label: { + HStack(spacing: 10) { + WAvatar( + name: orgName, + imageURL: env.session.currentOrg?.avatarURL, + seed: env.session.currentOrgID ?? "org", + size: 30 + ) + Text(orgName) + .font(.system(size: 17, weight: .semibold)) + .tracking(-0.2) + .foregroundStyle(WTheme.ink) + .lineLimit(1) + Image(systemName: "chevron.up.chevron.down") + .font(.system(size: 11, weight: .semibold)) + .foregroundStyle(WTheme.inkTertiary) + Spacer(minLength: 0) + } + .padding(.horizontal, 14) + .frame(height: 44) + .contentShape(Rectangle()) + } + .buttonStyle(.plain) + .padding(.horizontal, 12) + .padding(.top, topInset + 8) + .padding(.bottom, 2) + .sheet(isPresented: $showWorkspaces) { MoreWorkspaceSwitcherSheet() } + } +} diff --git a/ios/Warmbly/DesignSystem/GlassHeaderBar.swift b/ios/Warmbly/DesignSystem/GlassHeaderBar.swift new file mode 100644 index 000000000..19b541ca8 --- /dev/null +++ b/ios/Warmbly/DesignSystem/GlassHeaderBar.swift @@ -0,0 +1,190 @@ +import SwiftUI + +/// The tab header every list screen shares: a glass menu button, the scope as +/// a title with one line under it, and a search button that morphs into the +/// field. `trailing` holds the screen's own glass buttons (new campaign, …). +struct GlassHeaderBar: View { + let title: String + var subtitle: Text? + @Binding var query: String + var searchPrompt: String + var searchFocused: FocusState.Binding + var menuLabel = "Open menu" + let onMenu: () -> Void + @ViewBuilder var trailing: () -> Trailing + + @State private var searchOpen = false + @Namespace private var glass + + var body: some View { + GlassEffectContainer(spacing: 10) { + HStack(spacing: 10) { + if searchOpen { + HStack(spacing: 8) { + Image(systemName: "magnifyingglass") + .font(.system(size: 15, weight: .medium)) + .foregroundStyle(WTheme.inkSecondary) + TextField(text: $query) { + Text(searchPrompt).foregroundStyle(WTheme.inkTertiary) + } + .font(.system(size: 16)) + .foregroundStyle(WTheme.ink) + .textInputAutocapitalization(.never) + .autocorrectionDisabled() + .submitLabel(.search) + .focused(searchFocused) + if !query.isEmpty { + Button { + query = "" + } label: { + Image(systemName: "xmark.circle.fill") + .font(.system(size: 16)) + .foregroundStyle(WTheme.inkTertiary) + } + .buttonStyle(.plain) + .accessibilityLabel("Clear search") + } + } + .padding(.horizontal, 15) + .frame(height: 44) + .glassEffect(.regular.interactive(), in: Capsule()) + .glassEffectID("search", in: glass) + + GlassCircleButton(symbol: "xmark", label: "Close search") { close() } + .glassEffectID("menu", in: glass) + } else { + GlassCircleButton(symbol: "line.3.horizontal", label: menuLabel, action: onMenu) + .glassEffectID("menu", in: glass) + + VStack(alignment: .leading, spacing: 1) { + Text(title) + .font(.system(size: 19, weight: .semibold)) + .tracking(-0.3) + .foregroundStyle(WTheme.ink) + .lineLimit(1) + .contentTransition(.opacity) + if let subtitle { + subtitle + .font(.system(size: 13)) + .foregroundStyle(WTheme.inkSecondary) + .monospacedDigit() + .lineLimit(1) + .contentTransition(.numericText()) + } + } + .padding(.leading, 2) + + Spacer(minLength: 6) + PresenceAvatars(maxShown: 3) + GlassCircleButton(symbol: "magnifyingglass", label: "Search") { open() } + .glassEffectID("search", in: glass) + trailing() + } + } + } + .padding(.horizontal, 16) + .padding(.top, 6) + .padding(.bottom, 8) + .animation(.spring(response: 0.42, dampingFraction: 0.86), value: searchOpen) + .onAppear { + // A search still in the field reopens it. + if !query.isEmpty { searchOpen = true } + } + } + + private func open() { + withAnimation(.spring(response: 0.42, dampingFraction: 0.86)) { searchOpen = true } + Task { + try? await Task.sleep(for: .milliseconds(120)) + searchFocused.wrappedValue = true + } + } + + private func close() { + query = "" + searchFocused.wrappedValue = false + withAnimation(.spring(response: 0.42, dampingFraction: 0.86)) { searchOpen = false } + } +} + +extension GlassHeaderBar where Trailing == EmptyView { + init( + title: String, + subtitle: Text? = nil, + query: Binding, + searchPrompt: String, + searchFocused: FocusState.Binding, + menuLabel: String = "Open menu", + onMenu: @escaping () -> Void + ) { + self.init( + title: title, + subtitle: subtitle, + query: query, + searchPrompt: searchPrompt, + searchFocused: searchFocused, + menuLabel: menuLabel, + onMenu: onMenu, + trailing: { EmptyView() } + ) + } +} + +/// A 44pt Liquid Glass circle with one symbol. +struct GlassCircleButton: View { + let symbol: String + let label: String + var tint: Color = WTheme.ink + let action: () -> Void + + var body: some View { + Button(action: action) { + Image(systemName: symbol) + .font(.system(size: 16, weight: .medium)) + .foregroundStyle(tint) + .frame(width: 44, height: 44) + .contentShape(Circle()) + } + .buttonStyle(.plain) + .glassEffect(.regular.interactive(), in: Circle()) + .accessibilityLabel(label) + } +} + +/// The screen's primary action in the header: an ink circle with one symbol. +struct HeaderPrimaryButton: View { + let symbol: String + let label: String + let action: () -> Void + + var body: some View { + Button(action: action) { + Image(systemName: symbol) + .font(.system(size: 17, weight: .semibold)) + .foregroundStyle(WTheme.inkInverse) + .frame(width: 44, height: 44) + .background(WTheme.ink, in: Circle()) + .contentShape(Circle()) + } + .buttonStyle(TapScaleStyle()) + .accessibilityLabel(label) + } +} + +/// Under the header while searching: how many results matched. +struct SearchResultsLine: View { + let count: Int + var more = false + + var body: some View { + Text("\(count)\(more ? "+" : "") \(count == 1 ? "result" : "results")") + .font(.system(size: 13.5, weight: .medium)) + .monospacedDigit() + .foregroundStyle(WTheme.inkSecondary) + .contentTransition(.numericText()) + .padding(.horizontal, 20) + .padding(.top, 4) + .padding(.bottom, 6) + .frame(maxWidth: .infinity, alignment: .leading) + } +} diff --git a/ios/Warmbly/DesignSystem/MailboxAvatar.swift b/ios/Warmbly/DesignSystem/MailboxAvatar.swift new file mode 100644 index 000000000..3d46a40ef --- /dev/null +++ b/ios/Warmbly/DesignSystem/MailboxAvatar.swift @@ -0,0 +1,128 @@ +import SwiftUI + +/// Who runs a mailbox, as the app names and draws it: the inbox vendor it was +/// imported from, else its detected mail host, else how it was connected. +/// Mirrors `web/src/lib/brands.ts` and `mailboxSource.ts`. +struct MailboxBrand: Hashable, Sendable { + enum Mark: Hashable, Sendable { + case google, microsoft, asset(String), server + } + + let mark: Mark + /// "Google Workspace", "Zoho Mail", "via Zapmail", "SMTP/IMAP". + let label: String + + init(provider: String?, mailHost: String?, authMethod: String? = nil, vendor: String? = nil) { + let host = (mailHost ?? "").lowercased() + let vendor = (vendor ?? "").lowercased() + if !vendor.isEmpty { + mark = Self.vendorLabels[vendor] != nil ? .asset("Vendor-\(vendor)") : Self.mark(host: host, provider: provider) + label = "via \(Self.vendorLabels[vendor] ?? vendor)" + return + } + mark = Self.mark(host: host, provider: provider) + if authMethod == "delegated" { + label = mark == .microsoft ? "Microsoft 365" : "Google Workspace" + } else if let name = Self.hostLabels[host] { + label = name + } else { + label = switch provider { + case "gmail": "Gmail" + case "outlook": "Outlook" + case "smtp_imap", nil, "": "SMTP/IMAP" + default: provider ?? "Mailbox" + } + } + } + + private static func mark(host: String, provider: String?) -> Mark { + switch host { + case "google_workspace", "gmail": return .google + case "microsoft365", "outlook": return .microsoft + default: + if hostAssets.contains(host) { return .asset("Host-\(host)") } + } + switch provider { + case "gmail": return .google + case "outlook": return .microsoft + default: return .server + } + } + + private static let hostAssets: Set = [ + "aol", "fastmail", "gmx", "godaddy", "hostinger", "icloud", "ionos", "migadu", + "namecheap", "ovh", "proton", "purelymail", "rackspace", "yahoo", "yandex", "zoho", + ] + + private static let hostLabels: [String: String] = [ + "google_workspace": "Google Workspace", "gmail": "Gmail", + "microsoft365": "Microsoft 365", "outlook": "Outlook.com", + "zoho": "Zoho Mail", "yahoo": "Yahoo Mail", "aol": "AOL Mail", "icloud": "iCloud Mail", + "fastmail": "Fastmail", "godaddy": "GoDaddy", "namecheap": "Namecheap", "ionos": "IONOS", + "hostinger": "Hostinger", "ovh": "OVHcloud", "migadu": "Migadu", "purelymail": "Purelymail", + "rackspace": "Rackspace", "yandex": "Yandex Mail", "gmx": "GMX", "proton": "Proton Mail", + ] + + private static let vendorLabels: [String: String] = [ + "inboxkit": "InboxKit", "zapmail": "Zapmail", "mailforge": "Mailforge", "infraforge": "Infraforge", + "maildoso": "Maildoso", "cheapinboxes": "Cheap Inboxes", "scaledmail": "ScaledMail", + ] +} + +/// A service's logo, drawn without a frame. +struct ProviderMark: View { + let mark: MailboxBrand.Mark + var size: CGFloat = 16 + + var body: some View { + Group { + switch mark { + case .google: + Image("GoogleLogo").resizable().scaledToFit() + case .microsoft: + Image("OutlookLogo").resizable().scaledToFit() + case let .asset(name): + Image(name).resizable().scaledToFit() + .clipShape(RoundedRectangle(cornerRadius: size * 0.18, style: .continuous)) + case .server: + Image(systemName: "server.rack") + .font(.system(size: size * 0.78, weight: .medium)) + .foregroundStyle(WTheme.inkSecondary) + } + } + .frame(width: size, height: size) + .accessibilityHidden(true) + } +} + +/// A mailbox's face: its profile photo (initials until one exists) with the +/// service that runs it riding the corner. +struct MailboxAvatar: View { + let email: String + var avatarURL: String? + let brand: MailboxBrand + var seed: String = "" + var size: CGFloat = 44 + /// Matches the badge's ring to whatever the avatar sits on. + var ring: Color = WTheme.groupedCard + + var body: some View { + let badge = max(17, size * 0.44) + WAvatar( + name: WFormat.mailboxName(email), + imageURL: avatarURL?.isEmpty == false ? avatarURL : nil, + seed: seed.isEmpty ? email : seed, + size: size + ) + .overlay(alignment: .bottomTrailing) { + ProviderMark(mark: brand.mark, size: badge * 0.62) + .frame(width: badge, height: badge) + .background(.white, in: Circle()) + .overlay(Circle().strokeBorder(Color.black.opacity(0.06), lineWidth: 0.5)) + .padding(1.5) + .background(ring, in: Circle()) + .offset(x: size * 0.16, y: size * 0.12) + } + .accessibilityLabel("\(email), \(brand.label)") + } +} diff --git a/ios/Warmbly/DesignSystem/TabBar.swift b/ios/Warmbly/DesignSystem/TabBar.swift new file mode 100644 index 000000000..426a5337f --- /dev/null +++ b/ios/Warmbly/DesignSystem/TabBar.swift @@ -0,0 +1,222 @@ +import SwiftUI + +// MARK: - Visibility + +/// Screens that need the whole height (an open drawer, selection mode) hide +/// the tab bar through this, keyed per screen so one can't unhide another's. +@MainActor +@Observable +final class TabBarState { + private(set) var hiddenBy: Set = [] + private(set) var keyboardVisible = false + + var isHidden: Bool { !hiddenBy.isEmpty || keyboardVisible } + + func set(_ hidden: Bool, by key: String) { + if hidden { hiddenBy.insert(key) } else { hiddenBy.remove(key) } + } + + func setKeyboard(_ visible: Bool) { + keyboardVisible = visible + } + + /// A screen's own round action, replacing the default while it's on screen. + private(set) var actions: [String: TabBarAction] = [:] + private var actionOrder: [String] = [] + + var screenAction: TabBarAction? { + actionOrder.last.flatMap { actions[$0] } + } + + func setAction(_ action: TabBarAction?, by key: String) { + actionOrder.removeAll { $0 == key } + if let action { + actions[key] = action + actionOrder.append(key) + } else { + actions[key] = nil + } + } +} + +private struct TabBarHiddenModifier: ViewModifier { + @Environment(TabBarState.self) private var state: TabBarState? + let hidden: Bool + @State private var key = UUID().uuidString + + func body(content: Content) -> some View { + content + .onAppear { apply(hidden) } + .onChange(of: hidden) { _, value in apply(value) } + .onDisappear { apply(false) } + } + + private func apply(_ value: Bool) { + withAnimation(.spring(response: 0.34, dampingFraction: 0.86)) { + state?.set(value, by: key) + } + } +} + +private struct TabBarActionModifier: ViewModifier { + @Environment(TabBarState.self) private var state: TabBarState? + let action: TabBarAction + let enabled: Bool + @State private var key = UUID().uuidString + + func body(content: Content) -> some View { + content + .onAppear { apply(enabled) } + .onChange(of: enabled) { _, value in apply(value) } + .onDisappear { apply(false) } + } + + private func apply(_ value: Bool) { + withAnimation(.spring(response: 0.34, dampingFraction: 0.86)) { + state?.setAction(value ? action : nil, by: key) + } + } +} + +extension View { + /// Puts this screen's primary action in the tab bar's round button while on screen. + func tabBarAction(_ title: String, symbol: String, enabled: Bool = true, perform: @escaping () -> Void) -> some View { + modifier(TabBarActionModifier(action: TabBarAction(title: title, symbol: symbol, perform: perform), enabled: enabled)) + } + + /// Hides the app's tab bar while `hidden` is true and this view is on screen. + func tabBarHidden(_ hidden: Bool) -> some View { + modifier(TabBarHiddenModifier(hidden: hidden)) + } +} + +// MARK: - Bar + +struct WTabItem: Identifiable { + let tab: AppTab + let title: String + let symbol: String + var badge: Int = 0 + + var id: AppTab { tab } +} + +/// The app's own tab bar, Linear-style on Liquid Glass: a compact glass +/// capsule floating off the bottom edge, icon-only and monochrome, the active +/// tab on a soft tile that slides between items, and one round glass action +/// beside it that the bar merges with as they meet. +struct WTabBar: View { + let items: [WTabItem] + @Binding var selection: AppTab + var action: TabBarAction? + var onReselect: (AppTab) -> Void = { _ in } + + @Namespace private var activeNS + @Namespace private var glassNS + + var body: some View { + GlassEffectContainer(spacing: 14) { + HStack(spacing: 10) { + HStack(spacing: 2) { + ForEach(items) { item in + button(item) + } + } + .padding(5) + .glassEffect(.regular.interactive(), in: Capsule()) + .glassEffectID("bar", in: glassNS) + + if let action { + Button(action: action.perform) { + Group { + if action.mark { + RemieMark(size: 26) + .transition(.scale(scale: 0.5).combined(with: .opacity)) + } else { + Image(systemName: action.symbol) + .font(.system(size: 18, weight: .medium)) + .foregroundStyle(WTheme.ink) + .transition(.scale(scale: 0.5).combined(with: .opacity)) + } + } + .frame(width: 56, height: 56) + .contentShape(Circle()) + } + .buttonStyle(TabPressStyle()) + .glassEffect(.regular.interactive(), in: Circle()) + .glassEffectID("action", in: glassNS) + .accessibilityLabel(action.title) + } + } + } + .padding(.horizontal, 18) + .padding(.bottom, 4) + .sensoryFeedback(.selection, trigger: selection) + } + + private func button(_ item: WTabItem) -> some View { + let selected = item.tab == selection + return Button { + if selected { + onReselect(item.tab) + } else { + withAnimation(.spring(response: 0.32, dampingFraction: 0.82)) { + selection = item.tab + } + } + } label: { + Image(systemName: selected ? "\(item.symbol).fill" : item.symbol) + .font(.system(size: 18, weight: selected ? .medium : .regular)) + .foregroundStyle(selected ? WTheme.ink : WTheme.inkTertiary) + .contentTransition(.symbolEffect(.replace)) + .frame(maxWidth: .infinity) + .frame(height: 46) + .background { + if selected { + Capsule() + .fill(WTheme.ink.opacity(0.08)) + .matchedGeometryEffect(id: "active", in: activeNS) + } + } + .overlay(alignment: .top) { badge(item.badge) } + .contentShape(Capsule()) + } + .buttonStyle(TabPressStyle()) + .accessibilityLabel(item.title) + .accessibilityValue(item.badge > 0 ? "\(item.badge) unread" : "") + .accessibilityAddTraits(selected ? .isSelected : []) + } + + @ViewBuilder + private func badge(_ count: Int) -> some View { + if count > 0 { + Text(count > 99 ? "99+" : "\(count)") + .font(WFont.meta(9.5, weight: .semibold)) + .foregroundStyle(.white) + .padding(.horizontal, 4.5) + .frame(minWidth: 16, minHeight: 16) + .background(WTheme.accent, in: Capsule()) + .overlay(Capsule().strokeBorder(.white.opacity(0.9), lineWidth: 1.5)) + .offset(x: 12, y: 4) + .contentTransition(.numericText()) + .transition(.scale.combined(with: .opacity)) + } + } +} + +/// The round control floating beside the tab bar. +struct TabBarAction { + let title: String + let symbol: String + /// Shows Remie's mark instead of the symbol. + var mark = false + let perform: () -> Void +} + +private struct TabPressStyle: ButtonStyle { + func makeBody(configuration: Configuration) -> some View { + configuration.label + .scaleEffect(configuration.isPressed ? 0.92 : 1) + .animation(.spring(response: 0.25, dampingFraction: 0.7), value: configuration.isPressed) + } +} diff --git a/ios/Warmbly/DesignSystem/Theme.swift b/ios/Warmbly/DesignSystem/Theme.swift index 6a4a8b9af..a4a0ff58f 100644 --- a/ios/Warmbly/DesignSystem/Theme.swift +++ b/ios/Warmbly/DesignSystem/Theme.swift @@ -24,21 +24,58 @@ extension Color { } } -/// Warmbly brand palette, mapped from the web dashboard's tailwind tokens -/// (slate neutrals + sky accent) onto dynamic iOS colors. +/// Warmbly brand palette: the marketing site's ink-on-white (slate neutrals, +/// near-black actions, hairlines) with sky kept for data and live state. +/// Dark mode uses zinc on true black. enum WTheme { + // Neutrals + static let canvas = Color.dynamic(light: 0xFFFFFF, dark: 0x09090B) + static let surface = Color.dynamic(light: 0xF6F6F7, dark: 0x141416) + static let raised = Color.dynamic(light: 0xFFFFFF, dark: 0x18181B) + static let fill = Color.dynamic(light: 0xF0F0F2, dark: 0x1F1F23) + static let ink = Color.dynamic(light: 0x111113, dark: 0xF7F7F8) + static let inkInverse = Color.dynamic(light: 0xFFFFFF, dark: 0x09090B) + static let inkSecondary = Color.dynamic(light: 0x6E6E76, dark: 0xA1A1A9) + static let inkTertiary = Color.dynamic(light: 0xA3A3AB, dark: 0x6B6B73) + static let hairline = Color.dynamic(light: 0xEFEFF1, dark: 0x1F1F23) + static let hairlineStrong = Color.dynamic(light: 0xE4E4E7, dark: 0x2A2A2F) + + // iOS grouped settings: a grey page with white cards (dark: black page, grey cards). + static let groupedPage = Color.dynamic(light: 0xF2F2F7, dark: 0x09090B) + static let groupedCard = Color.dynamic(light: 0xFFFFFF, dark: 0x1A1A1D) + + /// The dark-mode brand backdrop for launch, sign-in and onboarding. + static let night = Color(hex: 0x09090B) + + /// Ink on the sign-in sky: dark on the light photo, white on the night. + static let onSky = Color.dynamic(light: 0x111827, dark: 0xFFFFFF) + + /// A glassy tile on the sky; the pale photo needs more white to show one. + static func skyTile(_ opacity: Double) -> Color { + Color(UIColor { $0.userInterfaceStyle == .dark + ? UIColor.white.withAlphaComponent(opacity) + : UIColor.white.withAlphaComponent(min(0.8, 0.35 + opacity * 2.5)) }) + } + + /// A tile's edge on the sky: white on the night, a faint ink line on the photo. + static func skyEdge(_ opacity: Double) -> Color { + Color(UIColor { $0.userInterfaceStyle == .dark + ? UIColor.white.withAlphaComponent(opacity) + : UIColor(red: 0.07, green: 0.09, blue: 0.15, alpha: 0.08) }) + } + // Accent (sky) - static let accent = Color.dynamic(light: 0x0284C7, dark: 0x38BDF8) - static let accentDeep = Color.dynamic(light: 0x0369A1, dark: 0x0EA5E9) - static let accentSoft = Color.dynamic(light: 0xE0F2FE, dark: 0x0C4A6E) + static let accent = Color.dynamic(light: 0x0A8DE6, dark: 0x3DB8FF) + static let accentDeep = Color.dynamic(light: 0x0670C2, dark: 0x0EA5E9) + static let accentSoft = Color.dynamic(light: 0xE6F4FE, dark: 0x0C2233) // Status - static let positive = Color.dynamic(light: 0x059669, dark: 0x34D399) // emerald - static let warning = Color.dynamic(light: 0xD97706, dark: 0xFBBF24) // amber - static let negative = Color.dynamic(light: 0xDC2626, dark: 0xF87171) // red - static let info = Color.dynamic(light: 0x0284C7, dark: 0x38BDF8) // sky - static let special = Color.dynamic(light: 0x7C3AED, dark: 0xA78BFA) // violet - static let paused = Color.dynamic(light: 0x64748B, dark: 0x94A3B8) // slate + static let positive = Color.dynamic(light: 0x12A150, dark: 0x32D583) // green + static let warning = Color.dynamic(light: 0xE88A00, dark: 0xFFB020) // amber + static let negative = Color.dynamic(light: 0xEB3B4E, dark: 0xFF6170) // red + static let info = Color.dynamic(light: 0x0A8DE6, dark: 0x3DB8FF) // sky + static let special = Color.dynamic(light: 0x7A5AF8, dark: 0xA48AFB) // violet + static let paused = Color.dynamic(light: 0x8E8E96, dark: 0x8E8E96) // grey // Presence conventions from the web app: viewing = emerald, editing/replying = amber. static let presenceViewing = positive @@ -47,17 +84,49 @@ enum WTheme { /// Deterministic avatar tint per user id, mirroring the web avatar stack. static func avatarColor(for id: String) -> Color { let palette: [Color] = [ - .dynamic(light: 0x0284C7, dark: 0x38BDF8), - .dynamic(light: 0x7C3AED, dark: 0xA78BFA), - .dynamic(light: 0x059669, dark: 0x34D399), - .dynamic(light: 0xD97706, dark: 0xFBBF24), - .dynamic(light: 0xDB2777, dark: 0xF472B6), - .dynamic(light: 0x4F46E5, dark: 0x818CF8), - .dynamic(light: 0xEA580C, dark: 0xFB923C), - .dynamic(light: 0x0D9488, dark: 0x2DD4BF), + .dynamic(light: 0x0A8DE6, dark: 0x2FA8F5), + .dynamic(light: 0x7A5AF8, dark: 0x8B6CF9), + .dynamic(light: 0x12A150, dark: 0x22B26A), + .dynamic(light: 0xF2A100, dark: 0xF2A100), + .dynamic(light: 0xEC4899, dark: 0xF05FA9), + .dynamic(light: 0x5B6CF9, dark: 0x6D7CFA), + .dynamic(light: 0xF97316, dark: 0xFB8435), + .dynamic(light: 0x0FB5A6, dark: 0x1CC2B3), ] var hash = 5381 for byte in id.utf8 { hash = ((hash << 5) &+ hash) &+ Int(byte) } return palette[abs(hash) % palette.count] } } + +/// Type scale: medium-weight display with tight tracking (the site's h1/h2), +/// monospaced meta for labels, ids and timestamps. +enum WFont { + static func display(_ size: CGFloat, weight: Font.Weight = .medium) -> Font { + .system(size: size, weight: weight) + } + + /// Meta text (times, counts, small labels): the system face with tabular + /// digits, a step up from the old monospaced sizes so call sites keep theirs. + static func meta(_ size: CGFloat, weight: Font.Weight = .regular) -> Font { + .system(size: size + 1.5, weight: weight).monospacedDigit() + } + + /// Real code and data: tool arguments, code blocks. + static func code(_ size: CGFloat, weight: Font.Weight = .regular) -> Font { + .system(size: size, weight: weight, design: .monospaced) + } + + /// Tracking that keeps large display type tight, as on the site. + static func tracking(for size: CGFloat) -> CGFloat { + size >= 20 ? -size * 0.035 : -size * 0.01 + } +} + +extension View { + /// Display text at `size`: medium weight, tight tracking. + func displayFont(_ size: CGFloat, weight: Font.Weight = .medium) -> some View { + font(WFont.display(size, weight: weight)) + .tracking(WFont.tracking(for: size)) + } +} diff --git a/ios/Warmbly/DesignSystem/TrendChart.swift b/ios/Warmbly/DesignSystem/TrendChart.swift new file mode 100644 index 000000000..8801d7ca2 --- /dev/null +++ b/ios/Warmbly/DesignSystem/TrendChart.swift @@ -0,0 +1,259 @@ +import Charts +import SwiftUI + +/// One UTC day of sending, the unit every trend is reported in. +struct TrendDay: Identifiable { + let date: Date + var sent = 0 + var opens = 0 + var clicks = 0 + var replies = 0 + + var id: Date { date } + + /// A continuous run of `count` UTC days ending today, zero where `values` + /// (keyed `yyyy-MM-dd`) has no entry, since trends only list active days. + static func lastDays(_ count: Int, values: [String: TrendDay]) -> [TrendDay] { + let today = utc.startOfDay(for: .now) + return (0 ..< count).map { offset in + let date = utc.date(byAdding: .day, value: offset - (count - 1), to: today)! + let value = values[key.string(from: date)] + return TrendDay( + date: date, + sent: value?.sent ?? 0, + opens: value?.opens ?? 0, + clicks: value?.clicks ?? 0, + replies: value?.replies ?? 0 + ) + } + } + + static let utc: Calendar = { + var calendar = Calendar(identifier: .gregorian) + calendar.timeZone = TimeZone(identifier: "UTC")! + return calendar + }() + + static let key: DateFormatter = { + let formatter = DateFormatter() + formatter.locale = Locale(identifier: "en_US_POSIX") + formatter.calendar = utc + formatter.timeZone = utc.timeZone + formatter.dateFormat = "yyyy-MM-dd" + return formatter + }() +} + +/// A number that counts up to its value. +struct CountUpText: View, Animatable { + var value: Double + var format: (Double) -> String + + var animatableData: Double { + get { value } + set { value = newValue } + } + + var body: some View { + Text(format(value)) + } +} + +// MARK: - Trend + +/// Sent, opens and replies in one chart you can scrub: drag across it and the +/// readout shows every metric for that day, a tick per day. The lines draw in +/// on arrival and again whenever the range changes. +struct TrendChart: View { + let days: [TrendDay] + var shown: Bool + var caption = "Last 14 days" + + enum Metric: String, CaseIterable, Identifiable { + case sent = "Sent" + case opens = "Opens" + case replies = "Replies" + + var id: String { rawValue } + + var color: Color { + switch self { + case .sent: WTheme.accent + case .opens: WTheme.special + case .replies: WTheme.positive + } + } + + func value(_ day: TrendDay) -> Int { + switch self { + case .sent: day.sent + case .opens: day.opens + case .replies: day.replies + } + } + } + + @State private var selected: Date? + @State private var drawn: CGFloat = 0 + @Environment(\.accessibilityReduceMotion) private var reduceMotion + + /// Days are UTC buckets, so they are named in UTC. + private static let dayFormat: Date.FormatStyle = { + var style = Date.FormatStyle.dateTime.weekday(.wide).month(.abbreviated).day() + style.timeZone = TimeZone(identifier: "UTC")! + return style + }() + + private var selectedDay: TrendDay? { + guard let selected else { return nil } + var utc = Calendar(identifier: .gregorian) + utc.timeZone = TimeZone(identifier: "UTC")! + return days.first { utc.isDate($0.date, inSameDayAs: selected) } + } + + private var peak: Double { + Double(days.map { max($0.sent, $0.opens, $0.replies) }.max() ?? 0) + } + + var body: some View { + VStack(alignment: .leading, spacing: 16) { + readout + chart + } + .sensoryFeedback(.selection, trigger: selectedDay?.date) + .onAppear { if shown { draw(delay: 0.25) } } + .onChange(of: shown) { _, now in if now { draw(delay: 0.25) } } + .onChange(of: days.first?.date) { + guard shown else { return } + selected = nil + drawn = 0 + draw(delay: 0.05) + } + } + + private func draw(delay: Double) { + if reduceMotion { drawn = 1; return } + withAnimation(.easeOut(duration: 1.1).delay(delay)) { drawn = 1 } + } + + private var lastDay: TrendDay? { days.last } + + private var readout: some View { + VStack(alignment: .leading, spacing: 10) { + HStack(alignment: .top, spacing: 0) { + ForEach(Metric.allCases) { metric in + let value = selectedDay.map(metric.value) ?? days.reduce(0) { $0 + metric.value($1) } + VStack(alignment: .leading, spacing: 3) { + HStack(spacing: 6) { + Circle().fill(metric.color).frame(width: 7, height: 7) + Text(metric.rawValue) + .font(.system(size: 13.5, weight: .medium)) + .foregroundStyle(WTheme.inkSecondary) + } + Text("\(value)") + .font(.system(size: 26, weight: .semibold, design: .rounded)) + .monospacedDigit() + .foregroundStyle(WTheme.ink) + .contentTransition(.numericText(value: Double(value))) + } + .frame(maxWidth: .infinity, alignment: .leading) + } + } + Text(selectedDay.map { Self.dayFormat.format($0.date) } ?? caption) + .font(.system(size: 13.5)) + .foregroundStyle(WTheme.inkTertiary) + .contentTransition(.opacity) + } + .animation(.snappy(duration: 0.25), value: selectedDay?.date) + .animation(.snappy(duration: 0.4), value: days.first?.date) + } + + private var chart: some View { + Chart { + ForEach(days) { day in + AreaMark( + x: .value("Day", day.date, unit: .day), + y: .value("Count", day.sent), + series: .value("Metric", "Sent area") + ) + .interpolationMethod(.monotone) + .foregroundStyle(LinearGradient( + colors: [Metric.sent.color.opacity(0.22), Metric.sent.color.opacity(0.01)], + startPoint: .top, + endPoint: .bottom + )) + } + ForEach(Metric.allCases) { metric in + ForEach(days) { day in + LineMark( + x: .value("Day", day.date, unit: .day), + y: .value("Count", metric.value(day)), + series: .value("Metric", metric.rawValue) + ) + .interpolationMethod(.monotone) + .foregroundStyle(metric.color) + .lineStyle(StrokeStyle(lineWidth: metric == .sent ? 2.5 : 2, lineCap: .round, lineJoin: .round)) + } + } + if selectedDay == nil, let today = lastDay, drawn >= 1 { + // Today is still being written: a soft ping where the line ends. + PointMark( + x: .value("Day", today.date, unit: .day), + y: .value("Count", today.sent) + ) + .symbol { LiveDot(color: Metric.sent.color, size: 8) } + } + if let day = selectedDay { + RuleMark(x: .value("Day", day.date, unit: .day)) + .foregroundStyle(WTheme.ink.opacity(0.16)) + .lineStyle(StrokeStyle(lineWidth: 1.5)) + ForEach(Metric.allCases) { metric in + PointMark( + x: .value("Day", day.date, unit: .day), + y: .value("Count", metric.value(day)) + ) + .symbolSize(90) + .foregroundStyle(metric.color) + } + } + } + .chartXSelection(value: $selected) + .chartXAxis { + AxisMarks(values: .stride(by: .day, count: max(1, days.count / 4))) { _ in + AxisValueLabel(format: .dateTime.month(.abbreviated).day(), verticalSpacing: 10) + .font(.system(size: 11.5)) + .foregroundStyle(WTheme.inkTertiary) + } + } + .chartYAxis(.hidden) + .chartYScale(domain: 0 ... max(1, peak * 1.15)) + .chartLegend(.hidden) + .chartPlotStyle { plot in plot.padding(.top, 8) } + .frame(height: 180) + .mask(alignment: .leading) { + GeometryReader { proxy in + Rectangle() + .frame(width: proxy.size.width * drawn) + } + } + } +} + +/// Section entrance: rises in after the hero, one beat apart. +struct Reveal: ViewModifier { + let shown: Bool + let index: Int + + func body(content: Content) -> some View { + content + .opacity(shown ? 1 : 0) + .offset(y: shown ? 0 : 18) + .animation(.spring(response: 0.6, dampingFraction: 0.86).delay(0.08 + Double(index) * 0.06), value: shown) + } +} + +extension View { + func reveal(_ shown: Bool, _ index: Int) -> some View { + modifier(Reveal(shown: shown, index: index)) + } +} diff --git a/ios/Warmbly/Features/Analytics/AnalyticsAccountDetailView.swift b/ios/Warmbly/Features/Analytics/AnalyticsAccountDetailView.swift index 11c8e488d..400536117 100644 --- a/ios/Warmbly/Features/Analytics/AnalyticsAccountDetailView.swift +++ b/ios/Warmbly/Features/Analytics/AnalyticsAccountDetailView.swift @@ -1,38 +1,42 @@ import SwiftUI -/// Per-mailbox health detail, backed by GET analytics/accounts/:id. -/// Seeded with the list row so the push renders instantly. One flat plain -/// list: eyebrow captions as bare rows, bare stat columns, hairlines. +/// One mailbox's health, backed by GET analytics/accounts/:id and seeded with +/// the list row so the push renders at once: its score and issues, today's +/// sending, its warmup ramp and standing, where warmup landed, and errors. struct AnalyticsAccountDetailView: View { @Environment(AppEnvironment.self) private var env let account: AccountHealthRow @State private var detail: AccountHealthRow? @State private var errorMessage: String? + @State private var shown = false private var current: AccountHealthRow { detail ?? account } private var presenceKey: String { "mailbox:\(account.id)" } var body: some View { - List { - headerSection - healthSection - usageSection - warmupSection - errorsSection - Color.clear - .frame(height: 24) - .listRowInsets(EdgeInsets()) - .listRowSeparator(.hidden) - .listRowBackground(Color(.systemBackground)) + SettingsPage(title: "Mailbox health", spacing: 16) { + heroCard.reveal(shown, 0) + if let errorMessage, detail == nil { + AnalyticsSectionError(text: errorMessage).coverCard() + } + if let usage = current.dailyUsage { + todayCard(usage).reveal(shown, 1) + } + if current.warmupStatus?.enabled == true || current.warmupHealth?.state != nil { + warmupCard.reveal(shown, 2) + } + if let placement = current.warmupPlacement, (placement.delivered ?? 0) > 0 { + placementCard(placement).reveal(shown, 3) + } + if let errors = current.errors, !errors.isEmpty { + errorsCard(errors).reveal(shown, 4) + } + } + .task { + shown = true + await load() } - .listStyle(.plain) - .scrollContentBackground(.hidden) - .environment(\.defaultMinListRowHeight, 0) - .background(Color(.systemBackground)) - .navigationTitle(current.email ?? "Mailbox") - .navigationBarTitleDisplayMode(.inline) - .task { await load() } .refreshable { await load() } .onChange(of: env.realtime.pulse(for: .emailAccounts)) { Task { await load() } @@ -43,198 +47,277 @@ struct AnalyticsAccountDetailView: View { private func load() async { do { let fresh: AccountHealthRow = try await env.api.get("analytics/accounts/\(account.id)") - detail = fresh + withAnimation(.snappy) { detail = fresh } errorMessage = nil } catch { errorMessage = error.localizedDescription } } - // MARK: Sections + // MARK: Hero - @ViewBuilder - private var headerSection: some View { - HStack(spacing: 12) { - IconTile(symbol: "envelope", tone: AnalyticsToneMap.health(current.health?.status), size: 42) - VStack(alignment: .leading, spacing: 3) { - Text(current.email ?? "mailbox") - .font(.body.weight(.semibold)) - .lineLimit(1) - HStack(spacing: 4) { - if let provider = current.provider, !provider.isEmpty { - Text(provider) - } - if let synced = current.lastSyncedAt { - Text("· synced \(WFormat.relative(synced))") - } - if current.inCampaign == true { - Text("· in campaign") + private var heroCard: some View { + let tone = AnalyticsToneMap.health(current.health?.status) + let score = current.health?.score ?? 0 + let issues = current.health?.issues ?? [] + return VStack(alignment: .leading, spacing: 16) { + HStack(spacing: 14) { + MailboxAvatar(email: current.email ?? "", avatarURL: account.avatarURL, brand: account.resolvedBrand, seed: current.id, size: 52) + VStack(alignment: .leading, spacing: 3) { + Text(current.email ?? "Mailbox") + .font(.system(size: 17, weight: .semibold)) + .foregroundStyle(WTheme.ink) + .lineLimit(1) + .truncationMode(.middle) + Text(subtitle) + .font(.system(size: 13.5)) + .foregroundStyle(WTheme.inkSecondary) + .lineLimit(1) + } + Spacer(minLength: 4) + ResourceViewers(resource: presenceKey) + } + Hairline() + HStack(spacing: 18) { + SweepRing(fraction: Double(score) / 100, color: tone.color, shown: shown, lineWidth: 9) { + CountUpText(value: shown ? Double(score) : 0, format: { "\(Int($0.rounded()))" }) + .font(.system(size: 28, weight: .semibold, design: .rounded)) + .monospacedDigit() + .foregroundStyle(WTheme.ink) + .animation(.easeOut(duration: 1.1).delay(0.15), value: shown) + } + .frame(width: 92, height: 92) + VStack(alignment: .leading, spacing: 6) { + StatusPill(text: healthLabel, tone: tone) + Text(issues.isEmpty ? "Nothing needs attention" : "\(issues.count) \(issues.count == 1 ? "thing" : "things") to look at") + .font(.system(size: 16, weight: .semibold)) + .foregroundStyle(WTheme.ink) + Text("Health score out of 100") + .font(.system(size: 13)) + .foregroundStyle(WTheme.inkTertiary) + } + Spacer(minLength: 0) + } + if !issues.isEmpty { + VStack(alignment: .leading, spacing: 10) { + ForEach(issues, id: \.self) { issue in + HStack(alignment: .top, spacing: 10) { + Image(systemName: "exclamationmark.circle.fill") + .font(.system(size: 14)) + .foregroundStyle(WTheme.warning) + .padding(.top, 1) + Text(issue) + .font(.system(size: 14.5)) + .foregroundStyle(WTheme.ink) + .fixedSize(horizontal: false, vertical: true) + } } } - .font(.footnote) - .foregroundStyle(.secondary) - .lineLimit(1) + .padding(14) + .frame(maxWidth: .infinity, alignment: .leading) + .background(Tone.amber.background, in: RoundedRectangle(cornerRadius: 16, style: .continuous)) } - Spacer() - ResourceViewers(resource: presenceKey) } - .padding(.top, 16) - .padding(.bottom, 6) - .analyticsPlainRow(separator: .hidden) - if let errorMessage, detail == nil { - AnalyticsSectionError(text: errorMessage) - .analyticsPlainRow(separator: .hidden) + .coverCard() + } + + private var subtitle: String { + var parts = [account.providerLabel] + if let synced = current.lastSyncedAt { parts.append("synced \(WFormat.ago(synced)) ago") } + if current.inCampaign == true { parts.append("in a campaign") } + return parts.joined(separator: " · ") + } + + private var healthLabel: String { + switch current.health?.status { + case "healthy": "Healthy" + case "warning": "Warning" + case "error": "Needs fixing" + default: "Unknown" } } - @ViewBuilder - private var healthSection: some View { - AnalyticsSectionCaption("Health") - HStack(alignment: .top, spacing: 14) { - AnalyticsMiniStat( - label: "Status", - value: current.health?.status ?? "unknown", - tone: AnalyticsToneMap.health(current.health?.status) - ) - VStack(alignment: .leading, spacing: 4) { - EyebrowLabel("Score") - HealthRing( - score: current.health?.score, - tone: AnalyticsToneMap.health(current.health?.status), - size: 38 - ) - } - .frame(maxWidth: .infinity, alignment: .leading) - AnalyticsMiniStat(label: "Sync status", value: current.status ?? "–") - } - .padding(.vertical, 6) - .analyticsPlainRow(separator: .hidden) - ForEach(current.health?.issues ?? [], id: \.self) { issue in - HStack(alignment: .top, spacing: 8) { - Circle() - .fill(WTheme.warning) - .frame(width: 5, height: 5) - .padding(.top, 6) - Text(issue) - .font(.subheadline) - .foregroundStyle(.primary) - } - .padding(.vertical, 4) - .analyticsPlainRow(separator: .hidden) - } - } + // MARK: Today - @ViewBuilder - private var usageSection: some View { - if let usage = current.dailyUsage { - AnalyticsSectionCaption("Today's usage") - AnalyticsUsageBarRow( - label: "Campaign", - sent: usage.campaignSent ?? 0, - limit: usage.campaignLimit ?? 0, - tint: WTheme.accent - ) - .analyticsPlainRow(separator: .hidden) + private func todayCard(_ usage: AnalyticsAccountUsage) -> some View { + VStack(alignment: .leading, spacing: 16) { + CardTitle("Today", caption: "Sends against this mailbox's daily limits") + usageRow("Campaign", symbol: "paperplane.fill", sent: usage.campaignSent ?? 0, limit: usage.campaignLimit ?? 0, color: WTheme.accent, delay: 0.2) if let warmupLimit = usage.warmupLimit, warmupLimit > 0 { - AnalyticsUsageBarRow( - label: "Warmup", - sent: usage.warmupSent ?? 0, - limit: warmupLimit, - tint: Tone.orange.color - ) - .analyticsPlainRow(separator: .hidden) + usageRow("Warmup", symbol: "flame.fill", sent: usage.warmupSent ?? 0, limit: warmupLimit, color: Tone.orange.color, delay: 0.3) } } + .coverCard() } - @ViewBuilder - private var warmupSection: some View { - if current.warmupStatus != nil || current.warmupHealth != nil { - AnalyticsSectionCaption("Warmup", icon: "flame", iconTone: .orange) - if let status = current.warmupStatus { - HStack(spacing: 14) { - AnalyticsMiniStat(label: "Volume", value: "\(status.currentVolume ?? 0)") - AnalyticsMiniStat(label: "Target", value: "\(status.targetVolume ?? 0)") - AnalyticsMiniStat(label: "Max", value: "\(status.maxVolume ?? 0)") - } - .padding(.vertical, 6) - .analyticsPlainRow(separator: .hidden) - HStack(spacing: 14) { - AnalyticsMiniStat(label: "Reply rate", value: "\(status.replyRate ?? 0)%") - AnalyticsMiniStat(label: "Days active", value: "\(status.daysActive ?? 0)") - AnalyticsMiniStat( - label: "State", - value: status.paused == true ? "paused" : (status.enabled == true ? "warming" : "off"), - tone: status.paused == true ? .amber : (status.enabled == true ? .orange : .slate) - ) - } - .padding(.vertical, 6) - .analyticsPlainRow(separator: .hidden) + private func usageRow(_ label: String, symbol: String, sent: Int, limit: Int, color: Color, delay: Double) -> some View { + VStack(alignment: .leading, spacing: 8) { + HStack(spacing: 8) { + Image(systemName: symbol) + .font(.system(size: 12, weight: .semibold)) + .foregroundStyle(color) + .frame(width: 18) + Text(label) + .font(.system(size: 15)) + .foregroundStyle(WTheme.ink) + Spacer() + Text("\(Text("\(sent)").foregroundStyle(WTheme.ink).fontWeight(.semibold)) of \(limit)") + .font(.system(size: 14)) + .monospacedDigit() + .foregroundStyle(WTheme.inkSecondary) } - if let health = current.warmupHealth { - HStack(spacing: 8) { - StatusPill(text: health.state ?? "unknown", tone: AnalyticsToneMap.warmupState(health.state)) - if let spam = health.spamScore { - Text("spam \(spam)") - .font(.footnote) - .monospacedDigit() - .foregroundStyle(.secondary) - } - if let blockedUntil = health.blockedUntil { - Text("blocked until \(blockedUntil.formatted(date: .abbreviated, time: .shortened))") - .font(.footnote) - .monospacedDigit() - .foregroundStyle(WTheme.negative) - } + GrowBar(fraction: limit > 0 ? Double(sent) / Double(limit) : 0, color: color, shown: shown, delay: delay, height: 8) + .padding(.leading, 26) + } + .accessibilityElement(children: .combine) + } + + // MARK: Warmup + + private var warmupCard: some View { + let status = current.warmupStatus + let ceiling = max(1, status?.maxVolume ?? 40) + let today = min(ceiling, status?.targetVolume ?? 0) + let paused = status?.paused == true + let health = current.warmupHealth + return VStack(alignment: .leading, spacing: 16) { + CardTitle(title: "Warmup", caption: paused ? "Paused" : "Day \(status?.daysActive ?? 0) of the ramp") { + if let state = health?.state { + StatusPill(text: Self.standing(state), tone: AnalyticsToneMap.warmupState(state)) + } + } + VStack(alignment: .leading, spacing: 8) { + WarmupBar(progress: shown ? Double(today) / Double(ceiling) : 0, paused: paused) + .frame(height: 10) + HStack { + Text("\(Text("\(today)").foregroundStyle(WTheme.ink).fontWeight(.semibold)) a day now") Spacer() + Text("ceiling \(ceiling)") } - .padding(.vertical, 4) - .analyticsPlainRow(separator: .hidden) - if let reason = health.reason, !reason.isEmpty { - Text(reason) - .font(.footnote) - .foregroundStyle(.secondary) - .padding(.vertical, 2) - .analyticsPlainRow(separator: .hidden) - } + .font(.system(size: 13)) + .monospacedDigit() + .foregroundStyle(WTheme.inkSecondary) } + HStack(spacing: 0) { + AnalyticsMiniStat(label: "Sent today", value: "\(status?.currentVolume ?? 0)") + AnalyticsMiniStat(label: "Reply rate", value: "\(status?.replyRate ?? 0)%") + AnalyticsMiniStat(label: "Days", value: "\(status?.daysActive ?? 0)") + } + if let reason = health?.reason, !reason.isEmpty { + Text(reason) + .font(.system(size: 13.5)) + .foregroundStyle(WTheme.inkSecondary) + .fixedSize(horizontal: false, vertical: true) + } + if let until = health?.blockedUntil { + Label("Held until \(until.formatted(.dateTime.month(.abbreviated).day().hour().minute()))", systemImage: "clock") + .font(.system(size: 13.5, weight: .medium)) + .foregroundStyle(WTheme.negative) + } + } + .coverCard() + } + + static func standing(_ state: String) -> String { + switch state { + case "healthy": "Good standing" + case "watch": "Watched" + case "throttled": "Slowed down" + case "quarantined": "Quarantined" + case "blocked": "Blocked" + default: state.prefix(1).uppercased() + state.dropFirst() } } - @ViewBuilder - private var errorsSection: some View { - let errors = current.errors ?? [] - if !errors.isEmpty { - AnalyticsSectionCaption("Errors") - ForEach(errors) { item in + // MARK: Placement + + private func placementCard(_ placement: AnalyticsPlacement) -> some View { + let delivered = max(1, placement.delivered ?? 1) + let parts: [(String, Int, Color)] = [ + ("Inbox", placement.inbox ?? 0, WTheme.positive), + ("Tabs", placement.tabs ?? 0, WTheme.accent), + ("Spam", placement.spam ?? 0, WTheme.negative), + ] + let rate = placement.inboxRate ?? 0 + return VStack(alignment: .leading, spacing: 14) { + CardTitle(title: "Where warmup landed", caption: "\(placement.delivered ?? 0) verified deliveries, last \(placement.windowDays ?? 7) days") { + Text(String(format: "%.0f%%", rate)) + .font(.system(size: 22, weight: .semibold, design: .rounded)) + .monospacedDigit() + .foregroundStyle(rate >= 90 ? WTheme.positive : rate >= 80 ? WTheme.warning : WTheme.negative) + } + GeometryReader { proxy in + HStack(spacing: 3) { + ForEach(Array(parts.enumerated()), id: \.offset) { index, part in + if part.1 > 0 { + RoundedRectangle(cornerRadius: 4, style: .continuous) + .fill(part.2) + .frame(width: shown ? max(6, (proxy.size.width - 6) * CGFloat(part.1) / CGFloat(delivered)) : 0) + .animation(.spring(response: 0.9, dampingFraction: 0.8).delay(0.25 + Double(index) * 0.1), value: shown) + } + } + Spacer(minLength: 0) + } + } + .frame(height: 12) + HStack(spacing: 0) { + ForEach(Array(parts.enumerated()), id: \.offset) { _, part in + VStack(alignment: .leading, spacing: 2) { + HStack(spacing: 6) { + Circle().fill(part.2).frame(width: 7, height: 7) + Text(part.0) + .font(.system(size: 13)) + .foregroundStyle(WTheme.inkSecondary) + } + Text("\(part.1)") + .font(.system(size: 18, weight: .semibold, design: .rounded)) + .monospacedDigit() + .foregroundStyle(WTheme.ink) + } + .frame(maxWidth: .infinity, alignment: .leading) + } + } + } + .coverCard() + } + + // MARK: Errors + + private func errorsCard(_ errors: [AnalyticsAccountError]) -> some View { + VStack(alignment: .leading, spacing: 4) { + CardTitle("Errors").padding(.bottom, 8) + ForEach(Array(errors.enumerated()), id: \.element.id) { index, item in + if index > 0 { Hairline().padding(.leading, 46) } HStack(alignment: .top, spacing: 12) { - IconTile(symbol: "exclamationmark.triangle", tone: severityTone(item.severity), size: 34) + SettingsIcon(symbol: "exclamationmark.triangle.fill", color: severityTone(item.severity).color, size: 34) VStack(alignment: .leading, spacing: 3) { Text(item.title ?? item.errorCode ?? "Error") - .font(.body.weight(.medium)) + .font(.system(size: 15, weight: .medium)) + .foregroundStyle(WTheme.ink) if let message = item.message, !message.isEmpty { Text(message) - .font(.subheadline) - .foregroundStyle(.secondary) + .font(.system(size: 13.5)) + .foregroundStyle(WTheme.inkSecondary) + .fixedSize(horizontal: false, vertical: true) } if let action = item.actionRequired, !action.isEmpty { Text(action) - .font(.footnote.weight(.medium)) + .font(.system(size: 13.5, weight: .medium)) .foregroundStyle(WTheme.warning) } } - Spacer() + Spacer(minLength: 4) if let created = item.createdAt { - Text(WFormat.relative(created)) - .font(.footnote) + Text(WFormat.ago(created)) + .font(.system(size: 13)) .monospacedDigit() - .foregroundStyle(.secondary) + .foregroundStyle(WTheme.inkTertiary) } } - .padding(.vertical, 8) - .analyticsPlainRow(separatorLeading: 62) + .padding(.vertical, 10) } } + .coverCard() } private func severityTone(_ raw: String?) -> Tone { @@ -245,28 +328,3 @@ struct AnalyticsAccountDetailView: View { } } } - -/// "42 of 50 / day" with a thin progress track. -struct AnalyticsUsageBarRow: View { - let label: String - let sent: Int - let limit: Int - let tint: Color - - var body: some View { - VStack(alignment: .leading, spacing: 6) { - HStack { - Text(label) - .font(.subheadline.weight(.medium)) - Spacer() - Text(limit > 0 ? "\(sent) of \(limit) / day" : "\(sent) sent") - .font(.footnote) - .monospacedDigit() - .foregroundStyle(.secondary) - } - ProgressView(value: limit > 0 ? min(1, Double(sent) / Double(limit)) : 0) - .tint(tint) - } - .padding(.vertical, 6) - } -} diff --git a/ios/Warmbly/Features/Analytics/AnalyticsModels.swift b/ios/Warmbly/Features/Analytics/AnalyticsModels.swift index 7cdf69fe2..12ea4047a 100644 --- a/ios/Warmbly/Features/Analytics/AnalyticsModels.swift +++ b/ios/Warmbly/Features/Analytics/AnalyticsModels.swift @@ -60,6 +60,34 @@ struct AnalyticsDataEnvelope: Codable, Sendable { var data: [T]? } +/// Sends and engagement summed over a run of days. +struct AnalyticsTotals: Equatable, Sendable { + var sent = 0 + var opens = 0 + var clicks = 0 + var replies = 0 + + var openRate: Double? { sent > 0 ? Double(opens) / Double(sent) * 100 : nil } + var clickRate: Double? { sent > 0 ? Double(clicks) / Double(sent) * 100 : nil } + var replyRate: Double? { sent > 0 ? Double(replies) / Double(sent) * 100 : nil } + + /// The `days` UTC days ending `days` ago, summed from a longer trend. + static func before(days: Int, in trend: [AnalyticsTrendPoint]) -> AnalyticsTotals { + let today = TrendDay.utc.startOfDay(for: .now) + guard let end = TrendDay.utc.date(byAdding: .day, value: -days, to: today), + let start = TrendDay.utc.date(byAdding: .day, value: -(days * 2 - 1), to: today) else { return .init() } + var totals = AnalyticsTotals() + for point in trend { + guard let day = AnalyticsDay.parse(point.date.map { String($0.prefix(10)) }), day >= start, day <= end else { continue } + totals.sent += point.sent ?? 0 + totals.opens += point.opens ?? 0 + totals.clicks += point.clicks ?? 0 + totals.replies += point.replies ?? 0 + } + return totals + } +} + // MARK: - Dashboard (GET analytics/dashboard) struct DashboardAnalytics: Codable, Sendable { @@ -226,6 +254,8 @@ struct DeliverabilitySummary: Codable, Sendable { var intentOutOfOffice: Int? var intentQuestion: Int? var intentNeutral: Int? + var intentAutomated: Int? + var score: Int? var emailsSent: Int? var bounceRate: Double? var complaintRate: Double? @@ -258,6 +288,8 @@ struct DeliverabilitySummary: Codable, Sendable { case intentOutOfOffice = "intent_out_of_office" case intentQuestion = "intent_question" case intentNeutral = "intent_neutral" + case intentAutomated = "intent_automated" + case score case emailsSent = "emails_sent" case bounceRate = "bounce_rate" case complaintRate = "complaint_rate" @@ -399,7 +431,15 @@ struct AccountHealthRow: Codable, Sendable, Identifiable { var dailyUsage: AnalyticsAccountUsage? var warmupStatus: AnalyticsWarmupStatusInfo? var warmupHealth: AnalyticsWarmupHealthInfo? + var warmupPlacement: AnalyticsPlacement? var inCampaign: Bool? + /// Joined from the mailbox list by the store; this endpoint does not carry them. + var brand: MailboxBrand? + var avatarURL: String? + + var providerLabel: String { resolvedBrand.label } + + var resolvedBrand: MailboxBrand { brand ?? MailboxBrand(provider: provider, mailHost: nil) } enum CodingKeys: String, CodingKey { case id, email, provider, status, health, errors @@ -407,6 +447,7 @@ struct AccountHealthRow: Codable, Sendable, Identifiable { case dailyUsage = "daily_usage" case warmupStatus = "warmup_status" case warmupHealth = "warmup_health" + case warmupPlacement = "warmup_placement" case inCampaign = "in_campaign" } } @@ -478,6 +519,25 @@ struct AnalyticsWarmupStatusInfo: Codable, Sendable { } } +/// Where verified warmup deliveries landed at the big three providers. +struct AnalyticsPlacement: Codable, Sendable { + var windowDays: Int? + var minSample: Int? + var delivered: Int? + var inbox: Int? + var tabs: Int? + var spam: Int? + var inboxRate: Double? + var band: String? + + enum CodingKeys: String, CodingKey { + case delivered, inbox, tabs, spam, band + case windowDays = "window_days" + case minSample = "min_sample" + case inboxRate = "inbox_rate" + } +} + struct AnalyticsWarmupHealthInfo: Codable, Sendable { /// "healthy" | "watch" | "throttled" | "quarantined" | "blocked" var state: String? diff --git a/ios/Warmbly/Features/Analytics/AnalyticsRootView.swift b/ios/Warmbly/Features/Analytics/AnalyticsRootView.swift index bda529491..9b297bc8e 100644 --- a/ios/Warmbly/Features/Analytics/AnalyticsRootView.swift +++ b/ios/Warmbly/Features/Analytics/AnalyticsRootView.swift @@ -1,5 +1,4 @@ import SwiftUI -import Charts // MARK: - Scopes @@ -14,7 +13,7 @@ enum AnalyticsScope: String, CaseIterable, Identifiable { case .overview: "Overview" case .deliverability: "Deliverability" case .warmup: "Warmup" - case .accounts: "Accounts" + case .accounts: "Mailboxes" } } @@ -37,65 +36,32 @@ enum AnalyticsScope: String, CaseIterable, Identifiable { } } -// MARK: - Trend metric - -/// Chart metric, driven by tapping the stat strip cells (bounces are not in -/// the daily trend payload, so the bounced cell is display-only). -enum AnalyticsTrendMetric: String, CaseIterable { - case sent, opens, clicks, replies - - var title: String { +extension AnalyticsPeriod { + var label: String { switch self { - case .sent: "Sent" - case .opens: "Opens" - case .clicks: "Clicks" - case .replies: "Replies" + case .week: "7 days" + case .month: "30 days" + case .quarter: "90 days" } } - - var color: Color { - switch self { - case .sent: WTheme.accent - case .opens: WTheme.positive - case .clicks: Tone.indigo.color - case .replies: Tone.emerald.color - } - } - - func value(_ point: AnalyticsTrendPoint) -> Int { - switch self { - case .sent: point.sent ?? 0 - case .opens: point.opens ?? 0 - case .clicks: point.clicks ?? 0 - case .replies: point.replies ?? 0 - } - } -} - -struct AnalyticsChartPoint: Identifiable { - let id: Int - let day: Date - let value: Int } // MARK: - View -/// Analytics browser, presented as a full-screen cover from Home or More -/// (like the mailboxes and CRM browsers): a sky hero with the period picker -/// and headline chips, a slide-in drawer of sections, and the selected -/// section as a flat full-bleed list on a rounded white sheet. Owns its -/// NavigationStack; dismissal goes through `onClose` (the environment -/// DismissAction is unreliable in this app's cover contexts). +/// Analytics browser, presented full screen from Home or Settings: a glass +/// header with the drawer of sections, the period and campaign scope, and the +/// selected section as cards on the grouped page. Owns its NavigationStack; +/// dismissal goes through `onClose`. struct AnalyticsRootView: View { var onClose: () -> Void = {} @Environment(AppEnvironment.self) private var env @State private var store = AnalyticsStore() @State private var scope: AnalyticsScope = .overview - @State private var metric: AnalyticsTrendMetric = .sent @State private var sidebarOpen = false @State private var sidebarDrag: CGFloat = 0 @State private var filterOpen = false + @State private var shown = false private static let sidebarWidth: CGFloat = 300 @@ -113,27 +79,17 @@ struct AnalyticsRootView: View { private var noAccess: some View { VStack(spacing: 0) { - HStack { - Spacer() - Button { - onClose() - } label: { - Image(systemName: "xmark") - .font(.system(size: 15, weight: .semibold)) - .foregroundStyle(.primary) - .frame(width: 44, height: 44) - .background(Color(.secondarySystemBackground), in: Circle()) - } - .buttonStyle(TapScaleStyle()) - .accessibilityLabel("Close analytics") - } - .padding(.horizontal, 12) - .padding(.top, 4) - EmptyStateView( + CoverHeader(title: "Analytics", onClose: onClose) + Spacer() + CoverEmptyState( + symbol: "lock.fill", + color: WTheme.inkSecondary, title: "No access", - message: "You need the view analytics permission to see this page." + message: "Ask a workspace admin for the view analytics permission." ) + Spacer() } + .background(WTheme.groupedPage) .toolbarVisibility(.hidden, for: .navigationBar) } @@ -153,10 +109,16 @@ struct AnalyticsRootView: View { drawer(topInset: geo.safeAreaInsets.top) } } - // Own chrome: the sky hero runs to the top edge and carries the - // hamburger + close buttons. .toolbarVisibility(.hidden, for: .navigationBar) - .task { await store.load(env.api) } + .task { + #if DEBUG + if let raw = ProcessInfo.processInfo.environment["WARMBLY_DEBUG_ANALYTICS"], let debug = AnalyticsScope(rawValue: raw) { + scope = debug + } + #endif + await store.load(env.api) + shown = true + } .onChange(of: env.realtime.pulse(for: .analytics)) { Task { await store.load(env.api) } } @@ -172,8 +134,6 @@ struct AnalyticsRootView: View { } } .sensoryFeedback(.selection, trigger: scope) - .sensoryFeedback(.selection, trigger: store.period) - .sensoryFeedback(.selection, trigger: metric) .sensoryFeedback(.impact(weight: .light), trigger: sidebarOpen) } @@ -181,17 +141,43 @@ struct AnalyticsRootView: View { private var mainPane: some View { VStack(spacing: 0) { - hero - sheet + CoverHeader( + title: scope == .overview ? "Analytics" : scope.title, + subtitle: scope == .accounts + ? "\(store.accounts.count) \(store.accounts.count == 1 ? "mailbox" : "mailboxes")" + : "Last \(store.period.label)", + onMenu: openSidebar, + onClose: onClose + ) + ScrollView { + VStack(alignment: .leading, spacing: 16) { + controls + Group { + switch scope { + case .overview: overview + case .deliverability: AnalyticsDeliverabilityPage(store: store, shown: shown) + case .warmup: AnalyticsWarmupPage(store: store, shown: shown) + case .accounts: AnalyticsAccountsPage(store: store, shown: shown) + } + } + .id(scope) + .transition(.asymmetric( + insertion: .opacity.combined(with: .offset(y: 14)), + removal: .opacity + )) + } + .padding(.horizontal, 16) + .padding(.top, 4) + .padding(.bottom, 60) + } + .scrollIndicators(.hidden) + .defaultScrollAnchor(SettingsDebug.anchor) + .refreshable { await store.load(env.api) } } - .background(alignment: .top) { - AirSkyWash().ignoresSafeArea(edges: .top) - } - .background(Color(.systemBackground)) + .background(WTheme.groupedPage) .simultaneousGesture( DragGesture(minimumDistance: 25) .onEnded { value in - // Gmail's edge swipe: open the drawer from the left edge. if !sidebarOpen, value.startLocation.x < 44, value.translation.width > 70 { openSidebar() } @@ -199,421 +185,317 @@ struct AnalyticsRootView: View { ) } - // MARK: Hero - - private var hero: some View { - VStack(alignment: .leading, spacing: 14) { - topRow - periodPicker - campaignFilterChip - heroStats - } - .padding(.horizontal, 16) - .padding(.top, 2) - .padding(.bottom, 18) - .frame(maxWidth: .infinity, alignment: .leading) - } - - private var topRow: some View { - HStack(spacing: 12) { - skyCircleButton("line.3.horizontal", label: "Open analytics menu") { - openSidebar() - } - HStack(spacing: 8) { - WarmblyLogo() - .fill(.white) - .frame(width: 21, height: 21 * (764 / 746)) - Text("Analytics") - .font(.system(size: 20, weight: .heavy)) - .tracking(-0.4) - .foregroundStyle(.white) - .fixedSize() - } - Spacer() - PresenceAvatars() - skyCircleButton("xmark", label: "Close analytics", size: 15) { - onClose() - } - } - } - - private func skyCircleButton( - _ symbol: String, - label: String, - size: CGFloat = 17, - action: @escaping () -> Void - ) -> some View { - Button(action: action) { - Image(systemName: symbol) - .font(.system(size: size, weight: .semibold)) - .foregroundStyle(.white) - .frame(width: 40, height: 40) - .background(.white.opacity(0.16), in: Circle()) - } - .buttonStyle(TapScaleStyle()) - .accessibilityLabel(label) - } - - /// White-glass capsule row bound to the store period; every load reacts. - private var periodPicker: some View { - HStack(spacing: 7) { - ForEach(AnalyticsPeriod.allCases) { period in - let selected = store.period == period - Button { - withAnimation(.snappy) { store.period = period } - } label: { - Text(period.rawValue) - .font(.footnote.weight(selected ? .semibold : .medium)) - .monospacedDigit() - .foregroundStyle(selected ? .white : .white.opacity(0.7)) - .padding(.horizontal, 13) - .padding(.vertical, 6) - .background(.white.opacity(selected ? 0.22 : 0.10), in: Capsule()) - } - .buttonStyle(TapScaleStyle()) - .accessibilityLabel("Last \(period.days) days") - .accessibilityAddTraits(selected ? .isSelected : []) - } - } - .padding(.horizontal, 4) - } + // MARK: Controls private var scopeLabel: String { store.scopeLabel { id in env.session.user?.folders?.first { $0.id == id }?.name } } - /// Opens the campaign filter; the overview's campaign numbers follow it. - private var campaignFilterChip: some View { + private var controls: some View { + VStack(alignment: .leading, spacing: 10) { + if scope != .accounts { + PillSwitcher( + options: AnalyticsPeriod.allCases, + selection: Binding(get: { store.period }, set: { store.period = $0 }), + label: \.label + ) + } + if scope == .overview { + filterChip + } + } + } + + private var filterChip: some View { let scoped = !store.campaignFilter.isEmpty - return HStack(spacing: 7) { + return HStack(spacing: 8) { Button { filterOpen = true } label: { - HStack(spacing: 6) { + HStack(spacing: 7) { Image(systemName: "megaphone.fill") - .font(.system(size: 11, weight: .semibold)) + .font(.system(size: 12, weight: .semibold)) + .foregroundStyle(scoped ? WTheme.accent : WTheme.inkSecondary) Text(scopeLabel) - .font(.footnote.weight(.semibold)) + .font(.system(size: 14, weight: .medium)) + .foregroundStyle(WTheme.ink) .lineLimit(1) Image(systemName: "chevron.down") - .font(.system(size: 9, weight: .bold)) + .font(.system(size: 10, weight: .bold)) + .foregroundStyle(WTheme.inkTertiary) } - .foregroundStyle(.white) - .padding(.horizontal, 12) - .padding(.vertical, 6) - .background(.white.opacity(scoped ? 0.26 : 0.12), in: Capsule()) + .padding(.horizontal, 13) + .frame(height: 34) + .background(scoped ? WTheme.accentSoft : WTheme.groupedCard, in: Capsule()) } .buttonStyle(TapScaleStyle()) .accessibilityLabel("Campaign filter: \(scopeLabel)") - // Deliverability, warmup and accounts are not campaign data, so the filter skips them. - if scoped, scope != .overview { - Text("Headline numbers only") - .font(.caption.weight(.medium)) - .foregroundStyle(.white.opacity(0.75)) - .lineLimit(1) - } if scoped { Button { withAnimation(.snappy) { store.campaignFilter = AnalyticsCampaignFilter() } } label: { Image(systemName: "xmark") - .font(.system(size: 10, weight: .bold)) - .foregroundStyle(.white) - .frame(width: 26, height: 26) - .background(.white.opacity(0.12), in: Circle()) + .font(.system(size: 11, weight: .bold)) + .foregroundStyle(WTheme.inkSecondary) + .frame(width: 34, height: 34) + .background(WTheme.groupedCard, in: Circle()) } .buttonStyle(TapScaleStyle()) + .transition(.scale.combined(with: .opacity)) .accessibilityLabel("Show all campaigns") } + Spacer(minLength: 0) } - .padding(.horizontal, 4) - } - - private var heroStats: some View { - let stats = store.dashboard?.overallStats - return HStack(spacing: 10) { - AirStatChip( - value: stats.map { WFormat.compact($0.totalEmailsSent ?? 0) } ?? "–", - label: "Sent", - symbol: "paperplane.fill" - ) - AirStatChip( - value: stats?.openRate.map { String(format: "%.0f%%", $0) } ?? "–", - label: "Open rate", - symbol: "envelope.open.fill" - ) - AirStatChip( - value: stats.map { WFormat.compact($0.totalReplies ?? 0) } ?? "–", - label: "Replies", - symbol: "arrowshape.turn.up.left.fill" - ) - } - .padding(.horizontal, 4) - } - - // MARK: Sheet - - private var sheetShape: UnevenRoundedRectangle { - UnevenRoundedRectangle(topLeadingRadius: 26, topTrailingRadius: 26, style: .continuous) - } - - private var sheet: some View { - sectionList - .frame(maxWidth: .infinity, maxHeight: .infinity) - .clipShape(sheetShape) - .background( - sheetShape - .fill(Color(.systemBackground)) - .ignoresSafeArea(edges: .bottom) - .shadow(color: .black.opacity(0.12), radius: 18, y: -4) - ) - } - - @ViewBuilder - private var sectionList: some View { - switch scope { - case .overview: overviewList.transition(.opacity) - case .deliverability: deliverabilityList.transition(.opacity) - case .warmup: warmupList.transition(.opacity) - case .accounts: accountsList.transition(.opacity) - } - } - - /// Full-bleed flat row (the row content manages its own gutters). - private func fullBleedRow(@ViewBuilder _ content: () -> Content) -> some View { - content() - .listRowInsets(EdgeInsets()) - .listRowSeparator(.hidden) - .listRowBackground(Color(.systemBackground)) - } - - /// Breathing room after the last row of each section. - private var sectionFooter: some View { - Color.clear - .frame(height: 24) - .listRowInsets(EdgeInsets()) - .listRowSeparator(.hidden) - .listRowBackground(Color(.systemBackground)) - } - - /// Tertiary trailing text for the scope caption rows. - private var periodCaption: some View { - Text("last \(store.period.rawValue)") - .font(.caption.weight(.medium)) - .monospacedDigit() - .foregroundStyle(.tertiary) - .contentTransition(.numericText()) + .animation(.snappy, value: scoped) } // MARK: Overview @ViewBuilder - private var overviewList: some View { + private var overview: some View { if store.dashboard != nil { - List { - AnalyticsSectionCaption("Overview", top: 18) { periodCaption } - fullBleedRow { statStrip } - fullBleedRow { activeRow } - fullBleedRow { chartSection } - AnalyticsTopCampaignsSection(campaigns: store.dashboard?.topCampaigns ?? []) - AnalyticsActivitySection(items: store.dashboard?.recentActivity ?? []) - sectionFooter + VStack(alignment: .leading, spacing: 16) { + trendCard.reveal(shown, 0) + kpiCard.reveal(shown, 1) + funnelCard.reveal(shown, 2) + if !(store.dashboard?.topCampaigns ?? []).isEmpty { + campaignsCard.reveal(shown, 3) + } + if !(store.dashboard?.recentActivity ?? []).isEmpty { + activityCard.reveal(shown, 4) + } } - .listStyle(.plain) - .scrollContentBackground(.hidden) - .environment(\.defaultMinListRowHeight, 0) - .refreshable { await store.load(env.api) } } else if let error = store.dashboardError { ErrorStateView(title: "Couldn't load analytics", message: error) { await store.load(env.api) } + .padding(.top, 40) } else { - ScrollView { SkeletonRows(rows: 10) } + AnalyticsLoadingCards() } } - // MARK: Deliverability - - private var deliverabilityList: some View { - List { - AnalyticsDeliverabilitySection( - summary: store.deliverability, - error: store.deliverabilityError, - captionTop: 18 + private var trendDays: [TrendDay] { + var values: [String: TrendDay] = [:] + for point in store.dashboard?.dailyTrend ?? [] { + guard let raw = point.date else { continue } + values[String(raw.prefix(10))] = TrendDay( + date: .now, + sent: point.sent ?? 0, + opens: point.opens ?? 0, + clicks: point.clicks ?? 0, + replies: point.replies ?? 0 ) - sectionFooter } - .listStyle(.plain) - .scrollContentBackground(.hidden) - .environment(\.defaultMinListRowHeight, 0) - .refreshable { await store.load(env.api) } + return TrendDay.lastDays(store.period.days, values: values) } - // MARK: Warmup - - private var warmupList: some View { - List { - AnalyticsWarmupSection( - warmup: store.warmup, - error: store.warmupError, - periodLabel: store.period.rawValue, - captionTop: 18 - ) - sectionFooter - } - .listStyle(.plain) - .scrollContentBackground(.hidden) - .environment(\.defaultMinListRowHeight, 0) - .refreshable { await store.load(env.api) } + private var trendCard: some View { + TrendChart(days: trendDays, shown: shown, caption: "Last \(store.period.label), drag to see a day") + .coverCard() } - // MARK: Accounts + // MARK: KPIs - private var accountsList: some View { - List { - AnalyticsAccountsSection( - accounts: store.accounts, - counts: store.dashboard?.accountHealth, - error: store.accountsError, - isLoading: store.isLoading, - captionTop: 18 - ) - sectionFooter - } - .listStyle(.plain) - .scrollContentBackground(.hidden) - .environment(\.defaultMinListRowHeight, 0) - .refreshable { await store.load(env.api) } + private struct KPI { + let label: String + let value: Double + let format: (Double) -> String + let delta: Double? + let points: Bool + var lowerIsBetter = false + let series: [Double] + let tint: Color } - // MARK: Stat strip - - private var statStrip: some View { + private var current: AnalyticsTotals { let stats = store.dashboard?.overallStats - let sent = stats?.totalEmailsSent ?? 0 - let opens = stats?.totalOpens ?? 0 - let machine = stats?.machineOpens ?? 0 - let clicks = stats?.totalClicks ?? 0 - let replies = stats?.totalReplies ?? 0 - let bounces = stats?.totalBounces ?? 0 - let bounceRate = stats?.bounceRate ?? 0 + return AnalyticsTotals( + sent: stats?.totalEmailsSent ?? 0, + opens: stats?.totalOpens ?? 0, + clicks: stats?.totalClicks ?? 0, + replies: stats?.totalReplies ?? 0 + ) + } - var openCaption = WFormat.percent(opens, of: sent) - if machine > 0 { openCaption += " · \(WFormat.compact(machine)) auto" } + private var kpis: [KPI] { + let now = current + let before = store.previous + let days = trendDays + func rate(_ part: (TrendDay) -> Int) -> [Double] { + days.map { $0.sent > 0 ? Double(part($0)) / Double($0.sent) * 100 : 0 } + } + let pct: (Double) -> String = { String(format: "%.1f%%", $0) } + let stats = store.dashboard?.overallStats + return [ + KPI(label: "Sent", value: Double(now.sent), format: { WFormat.compact(Int($0.rounded())) }, + delta: before.flatMap { DeltaLabel.percent(now.sent, $0.sent) }, points: false, + series: days.map { Double($0.sent) }, tint: WTheme.accent), + KPI(label: "Open rate", value: stats?.openRate ?? 0, format: pct, + delta: DeltaLabel.points(stats?.openRate, before?.openRate), points: true, + series: rate(\.opens), tint: WTheme.special), + KPI(label: "Reply rate", value: stats?.replyRate ?? 0, format: pct, + delta: DeltaLabel.points(stats?.replyRate, before?.replyRate), points: true, + series: rate(\.replies), tint: WTheme.positive), + KPI(label: "Click rate", value: stats?.clickRate ?? 0, format: pct, + delta: DeltaLabel.points(stats?.clickRate, before?.clickRate), points: true, + series: rate(\.clicks), tint: Tone.orange.color), + ] + } - return ScrollView(.horizontal, showsIndicators: false) { - HStack(spacing: 0) { - statButton(.sent, label: "Sent", value: WFormat.compact(sent), caption: "last \(store.period.rawValue)") - stripDivider - statButton(.opens, label: "Opened", value: WFormat.compact(opens), caption: openCaption) - stripDivider - statButton(.clicks, label: "Clicked", value: WFormat.compact(clicks), caption: WFormat.percent(clicks, of: sent)) - stripDivider - statButton(.replies, label: "Replied", value: WFormat.compact(replies), caption: WFormat.percent(replies, of: sent)) - stripDivider - AnalyticsStatCell( - label: "Bounced", - value: WFormat.compact(bounces), - caption: WFormat.percent(bounces, of: sent), - tone: bounceRate >= 5 ? .rose : (bounceRate >= 2 ? .amber : nil) - ) + private var kpiCard: some View { + let items = kpis + return VStack(alignment: .leading, spacing: 0) { + ForEach(0 ..< 2, id: \.self) { row in + HStack(spacing: 0) { + kpiCell(items[row * 2], index: row * 2) + .padding(.trailing, 16) + Rectangle().fill(WTheme.hairline).frame(width: 1) + kpiCell(items[row * 2 + 1], index: row * 2 + 1) + .padding(.leading, 16) + } + .fixedSize(horizontal: false, vertical: true) + if row == 0 { Hairline() } } - // Cells carry 14pt internal padding; 6 more lands the first - // column on the shared 20pt gutter. - .padding(.horizontal, 6) + Hairline().padding(.top, 2) + factsLine + .padding(.top, 14) } + .padding(.horizontal, 18) + .padding(.vertical, 6) + .padding(.bottom, 12) + .frame(maxWidth: .infinity, alignment: .leading) + .background(WTheme.groupedCard, in: RoundedRectangle(cornerRadius: 22, style: .continuous)) } - private func statButton(_ target: AnalyticsTrendMetric, label: String, value: String, caption: String) -> some View { - Button { - withAnimation(.snappy) { metric = target } - } label: { - AnalyticsStatCell(label: label, value: value, caption: caption, selected: metric == target) + private func kpiCell(_ kpi: KPI, index: Int) -> some View { + VStack(alignment: .leading, spacing: 6) { + HStack(spacing: 6) { + Circle().fill(kpi.tint).frame(width: 6, height: 6) + Text(kpi.label) + .font(.system(size: 13.5, weight: .medium)) + .foregroundStyle(WTheme.inkSecondary) + .lineLimit(1) + } + HStack(alignment: .firstTextBaseline, spacing: 6) { + CountUpText(value: shown ? kpi.value : 0, format: kpi.format) + .font(.system(size: 28, weight: .semibold, design: .rounded)) + .monospacedDigit() + .foregroundStyle(WTheme.ink) + .lineLimit(1) + .minimumScaleFactor(0.7) + .animation(.easeOut(duration: 1).delay(Double(index) * 0.05), value: shown) + .animation(.easeOut(duration: 0.6), value: kpi.value) + Spacer(minLength: 0) + if store.previous != nil { + DeltaLabel(change: kpi.delta, points: kpi.points, lowerIsBetter: kpi.lowerIsBetter) + .lineLimit(1) + .fixedSize() + .transition(.opacity) + } + } + Sparkline(values: kpi.series, color: kpi.tint, delay: 0.25 + Double(index) * 0.08) + .frame(height: 30) + .id("\(store.period.rawValue)-\(index)") } - .buttonStyle(.plain) + .padding(.vertical, 16) + .frame(maxWidth: .infinity, alignment: .leading) } - private var stripDivider: some View { - Divider().frame(height: 40) - } - - private var activeRow: some View { + private var factsLine: some View { let stats = store.dashboard?.overallStats - // Sending accounts are never narrowed by the campaign filter; say so when it is on. - let accounts = store.campaignFilter.isEmpty ? "sending accounts" : "sending accounts in workspace" - return Text("\(stats?.activeCampaigns ?? 0) active campaigns · \(stats?.activeAccounts ?? 0) \(accounts)") - .font(.footnote.weight(.medium)) - .monospacedDigit() - .foregroundStyle(.secondary) - .padding(.horizontal, 20) - .padding(.top, 10) + let campaigns = stats?.activeCampaigns ?? 0 + let mailboxes = stats?.activeAccounts ?? 0 + let bounce = stats?.bounceRate ?? 0 + let bold: (String) -> Text = { Text($0).foregroundStyle(WTheme.ink).fontWeight(.semibold) } + let bounceText = Text(String(format: "%.1f%%", bounce)) + .foregroundStyle(bounce >= 5 ? WTheme.negative : bounce >= 2 ? WTheme.warning : WTheme.ink) + .fontWeight(.semibold) + return Text("\(bold("\(campaigns)")) active \(campaigns == 1 ? "campaign" : "campaigns") · \(bold("\(mailboxes)")) sending \(mailboxes == 1 ? "mailbox" : "mailboxes") · \(bounceText) bounced") + .font(.system(size: 13.5)) + .foregroundStyle(WTheme.inkSecondary) + .lineSpacing(3) } - // MARK: Trend chart + // MARK: Funnel - private var chartPoints: [AnalyticsChartPoint] { - let trend = store.dashboard?.dailyTrend ?? [] - return trend.enumerated().compactMap { index, point in - guard let day = AnalyticsDay.parse(point.date) else { return nil } - return AnalyticsChartPoint(id: index, day: day, value: metric.value(point)) - } - } - - /// Catmull-Rom line + gradient area, matching the Home trend card. - private var chartSection: some View { - let points = chartPoints - return VStack(alignment: .leading, spacing: 10) { - EyebrowLabel("\(metric.title) per day") - .padding(.horizontal, 20) - if points.count > 1 { - Chart(points) { point in - AreaMark( - x: .value("Day", point.day), - y: .value(metric.title, point.value) - ) - .interpolationMethod(.catmullRom) - .foregroundStyle( - LinearGradient( - colors: [metric.color.opacity(0.32), metric.color.opacity(0.02)], - startPoint: .top, - endPoint: .bottom + private var funnelCard: some View { + let now = current + let steps: [(label: String, symbol: String, value: Int, color: Color)] = [ + ("Sent", "paperplane.fill", now.sent, WTheme.accent), + ("Opened", "envelope.open.fill", now.opens, WTheme.special), + ("Clicked", "cursorarrow.click", now.clicks, Tone.orange.color), + ("Replied", "arrowshape.turn.up.left.fill", now.replies, WTheme.positive), + ] + let base = max(1, now.sent) + return VStack(alignment: .leading, spacing: 16) { + CardTitle("From send to reply", caption: "How far each email got") + VStack(spacing: 14) { + ForEach(Array(steps.enumerated()), id: \.offset) { index, step in + VStack(alignment: .leading, spacing: 7) { + HStack(spacing: 8) { + Image(systemName: step.symbol) + .font(.system(size: 12, weight: .semibold)) + .foregroundStyle(step.color) + .frame(width: 18) + Text(step.label) + .font(.system(size: 15)) + .foregroundStyle(WTheme.ink) + Spacer() + CountUpText(value: shown ? Double(step.value) : 0, format: { WFormat.compact(Int($0.rounded())) }) + .font(.system(size: 15, weight: .semibold)) + .monospacedDigit() + .foregroundStyle(WTheme.ink) + .animation(.easeOut(duration: 0.9).delay(0.2 + Double(index) * 0.1), value: shown) + Text(index == 0 ? "100%" : WFormat.percent(step.value, of: now.sent)) + .font(.system(size: 13)) + .monospacedDigit() + .foregroundStyle(WTheme.inkTertiary) + .frame(width: 46, alignment: .trailing) + } + GrowBar( + fraction: Double(step.value) / Double(base), + color: step.color, + shown: shown, + delay: 0.2 + Double(index) * 0.12, + height: 8 ) - ) - LineMark( - x: .value("Day", point.day), - y: .value(metric.title, point.value) - ) - .interpolationMethod(.catmullRom) - .lineStyle(StrokeStyle(lineWidth: 2.5, lineCap: .round)) - .foregroundStyle(metric.color) - } - .chartXAxis { - AxisMarks(values: .automatic(desiredCount: 4)) { _ in - AxisGridLine().foregroundStyle(Color(.separator).opacity(0.4)) - AxisValueLabel(format: .dateTime.month(.abbreviated).day()) - .font(.system(size: 10, weight: .medium)) - .foregroundStyle(Color.secondary) + .padding(.leading, 26) } } - .chartYAxis { - AxisMarks(position: .trailing, values: .automatic(desiredCount: 3)) { _ in - AxisGridLine().foregroundStyle(Color(.separator).opacity(0.4)) - AxisValueLabel() - .font(.system(size: 10)) - .foregroundStyle(Color.secondary) - } - } - .frame(height: 180) - .padding(.horizontal, 20) - } else { - Text("Not enough activity to chart yet.") - .font(.subheadline) - .foregroundStyle(.secondary) - .frame(maxWidth: .infinity, minHeight: 120) } } - .padding(.top, 14) - .padding(.bottom, 14) + .coverCard() + } + + // MARK: Campaigns + + private var campaignsCard: some View { + let campaigns = Array((store.dashboard?.topCampaigns ?? []).prefix(5)) + return VStack(alignment: .leading, spacing: 4) { + CardTitle("Top campaigns", caption: "Ranked by sends this period") + .padding(.bottom, 8) + ForEach(Array(campaigns.enumerated()), id: \.element.id) { index, campaign in + if index > 0 { Hairline().padding(.leading, 52) } + AnalyticsCampaignRow(campaign: campaign, rank: index + 1, shown: shown) + } + } + .coverCard() + } + + // MARK: Activity + + private var activityCard: some View { + let items = Array((store.dashboard?.recentActivity ?? []).prefix(8)) + return VStack(alignment: .leading, spacing: 4) { + CardTitle("Latest from your recipients") + .padding(.bottom, 8) + ForEach(Array(items.enumerated()), id: \.offset) { index, item in + if index > 0 { Hairline().padding(.leading, 52) } + AnalyticsActivityRow(item: item) + } + } + .coverCard() } // MARK: Drawer @@ -625,8 +507,7 @@ struct AnalyticsRootView: View { topInset: topInset, revealed: sidebarOpen ) { newScope in - withAnimation(.spring(response: 0.38, dampingFraction: 0.8)) { scope = newScope } - // Let the highlight capsule slide to the tapped row before closing. + withAnimation(.spring(response: 0.45, dampingFraction: 0.86)) { scope = newScope } Task { try? await Task.sleep(for: .milliseconds(280)) closeSidebar() @@ -670,63 +551,128 @@ struct AnalyticsRootView: View { } } -// MARK: - Stat strip cell +// MARK: - Rows -/// StatCell plus a rate caption and a selected underline (acts as the chart -/// metric filter). -struct AnalyticsStatCell: View { - let label: String - let value: String - let caption: String - var tone: Tone? = nil - var selected: Bool = false +/// A ranked campaign: its status, sends, and reply rate as a small ring. +struct AnalyticsCampaignRow: View { + let campaign: AnalyticsTopCampaign + let rank: Int + var shown: Bool var body: some View { - VStack(alignment: .leading, spacing: 4) { - EyebrowLabel(label) - Text(value) - .font(.system(size: 22, weight: .bold, design: .rounded)) + let status = CampaignStatusInfo.from(campaign.status) + let reply = campaign.replyRate ?? 0 + return HStack(spacing: 12) { + Text("\(rank)") + .font(.system(size: 15, weight: .semibold, design: .rounded)) .monospacedDigit() - .foregroundStyle(tone?.color ?? Color.primary) - .contentTransition(.numericText()) - Text(caption) - .font(.caption.weight(.medium)) - .monospacedDigit() - .foregroundStyle(.secondary) - .contentTransition(.numericText()) + .foregroundStyle(rank == 1 ? WTheme.accent : WTheme.inkSecondary) + .frame(width: 34, height: 34) + .background(rank == 1 ? WTheme.accentSoft : WTheme.fill, in: Circle()) + VStack(alignment: .leading, spacing: 4) { + HStack(spacing: 7) { + Text(campaign.name ?? "Untitled campaign") + .font(.system(size: 15.5, weight: .medium)) + .foregroundStyle(WTheme.ink) + .lineLimit(1) + StatusPill(text: status.label.prefix(1).uppercased() + status.label.dropFirst(), tone: status.tone) + .fixedSize() + } + Text("\(WFormat.compact(campaign.emailsSent ?? 0)) sent · \(AnalyticsFmt.rate(campaign.openRate)) opened") + .font(.system(size: 13)) + .monospacedDigit() + .foregroundStyle(WTheme.inkSecondary) + .lineLimit(1) + } + Spacer(minLength: 6) + SweepRing(fraction: reply / 100, color: WTheme.positive, shown: shown, lineWidth: 4, delay: 0.3 + Double(rank) * 0.08) { + Text("\(Int(reply.rounded()))%") + .font(.system(size: 11, weight: .semibold)) + .monospacedDigit() + .foregroundStyle(WTheme.ink) + } + .frame(width: 40, height: 40) + .accessibilityLabel("\(Int(reply.rounded())) percent replied") } - .padding(.horizontal, 14) .padding(.vertical, 10) - .frame(minWidth: 96, alignment: .leading) - .overlay(alignment: .bottom) { - if selected { - RoundedRectangle(cornerRadius: 1) - .fill(WTheme.accent) - .frame(height: 2) - .padding(.horizontal, 14) + } +} + +/// One thing a recipient did, with what it was and when. +struct AnalyticsActivityRow: View { + let item: AnalyticsActivityItem + + private var kind: (verb: String, symbol: String, color: Color) { + switch item.type { + case "opened": ("opened", "envelope.open.fill", WTheme.special) + case "clicked": ("clicked a link", "cursorarrow.click", Tone.orange.color) + case "replied": ("replied", "arrowshape.turn.up.left.fill", WTheme.positive) + case "bounced": ("bounced", "exclamationmark.triangle.fill", WTheme.negative) + default: ("was sent an email", "paperplane.fill", WTheme.accent) + } + } + + private var name: String { + let email = item.contactEmail ?? "Someone" + let local = email.split(separator: "@").first.map(String.init) ?? email + return local.split(whereSeparator: { $0 == "." || $0 == "_" || $0 == "-" }) + .map { $0.prefix(1).uppercased() + $0.dropFirst() } + .joined(separator: " ") + } + + var body: some View { + let kind = kind + return HStack(spacing: 12) { + WAvatar(name: name, seed: item.contactID ?? item.contactEmail ?? "", size: 38) + .overlay(alignment: .bottomTrailing) { + Image(systemName: kind.symbol) + .font(.system(size: 8.5, weight: .bold)) + .foregroundStyle(.white) + .frame(width: 18, height: 18) + .background(kind.color, in: Circle()) + .overlay(Circle().stroke(WTheme.groupedCard, lineWidth: 2)) + .offset(x: 4, y: 4) + } + VStack(alignment: .leading, spacing: 3) { + Text("\(Text(name).fontWeight(.semibold).foregroundStyle(WTheme.ink)) \(kind.verb)") + .font(.system(size: 15)) + .foregroundStyle(WTheme.inkSecondary) + .lineLimit(1) + Text(item.campaignName ?? item.contactEmail ?? "") + .font(.system(size: 13)) + .foregroundStyle(WTheme.inkTertiary) + .lineLimit(1) + } + Spacer(minLength: 6) + if let timestamp = item.timestamp { + Text(WFormat.ago(timestamp)) + .font(.system(size: 13)) + .monospacedDigit() + .foregroundStyle(WTheme.inkTertiary) } } - .contentShape(Rectangle()) + .padding(.vertical, 10) + .accessibilityElement(children: .combine) } } -/// Compact labeled number used inside the section grids. -struct AnalyticsMiniStat: View { - let label: String - let value: String - var tone: Tone? = nil - +/// Grey placeholder cards with a shimmer, while the first load runs. +struct AnalyticsLoadingCards: View { var body: some View { - VStack(alignment: .leading, spacing: 3) { - EyebrowLabel(label) - Text(value) - .font(.system(size: 18, weight: .semibold, design: .rounded)) - .monospacedDigit() - .foregroundStyle(tone?.color ?? Color.primary) - .contentTransition(.numericText()) - .lineLimit(1) - .minimumScaleFactor(0.75) + VStack(spacing: 16) { + ForEach([240.0, 190, 170], id: \.self) { height in + RoundedRectangle(cornerRadius: 22, style: .continuous) + .fill(WTheme.groupedCard) + .frame(height: height) + .overlay(alignment: .topLeading) { + VStack(alignment: .leading, spacing: 12) { + RoundedRectangle(cornerRadius: 6).fill(WTheme.fill).frame(width: 120, height: 14) + RoundedRectangle(cornerRadius: 6).fill(WTheme.fill).frame(width: 80, height: 26) + } + .padding(18) + } + } } - .frame(maxWidth: .infinity, alignment: .leading) + .skeletonShimmer() } } diff --git a/ios/Warmbly/Features/Analytics/AnalyticsSectionViews.swift b/ios/Warmbly/Features/Analytics/AnalyticsSectionViews.swift index e0a4a939b..e8c221fde 100644 --- a/ios/Warmbly/Features/Analytics/AnalyticsSectionViews.swift +++ b/ios/Warmbly/Features/Analytics/AnalyticsSectionViews.swift @@ -1,5 +1,4 @@ import SwiftUI -import Charts // MARK: - Tone maps @@ -15,6 +14,16 @@ enum AnalyticsToneMap { } } + static func bandLabel(_ raw: String?) -> String { + switch raw { + case "healthy": "Healthy" + case "warning": "Watch" + case "quarantine": "At risk" + case "blocked": "Blocked" + default: "No data yet" + } + } + /// Account health status -> chip tone. static func health(_ raw: String?) -> Tone { switch raw { @@ -38,112 +47,42 @@ enum AnalyticsToneMap { } } -// MARK: - Flat list helpers - -/// Eyebrow caption as a bare row — never a grouped `Section` header (that -/// reintroduces the sticky gray band). Whitespace above is the separator. -struct AnalyticsSectionCaption: View { - let title: String - let icon: String? - let iconTone: Tone - let top: CGFloat - let trailing: Trailing - - init( - _ title: String, - icon: String? = nil, - iconTone: Tone = .slate, - top: CGFloat = 20, - @ViewBuilder trailing: () -> Trailing - ) { - self.title = title - self.icon = icon - self.iconTone = iconTone - self.top = top - self.trailing = trailing() - } +/// Compact labeled number used inside stat grids. +struct AnalyticsMiniStat: View { + let label: String + let value: String + var tone: Tone? = nil var body: some View { - HStack(spacing: 5) { - if let icon { - Image(systemName: icon) - .font(.caption2) - .foregroundStyle(iconTone.color) - } - EyebrowLabel(title) - Spacer(minLength: 8) - trailing + VStack(alignment: .leading, spacing: 3) { + Text(label) + .font(.system(size: 13)) + .foregroundStyle(WTheme.inkSecondary) + .lineLimit(1) + Text(value) + .font(.system(size: 20, weight: .semibold, design: .rounded)) + .monospacedDigit() + .foregroundStyle(tone?.color ?? WTheme.ink) + .contentTransition(.numericText()) + .lineLimit(1) + .minimumScaleFactor(0.75) } - .padding(.horizontal, 20) - .padding(.top, top) - .padding(.bottom, 8) .frame(maxWidth: .infinity, alignment: .leading) - .listRowInsets(EdgeInsets()) - .listRowSeparator(.hidden) - .listRowBackground(Color(.systemBackground)) } } -extension AnalyticsSectionCaption where Trailing == EmptyView { - init(_ title: String, icon: String? = nil, iconTone: Tone = .slate, top: CGFloat = 20) { - self.init(title, icon: icon, iconTone: iconTone, top: top) { EmptyView() } - } -} - -/// Flat row treatment for the analytics plain lists: 20pt gutters, white row -/// background, and (when given) a hairline tucked under the text column. -private struct AnalyticsPlainRowModifier: ViewModifier { - let separator: Visibility - let separatorLeading: CGFloat? - - func body(content: Content) -> some View { - let base = content - .listRowInsets(EdgeInsets(top: 0, leading: 20, bottom: 0, trailing: 20)) - .listRowSeparator(separator) - .listRowBackground(Color(.systemBackground)) - if let separatorLeading { - base.alignmentGuide(.listRowSeparatorLeading) { _ in separatorLeading } - } else { - base - } - } -} - -extension View { - func analyticsPlainRow(separator: Visibility = .automatic, separatorLeading: CGFloat? = nil) -> some View { - modifier(AnalyticsPlainRowModifier(separator: separator, separatorLeading: separatorLeading)) - } -} - -/// Redacted stat grid shown while a section's endpoint is still loading. -struct AnalyticsSectionLoading: View { - var body: some View { - LazyVGrid( - columns: [GridItem(.flexible(), alignment: .leading), GridItem(.flexible(), alignment: .leading), GridItem(.flexible(), alignment: .leading)], - alignment: .leading, - spacing: 14 - ) { - ForEach(0 ..< 3, id: \.self) { _ in - AnalyticsMiniStat(label: "Loading", value: "0000") - } - } - .redacted(reason: .placeholder) - .padding(.vertical, 8) - } -} - -/// Inline section failure row; the rest of the screen keeps working. +/// Inline section failure; the rest of the screen keeps working. struct AnalyticsSectionError: View { let text: String var body: some View { HStack(spacing: 8) { - Image(systemName: "exclamationmark.triangle") - .font(.footnote) + Image(systemName: "exclamationmark.triangle.fill") + .font(.system(size: 13)) .foregroundStyle(WTheme.negative) Text(text) - .font(.footnote) - .foregroundStyle(.secondary) + .font(.system(size: 14)) + .foregroundStyle(WTheme.inkSecondary) } .padding(.vertical, 6) } @@ -151,350 +90,759 @@ struct AnalyticsSectionError: View { // MARK: - Deliverability -struct AnalyticsDeliverabilitySection: View { - let summary: DeliverabilitySummary? - let error: String? - var captionTop: CGFloat = 14 - - private let columns = [ - GridItem(.flexible(), alignment: .leading), - GridItem(.flexible(), alignment: .leading), - GridItem(.flexible(), alignment: .leading), - ] +/// The workspace's sending reputation: a score, the three rates that move +/// it against their safe ranges, how replies read, and who is suppressed. +struct AnalyticsDeliverabilityPage: View { + let store: AnalyticsStore + var shown: Bool var body: some View { - AnalyticsSectionCaption("Deliverability", top: captionTop) { - if let band = summary?.band { - StatusPill(text: band, tone: AnalyticsToneMap.band(band)) + if let summary = store.deliverability { + VStack(alignment: .leading, spacing: 16) { + scoreCard(summary).reveal(shown, 0) + rangesCard(summary).reveal(shown, 1) + if intentTotal(summary) > 0 { + intentCard(summary).reveal(shown, 2) + } + suppressionCard(summary).reveal(shown, 3) + if let mailboxes = summary.byMailbox, !mailboxes.isEmpty { + mailboxCard(mailboxes).reveal(shown, 4) + } + } + } else if let error = store.deliverabilityError { + AnalyticsSectionError(text: error).coverCard() + } else { + AnalyticsLoadingCards() + } + } + + // MARK: Score + + private func scoreCard(_ summary: DeliverabilitySummary) -> some View { + let tone = AnalyticsToneMap.band(summary.band) + let score = summary.score ?? (summary.band == "healthy" ? 100 : 0) + return HStack(spacing: 18) { + SweepRing(fraction: Double(score) / 100, color: tone.color, shown: shown, lineWidth: 11) { + VStack(spacing: -2) { + CountUpText(value: shown ? Double(score) : 0, format: { "\(Int($0.rounded()))" }) + .font(.system(size: 34, weight: .semibold, design: .rounded)) + .monospacedDigit() + .foregroundStyle(WTheme.ink) + .animation(.easeOut(duration: 1.1).delay(0.15), value: shown) + Text("of 100") + .font(.system(size: 12, weight: .medium)) + .foregroundStyle(WTheme.inkTertiary) + } + } + .frame(width: 116, height: 116) + VStack(alignment: .leading, spacing: 6) { + StatusPill(text: AnalyticsToneMap.bandLabel(summary.band), tone: tone) + Text(headline(summary.band)) + .font(.system(size: 17, weight: .semibold)) + .foregroundStyle(WTheme.ink) + .fixedSize(horizontal: false, vertical: true) + Text((summary.emailsSent ?? 0) > 0 ? "Read from \(WFormat.compact(summary.emailsSent ?? 0)) emails sent" : "Nothing sent in this period to judge") + .font(.system(size: 13.5)) + .monospacedDigit() + .foregroundStyle(WTheme.inkSecondary) + } + Spacer(minLength: 0) + } + .coverCard() + .accessibilityElement(children: .combine) + } + + private func headline(_ band: String?) -> String { + switch band { + case "healthy": "Your mail is landing well" + case "warning": "Worth keeping an eye on" + case "quarantine": "Sending is at risk" + case "blocked": "Sending is paused" + default: "Send a few emails to see this" + } + } + + // MARK: Ranges + + private func rangesCard(_ summary: DeliverabilitySummary) -> some View { + VStack(alignment: .leading, spacing: 18) { + CardTitle("Inside the safe range", caption: "The rates mailbox providers judge you on") + RateGauge( + label: "Bounce rate", value: summary.bounceRate ?? 0, + watch: 2, risk: 5, note: "Keep under 2%", shown: shown, delay: 0.2 + ) + RateGauge( + label: "Complaint rate", value: summary.complaintRate ?? 0, + watch: 0.03, risk: 0.10, note: "Keep under 0.03%", shown: shown, delay: 0.3 + ) + if let spam = summary.spamPlacementRate { + RateGauge( + label: "Landed in spam", value: spam, + watch: 10, risk: 20, note: "Keep under 10%", shown: shown, delay: 0.4 + ) + } else { + HStack(spacing: 8) { + Image(systemName: "tray.full") + .font(.system(size: 13)) + .foregroundStyle(WTheme.inkTertiary) + Text("Spam placement shows once warmup has enough deliveries to read.") + .font(.system(size: 13.5)) + .foregroundStyle(WTheme.inkSecondary) + .fixedSize(horizontal: false, vertical: true) + } } } - if let summary { - LazyVGrid(columns: columns, alignment: .leading, spacing: 16) { - AnalyticsMiniStat(label: "Sent", value: AnalyticsFmt.count(summary.emailsSent)) - AnalyticsMiniStat( - label: "Bounce rate", - value: AnalyticsFmt.rate(summary.bounceRate), - tone: (summary.bounceRate ?? 0) >= 5 ? .rose : ((summary.bounceRate ?? 0) >= 2 ? .amber : nil) - ) + .coverCard() + } + + // MARK: Intent + + private func intentTotal(_ summary: DeliverabilitySummary) -> Int { + intents(summary).reduce(0) { $0 + $1.count } + } + + private func intents(_ summary: DeliverabilitySummary) -> [(label: String, count: Int, color: Color)] { + [ + ("Interested", summary.intentPositive ?? 0, WTheme.positive), + ("Question", summary.intentQuestion ?? 0, WTheme.accent), + ("Neutral", summary.intentNeutral ?? 0, WTheme.special), + ("Out of office", summary.intentOutOfOffice ?? 0, WTheme.paused), + ("Not interested", summary.intentNegative ?? 0, WTheme.negative), + ("Automated", summary.intentAutomated ?? 0, WTheme.hairlineStrong), + ] + } + + private func intentCard(_ summary: DeliverabilitySummary) -> some View { + let rows = intents(summary).filter { $0.count > 0 } + let total = max(1, rows.reduce(0) { $0 + $1.count }) + return VStack(alignment: .leading, spacing: 16) { + CardTitle("How people replied", caption: "\(total) \(total == 1 ? "reply" : "replies"), read for intent") + GeometryReader { proxy in + HStack(spacing: 3) { + ForEach(Array(rows.enumerated()), id: \.offset) { index, row in + let width = max(6, (proxy.size.width - CGFloat(rows.count - 1) * 3) * CGFloat(row.count) / CGFloat(total)) + RoundedRectangle(cornerRadius: 4, style: .continuous) + .fill(row.color) + .frame(width: shown ? width : 0) + .animation(.spring(response: 0.8, dampingFraction: 0.82).delay(0.2 + Double(index) * 0.07), value: shown) + } + Spacer(minLength: 0) + } + } + .frame(height: 14) + LazyVGrid(columns: [GridItem(.flexible(), spacing: 12), GridItem(.flexible(), spacing: 12)], alignment: .leading, spacing: 10) { + ForEach(Array(rows.enumerated()), id: \.offset) { _, row in + HStack(spacing: 7) { + RoundedRectangle(cornerRadius: 2.5).fill(row.color).frame(width: 9, height: 9) + Text(row.label) + .font(.system(size: 14)) + .foregroundStyle(WTheme.inkSecondary) + .lineLimit(1) + Spacer(minLength: 4) + Text("\(row.count)") + .font(.system(size: 14, weight: .semibold)) + .monospacedDigit() + .foregroundStyle(WTheme.ink) + } + } + } + } + .coverCard() + } + + // MARK: Suppression + + private func suppressionCard(_ summary: DeliverabilitySummary) -> some View { + VStack(alignment: .leading, spacing: 14) { + CardTitle("Kept off your lists", caption: "Addresses Warmbly will not email again") + HStack(spacing: 0) { + AnalyticsMiniStat(label: "Suppressed", value: AnalyticsFmt.count(summary.suppressedRecipients)) + AnalyticsMiniStat(label: "Unsubscribed", value: AnalyticsFmt.count(summary.unsubscribeCount)) AnalyticsMiniStat( label: "Complaints", - value: AnalyticsFmt.rate(summary.complaintRate), - tone: (summary.complaintRate ?? 0) >= 0.10 ? .rose : ((summary.complaintRate ?? 0) >= 0.03 ? .amber : nil) + value: AnalyticsFmt.count(summary.complaintCount), + tone: (summary.complaintCount ?? 0) > 0 ? .rose : nil ) - AnalyticsMiniStat( - label: "Spam placement", - value: summary.spamPlacementRate.map { AnalyticsFmt.rate($0) } ?? "no samples", - tone: (summary.spamPlacementRate ?? 0) >= 20 ? .rose : ((summary.spamPlacementRate ?? 0) >= 10 ? .amber : nil) - ) - AnalyticsMiniStat(label: "Suppressed", value: AnalyticsFmt.count(summary.suppressedRecipients)) - AnalyticsMiniStat(label: "Unsubscribes", value: AnalyticsFmt.count(summary.unsubscribeCount)) } - .padding(.vertical, 10) - .analyticsPlainRow(separator: .hidden) if let pending = summary.dlqPending, pending > 0 { - HStack(spacing: 8) { - Image(systemName: "clock.badge.exclamationmark") - .font(.footnote) - .foregroundStyle(WTheme.warning) - Text("\(pending) deliverability events pending retry") - .font(.footnote) - .monospacedDigit() - .foregroundStyle(.secondary) - } - .padding(.vertical, 6) - .analyticsPlainRow(separator: .hidden) + Label("\(pending) events waiting to retry", systemImage: "clock.arrow.circlepath") + .font(.system(size: 13.5)) + .foregroundStyle(WTheme.warning) } - } else if let error { - AnalyticsSectionError(text: error) - .analyticsPlainRow(separator: .hidden) - } else { - AnalyticsSectionLoading() - .analyticsPlainRow(separator: .hidden) } + .coverCard() + } + + // MARK: Mailboxes + + private func mailboxCard(_ rows: [AnalyticsDeliverabilityMailbox]) -> some View { + VStack(alignment: .leading, spacing: 4) { + CardTitle("By mailbox").padding(.bottom, 8) + ForEach(Array(rows.prefix(8).enumerated()), id: \.element.id) { index, row in + if index > 0 { Hairline().padding(.leading, 50) } + HStack(spacing: 12) { + store.mailboxAvatar(id: row.id, email: row.email, size: 36) + VStack(alignment: .leading, spacing: 3) { + Text(row.email ?? "Mailbox") + .font(.system(size: 15, weight: .medium)) + .foregroundStyle(WTheme.ink) + .lineLimit(1) + Text("\(WFormat.compact(row.sent ?? 0)) sent · \(AnalyticsFmt.rate(row.bounceRate)) bounced") + .font(.system(size: 13)) + .monospacedDigit() + .foregroundStyle(WTheme.inkSecondary) + } + Spacer() + StatusPill(text: AnalyticsToneMap.bandLabel(row.band), tone: AnalyticsToneMap.band(row.band)) + } + .padding(.vertical, 9) + } + } + .coverCard() + } +} + +/// A rate on a track split into fine, watch and risk, with a knob that slides to it. +struct RateGauge: View { + let label: String + let value: Double + let watch: Double + let risk: Double + let note: String + var shown: Bool + var delay: Double = 0 + + private var tone: Tone { value >= risk ? .rose : value >= watch ? .amber : .emerald } + private var scale: Double { risk * 1.6 } + + var body: some View { + VStack(alignment: .leading, spacing: 9) { + HStack(alignment: .firstTextBaseline) { + Text(label) + .font(.system(size: 15)) + .foregroundStyle(WTheme.ink) + Spacer() + Text(AnalyticsFmt.rate(value)) + .font(.system(size: 17, weight: .semibold, design: .rounded)) + .monospacedDigit() + .foregroundStyle(tone == .emerald ? WTheme.ink : tone.color) + } + GeometryReader { proxy in + let width = proxy.size.width + let watchX = width * watch / scale + let riskX = width * risk / scale + let knob = width * min(1, value / scale) + ZStack(alignment: .leading) { + HStack(spacing: 2) { + Capsule().fill(WTheme.positive.opacity(0.28)).frame(width: max(0, watchX - 1)) + Rectangle().fill(WTheme.warning.opacity(0.3)).frame(width: max(0, riskX - watchX - 2)) + Capsule().fill(WTheme.negative.opacity(0.26)) + } + .frame(height: 6) + Circle() + .fill(WTheme.groupedCard) + .frame(width: 16, height: 16) + .overlay(Circle().stroke(tone.color, lineWidth: 4)) + .shadow(color: tone.color.opacity(0.35), radius: 4, y: 1) + .offset(x: (shown ? knob : 0) - 8) + .animation(.spring(response: 1, dampingFraction: 0.7).delay(delay), value: shown) + } + .frame(height: 16) + } + .frame(height: 16) + Text(note) + .font(.system(size: 12.5)) + .foregroundStyle(WTheme.inkTertiary) + } + .accessibilityElement(children: .combine) } } // MARK: - Warmup -struct AnalyticsWarmupSection: View { - let warmup: WarmupAnalytics? - let error: String? - let periodLabel: String - var captionTop: CGFloat = 14 +/// Warmup across every mailbox: what went out, how the days tracked the +/// ramp, where it landed, and each mailbox's climb. +struct AnalyticsWarmupPage: View { + let store: AnalyticsStore + var shown: Bool - private let columns = [ - GridItem(.flexible(), alignment: .leading), - GridItem(.flexible(), alignment: .leading), - GridItem(.flexible(), alignment: .leading), - ] + @State private var selectedDay: Int? - private var chartDays: [(id: Int, day: Date, sent: Int, target: Int)] { - (warmup?.dailyStats ?? []).enumerated().compactMap { index, day in - guard let date = AnalyticsDay.parse(day.date) else { return nil } - return (id: index, day: date, sent: day.emailsSent ?? 0, target: day.targetVolume ?? 0) + var body: some View { + if let summary = store.warmup?.summary { + VStack(alignment: .leading, spacing: 16) { + heroCard(summary).reveal(shown, 0) + if (summary.totalSent ?? 0) > 0 { + dailyCard.reveal(shown, 1) + } + if !placements.isEmpty { + placementCard.reveal(shown, 2) + } + if !warming.isEmpty { + rampCard.reveal(shown, 3) + } + } + } else if let error = store.warmupError { + AnalyticsSectionError(text: error).coverCard() + } else { + AnalyticsLoadingCards() } } - var body: some View { - AnalyticsSectionCaption("Warmup", icon: "flame", iconTone: .orange, top: captionTop) - if let summary = warmup?.summary { - LazyVGrid(columns: columns, alignment: .leading, spacing: 16) { - AnalyticsMiniStat(label: "Warmup sent", value: AnalyticsFmt.count(summary.totalSent), tone: .orange) + // MARK: Hero + + private func heroCard(_ summary: AnalyticsWarmupSummary) -> some View { + let progress = (summary.targetProgress ?? 0) / 100 + return VStack(alignment: .leading, spacing: 18) { + HStack(alignment: .center, spacing: 16) { + VStack(alignment: .leading, spacing: 4) { + HStack(spacing: 6) { + Image(systemName: "flame.fill") + .font(.system(size: 13, weight: .semibold)) + .foregroundStyle(Tone.orange.color) + .symbolEffect(.bounce, value: shown) + Text("Warmup emails sent") + .font(.system(size: 14, weight: .medium)) + .foregroundStyle(WTheme.inkSecondary) + } + CountUpText(value: shown ? Double(summary.totalSent ?? 0) : 0, format: { Int($0.rounded()).formatted() }) + .font(.system(size: 40, weight: .semibold, design: .rounded)) + .monospacedDigit() + .foregroundStyle(WTheme.ink) + .animation(.easeOut(duration: 1.2), value: shown) + Text("over \(summary.daysActive ?? 0) active \((summary.daysActive ?? 0) == 1 ? "day" : "days")") + .font(.system(size: 13.5)) + .foregroundStyle(WTheme.inkTertiary) + } + Spacer(minLength: 8) + SweepRing(fraction: progress, color: Tone.orange.color, shown: shown, lineWidth: 9) { + VStack(spacing: -1) { + Text("\(Int((progress * 100).rounded()))%") + .font(.system(size: 20, weight: .semibold, design: .rounded)) + .monospacedDigit() + .foregroundStyle(WTheme.ink) + Text("of target") + .font(.system(size: 11, weight: .medium)) + .foregroundStyle(WTheme.inkTertiary) + } + } + .frame(width: 96, height: 96) + } + Hairline() + HStack(spacing: 0) { AnalyticsMiniStat(label: "Replies", value: AnalyticsFmt.count(summary.totalReplied)) AnalyticsMiniStat(label: "Reply rate", value: AnalyticsFmt.rate(summary.replyRate)) - AnalyticsMiniStat(label: "Avg / active day", value: String(format: "%.1f", summary.averageDaily ?? 0)) - AnalyticsMiniStat(label: "Days active", value: "\(summary.daysActive ?? 0)") - AnalyticsMiniStat(label: "Target met", value: String(format: "%.0f%%", summary.targetProgress ?? 0)) + AnalyticsMiniStat(label: "A day", value: String(format: "%.0f", summary.averageDaily ?? 0)) } - .padding(.vertical, 10) - .analyticsPlainRow(separator: .hidden) - - if (summary.totalSent ?? 0) > 0, chartDays.count > 1 { - Chart(chartDays, id: \.id) { day in - BarMark( - x: .value("Day", day.day), - y: .value("Sent", day.sent) - ) - .foregroundStyle(Tone.orange.color.opacity(0.75)) - LineMark( - x: .value("Day", day.day), - y: .value("Target", day.target) - ) - .lineStyle(StrokeStyle(lineWidth: 1, dash: [3, 3])) - .foregroundStyle(WTheme.paused) - } - .chartXAxis { - AxisMarks(values: .automatic(desiredCount: 4)) { _ in - AxisGridLine().foregroundStyle(Color(.separator).opacity(0.4)) - AxisValueLabel(format: .dateTime.month(.abbreviated).day()) - .font(.system(size: 10, weight: .medium)) - .foregroundStyle(Color.secondary) - } - } - .chartYAxis { - AxisMarks(position: .trailing, values: .automatic(desiredCount: 3)) { _ in - AxisGridLine().foregroundStyle(Color(.separator).opacity(0.4)) - AxisValueLabel() - .font(.system(size: 10)) - .foregroundStyle(Color.secondary) - } - } - .frame(height: 130) - .padding(.vertical, 8) - .analyticsPlainRow(separator: .hidden) - } else if (summary.totalSent ?? 0) == 0 { - Text("No warmup activity in the last \(periodLabel).") - .font(.subheadline) - .foregroundStyle(.secondary) - .padding(.vertical, 4) - .analyticsPlainRow(separator: .hidden) - } - } else if let error { - AnalyticsSectionError(text: error) - .analyticsPlainRow(separator: .hidden) - } else { - AnalyticsSectionLoading() - .analyticsPlainRow(separator: .hidden) } + .coverCard() + } + + // MARK: Daily bars + + private struct Day { + let date: Date + let sent: Int + let target: Int + let replied: Int + } + + private var days: [Day] { + (store.warmup?.dailyStats ?? []).compactMap { day in + guard let date = AnalyticsDay.parse(day.date.map { String($0.prefix(10)) }) else { return nil } + return Day(date: date, sent: day.emailsSent ?? 0, target: day.targetVolume ?? 0, replied: day.emailsReplied ?? 0) + } + } + + private var dailyCard: some View { + let days = days + let peak = max(1, days.map { max($0.sent, $0.target) }.max() ?? 1) + let picked = selectedDay.flatMap { days.indices.contains($0) ? days[$0] : nil } + let utcDay: Date.FormatStyle = { + var style = Date.FormatStyle.dateTime.weekday(.abbreviated).month(.abbreviated).day() + style.timeZone = TimeZone(identifier: "UTC")! + return style + }() + return VStack(alignment: .leading, spacing: 14) { + VStack(alignment: .leading, spacing: 3) { + Text(picked.map { utcDay.format($0.date) } ?? "Each day against its target") + .font(.system(size: 17, weight: .semibold)) + .foregroundStyle(WTheme.ink) + .contentTransition(.opacity) + Group { + if let picked { + Text("\(picked.sent) sent of \(picked.target) · \(picked.replied) replied") + } else { + Text("Drag across the bars to read a day") + } + } + .font(.system(size: 13.5)) + .monospacedDigit() + .foregroundStyle(WTheme.inkSecondary) + .contentTransition(.numericText()) + } + .animation(.snappy(duration: 0.2), value: selectedDay) + GeometryReader { proxy in + let count = max(1, days.count) + let gap: CGFloat = count > 40 ? 1.5 : 4 + let barWidth = max(2, (proxy.size.width - gap * CGFloat(count - 1)) / CGFloat(count)) + HStack(alignment: .bottom, spacing: gap) { + ForEach(Array(days.enumerated()), id: \.offset) { index, day in + let height = proxy.size.height * CGFloat(day.sent) / CGFloat(peak) + let targetY = proxy.size.height * CGFloat(day.target) / CGFloat(peak) + let dim = selectedDay != nil && selectedDay != index + ZStack(alignment: .bottom) { + RoundedRectangle(cornerRadius: min(4, barWidth / 2), style: .continuous) + .fill(WTheme.fill) + .frame(height: max(2, targetY)) + RoundedRectangle(cornerRadius: min(4, barWidth / 2), style: .continuous) + .fill(LinearGradient(colors: [Color(hex: 0xFDBA74), Tone.orange.color], startPoint: .top, endPoint: .bottom)) + .frame(height: shown ? max(2, height) : 2) + .opacity(dim ? 0.35 : 1) + .animation(.spring(response: 0.8, dampingFraction: 0.78).delay(0.15 + Double(index) * min(0.04, 1.2 / Double(count))), value: shown) + } + .frame(width: barWidth) + } + } + .frame(maxHeight: .infinity, alignment: .bottom) + .contentShape(Rectangle()) + .gesture( + DragGesture(minimumDistance: 0) + .onChanged { value in + let index = Int(value.location.x / (barWidth + gap)) + selectedDay = min(max(0, index), count - 1) + } + .onEnded { _ in + withAnimation(.snappy) { selectedDay = nil } + } + ) + } + .frame(height: 130) + .sensoryFeedback(.selection, trigger: selectedDay) + HStack(spacing: 14) { + legend(color: Tone.orange.color, text: "Sent") + legend(color: WTheme.hairlineStrong, text: "Target") + Spacer() + } + } + .coverCard() + } + + private func legend(color: Color, text: String) -> some View { + HStack(spacing: 6) { + RoundedRectangle(cornerRadius: 2.5).fill(color).frame(width: 9, height: 9) + Text(text) + .font(.system(size: 12.5)) + .foregroundStyle(WTheme.inkSecondary) + } + } + + // MARK: Placement + + private var placements: [AccountHealthRow] { + store.accounts.filter { ($0.warmupPlacement?.delivered ?? 0) > 0 } + } + + private var placementCard: some View { + VStack(alignment: .leading, spacing: 4) { + CardTitle("Where warmup landed", caption: "Verified deliveries at Google, Microsoft and Yahoo, last 7 days") + .padding(.bottom, 10) + ForEach(Array(placements.enumerated()), id: \.element.id) { index, account in + if index > 0 { Hairline() } + placementRow(account, index: index) + } + HStack(spacing: 14) { + legend(color: WTheme.positive, text: "Inbox") + legend(color: WTheme.accent, text: "Tabs") + legend(color: WTheme.negative, text: "Spam") + Spacer() + } + .padding(.top, 10) + } + .coverCard() + } + + private func placementRow(_ account: AccountHealthRow, index: Int) -> some View { + let placement = account.warmupPlacement + let delivered = max(1, placement?.delivered ?? 1) + let parts: [(Int, Color)] = [ + (placement?.inbox ?? 0, WTheme.positive), + (placement?.tabs ?? 0, WTheme.accent), + (placement?.spam ?? 0, WTheme.negative), + ] + let rate = placement?.inboxRate ?? 0 + return VStack(alignment: .leading, spacing: 8) { + HStack(alignment: .firstTextBaseline) { + Text(account.email ?? "Mailbox") + .font(.system(size: 15, weight: .medium)) + .foregroundStyle(WTheme.ink) + .lineLimit(1) + Spacer(minLength: 8) + Text(String(format: "%.0f%%", rate)) + .font(.system(size: 15, weight: .semibold, design: .rounded)) + .monospacedDigit() + .foregroundStyle(rate >= 90 ? WTheme.positive : rate >= 80 ? WTheme.warning : WTheme.negative) + Text("inbox") + .font(.system(size: 12.5)) + .foregroundStyle(WTheme.inkTertiary) + } + GeometryReader { proxy in + HStack(spacing: 2) { + ForEach(Array(parts.enumerated()), id: \.offset) { part, item in + if item.0 > 0 { + Capsule() + .fill(item.1) + .frame(width: shown ? max(4, (proxy.size.width - 4) * CGFloat(item.0) / CGFloat(delivered)) : 0) + .animation(.spring(response: 0.9, dampingFraction: 0.8).delay(0.2 + Double(index) * 0.08 + Double(part) * 0.1), value: shown) + } + } + Spacer(minLength: 0) + } + } + .frame(height: 8) + Text("\(placement?.delivered ?? 0) delivered · \(placement?.spam ?? 0) in spam") + .font(.system(size: 12.5)) + .monospacedDigit() + .foregroundStyle(WTheme.inkTertiary) + } + .padding(.vertical, 10) + .accessibilityElement(children: .combine) + } + + // MARK: Ramp + + private var warming: [AccountHealthRow] { + store.accounts.filter { $0.warmupStatus?.enabled == true } + } + + private var rampCard: some View { + VStack(alignment: .leading, spacing: 4) { + CardTitle("Each mailbox's ramp", caption: "Today's daily target on its way to the ceiling") + .padding(.bottom, 8) + ForEach(Array(warming.enumerated()), id: \.element.id) { index, account in + if index > 0 { Hairline().padding(.leading, 48) } + rampRow(account, index: index) + } + } + .coverCard() + } + + private func rampRow(_ account: AccountHealthRow, index: Int) -> some View { + let status = account.warmupStatus + let ceiling = max(1, status?.maxVolume ?? 40) + let today = min(ceiling, status?.targetVolume ?? 0) + let paused = status?.paused == true + return HStack(alignment: .top, spacing: 12) { + MailboxAvatar(email: account.email ?? "", avatarURL: account.avatarURL, brand: account.resolvedBrand, seed: account.id, size: 36) + VStack(alignment: .leading, spacing: 8) { + HStack(alignment: .firstTextBaseline) { + Text(account.email ?? "Mailbox") + .font(.system(size: 15, weight: .medium)) + .foregroundStyle(WTheme.ink) + .lineLimit(1) + Spacer(minLength: 8) + Text(paused ? "Paused" : "Day \(status?.daysActive ?? 0)") + .font(.system(size: 13, weight: .semibold)) + .monospacedDigit() + .foregroundStyle(paused ? WTheme.inkTertiary : Tone.orange.color) + } + WarmupBar(progress: shown ? Double(today) / Double(ceiling) : 0, paused: paused, delay: Double(index) * 0.08) + .frame(height: 8) + Text("\(Text("\(today)").foregroundStyle(WTheme.ink).fontWeight(.semibold)) of \(ceiling) a day · \(status?.currentVolume ?? 0) sent today") + .font(.system(size: 12.5)) + .monospacedDigit() + .foregroundStyle(WTheme.inkSecondary) + } + } + .padding(.vertical, 10) } } -// MARK: - Account health +// MARK: - Mailboxes -struct AnalyticsAccountsSection: View { - let accounts: [AccountHealthRow] - let counts: AnalyticsAccountHealthCounts? - let error: String? - var isLoading: Bool = false - var captionTop: CGFloat = 14 +/// Every mailbox's health: a summary of the fleet, then each mailbox with +/// today's sending and its score, opening its detail. +struct AnalyticsAccountsPage: View { + let store: AnalyticsStore + var shown: Bool + + #if DEBUG + @State private var debugOpen = false + #endif var body: some View { - AnalyticsSectionCaption("Account health", top: captionTop) { - if let counts { - HStack(spacing: 6) { - if let healthy = counts.healthyAccounts, healthy > 0 { - StatusPill(text: "\(healthy)", tone: .emerald) + if store.accounts.isEmpty, let error = store.accountsError { + AnalyticsSectionError(text: error).coverCard() + } else if store.accounts.isEmpty, store.isLoading { + AnalyticsLoadingCards() + } else if store.accounts.isEmpty { + CoverEmptyState( + symbol: "envelope.fill", + title: "No mailboxes yet", + message: "Connect a mailbox and its health shows up here." + ) + } else { + VStack(alignment: .leading, spacing: 16) { + summaryCard.reveal(shown, 0) + listCard.reveal(shown, 1) + } + #if DEBUG + .navigationDestination(isPresented: $debugOpen) { + if let first = store.accounts.last { AnalyticsAccountDetailView(account: first) } + } + .task { debugOpen = ProcessInfo.processInfo.environment["WARMBLY_DEBUG_ANALYTICS_ACCOUNT"] != nil } + #endif + } + } + + private var counts: (healthy: Int, warning: Int, error: Int) { + let accounts = store.accounts + return ( + accounts.count { $0.health?.status == "healthy" }, + accounts.count { $0.health?.status == "warning" }, + accounts.count { $0.health?.status == "error" } + ) + } + + private var averageScore: Int { + let scores = store.accounts.compactMap { $0.health?.score } + guard !scores.isEmpty else { return 0 } + return scores.reduce(0, +) / scores.count + } + + private var summaryCard: some View { + let counts = counts + let total = max(1, store.accounts.count) + let segments: [(String, Int, Color)] = [ + ("Healthy", counts.healthy, WTheme.positive), + ("Warning", counts.warning, WTheme.warning), + ("Error", counts.error, WTheme.negative), + ] + let average = averageScore + let tone: Tone = average >= 80 ? .emerald : average >= 60 ? .amber : .rose + return VStack(alignment: .leading, spacing: 16) { + HStack(alignment: .center, spacing: 16) { + VStack(alignment: .leading, spacing: 4) { + Text("Average health") + .font(.system(size: 14, weight: .medium)) + .foregroundStyle(WTheme.inkSecondary) + HStack(alignment: .firstTextBaseline, spacing: 4) { + CountUpText(value: shown ? Double(average) : 0, format: { "\(Int($0.rounded()))" }) + .font(.system(size: 40, weight: .semibold, design: .rounded)) + .monospacedDigit() + .foregroundStyle(WTheme.ink) + .animation(.easeOut(duration: 1.1), value: shown) + Text("/ 100") + .font(.system(size: 15)) + .foregroundStyle(WTheme.inkTertiary) } - if let warning = counts.warningAccounts, warning > 0 { - StatusPill(text: "\(warning)", tone: .amber) - } - if let bad = counts.errorAccounts, bad > 0 { - StatusPill(text: "\(bad)", tone: .rose) + Text("across \(store.accounts.count) \(store.accounts.count == 1 ? "mailbox" : "mailboxes")") + .font(.system(size: 13.5)) + .foregroundStyle(WTheme.inkTertiary) + } + Spacer() + SweepRing(fraction: Double(average) / 100, color: tone.color, shown: shown, lineWidth: 9) { + Image(systemName: tone == .emerald ? "checkmark" : "exclamationmark") + .font(.system(size: 24, weight: .bold)) + .foregroundStyle(tone.color) + .symbolEffect(.bounce, value: shown) + } + .frame(width: 88, height: 88) + } + GeometryReader { proxy in + HStack(spacing: 3) { + ForEach(Array(segments.enumerated()), id: \.offset) { index, segment in + if segment.1 > 0 { + RoundedRectangle(cornerRadius: 4, style: .continuous) + .fill(segment.2) + .frame(width: shown ? max(6, (proxy.size.width - 6) * CGFloat(segment.1) / CGFloat(total)) : 0) + .animation(.spring(response: 0.8, dampingFraction: 0.82).delay(0.25 + Double(index) * 0.1), value: shown) + } } + Spacer(minLength: 0) } } + .frame(height: 10) + HStack(spacing: 16) { + ForEach(Array(segments.enumerated()), id: \.offset) { _, segment in + HStack(spacing: 6) { + Circle().fill(segment.2).frame(width: 7, height: 7) + Text("\(segment.1) \(segment.0.lowercased())") + .font(.system(size: 13.5)) + .monospacedDigit() + .foregroundStyle(segment.1 > 0 ? WTheme.ink : WTheme.inkTertiary) + } + } + Spacer() + } } - if let error, accounts.isEmpty { - AnalyticsSectionError(text: error) - .analyticsPlainRow(separator: .hidden) - } else if accounts.isEmpty, isLoading { - // First load in flight; don't flash the empty message. - AnalyticsSectionLoading() - .analyticsPlainRow(separator: .hidden) - } else if accounts.isEmpty { - Text("No mailboxes connected yet.") - .font(.subheadline) - .foregroundStyle(.secondary) - .padding(.vertical, 6) - .analyticsPlainRow(separator: .hidden) - } else { - ForEach(accounts) { account in + .coverCard() + } + + private var listCard: some View { + VStack(alignment: .leading, spacing: 0) { + ForEach(Array(store.accounts.enumerated()), id: \.element.id) { index, account in + if index > 0 { Hairline().padding(.leading, 66) } NavigationLink { AnalyticsAccountDetailView(account: account) } label: { - AnalyticsAccountRowView(account: account) + AnalyticsAccountRowView(account: account, shown: shown, index: index) } - .analyticsPlainRow(separatorLeading: 66) + .buttonStyle(MoreRowPressStyle()) } } + .padding(.vertical, 4) + .frame(maxWidth: .infinity, alignment: .leading) + .background(WTheme.groupedCard) + .clipShape(RoundedRectangle(cornerRadius: 22, style: .continuous)) } } struct AnalyticsAccountRowView: View { let account: AccountHealthRow - - private var usage: String { - guard let usage = account.dailyUsage else { return "" } - var parts: [String] = [] - if let limit = usage.campaignLimit, limit > 0 { - parts.append("\(usage.campaignSent ?? 0) of \(limit) / day") - } - if let warmupLimit = usage.warmupLimit, warmupLimit > 0 { - parts.append("warmup \(usage.warmupSent ?? 0) of \(warmupLimit)") - } - return parts.joined(separator: " · ") - } + var shown = true + var index = 0 var body: some View { - HStack(spacing: 12) { - IconTile(symbol: "envelope", tone: AnalyticsToneMap.health(account.health?.status), size: 38) - VStack(alignment: .leading, spacing: 3) { - Text(account.email ?? "mailbox") - .font(.body.weight(.medium)) + let tone = AnalyticsToneMap.health(account.health?.status) + let usage = account.dailyUsage + let limit = max(0, usage?.campaignLimit ?? 0) + let sent = usage?.campaignSent ?? 0 + let issues = account.errors?.count ?? 0 + return HStack(spacing: 12) { + MailboxAvatar(email: account.email ?? "", avatarURL: account.avatarURL, brand: account.resolvedBrand, seed: account.id, size: 40) + VStack(alignment: .leading, spacing: 6) { + Text(account.email ?? "Mailbox") + .font(.system(size: 15.5, weight: .medium)) + .foregroundStyle(WTheme.ink) .lineLimit(1) - HStack(spacing: 4) { - if let provider = account.provider, !provider.isEmpty { - Text(provider) - } - if !usage.isEmpty { - if account.provider?.isEmpty == false { Text("·") } - Text(usage).monospacedDigit() + HStack(spacing: 6) { + Text(account.providerLabel) + if issues > 0 { + Text("·") + Text("\(issues) \(issues == 1 ? "issue" : "issues")") + .foregroundStyle(WTheme.negative) + } else if limit > 0 { + Text("·") + Text("\(sent)/\(limit) today").monospacedDigit() } } - .font(.footnote) - .foregroundStyle(.secondary) + .font(.system(size: 13)) + .foregroundStyle(WTheme.inkSecondary) .lineLimit(1) - } - Spacer() - StatusPill( - text: account.health?.status ?? "unknown", - tone: AnalyticsToneMap.health(account.health?.status) - ) - if let score = account.health?.score { - HealthRing(score: score, tone: AnalyticsToneMap.health(account.health?.status), size: 34) - } - } - .padding(.vertical, 9) - } -} - -// MARK: - Top campaigns - -struct AnalyticsTopCampaignsSection: View { - let campaigns: [AnalyticsTopCampaign] - - private func statusTone(_ raw: String?) -> Tone { - switch raw { - case "active": .emerald - case "paused": .amber - case "draft": .slate - default: .slate - } - } - - var body: some View { - if !campaigns.isEmpty { - AnalyticsSectionCaption("Top campaigns") - ForEach(campaigns) { campaign in - HStack(spacing: 12) { - IconTile(symbol: "megaphone", tone: statusTone(campaign.status), size: 36) - VStack(alignment: .leading, spacing: 3) { - Text(campaign.name ?? "Untitled campaign") - .font(.body.weight(.medium)) - .lineLimit(1) - Text("\(WFormat.compact(campaign.emailsSent ?? 0)) sent · \(AnalyticsFmt.rate(campaign.openRate)) open · \(AnalyticsFmt.rate(campaign.replyRate)) reply") - .font(.footnote) - .monospacedDigit() - .foregroundStyle(.secondary) - .lineLimit(1) - } - Spacer() - StatusPill( - text: campaign.status ?? "unknown", - tone: statusTone(campaign.status), - pulsing: campaign.status == "active" - ) + if limit > 0, sent > 0 { + GrowBar(fraction: Double(sent) / Double(limit), color: WTheme.accent, shown: shown, delay: 0.2 + Double(index) * 0.05, height: 4) + .frame(maxWidth: 160) } - .padding(.vertical, 9) - .analyticsPlainRow(separatorLeading: 64) - } - } - } -} - -// MARK: - Recent activity - -struct AnalyticsActivitySection: View { - let items: [AnalyticsActivityItem] - - private func icon(_ type: String?) -> String { - switch type { - case "sent": "paperplane" - case "opened": "envelope.open" - case "clicked": "link" - case "replied": "arrowshape.turn.up.left" - case "bounced": "exclamationmark.triangle" - default: "bolt" - } - } - - private func tone(_ type: String?) -> Tone { - switch type { - case "sent": .slate - case "opened": .sky - case "clicked": .indigo - case "replied": .emerald - case "bounced": .rose - default: .slate - } - } - - var body: some View { - if !items.isEmpty { - AnalyticsSectionCaption("Recent activity") - ForEach(Array(items.prefix(12).enumerated()), id: \.offset) { _, item in - HStack(spacing: 12) { - IconTile(symbol: icon(item.type), tone: tone(item.type), size: 34) - VStack(alignment: .leading, spacing: 3) { - Text(item.contactEmail ?? "unknown recipient") - .font(.body.weight(.medium)) - .lineLimit(1) - Text("\(item.type ?? "event") · \(item.campaignName ?? "campaign")") - .font(.footnote) - .foregroundStyle(.secondary) - .lineLimit(1) - } - Spacer() - if let timestamp = item.timestamp { - Text(WFormat.relative(timestamp)) - .font(.footnote) - .monospacedDigit() - .foregroundStyle(.secondary) - } - } - .padding(.vertical, 8) - .analyticsPlainRow(separatorLeading: 62) } + Spacer(minLength: 6) + HealthRing(score: account.health?.score, tone: tone, size: 38) + Image(systemName: "chevron.right") + .font(.system(size: 12, weight: .semibold)) + .foregroundStyle(WTheme.inkTertiary) } + .padding(.horizontal, 14) + .padding(.vertical, 12) + .contentShape(Rectangle()) } } diff --git a/ios/Warmbly/Features/Analytics/AnalyticsSidebar.swift b/ios/Warmbly/Features/Analytics/AnalyticsSidebar.swift index 3131e15b6..c863abf8f 100644 --- a/ios/Warmbly/Features/Analytics/AnalyticsSidebar.swift +++ b/ios/Warmbly/Features/Analytics/AnalyticsSidebar.swift @@ -1,10 +1,9 @@ import SwiftUI /// Navigation drawer for the analytics browser, mirroring the mailboxes / -/// contacts / campaigns sidebars: a slim sky hero with live totals, then the -/// analytics sections as pill rows on a rounded white sheet. The selected -/// pill slides between rows in the section's tone and rows cascade in when -/// the drawer opens. +/// contacts / campaigns sidebars: an ink header on the canvas wash with live +/// totals as hairline chips, then the analytics sections as rows. The +/// selected row's fill slides between rows and rows cascade in on open. struct AnalyticsSidebar: View { let store: AnalyticsStore let selection: AnalyticsScope @@ -26,66 +25,14 @@ struct AnalyticsSidebar: View { .padding(.top, 8) .padding(.bottom, 40) } - .background { - UnevenRoundedRectangle(topLeadingRadius: 24, topTrailingRadius: 24, style: .continuous) - .fill(Color(.systemBackground)) - .shadow(color: .black.opacity(0.1), radius: 14, y: -4) - } } - .background(alignment: .top) { - AirSkyWash().frame(height: 340) - } - .background(Color(.systemBackground)) + .background(WTheme.canvas) } // MARK: Hero private var hero: some View { - let sent = store.dashboard?.overallStats?.totalEmailsSent ?? 0 - return VStack(alignment: .leading, spacing: 13) { - HStack(spacing: 8) { - WarmblyLogo() - .fill(.white) - .frame(width: 21, height: 21 * (764 / 746)) - Text("Analytics") - .font(.system(size: 17.5, weight: .heavy)) - .tracking(-0.4) - .foregroundStyle(.white) - } - Text("Sends, opens, replies and health") - .font(.footnote.weight(.medium)) - .foregroundStyle(.white.opacity(0.82)) - .lineLimit(1) - HStack(spacing: 6) { - heroBadge(symbol: "paperplane.fill", text: "\(WFormat.compact(sent)) sent") - if store.warmingCount > 0 { - heroBadge(symbol: "flame.fill", text: "\(WFormat.compact(store.warmingCount)) warming", live: true) - } else if !store.accounts.isEmpty { - heroBadge(symbol: "envelope.fill", text: "\(WFormat.compact(store.accounts.count)) accounts") - } - } - } - .padding(.horizontal, 20) - .padding(.top, topInset + 12) - .padding(.bottom, 16) - .frame(maxWidth: .infinity, alignment: .leading) - } - - private func heroBadge(symbol: String, text: String, live: Bool = false) -> some View { - HStack(spacing: 5) { - Image(systemName: symbol) - .font(.system(size: 10.5, weight: .semibold)) - .foregroundStyle(.white.opacity(0.9)) - .modifier(PingEffect(active: live, color: .white)) - Text(text) - .font(.footnote.weight(.medium)) - .monospacedDigit() - .foregroundStyle(.white) - .contentTransition(.numericText()) - } - .padding(.horizontal, 10) - .padding(.vertical, 5.5) - .background(.white.opacity(0.16), in: Capsule()) + DrawerWorkspaceHeader(topInset: topInset) } private func sectionLabel(_ text: String) -> some View { @@ -106,41 +53,40 @@ struct AnalyticsSidebar: View { private func row(index: Int, scope: AnalyticsScope) -> some View { let selected = selection == scope - // Only the accounts row carries a count; it turns rose when any - // account has health issues, mirroring the sheet's counts pills. + // Only the accounts row carries a count; rose when any account has issues. let count = scope == .accounts ? store.accounts.count : 0 let countColor: Color? = scope == .accounts && store.issueCount > 0 ? Tone.rose.color : nil return Button { onSelect(scope) } label: { - HStack(spacing: 13) { + HStack(spacing: 12) { Image(systemName: scope.icon) - .font(.system(size: 15, weight: .medium)) - .foregroundStyle(selected ? scope.tone.color : Color.secondary) - .frame(width: 24) + .font(.system(size: 14, weight: .regular)) + .foregroundStyle(selected ? WTheme.ink : WTheme.inkTertiary) + .frame(width: 22) Text(scope.title) - .font(.subheadline.weight(selected ? .semibold : .medium)) - .foregroundStyle(selected ? scope.tone.color : Color.primary) + .font(.system(size: 15, weight: selected ? .medium : .regular)) + .foregroundStyle(selected ? WTheme.ink : WTheme.inkSecondary) .lineLimit(1) Spacer(minLength: 8) if count > 0 { Text(WFormat.compact(count)) - .font(.footnote.weight(countColor != nil || selected ? .semibold : .medium)) + .font(WFont.meta(12, weight: .medium)) .monospacedDigit() - .foregroundStyle(countColor ?? (selected ? scope.tone.color : Color.secondary)) + .foregroundStyle(countColor ?? (selected ? WTheme.ink : WTheme.inkTertiary)) .contentTransition(.numericText()) } } - .padding(.horizontal, 16) - .frame(height: 44) + .padding(.horizontal, 14) + .frame(height: 42) .background { if selected { - Capsule() - .fill(scope.tone.background) + RoundedRectangle(cornerRadius: 12, style: .continuous) + .fill(WTheme.fill) .matchedGeometryEffect(id: "analyticsdrawer-active", in: activeNS) } } - .contentShape(Capsule()) + .contentShape(RoundedRectangle(cornerRadius: 12, style: .continuous)) } .buttonStyle(TapScaleStyle()) .accessibilityElement(children: .ignore) diff --git a/ios/Warmbly/Features/Analytics/AnalyticsStore.swift b/ios/Warmbly/Features/Analytics/AnalyticsStore.swift index 219bdcff5..8eb3bc4e1 100644 --- a/ios/Warmbly/Features/Analytics/AnalyticsStore.swift +++ b/ios/Warmbly/Features/Analytics/AnalyticsStore.swift @@ -1,4 +1,4 @@ -import Foundation +import SwiftUI /// Loads the four analytics surfaces in parallel; each section fails /// independently so one broken endpoint never blanks the whole screen. @@ -10,6 +10,8 @@ final class AnalyticsStore { var campaignFilter = AnalyticsCampaignFilter() private(set) var dashboard: DashboardAnalytics? + /// The period before this one, from the next longer range; nil for 90 days. + private(set) var previous: AnalyticsTotals? private(set) var deliverability: DeliverabilitySummary? private(set) var warmup: WarmupAnalytics? private(set) var accounts: [AccountHealthRow] = [] @@ -77,11 +79,15 @@ final class AnalyticsStore { var query: [String: String?] = ["period": period.rawValue] if !filter.campaigns.isEmpty { query["campaign_ids"] = filter.campaigns.sorted().joined(separator: ",") } if !filter.folders.isEmpty { query["folder_ids"] = filter.folders.sorted().joined(separator: ",") } + let wanted = period + async let comparison: DashboardAnalytics? = loadComparison(api, query: query) do { let result: DashboardAnalytics = try await api.get("analytics/dashboard", query: query) + let longer = await comparison // A newer filter is already on its way; this answer describes the old one. - guard filter == campaignFilter else { return } + guard filter == campaignFilter, wanted == period else { return } dashboard = result + previous = longer.map { AnalyticsTotals.before(days: wanted.days, in: $0.dailyTrend ?? []) } dashboardError = nil // Drop selections the server no longer recognises (deleted, or another workspace's). if let scope = result.scope { @@ -97,6 +103,19 @@ final class AnalyticsStore { } } + /// The next longer range, whose older days are this period's predecessor. + private func loadComparison(_ api: APIClient, query: [String: String?]) async -> DashboardAnalytics? { + let longer: AnalyticsPeriod? = switch period { + case .week: .month + case .month: .quarter + case .quarter: nil + } + guard let longer else { return nil } + var query = query + query["period"] = longer.rawValue + return try? await api.get("analytics/dashboard", query: query) + } + private func loadDeliverability(_ api: APIClient) async { // from/to are RFC3339 here (unlike the warmup endpoint). let to = Date() @@ -130,10 +149,32 @@ final class AnalyticsStore { } } + /// A mailbox's avatar by id, branded once the health rows have loaded. + func mailboxAvatar(id: String, email: String?, size: CGFloat) -> MailboxAvatar { + let row = accounts.first { $0.id == id } + return MailboxAvatar( + email: email ?? row?.email ?? "", + avatarURL: row?.avatarURL, + brand: row?.resolvedBrand ?? MailboxBrand(provider: nil, mailHost: nil), + seed: id, + size: size + ) + } + private func loadAccounts(_ api: APIClient) async { do { - let envelope: AnalyticsDataEnvelope = try await api.get("analytics/accounts") - accounts = envelope.data ?? [] + async let health: AnalyticsDataEnvelope = api.get("analytics/accounts") + async let list: ListResponse = api.get("emails", query: ["limit": "200"]) + let envelope = try await health + let mailboxes = Dictionary(((try? await list)?.data ?? []).map { ($0.id, $0) }, uniquingKeysWith: { first, _ in first }) + accounts = (envelope.data ?? []).map { row in + var row = row + if let mailbox = mailboxes[row.id] { + row.brand = mailbox.brand + row.avatarURL = mailbox.avatarURL + } + return row + } accountsError = nil } catch { accountsError = error.localizedDescription diff --git a/ios/Warmbly/Features/Analytics/AuditLogView.swift b/ios/Warmbly/Features/Analytics/AuditLogView.swift index b947fbe4e..98b953d26 100644 --- a/ios/Warmbly/Features/Analytics/AuditLogView.swift +++ b/ios/Warmbly/Features/Analytics/AuditLogView.swift @@ -14,6 +14,8 @@ final class AuditLogStore { private(set) var errorMessage: String? private(set) var nextCursor: String? private(set) var hasMore = false + /// Entries that just arrived live, lit briefly in the feed. + private(set) var fresh: Set = [] var actionFilter: String? var entityFilter: String? @@ -77,8 +79,14 @@ final class AuditLogStore { let known = Set(entries.map(\.id)) let new = fresh.filter { !known.contains($0.id) } if !new.isEmpty { - withAnimation(.snappy) { + withAnimation(.spring(response: 0.5, dampingFraction: 0.82)) { entries.insert(contentsOf: new, at: 0) + self.fresh.formUnion(new.map(\.id)) + } + let ids = Set(new.map(\.id)) + Task { + try? await Task.sleep(for: .seconds(2.4)) + withAnimation(.easeOut(duration: 0.8)) { self.fresh.subtract(ids) } } } } @@ -188,67 +196,137 @@ enum AuditFmt { } } - static func entityTone(_ raw: String?) -> Tone { + /// "delete" -> "deleted", for "Dev deleted a meeting". + static func verb(_ raw: String?) -> String { switch raw { - case "campaign", "step", "template", "unibox": - .sky - case "contact", "crm_pipeline", "crm_stage", "crm_deal", "crm_task", "crm_note": - .indigo - case "email_account", "warmup_routing_rule": - .orange - case "organization_member", "invitation", "team", "role", "user": - .emerald - case "api_key", "webhook", "integration", "lead_sync_source", "automation": - .amber - default: - .slate + case "create": "created" + case "update": "updated" + case "delete": "deleted" + case "send": "sent" + case "start": "started" + case "stop": "stopped" + case "pause": "paused" + case "resume": "resumed" + case "invite": "invited" + case "remove": "removed" + case "connect": "connected" + case "disconnect": "disconnected" + case "revoke": "revoked" + case "export": "exported" + case "import": "imported" + case "duplicate": "duplicated" + case "transfer": "transferred" + case "rotate", "rotate_keys": "rotated keys for" + case "test": "tested" + case "api_call": "called the API on" + case "apply": "applied" + case "install": "installed" + case "uninstall": "uninstalled" + case "assign": "assigned" + case "reboot": "rebooted" + default: humanize(raw).lowercased() } } + + /// The entity as a noun phrase with its article: "a meeting", "an API key". + static func noun(_ raw: String?) -> String { + let word: String = switch raw { + case "email_account": "mailbox" + case "organization_member": "member" + case "organization": "workspace" + case "crm_deal": "deal" + case "crm_task": "task" + case "crm_note": "note" + case "crm_pipeline": "pipeline" + case "crm_stage": "stage" + case "api_key": "API key" + case "lead_sync_source": "lead source" + case "warmup_routing_rule": "warmup rule" + case "unibox": "inbox thread" + case "step": "campaign step" + case nil, "": "something" + default: humanize(raw).lowercased() + } + if raw == "settings" || raw == "subscription" || word == "something" { + return raw == "subscription" ? "the subscription" : word + } + let article = "aeiou".contains(word.prefix(1).lowercased()) || word.hasPrefix("API") ? "an" : "a" + return "\(article) \(word)" + } + + /// The best human name the entry recorded for its target. + static func subject(_ entry: AuditLogEntry) -> String? { + let bag = entry.metadata ?? [:] + for key in ["title", "name", "subject", "email", "invitee_email", "label"] { + if let value = bag[key]?.trimmingCharacters(in: .whitespaces), !value.isEmpty { return value } + } + return nil + } } // MARK: - View -/// The org activity trail: every audited mutation, live. This feed is the -/// realtime spine made visible. +/// A quick entity filter above the feed. +enum AuditScope: String, CaseIterable, Hashable { + case all, campaigns, contacts, mailboxes, team, crm + + var title: String { + switch self { + case .all: "All" + case .campaigns: "Campaigns" + case .contacts: "Contacts" + case .mailboxes: "Mailboxes" + case .team: "Team" + case .crm: "Deals" + } + } + + var entity: String? { + switch self { + case .all: nil + case .campaigns: "campaign" + case .contacts: "contact" + case .mailboxes: "email_account" + case .team: "organization_member" + case .crm: "crm_deal" + } + } +} + +/// The org activity trail: every audited mutation as a live timeline, with +/// new entries sliding in at the top as teammates work. struct AuditLogView: View { @Environment(AppEnvironment.self) private var env @State private var store = AuditLogStore() + @State private var shown = false + #if DEBUG + @State private var debugOpen = false + #endif var body: some View { Group { if !env.session.can(.viewAnalytics) { - EmptyStateView( + CoverEmptyState( + symbol: "lock.fill", + color: WTheme.inkSecondary, title: "No access", message: "You need the view analytics permission to see the activity trail." ) - } else if !store.entries.isEmpty { - feed - } else if let error = store.errorMessage { + .frame(maxHeight: .infinity) + } else if let error = store.errorMessage, store.entries.isEmpty { ErrorStateView(title: "Couldn't load activity", message: error) { await store.load(env.api) } - } else if store.hasLoaded { - if store.hasFilters { - EmptyStateView( - title: "No matching entries", - message: "Nothing in the last 90 days matches these filters.", - ctaTitle: "Clear filters" - ) { - store.clearFilters() - Task { await store.load(env.api) } - } - } else { - EmptyStateView( - title: "No activity yet", - message: "Team actions appear here as they happen. Entries are kept for 90 days." - ) - } + } else if !store.hasLoaded { + ScrollView { AnalyticsLoadingCards().padding(16) } } else { - SkeletonRows(rows: 12) + feed } } + .background(WTheme.groupedPage) .navigationTitle("Activity") .navigationBarTitleDisplayMode(.inline) + .toolbarBackground(WTheme.groupedPage, for: .navigationBar) .toolbar { ToolbarItem(placement: .topBarTrailing) { filterMenu } } @@ -262,52 +340,233 @@ struct AuditLogView: View { .onChange(of: store.entityFilter) { Task { await store.load(env.api) } } + .sensoryFeedback(.impact(weight: .light), trigger: store.fresh.count) { old, new in new > old } + #if DEBUG + .navigationDestination(isPresented: $debugOpen) { + if let first = store.entries.first { AuditEntryDetailView(entry: first) } + } + .onChange(of: store.hasLoaded) { + debugOpen = ProcessInfo.processInfo.environment["WARMBLY_DEBUG_AUDIT_ENTRY"] != nil && !store.entries.isEmpty + } + #endif + } + + // MARK: Hero + + /// Today's count is exact once the oldest loaded entry predates today. + private var todayCount: (value: Int, exact: Bool) { + let today = store.entries.count { $0.when.map(Calendar.current.isDateInToday) ?? false } + let exact = !store.hasMore || (store.entries.last?.when.map { !Calendar.current.isDateInToday($0) } ?? true) + return (today, exact) + } + + private var recentActors: [AuditActor] { + var seen = Set() + var result: [AuditActor] = [] + for entry in store.entries { + guard let actor = entry.actor, let key = actor.id ?? actor.email, !seen.contains(key) else { continue } + seen.insert(key) + result.append(actor) + if result.count == 4 { break } + } + return result + } + + private var hero: some View { + let today = todayCount + let actors = recentActors + return VStack(alignment: .leading, spacing: 14) { + HStack(spacing: 7) { + LivePulse() + Text("Live") + .font(.system(size: 13, weight: .semibold)) + .foregroundStyle(WTheme.positive) + Spacer() + Text("Kept for 90 days") + .font(.system(size: 12.5)) + .foregroundStyle(WTheme.inkTertiary) + } + HStack(alignment: .firstTextBaseline, spacing: 8) { + CountUpText(value: shown ? Double(today.value) : 0, format: { "\(Int($0.rounded()))" }) + .font(.system(size: 40, weight: .semibold, design: .rounded)) + .monospacedDigit() + .foregroundStyle(WTheme.ink) + .contentTransition(.numericText()) + .animation(.spring(response: 0.9, dampingFraction: 0.9).delay(0.1), value: shown) + Text((today.exact ? "" : "+ ") + (today.value == 1 ? "change today" : "changes today")) + .font(.system(size: 15, weight: .medium)) + .foregroundStyle(WTheme.inkSecondary) + } + if !actors.isEmpty { + HStack(spacing: 10) { + HStack(spacing: -8) { + ForEach(Array(actors.enumerated()), id: \.offset) { index, actor in + WAvatar(name: actor.displayName ?? "?", seed: actor.id ?? actor.email ?? "", size: 28) + .overlay(Circle().stroke(WTheme.groupedCard, lineWidth: 2)) + .zIndex(Double(actors.count - index)) + .scaleEffect(shown ? 1 : 0.4) + .opacity(shown ? 1 : 0) + .animation(.spring(response: 0.5, dampingFraction: 0.65).delay(0.15 + Double(index) * 0.06), value: shown) + } + } + Text(actorsLine(actors)) + .font(.system(size: 13.5)) + .foregroundStyle(WTheme.inkSecondary) + .lineLimit(1) + } + } + } + .coverCard() + .reveal(shown, 0) + } + + private func actorsLine(_ actors: [AuditActor]) -> String { + let first = actors.first?.firstName.flatMap { $0.isEmpty ? nil : $0 } ?? actors.first?.displayName ?? "Someone" + switch actors.count { + case 1: return "\(first) has been busy" + case 2: return "\(first) and 1 teammate recently" + default: return "\(first) and \(actors.count - 1) teammates recently" + } + } + + // MARK: Feed + + private var scope: Binding { + Binding( + get: { AuditScope.allCases.first { $0.entity == store.entityFilter } ?? .all }, + set: { store.entityFilter = $0.entity } + ) } private var feed: some View { List { - ForEach(store.sections) { section in - // Day captions are bare rows, not sticky grouped headers. - AnalyticsSectionCaption( - section.label, - top: section.id == store.sections.first?.id ? 14 : 20 - ) - ForEach(section.entries) { entry in - NavigationLink { - AuditEntryDetailView(entry: entry) - } label: { - AuditRowView(entry: entry) + Section { + VStack(spacing: 14) { + if !store.hasFilters || store.actionFilter == nil { + hero } - .analyticsPlainRow(separatorLeading: 64) + ChipFilterRow(options: AuditScope.allCases, selection: scope, label: \.title) + if let action = store.actionFilter { + activeFilter(action) + } + } + .listRowInsets(EdgeInsets(top: 4, leading: 0, bottom: 0, trailing: 0)) + .listRowBackground(Color.clear) + .listRowSeparator(.hidden) + } + if store.entries.isEmpty { + Section { + emptyState + .listRowBackground(Color.clear) + .listRowSeparator(.hidden) } } - if store.hasMore { - HStack { - Spacer() - ProgressView() - Spacer() + ForEach(store.sections) { section in + Section { + ForEach(section.entries) { entry in + NavigationLink { + AuditEntryDetailView(entry: entry) + } label: { + AuditRowView(entry: entry) + } + .listRowBackground( + ZStack { + WTheme.groupedCard + if store.fresh.contains(entry.id) { + WTheme.accent.opacity(0.09).transition(.opacity) + } + } + ) + .listRowInsets(EdgeInsets(top: 10, leading: 14, bottom: 10, trailing: 14)) + .alignmentGuide(.listRowSeparatorLeading) { _ in 64 } + .transition(.asymmetric(insertion: .move(edge: .top).combined(with: .opacity), removal: .opacity)) + } + } header: { + CoverSectionHeader( + title: section.label, + count: section.entries.count, + color: section.id == Calendar.current.startOfDay(for: .now) ? WTheme.positive : nil, + pulsing: section.id == Calendar.current.startOfDay(for: .now) + ) } - .frame(height: 44) + } + if !store.entries.isEmpty { + Section { + if store.hasMore { + ProgressView() + .frame(maxWidth: .infinity) + .frame(height: 44) + .onAppear { + Task { await store.loadMore(env.api) } + } + } else { + Text("That's everything from the last 90 days") + .font(.system(size: 12.5, weight: .medium)) + .foregroundStyle(WTheme.inkTertiary) + .frame(maxWidth: .infinity) + .padding(.vertical, 6) + } + } + .listRowBackground(Color.clear) .listRowSeparator(.hidden) - .listRowBackground(Color(.systemBackground)) - .onAppear { - Task { await store.loadMore(env.api) } - } - } else { - Text("End of trail · 90 day retention") - .font(.footnote.weight(.medium)) - .foregroundStyle(.tertiary) - .frame(maxWidth: .infinity) - .padding(.vertical, 14) - .listRowSeparator(.hidden) - .listRowBackground(Color(.systemBackground)) } } - .listStyle(.plain) + .listStyle(.insetGrouped) + .listSectionSpacing(18) + .contentMargins(.horizontal, 16, for: .scrollContent) + .contentMargins(.top, 4, for: .scrollContent) + .contentMargins(.bottom, 100, for: .scrollContent) .scrollContentBackground(.hidden) - .environment(\.defaultMinListRowHeight, 0) - .background(Color(.systemBackground)) + .defaultScrollAnchor(SettingsDebug.anchor) .refreshable { await store.load(env.api) } + .onAppear { shown = true } + } + + private func activeFilter(_ action: String) -> some View { + HStack(spacing: 8) { + Image(systemName: AuditFmt.actionIcon(action)) + .font(.system(size: 12, weight: .semibold)) + Text("Only \(AuditFmt.verb(action))") + .font(.system(size: 13.5, weight: .medium)) + Spacer() + Button { + withAnimation(.snappy) { store.actionFilter = nil } + } label: { + Image(systemName: "xmark.circle.fill") + .font(.system(size: 17)) + .foregroundStyle(WTheme.inkTertiary) + } + .buttonStyle(.plain) + .accessibilityLabel("Clear action filter") + } + .foregroundStyle(AuditFmt.actionTone(action).color) + .padding(.horizontal, 14) + .frame(height: 40) + .background(AuditFmt.actionTone(action).background, in: Capsule()) + } + + @ViewBuilder + private var emptyState: some View { + if store.hasFilters { + CoverEmptyState( + symbol: "line.3.horizontal.decrease", + color: WTheme.inkSecondary, + title: "Nothing matches", + message: "Nothing in the last 90 days matches this filter.", + actionTitle: "Show everything", + action: { + store.clearFilters() + Task { await store.load(env.api) } + } + ) + } else { + CoverEmptyState( + symbol: "sparkles", + color: WTheme.positive, + title: "Quiet so far", + message: "Every change your team makes lands here the moment it happens." + ) + } } private var filterMenu: some View { @@ -316,7 +575,7 @@ struct AuditLogView: View { Picker("Action", selection: $store.actionFilter) { Text("All actions").tag(String?.none) ForEach(Self.filterActions, id: \.self) { action in - Text(AuditFmt.humanize(action)).tag(String?.some(action)) + Label(AuditFmt.humanize(action), systemImage: AuditFmt.actionIcon(action)).tag(String?.some(action)) } } Picker("Entity", selection: $store.entityFilter) { @@ -335,6 +594,7 @@ struct AuditLogView: View { ? "line.3.horizontal.decrease.circle.fill" : "line.3.horizontal.decrease.circle") } + .accessibilityLabel("Filter activity") } /// Open string enums server-side; this is the subset the web filter offers. @@ -352,70 +612,92 @@ struct AuditLogView: View { ] } +/// A green dot breathing a ring, for a live feed. +private struct LivePulse: View { + @State private var pulse = false + + var body: some View { + Circle() + .fill(WTheme.positive) + .frame(width: 8, height: 8) + .background { + Circle() + .fill(WTheme.positive.opacity(0.35)) + .scaleEffect(pulse ? 2.8 : 1) + .opacity(pulse ? 0 : 1) + } + .onAppear { + withAnimation(.easeOut(duration: 1.5).repeatForever(autoreverses: false)) { pulse = true } + } + } +} + // MARK: - Row +/// One entry as a sentence: who did what to which thing, and when. struct AuditRowView: View { let entry: AuditLogEntry private var actorLabel: String { - entry.actor?.displayName ?? "former member" + entry.actor?.displayName ?? "A former member" } var body: some View { - HStack(spacing: 12) { - IconTile(symbol: AuditFmt.actionIcon(entry.action), tone: AuditFmt.actionTone(entry.action), size: 36) + HStack(alignment: .top, spacing: 12) { + AuditActorBadge(entry: entry, size: 38) VStack(alignment: .leading, spacing: 3) { - HStack(spacing: 6) { - Text(AuditFmt.humanize(entry.action)) - .font(.body.weight(.medium)) + (Text(actorLabel).fontWeight(.semibold).foregroundStyle(WTheme.ink) + + Text(" \(AuditFmt.verb(entry.action)) \(AuditFmt.noun(entry.entityType))").foregroundStyle(WTheme.inkSecondary)) + .font(.system(size: 14.5)) + .lineLimit(2) + .fixedSize(horizontal: false, vertical: true) + if let subject = AuditFmt.subject(entry) { + Text(subject) + .font(.system(size: 13.5, weight: .medium)) + .foregroundStyle(WTheme.ink) .lineLimit(1) - AuditEntityChip(entityType: entry.entityType) } - HStack(spacing: 4) { - Text(actorLabel) - .lineLimit(1) - if let entityID = entry.entityID, !entityID.isEmpty { - Text("·") - Text(String(entityID.prefix(8))) - .font(.footnote.monospaced()) - } + if let when = entry.when { + Text(when.formatted(date: .omitted, time: .shortened)) + .font(.system(size: 12.5)) + .monospacedDigit() + .foregroundStyle(WTheme.inkTertiary) } - .font(.footnote) - .foregroundStyle(.secondary) - } - Spacer() - if let when = entry.when { - Text(WFormat.relative(when)) - .font(.footnote) - .monospacedDigit() - .foregroundStyle(.secondary) } + Spacer(minLength: 0) } - .padding(.vertical, 8) } } -struct AuditEntityChip: View { - let entityType: String? +/// The actor's avatar with the action riding its corner. +struct AuditActorBadge: View { + let entry: AuditLogEntry + var size: CGFloat = 38 var body: some View { - Text(AuditFmt.humanize(entityType).lowercased()) - .font(.system(size: 10, weight: .semibold)) - .foregroundStyle(AuditFmt.entityTone(entityType).color) - .padding(.horizontal, 6) - .padding(.vertical, 2.5) - .background(AuditFmt.entityTone(entityType).background, in: Capsule()) - .lineLimit(1) + let tone = AuditFmt.actionTone(entry.action) + WAvatar(name: entry.actor?.displayName ?? "?", seed: entry.actor?.id ?? entry.userID ?? "", size: size) + .overlay(alignment: .bottomTrailing) { + Image(systemName: AuditFmt.actionIcon(entry.action)) + .font(.system(size: size * 0.24, weight: .bold)) + .foregroundStyle(.white) + .frame(width: size * 0.46, height: size * 0.46) + .background(tone.color, in: Circle()) + .overlay(Circle().stroke(WTheme.groupedCard, lineWidth: 2)) + .offset(x: 4, y: 3) + } } } // MARK: - Detail -/// Full record for a single audited action: actor, target, request context, -/// and the recorded field changes / metadata. +/// Full record for a single audited action: the sentence, when and from +/// where, and the recorded field changes and metadata. struct AuditEntryDetailView: View { let entry: AuditLogEntry + @State private var copied: String? + private var changePairs: [(key: String, value: String)] { (entry.changes ?? [:]).sorted { $0.key < $1.key }.map { ($0.key, $0.value) } } @@ -425,75 +707,65 @@ struct AuditEntryDetailView: View { } var body: some View { - List { - HStack(spacing: 12) { - IconTile(symbol: AuditFmt.actionIcon(entry.action), tone: AuditFmt.actionTone(entry.action), size: 42) - VStack(alignment: .leading, spacing: 4) { - HStack(spacing: 6) { - Text(AuditFmt.humanize(entry.action)) - .font(.body.weight(.semibold)) - AuditEntityChip(entityType: entry.entityType) - } - Text(entry.actor?.displayName ?? "former member") - .font(.subheadline) - .foregroundStyle(.secondary) + SettingsPage(title: "Activity", spacing: 22) { + VStack(spacing: 12) { + AuditActorBadge(entry: entry, size: 64) + (Text(entry.actor?.displayName ?? "A former member").fontWeight(.semibold).foregroundStyle(WTheme.ink) + + Text(" \(AuditFmt.verb(entry.action)) \(AuditFmt.noun(entry.entityType))").foregroundStyle(WTheme.inkSecondary)) + .font(.system(size: 19)) + .multilineTextAlignment(.center) + if let subject = AuditFmt.subject(entry) { + Text(subject) + .font(.system(size: 15, weight: .medium)) + .foregroundStyle(WTheme.ink) + .padding(.horizontal, 12) + .padding(.vertical, 6) + .background(WTheme.fill, in: Capsule()) + } + if let when = entry.when { + Text(when.formatted(.dateTime.weekday(.wide).month(.wide).day().hour().minute())) + .font(.system(size: 13.5)) + .foregroundStyle(WTheme.inkTertiary) } - Spacer() } - .padding(.top, 16) - .padding(.bottom, 6) - .analyticsPlainRow(separator: .hidden) + .frame(maxWidth: .infinity) + .padding(.vertical, 20) + .padding(.horizontal, 16) + .background(WTheme.groupedCard, in: RoundedRectangle(cornerRadius: 22, style: .continuous)) - AnalyticsSectionCaption("Details") - if let when = entry.when { - AuditDetailRow(label: "When", value: when.formatted(date: .abbreviated, time: .standard)) - .analyticsPlainRow() - } - if let email = entry.actor?.email, !email.isEmpty { - AuditDetailRow(label: "Actor", value: email) - .analyticsPlainRow() - } - if let entityID = entry.entityID, !entityID.isEmpty { - AuditDetailRow(label: "Entity id", value: entityID, mono: true) - .analyticsPlainRow() - } - if let ip = entry.ipAddress, !ip.isEmpty { - AuditDetailRow(label: "IP address", value: ip, mono: true) - .analyticsPlainRow() - } - if let agent = entry.userAgent, !agent.isEmpty { - AuditDetailRow(label: "User agent", value: agent) - .analyticsPlainRow() + SettingsSection("Details", dividerLeading: 16) { + AuditDetailRow(label: "Type", value: AuditFmt.humanize(entry.entityType)) + if let email = entry.actor?.email, !email.isEmpty { + AuditDetailRow(label: "Actor", value: email, copied: $copied) + } + if let entityID = entry.entityID, !entityID.isEmpty { + AuditDetailRow(label: "Record id", value: entityID, mono: true, copied: $copied) + } + if let ip = entry.ipAddress, !ip.isEmpty { + AuditDetailRow(label: "IP address", value: ip, mono: true, copied: $copied) + } + if let agent = entry.userAgent, !agent.isEmpty { + AuditDetailRow(label: "Client", value: agent) + } } if !changePairs.isEmpty { - AnalyticsSectionCaption("Changes") - ForEach(changePairs, id: \.key) { pair in - AuditDetailRow(label: AuditFmt.humanize(pair.key), value: pair.value, mono: true) - .analyticsPlainRow() + SettingsSection("Changes", dividerLeading: 16) { + ForEach(changePairs, id: \.key) { pair in + AuditDetailRow(label: AuditFmt.humanize(pair.key), value: pair.value, mono: true, copied: $copied) + } } } if !metadataPairs.isEmpty { - AnalyticsSectionCaption("Metadata") - ForEach(metadataPairs, id: \.key) { pair in - AuditDetailRow(label: AuditFmt.humanize(pair.key), value: pair.value, mono: true) - .analyticsPlainRow() + SettingsSection("Recorded with it", dividerLeading: 16) { + ForEach(metadataPairs, id: \.key) { pair in + AuditDetailRow(label: AuditFmt.humanize(pair.key), value: pair.value, copied: $copied) + } } } - - Color.clear - .frame(height: 24) - .listRowInsets(EdgeInsets()) - .listRowSeparator(.hidden) - .listRowBackground(Color(.systemBackground)) } - .listStyle(.plain) - .scrollContentBackground(.hidden) - .environment(\.defaultMinListRowHeight, 0) - .background(Color(.systemBackground)) - .navigationTitle("Activity") - .navigationBarTitleDisplayMode(.inline) + .sensoryFeedback(.selection, trigger: copied) } } @@ -501,19 +773,39 @@ struct AuditDetailRow: View { let label: String let value: String var mono: Bool = false + var copied: Binding? var body: some View { - HStack(alignment: .top, spacing: 12) { + HStack(alignment: .firstTextBaseline, spacing: 12) { Text(label) - .font(.subheadline) - .foregroundStyle(.secondary) + .font(.system(size: 14)) + .foregroundStyle(WTheme.inkSecondary) .frame(width: 96, alignment: .leading) Text(value) - .font(mono ? .subheadline.monospaced() : .subheadline) - .foregroundStyle(.primary) + .font(mono ? .system(size: 13.5, design: .monospaced) : .system(size: 14.5)) + .foregroundStyle(WTheme.ink) .frame(maxWidth: .infinity, alignment: .leading) .textSelection(.enabled) + if let copied { + Button { + UIPasteboard.general.string = value + withAnimation(.snappy) { copied.wrappedValue = label } + Task { + try? await Task.sleep(for: .seconds(1.4)) + withAnimation(.snappy) { if copied.wrappedValue == label { copied.wrappedValue = nil } } + } + } label: { + Image(systemName: copied.wrappedValue == label ? "checkmark" : "doc.on.doc") + .font(.system(size: 13, weight: .medium)) + .foregroundStyle(copied.wrappedValue == label ? WTheme.positive : WTheme.inkTertiary) + .contentTransition(.symbolEffect(.replace)) + .frame(width: 28, height: 28) + } + .buttonStyle(.plain) + .accessibilityLabel("Copy \(label.lowercased())") + } } - .padding(.vertical, 6) + .padding(.horizontal, 16) + .padding(.vertical, 12) } } diff --git a/ios/Warmbly/Features/Assistant/AssistantStore.swift b/ios/Warmbly/Features/Assistant/AssistantStore.swift index 3e7f71010..5d7b1d302 100644 --- a/ios/Warmbly/Features/Assistant/AssistantStore.swift +++ b/ios/Warmbly/Features/Assistant/AssistantStore.swift @@ -42,6 +42,10 @@ final class AssistantChatStore { private(set) var freeModel = false private(set) var creditsRemaining: Int? private(set) var errorMessage: String? + /// The live run's start, step and step budget, for the working status. + private(set) var runStartedAt: Date? + private(set) var iteration = 0 + private(set) var budget = 0 private var streamTask: Task? @@ -107,6 +111,7 @@ final class AssistantChatStore { let trimmed = text.trimmingCharacters(in: .whitespacesAndNewlines) guard !trimmed.isEmpty, !isStreaming else { return } errorMessage = nil + beginRun() withAnimation(.snappy) { turns.append(Turn(role: "user", blocks: [Block(kind: .text, text: trimmed, done: true)])) } @@ -146,6 +151,7 @@ final class AssistantChatStore { guard let sessionID = session?.id, !isStreaming else { return } withAnimation(.snappy) { pending = nil } errorMessage = nil + beginRun() isStreaming = true streamTask = Task { do { @@ -205,6 +211,8 @@ final class AssistantChatStore { } case "iteration": if let credits = event.creditsRemaining { creditsRemaining = credits } + if let step = event.iteration { iteration = step } + if let total = event.budget { budget = total } case "done": if let credits = event.creditsRemaining { creditsRemaining = credits } if let free = event.freeModel { freeModel = free } @@ -215,6 +223,61 @@ final class AssistantChatStore { } } + #if DEBUG + /// Plays a scripted run through the real event folding, like the web's dev demo. + func playDemo(approval: Bool) { + guard !isStreaming else { return } + errorMessage = nil + beginRun() + withAnimation(.snappy) { + turns.append(Turn(role: "user", blocks: [Block(kind: .text, text: "Which mailboxes need attention?", done: true)])) + } + isStreaming = true + let reply = "Two mailboxes need a look. **anna@sunrise.io** is landing in spam at 14% on Gmail, so I'd lower its daily volume for a week. **mark@sunrise.io** failed to sync twice today with an auth error; reconnecting it should fix that.\n\n- Lower anna's cold limit from 50 to 30\n- Reconnect mark's mailbox" + streamTask = Task { + @MainActor func step(_ ms: Int, _ event: AgentStreamEvent) async throws { + try await Task.sleep(for: .milliseconds(ms)) + apply(event) + } + do { + try await step(900, AgentStreamEvent(type: "iteration", iteration: 1, creditsRemaining: 4820, budget: 8)) + try await step(300, AgentStreamEvent(type: "tool_start", tool: "list_email_accounts", argsSummary: "status: all")) + try await step(1300, AgentStreamEvent(type: "tool_result", tool: "list_email_accounts", result: "12 mailboxes")) + try await step(200, AgentStreamEvent(type: "tool_start", tool: "get_dashboard_analytics", argsSummary: "last 7 days")) + try await step(1200, AgentStreamEvent(type: "tool_result", tool: "get_dashboard_analytics", result: "inbox rate 91%")) + try await step(200, AgentStreamEvent(type: "tool_start", tool: "get_advisor_summary")) + try await step(1000, AgentStreamEvent(type: "tool_result", tool: "get_advisor_summary", result: "2 open findings")) + try await step(400, AgentStreamEvent(type: "iteration", iteration: 2, creditsRemaining: 4811, budget: 8)) + var sent = "" + for word in reply.split(separator: " ", omittingEmptySubsequences: false) { + let chunk = (sent.isEmpty ? "" : " ") + word + sent += chunk + try await step(45, AgentStreamEvent(type: "text_delta", text: chunk)) + } + try await step(100, AgentStreamEvent(type: "text", text: reply)) + if approval { + try await step(600, AgentStreamEvent( + type: "approval_required", + tool: "update_email_account", + risk: "write", + argsSummary: "email: anna@sunrise.io\ncampaign_limit: 50 -> 30", + toolCallID: "demo" + )) + } else { + try await step(200, AgentStreamEvent(type: "done", creditsRemaining: 4807)) + } + } catch {} + markStreamEnded() + } + } + #endif + + private func beginRun() { + runStartedAt = .now + iteration = 0 + budget = 0 + } + private func ensureAssistantTurn() -> Int { if let last = turns.indices.last, turns[last].role == "assistant" { return last diff --git a/ios/Warmbly/Features/Assistant/AssistantView.swift b/ios/Warmbly/Features/Assistant/AssistantView.swift index bd174bbc8..a5052fa25 100644 --- a/ios/Warmbly/Features/Assistant/AssistantView.swift +++ b/ios/Warmbly/Features/Assistant/AssistantView.swift @@ -1,62 +1,66 @@ import SwiftUI -/// The dashboard AI agent as a full-screen conversation: streaming answers, -/// tool steps as they run, approval cards for risky tools, and a history -/// sheet with search and grouped conversations. Entry is gated on `.useAI`. +/// Remie on the phone, shaped like the agent apps people already know: glass +/// controls over the conversation, answers in full-width type, a neutral +/// bubble for what you asked, swipeable starters and a floating composer. struct AssistantView: View { @Environment(AppEnvironment.self) private var env @Environment(\.dismiss) private var dismiss /// Context hint sent with the first message (web sends the current page). var page: String? + /// Sent as the first message when the view opens (Home's starter prompts). + var initialPrompt: String? @State private var chat = AssistantChatStore() @State private var input = "" @State private var showHistory = false + @State private var suggestions: [RemieSuggestion] = [] + @State private var appeared = false + @State private var boop = 0 + @State private var sent = 0 + @State private var atBottom = true @FocusState private var inputFocused: Bool + private struct Starter: Identifiable { + let title: String + let detail: String + let prompt: String + var dot: Color? + var id: String { prompt } + } + + private static let starters = [ + Starter(title: "Review my week", detail: "How are my campaigns doing?", prompt: "How are my campaigns doing this week?"), + Starter(title: "Mailbox health", detail: "Which mailboxes need attention?", prompt: "Which mailboxes need attention?"), + Starter(title: "Draft a follow-up", detail: "For my latest reply", prompt: "Draft a follow-up for my latest reply"), + Starter(title: "Find warm leads", detail: "Who replied positively lately?", prompt: "Which contacts replied positively in the last week?"), + ] + + private var starters: [Starter] { + guard !suggestions.isEmpty else { return Self.starters } + return suggestions.prefix(4).map { s in + Starter(title: s.text, detail: Self.severityLabel(s.severity), prompt: s.prompt, dot: s.dot) + } + } + + private static func severityLabel(_ severity: String) -> String { + switch severity { + case "critical": "Critical · ask Remie to fix it" + case "high": "High impact · ask Remie to fix it" + default: "Ask Remie to fix it" + } + } + var body: some View { NavigationStack { - VStack(spacing: 0) { - conversation - if let pending = chat.pending { - approvalCard(pending) - } - if let error = chat.errorMessage { - errorBanner(error) - } - inputBar - } - .background(Color(.systemBackground)) - .navigationTitle(chat.title ?? "Assistant") - .navigationBarTitleDisplayMode(.inline) - .toolbar { - ToolbarItem(placement: .cancellationAction) { - Button { - dismiss() - } label: { - Image(systemName: "xmark") - } - .accessibilityLabel("Close assistant") - } - ToolbarItemGroup(placement: .topBarTrailing) { - Button { - showHistory = true - } label: { - Image(systemName: "clock.arrow.circlepath") - } - .accessibilityLabel("Conversation history") - Button { - withAnimation(.snappy) { chat.newChat() } - inputFocused = true - } label: { - Image(systemName: "square.and.pencil") - } - .disabled(chat.isEmpty) - .accessibilityLabel("New chat") - } - } + content + .background(WTheme.canvas) + .safeAreaInset(edge: .bottom, spacing: 0) { bottomBar } + .navigationBarTitleDisplayMode(.inline) + .toolbar { toolbar } } + .tint(WTheme.ink) .sheet(isPresented: $showHistory) { AssistantHistoryView { session in showHistory = false @@ -64,324 +68,503 @@ struct AssistantView: View { } } .onDisappear { chat.stop() } + .task { + guard let initialPrompt, chat.isEmpty else { return } + #if DEBUG + if initialPrompt.hasPrefix("demo") { + chat.playDemo(approval: initialPrompt == "demo-approval") + return + } + #endif + chat.send(env.api, text: initialPrompt, page: page) + } + .task { await loadSuggestions() } + .onAppear { + withAnimation(.spring(response: 0.6, dampingFraction: 0.86)) { appeared = true } + } + .sensoryFeedback(.impact(weight: .light), trigger: sent) + .sensoryFeedback(trigger: chat.isStreaming) { was, now in + was && !now && chat.errorMessage == nil ? .success : nil + } } - // MARK: Conversation + private var markState: RemieMarkState { + if chat.pending != nil { return .attention } + return chat.isStreaming ? .thinking : .idle + } + + // MARK: Toolbar + + @ToolbarContentBuilder + private var toolbar: some ToolbarContent { + ToolbarItem(placement: .topBarLeading) { + Button { + dismiss() + } label: { + Image(systemName: "chevron.down") + } + .accessibilityLabel("Close Remie") + } + ToolbarItem(placement: .principal) { + HStack(spacing: 7) { + RemieMark(size: 20, state: markState, celebrate: chat.errorMessage == nil, boop: boop) + Text(chat.title.flatMap { $0.isEmpty ? nil : $0 } ?? "Remie") + .font(.system(size: 16, weight: .semibold)) + .foregroundStyle(WTheme.ink) + .lineLimit(1) + .contentTransition(.opacity) + } + .frame(maxWidth: 220) + .animation(.easeOut(duration: 0.2), value: chat.title) + } + ToolbarItemGroup(placement: .topBarTrailing) { + Button { + showHistory = true + } label: { + Image(systemName: "clock.arrow.circlepath") + } + .accessibilityLabel("Conversation history") + Button { + withAnimation(.snappy) { chat.newChat() } + inputFocused = true + } label: { + Image(systemName: "square.and.pencil") + } + .disabled(chat.isEmpty) + .accessibilityLabel("New chat") + } + } + + // MARK: Content @ViewBuilder - private var conversation: some View { + private var content: some View { if chat.isLoadingTranscript { - ProgressView() - .frame(maxWidth: .infinity, maxHeight: .infinity) - } else if chat.turns.isEmpty { + loadingSkeleton + } else if chat.turns.isEmpty, !chat.isStreaming { emptyState } else { - ScrollViewReader { proxy in - ScrollView { - VStack(alignment: .leading, spacing: 14) { - ForEach(chat.turns) { turn in - turnView(turn) - } - if chat.isStreaming, awaitingFirstBlock { - thinkingRow - } - Color.clear.frame(height: 1).id("bottom") + conversation + } + } + + private var conversation: some View { + ScrollViewReader { proxy in + ScrollView { + VStack(alignment: .leading, spacing: 22) { + ForEach(chat.turns) { turn in + turnView(turn, streaming: chat.isStreaming && chat.pending == nil && turn.id == chat.turns.last?.id) } - .padding(.horizontal, 16) - .padding(.vertical, 14) - .frame(maxWidth: .infinity, alignment: .leading) + if let pending = chat.pending { + RemieApprovalCard(pending: pending) { decision in + chat.decide(env.api, decision: decision) + } + .transition(.asymmetric( + insertion: .scale(scale: 0.96, anchor: .bottom).combined(with: .opacity).combined(with: .offset(y: 10)), + removal: .opacity.combined(with: .scale(scale: 0.98)) + )) + } + if chat.isStreaming, chat.pending == nil { + RemieWorkingStatus( + label: phase, + since: chat.runStartedAt, + step: chat.iteration, + budget: chat.budget + ) + .transition(.opacity.combined(with: .offset(y: 4))) + } + if let error = chat.errorMessage { + errorRow(error) + } + Color.clear.frame(height: 1).id("bottom") } - .scrollDismissesKeyboard(.interactively) - .onChange(of: chat.turns.last?.blocks.last?.text) { - proxy.scrollTo("bottom", anchor: .bottom) - } - .onChange(of: chat.turns.count) { - withAnimation(.snappy) { proxy.scrollTo("bottom", anchor: .bottom) } + .padding(.horizontal, 20) + .padding(.top, 12) + .padding(.bottom, 24) + .frame(maxWidth: .infinity, alignment: .leading) + .animation(.spring(response: 0.42, dampingFraction: 0.86), value: chat.pending?.toolCallID) + .animation(.easeOut(duration: 0.2), value: chat.isStreaming) + } + .defaultScrollAnchor(.bottom) + .defaultScrollAnchor(.bottom, for: .sizeChanges) + .scrollEdgeEffectStyle(.soft, for: .vertical) + .scrollDismissesKeyboard(.interactively) + .onScrollGeometryChange(for: Bool.self) { geo in + geo.contentSize.height <= geo.containerSize.height || geo.visibleRect.maxY >= geo.contentSize.height - 80 + } action: { _, isAtBottom in + withAnimation(.snappy) { atBottom = isAtBottom } + } + .onChange(of: chat.turns.count) { + withAnimation(.snappy) { proxy.scrollTo("bottom", anchor: .bottom) } + } + .overlay(alignment: .bottom) { + if !atBottom { + Button { + withAnimation(.snappy) { proxy.scrollTo("bottom", anchor: .bottom) } + } label: { + Image(systemName: "arrow.down") + .font(.system(size: 14, weight: .semibold)) + .foregroundStyle(WTheme.ink) + .frame(width: 40, height: 40) + } + .buttonStyle(TapScaleStyle()) + .glassEffect(.regular.interactive(), in: Circle()) + .padding(.bottom, 10) + .transition(.scale(scale: 0.6).combined(with: .opacity)) + .accessibilityLabel("Jump to latest") } } } } - /// True until the run's first block arrives, so the user sees activity. - private var awaitingFirstBlock: Bool { - guard let last = chat.turns.last else { return true } - return last.role == "user" || last.blocks.isEmpty - } - - private var thinkingRow: some View { - HStack(spacing: 8) { - Image(systemName: "sparkles") - .font(.system(size: 13, weight: .semibold)) - .foregroundStyle(Tone.indigo.color) - .symbolEffect(.pulse) - Text("Thinking…") - .font(.subheadline) - .foregroundStyle(.secondary) - .skeletonShimmer() + /// What the live run is doing, read off the tail of the transcript. + private var phase: String { + guard let last = chat.turns.last, last.role == "assistant", let block = last.blocks.last else { + return "Thinking" } - .transition(.opacity) + if block.kind == .tool, !block.done { return "Working" } + if block.kind == .text, block.live { return "Writing" } + return "Thinking" } - private var emptyState: some View { - VStack(spacing: 14) { - Spacer() - Image(systemName: "sparkles") - .font(.system(size: 34, weight: .medium)) - .foregroundStyle(Tone.indigo.color) - Text("Ask your workspace") - .font(.title3.weight(.semibold)) - Text("Campaign performance, contact lookups, drafting help — the assistant can read and act on your workspace, and asks before anything risky.") - .font(.footnote) - .foregroundStyle(.secondary) - .multilineTextAlignment(.center) - .padding(.horizontal, 36) - VStack(spacing: 8) { - suggestionChip("How are my campaigns doing this week?") - suggestionChip("Which mailboxes need attention?") - suggestionChip("Draft a follow-up for my latest reply") + private var loadingSkeleton: some View { + VStack(alignment: .leading, spacing: 22) { + HStack { + Spacer() + RoundedRectangle(cornerRadius: 20, style: .continuous) + .fill(WTheme.fill) + .frame(width: 170, height: 42) + } + VStack(alignment: .leading, spacing: 10) { + ForEach([0.94, 0.82, 0.58], id: \.self) { width in + RoundedRectangle(cornerRadius: 5) + .fill(WTheme.fill) + .frame(height: 13) + .containerRelativeFrame(.horizontal) { length, _ in (length - 40) * width } + } } - .padding(.top, 6) - Spacer() Spacer() } - .frame(maxWidth: .infinity) - } - - private func suggestionChip(_ text: String) -> some View { - Button { - chat.send(env.api, text: text, page: page) - } label: { - Text(text) - .font(.footnote.weight(.medium)) - .foregroundStyle(.primary) - .padding(.horizontal, 14) - .padding(.vertical, 8) - .background(Color(.secondarySystemBackground), in: Capsule()) - } - .buttonStyle(TapScaleStyle()) + .skeletonShimmer() + .padding(20) + .frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .topLeading) } // MARK: Turns @ViewBuilder - private func turnView(_ turn: AssistantChatStore.Turn) -> some View { + private func turnView(_ turn: AssistantChatStore.Turn, streaming: Bool) -> some View { if turn.role == "user" { HStack { - Spacer(minLength: 48) - Text(turn.blocks.first?.text ?? "") - .font(.subheadline) - .foregroundStyle(.white) - .padding(.horizontal, 13) - .padding(.vertical, 9) - .background(WTheme.accent, in: RoundedRectangle(cornerRadius: 17, style: .continuous)) + Spacer(minLength: 60) + Text(turn.blocks.map(\.text).joined()) + .font(.system(size: 16)) + .lineSpacing(3) + .foregroundStyle(WTheme.ink) + .textSelection(.enabled) + .padding(.horizontal, 15) + .padding(.vertical, 10) + .background(WTheme.fill, in: RoundedRectangle(cornerRadius: 21, style: .continuous)) } + .transition(.asymmetric( + insertion: .scale(scale: 0.94, anchor: .bottomTrailing) + .combined(with: .opacity) + .combined(with: .offset(y: 10)), + removal: .opacity + )) } else { - VStack(alignment: .leading, spacing: 8) { - ForEach(turn.blocks) { block in - blockView(block) + let segments = Self.segments(turn.blocks) + let lastIndex = turn.blocks.count - 1 + let finished = !streaming && !(chat.isStreaming && turn.id == chat.turns.last?.id) + let answer = turn.blocks.filter { $0.kind == .text }.map(\.text).joined(separator: "\n\n") + VStack(alignment: .leading, spacing: 12) { + ForEach(segments) { segment in + switch segment.kind { + case let .tools(steps): + RemieActivityTrace( + steps: steps, + live: streaming && segment.id == segments.last?.id, + streaming: chat.isStreaming + ) + case let .text(block, index): + if !block.text.isEmpty { + if streaming && index == lastIndex { + RemieSmoothText(text: block.text) + } else { + RemieMarkdown(text: block.text) + } + } + } + } + if finished, !answer.isEmpty { + RemieTurnActions(text: answer) + .transition(.opacity) } } + .transition(.opacity) } } - @ViewBuilder - private func blockView(_ block: AssistantChatStore.Block) -> some View { - switch block.kind { - case .text: - Text(markdown(block.text) + (block.live ? AttributedString(" ▍") : AttributedString())) - .font(.subheadline) - .foregroundStyle(.primary) - .frame(maxWidth: .infinity, alignment: .leading) - .textSelection(.enabled) - case .tool: - toolChip(block) + private struct Segment: Identifiable { + enum Kind { + case tools([AssistantChatStore.Block]) + case text(AssistantChatStore.Block, Int) } + + let id: UUID + var kind: Kind } - private func toolChip(_ block: AssistantChatStore.Block) -> some View { - HStack(spacing: 8) { - if block.done { - Image(systemName: "checkmark.circle.fill") - .font(.system(size: 13, weight: .semibold)) - .foregroundStyle(Tone.emerald.color) + /// Folds consecutive tool calls into one trace, keyed by its first step so + /// a trace keeps its open state as steps stream in. + private static func segments(_ blocks: [AssistantChatStore.Block]) -> [Segment] { + var out: [Segment] = [] + for (index, block) in blocks.enumerated() { + guard block.kind == .tool else { + out.append(Segment(id: block.id, kind: .text(block, index))) + continue + } + if let last = out.indices.last, case var .tools(steps) = out[last].kind { + steps.append(block) + out[last].kind = .tools(steps) } else { - ProgressView().controlSize(.mini) + out.append(Segment(id: block.id, kind: .tools([block]))) } - VStack(alignment: .leading, spacing: 1) { - Text(AgentToolDisplay.label(block.tool)) - .font(.footnote.weight(.semibold)) - .foregroundStyle(.primary) - if let summary = block.argsSummary, !summary.isEmpty { - Text(summary) - .font(.caption) - .foregroundStyle(.secondary) - .lineLimit(2) - } + } + return out + } + + private func errorRow(_ message: String) -> some View { + HStack(alignment: .top, spacing: 10) { + Image(systemName: "exclamationmark.circle.fill") + .font(.system(size: 16)) + .foregroundStyle(WTheme.negative) + VStack(alignment: .leading, spacing: 2) { + Text("Remie couldn't finish") + .font(.system(size: 15, weight: .semibold)) + .foregroundStyle(WTheme.ink) + Text(message.prefix(1).uppercased() + message.dropFirst()) + .font(.system(size: 14)) + .foregroundStyle(WTheme.inkSecondary) + .fixedSize(horizontal: false, vertical: true) } Spacer(minLength: 0) } - .padding(.horizontal, 12) - .padding(.vertical, 8) - .background(Color(.secondarySystemBackground), in: RoundedRectangle(cornerRadius: 12, style: .continuous)) - .transition(.move(edge: .bottom).combined(with: .opacity)) + .padding(14) + .background(WTheme.negative.opacity(0.07), in: RoundedRectangle(cornerRadius: 18, style: .continuous)) + .transition(.opacity.combined(with: .offset(y: 6))) } - private func markdown(_ text: String) -> AttributedString { - (try? AttributedString( - markdown: text, - options: AttributedString.MarkdownParsingOptions( - interpretedSyntax: .inlineOnlyPreservingWhitespace - ) - )) ?? AttributedString(text) - } + // MARK: Empty state - // MARK: Approval - - /// A risky tool paused the run: show what it wants to do and let the - /// member approve once, always allow the tool, or deny it. - private func approvalCard(_ pending: AgentPendingTool) -> some View { - let tone: Tone = pending.risk == "high" ? .rose : pending.risk == "medium" ? .amber : .slate - return VStack(alignment: .leading, spacing: 10) { - HStack(spacing: 8) { - Image(systemName: "hand.raised.fill") - .font(.system(size: 13, weight: .semibold)) - .foregroundStyle(tone.color) - Text("Approval needed · \(AgentToolDisplay.label(pending.toolName))") - .font(.footnote.weight(.semibold)) - Spacer(minLength: 0) - if let risk = pending.risk, !risk.isEmpty { - Text(risk.uppercased()) - .font(.system(size: 10, weight: .bold)) - .foregroundStyle(tone.color) - .padding(.horizontal, 7) - .padding(.vertical, 2.5) - .background(tone.background, in: Capsule()) + private var emptyState: some View { + ScrollView { + VStack(spacing: 0) { + ZStack { + Circle() + .fill(RadialGradient( + colors: [Remie.sky500.opacity(0.18), Remie.sky500.opacity(0)], + center: .center, + startRadius: 0, + endRadius: 110 + )) + .frame(width: 220, height: 220) + .scaleEffect(appeared ? 1 : 0.6) + RemieMark(size: 76, boop: boop, tappable: true) + .scaleEffect(appeared ? 1 : 0.7) } + .frame(height: 170) + Text("Hi, I'm Remie") + .displayFont(30, weight: .semibold) + .foregroundStyle(WTheme.ink) + Text("I look into your outreach and fix things for you. I always ask before changing anything.") + .font(.system(size: 16)) + .lineSpacing(3) + .multilineTextAlignment(.center) + .foregroundStyle(WTheme.inkSecondary) + .frame(maxWidth: 310) + .padding(.top, 10) } - if let summary = pending.argsSummary, !summary.isEmpty { - Text(summary) - .font(.footnote) - .foregroundStyle(.secondary) - } - HStack(spacing: 8) { - Button { - chat.decide(env.api, decision: "approve") - } label: { - Text("Approve") - .font(.footnote.weight(.semibold)) - .foregroundStyle(.white) - .padding(.horizontal, 14) - .padding(.vertical, 7) - .background(WTheme.accent, in: Capsule()) - } - .buttonStyle(TapScaleStyle()) - Button { - chat.decide(env.api, decision: "always_allow") - } label: { - Text("Always allow") - .font(.footnote.weight(.semibold)) - .foregroundStyle(WTheme.accent) - .padding(.horizontal, 14) - .padding(.vertical, 7) - .background(Tone.sky.background, in: Capsule()) - } - .buttonStyle(TapScaleStyle()) - Button { - chat.decide(env.api, decision: "deny") - } label: { - Text("Deny") - .font(.footnote.weight(.semibold)) - .foregroundStyle(WTheme.negative) - .padding(.horizontal, 14) - .padding(.vertical, 7) - .background(Tone.rose.background, in: Capsule()) - } - .buttonStyle(TapScaleStyle()) - Spacer(minLength: 0) - } + .opacity(appeared ? 1 : 0) + .offset(y: appeared ? 0 : 12) + .padding(.horizontal, 24) + .frame(maxWidth: .infinity) + .containerRelativeFrame(.vertical, alignment: .center) { length, _ in length } } - .padding(12) - .background(Color(.secondarySystemBackground), in: RoundedRectangle(cornerRadius: 14, style: .continuous)) - .padding(.horizontal, 12) - .padding(.bottom, 6) - .transition(.move(edge: .bottom).combined(with: .opacity)) + .scrollBounceBehavior(.basedOnSize) + .scrollDismissesKeyboard(.interactively) } - private func errorBanner(_ error: String) -> some View { - Text(error) - .font(.footnote) - .foregroundStyle(WTheme.negative) - .frame(maxWidth: .infinity, alignment: .leading) - .padding(.horizontal, 16) - .padding(.vertical, 6) - } - - // MARK: Input - - private var inputBar: some View { - VStack(spacing: 0) { - Divider() + /// Swipeable starters above the composer: the Advisor's open problems when + /// there are any, else everyday asks. + private var starterCards: some View { + ScrollView(.horizontal, showsIndicators: false) { HStack(spacing: 10) { - TextField("Ask anything…", text: $input, axis: .vertical) - .font(.subheadline) - .lineLimit(1 ... 4) - .focused($inputFocused) - .padding(.horizontal, 12) - .padding(.vertical, 9) - .background( - Color(.secondarySystemBackground), - in: RoundedRectangle(cornerRadius: 18, style: .continuous) + ForEach(Array(starters.enumerated()), id: \.element.id) { index, starter in + Button { + send(starter.prompt) + } label: { + VStack(alignment: .leading, spacing: 4) { + HStack(spacing: 7) { + if let dot = starter.dot { + Circle().fill(dot).frame(width: 7, height: 7) + } + Text(starter.title) + .font(.system(size: 15, weight: .semibold)) + .foregroundStyle(WTheme.ink) + .lineLimit(1) + } + Text(starter.detail) + .font(.system(size: 13.5)) + .foregroundStyle(WTheme.inkSecondary) + .lineLimit(1) + } + .frame(width: 210, alignment: .leading) + .padding(.horizontal, 15) + .padding(.vertical, 12) + .background(WTheme.surface, in: RoundedRectangle(cornerRadius: 18, style: .continuous)) + } + .buttonStyle(TapScaleStyle()) + .opacity(appeared ? 1 : 0) + .offset(x: appeared ? 0 : 24) + .animation( + .spring(response: 0.5, dampingFraction: 0.86).delay(0.12 + Double(index) * 0.06), + value: appeared ) - if chat.isStreaming { - Button { - chat.stop() - } label: { - Image(systemName: "stop.circle.fill") - .font(.system(size: 28)) - .foregroundStyle(WTheme.negative) - } - .accessibilityLabel("Stop") - } else { - Button { - let text = input - input = "" - chat.send(env.api, text: text, page: page) - } label: { - Image(systemName: "arrow.up.circle.fill") - .font(.system(size: 28)) - .foregroundStyle( - input.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty - ? Color(.systemGray3) : WTheme.accent - ) - } - .disabled(input.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty || chat.pending != nil) - .accessibilityLabel("Send") } } - .padding(.horizontal, 12) - .padding(.vertical, 8) - if let footnote = inputFootnote { - Text(footnote) - .font(.caption2) - .foregroundStyle(.tertiary) - .frame(maxWidth: .infinity, alignment: .center) - .padding(.bottom, 6) - } + .padding(.horizontal, 16) } - .background(.bar) + .scrollClipDisabled() + .animation(.easeOut(duration: 0.25), value: suggestions.count) } - private var inputFootnote: String? { - if chat.freeModel { return "Free model · no credits charged" } - if let credits = chat.creditsRemaining { return "\(WFormat.compact(credits)) credits left" } - return nil + private func loadSuggestions() async { + guard env.session.can(.viewAnalytics) else { return } + struct Page: Decodable { var data: [RemieAdvisorFinding]? } + guard let page: Page = try? await env.api.get("advisor/recommendations", query: ["limit": "50"]) else { return } + withAnimation(.easeOut(duration: 0.2)) { + suggestions = RemieSuggestion.from(page.data ?? []) + } + } + + // MARK: Composer + + private var canSend: Bool { + !input.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty && chat.pending == nil && !chat.isStreaming + } + + private func send(_ text: String) { + guard chat.pending == nil, !chat.isStreaming else { return } + sent += 1 + chat.send(env.api, text: text, page: page) + } + + private var bottomBar: some View { + VStack(spacing: 10) { + if chat.turns.isEmpty, !chat.isStreaming, !chat.isLoadingTranscript { + starterCards + .transition(.opacity.combined(with: .offset(y: 8))) + } + composer + .padding(.horizontal, 12) + footnote + .padding(.horizontal, 20) + } + .padding(.top, 8) + .padding(.bottom, 4) + .animation(.spring(response: 0.4, dampingFraction: 0.88), value: chat.turns.isEmpty) + } + + private var composer: some View { + HStack(alignment: .bottom, spacing: 10) { + TextField( + chat.pending != nil ? "Answer the approval first" : "Ask Remie anything", + text: $input, + axis: .vertical + ) + .font(.system(size: 16.5)) + .foregroundStyle(WTheme.ink) + .lineLimit(1 ... 6) + .focused($inputFocused) + .disabled(chat.pending != nil) + .padding(.vertical, 11) + .onChange(of: input) { old, new in + if new.count > old.count { boop += 1 } + } + + composerButton + .padding(.bottom, 6) + } + .padding(.leading, 18) + .padding(.trailing, 6) + .glassEffect(.regular.interactive(), in: RoundedRectangle(cornerRadius: 26, style: .continuous)) + .contentShape(RoundedRectangle(cornerRadius: 26, style: .continuous)) + .onTapGesture { inputFocused = true } + .animation(.spring(response: 0.3, dampingFraction: 0.8), value: chat.isStreaming) + .animation(.spring(response: 0.3, dampingFraction: 0.8), value: canSend) + } + + @ViewBuilder + private var composerButton: some View { + if chat.isStreaming { + Button { + chat.stop() + } label: { + Image(systemName: "square.fill") + .font(.system(size: 11, weight: .bold)) + .foregroundStyle(WTheme.inkInverse) + .frame(width: 36, height: 36) + .background(WTheme.ink, in: Circle()) + } + .buttonStyle(TapScaleStyle()) + .accessibilityLabel("Stop") + .transition(.scale(scale: 0.5).combined(with: .opacity)) + } else { + Button { + let text = input + input = "" + send(text) + } label: { + Image(systemName: "arrow.up") + .font(.system(size: 15, weight: .bold)) + .foregroundStyle(canSend ? WTheme.inkInverse : WTheme.inkTertiary) + .frame(width: 36, height: 36) + .background(canSend ? WTheme.ink : WTheme.fill, in: Circle()) + } + .buttonStyle(TapScaleStyle()) + .disabled(!canSend) + .accessibilityLabel("Send") + .transition(.scale(scale: 0.5).combined(with: .opacity)) + } + } + + private var footnote: some View { + HStack(spacing: 6) { + if chat.freeModel { + Text("Free local model, nothing is charged") + } else { + Text("Reads run on their own. Changes ask you first.") + if let credits = chat.creditsRemaining { + Text("·") + Text("\(credits.formatted()) credits") + .monospacedDigit() + .contentTransition(.numericText()) + } + } + } + .font(.system(size: 11.5)) + .foregroundStyle(WTheme.inkTertiary) + .lineLimit(1) + .minimumScaleFactor(0.85) + .frame(maxWidth: .infinity) } } // MARK: - History -/// Conversation history sheet: grouped sections, title search, swipe delete, -/// and Clear history — the mobile mirror of the web history rail. +/// Conversation history sheet: grouped hairline rows, title search, swipe +/// delete, and Clear history. The mobile mirror of the web history rail. struct AssistantHistoryView: View { @Environment(AppEnvironment.self) private var env @Environment(\.dismiss) private var dismiss @@ -397,6 +580,7 @@ struct AssistantHistoryView: View { Group { if store.isLoading, !store.hasLoaded { ProgressView() + .tint(WTheme.inkSecondary) .frame(maxWidth: .infinity, maxHeight: .infinity) } else if let error = store.errorMessage { EmptyStateView(title: "Couldn't load history", message: error) @@ -405,7 +589,8 @@ struct AssistantHistoryView: View { title: store.query.isEmpty ? "No conversations yet" : "No matches", message: store.query.isEmpty ? "Conversations with the assistant show up here." - : "No conversation matches \"\(store.query)\"." + : "No conversation matches \"\(store.query)\".", + symbol: "sparkle" ) } else { List { @@ -413,9 +598,17 @@ struct AssistantHistoryView: View { Section { ForEach(group.sessions) { session in row(session) + .listRowInsets(EdgeInsets(top: 0, leading: 20, bottom: 0, trailing: 20)) + .listRowBackground(WTheme.canvas) + .listRowSeparatorTint(WTheme.hairline) } } header: { EyebrowLabel(group.title) + .padding(.top, 10) + .padding(.bottom, 2) + .frame(maxWidth: .infinity, alignment: .leading) + .background(WTheme.canvas) + .listRowInsets(EdgeInsets(top: 0, leading: 20, bottom: 0, trailing: 20)) } } if store.hasMore { @@ -424,14 +617,20 @@ struct AssistantHistoryView: View { ProgressView().controlSize(.small) Spacer() } + .listRowBackground(WTheme.canvas) + .listRowSeparator(.hidden) .onAppear { Task { await store.loadMore(env.api) } } } } .listStyle(.plain) + .scrollContentBackground(.hidden) + .environment(\.defaultMinListRowHeight, 0) } } + .background(WTheme.canvas) .navigationTitle("History") .navigationBarTitleDisplayMode(.inline) + .toolbarBackground(WTheme.canvas, for: .navigationBar) .searchable( text: $store.query, placement: .navigationBarDrawer(displayMode: .always), @@ -464,8 +663,10 @@ struct AssistantHistoryView: View { } } } + .tint(WTheme.ink) .presentationDetents([.large]) .presentationDragIndicator(.visible) + .presentationBackground(WTheme.canvas) .task { await store.load(env.api) } .onChange(of: env.realtime.pulse(for: .ai)) { Task { await store.load(env.api) } @@ -477,34 +678,39 @@ struct AssistantHistoryView: View { onSelect(session) } label: { HStack(spacing: 10) { - VStack(alignment: .leading, spacing: 2) { + VStack(alignment: .leading, spacing: 4) { Text(session.displayTitle) - .font(.subheadline.weight(.medium)) - .foregroundStyle(.primary) + .font(.system(size: 15, weight: .medium)) + .foregroundStyle(WTheme.ink) .lineLimit(1) HStack(spacing: 6) { // Owner attribution appears only with shared history on. if let owner = session.userName, !owner.isEmpty { Text(owner) - .font(.caption) - .foregroundStyle(.secondary) + .font(.system(size: 12.5)) + .foregroundStyle(WTheme.inkSecondary) + .lineLimit(1) } Text(UniboxFormat.listTime(session.updatedAt ?? session.createdAt)) - .font(.caption) - .monospacedDigit() - .foregroundStyle(.tertiary) + .font(WFont.meta(11.5)) + .foregroundStyle(WTheme.inkTertiary) } } Spacer(minLength: 8) if session.context?.pending != nil { - Image(systemName: "hand.raised.fill") - .font(.system(size: 12, weight: .semibold)) + Image(systemName: "hand.raised") + .font(.system(size: 12, weight: .medium)) .foregroundStyle(Tone.amber.color) .accessibilityLabel("Waiting for approval") } + Image(systemName: "chevron.right") + .font(.system(size: 11, weight: .medium)) + .foregroundStyle(WTheme.inkTertiary) } - .padding(.vertical, 2) + .padding(.vertical, 12) + .contentShape(Rectangle()) } + .buttonStyle(.plain) .swipeActions(edge: .trailing) { Button(role: .destructive) { Task { await store.delete(env.api, id: session.id) } diff --git a/ios/Warmbly/Features/Assistant/RemieMark.swift b/ios/Warmbly/Features/Assistant/RemieMark.swift new file mode 100644 index 000000000..083cb02dc --- /dev/null +++ b/ios/Warmbly/Features/Assistant/RemieMark.swift @@ -0,0 +1,362 @@ +import SwiftUI + +/// Remie's palette, matching the web panel. +enum Remie { + static let sky500 = Color(hex: 0x0EA5E9) + static let sky600 = Color(hex: 0x0284C7) + static let emerald = Color(hex: 0x10B981) + static let amber = Color.dynamic(light: 0xB45309, dark: 0xFBBF24) + static let amberTint = Color.dynamic(light: 0xFFFBEB, dark: 0x2A2010) + static let amberLine = Color.dynamic(light: 0xFDE68A, dark: 0x4A3713) +} + +enum RemieMarkState: Equatable { + case idle, thinking, attention +} + +/// What the mark shows: the run state plus the done and muted looks. +enum RemieLook: Equatable { + case idle, thinking, attention, done, muted + + var colors: (Color, Color, Color) { + switch self { + case .idle, .thinking: (Color(hex: 0x7DD3FC), Color(hex: 0x0EA5E9), Color(hex: 0x2563EB)) + case .attention: (Color(hex: 0xFCD34D), Color(hex: 0xF59E0B), Color(hex: 0xEA580C)) + case .done: (Color(hex: 0x6EE7B7), Color(hex: 0x10B981), Color(hex: 0x0D9488)) + case .muted: ( + Color.dynamic(light: 0xE2E8F0, dark: 0x62666D), + Color.dynamic(light: 0x94A3B8, dark: 0x35373C), + Color.dynamic(light: 0xCBD5E1, dark: 0x26272B) + ) + } + } + + var tint: Color { + switch self { + case .idle, .thinking: Color(hex: 0x0EA5E9) + case .attention: Color(hex: 0xF59E0B) + case .done: Color(hex: 0x10B981) + case .muted: Color.dynamic(light: 0x94A3B8, dark: 0x62666D) + } + } + + /// Seconds per blob breath and per swirl turn. + var periods: (body: Double, swirl: Double) { + switch self { + case .thinking: (1.6, 1.2) + case .muted: (9, 7) + default: (5, 7) + } + } +} + +/// Integrates phase across frames so a speed change never jumps, and fades +/// colors between looks. +private final class RemieClock { + var last: Date? + var time: Double = 0 + var bodyPhase: Double = 0 + var swirlPhase: Double = 0 + var look: RemieLook? + var previous: RemieLook? + var changedAt: Double = -10 + + func advance(to date: Date, look target: RemieLook) { + let dt = last.map { min(0.1, max(0, date.timeIntervalSince($0))) } ?? 0 + last = date + time += dt + let periods = target.periods + bodyPhase += dt / periods.body + swirlPhase += dt / periods.swirl + if look != target { + previous = look ?? target + look = target + changedAt = time + } + } + + func colors() -> (Color, Color, Color) { + guard let look else { return RemieLook.idle.colors } + let to = look.colors + guard let previous, previous != look else { return to } + let p = min(1, (time - changedAt) / 0.6) + guard p < 1 else { return to } + let from = previous.colors + let e = p * p * (3 - 2 * p) + return (from.0.mix(with: to.0, by: e), from.1.mix(with: to.1, by: e), from.2.mix(with: to.2, by: e)) + } +} + +/// The breathing outline: a circle whose radius ripples with the phase. +private struct BlobShape: Shape { + var phase: Double + + func path(in rect: CGRect) -> Path { + let a = phase * 2 * .pi + let sx = 1 + 0.035 * sin(a) + let sy = 1 - 0.03 * sin(a) + let center = CGPoint(x: rect.midX, y: rect.midY) + let base = min(rect.width, rect.height) / 2 / 1.06 + var path = Path() + let steps = 72 + for i in 0 ... steps { + let t = Double(i) / Double(steps) * 2 * .pi + let r = base * (1 + 0.045 * sin(2 * t + a) + 0.028 * sin(3 * t - a + 1)) + let p = CGPoint(x: center.x + cos(t) * r * sx, y: center.y + sin(t) * r * sy) + if i == 0 { path.move(to: p) } else { path.addLine(to: p) } + } + path.closeSubpath() + return path + } +} + +private struct Squash: Equatable { + var x: CGFloat = 1 + var y: CGFloat = 1 + var lift: CGFloat = 0 +} + +/// Remie's icon: a soft blob with light swirling inside. It breathes at rest, +/// swirls faster while a run works, hops in amber while a run waits on +/// approval, bounces in green when a run finishes, and boops on `boop`. +struct RemieMark: View { + var size: CGFloat = 20 + var state: RemieMarkState = .idle + var muted = false + /// Whether a run ending now succeeded; only then does the mark celebrate. + var celebrate = true + /// Bumped on composer keystrokes. + var boop = 0 + /// Jiggles when poked. Off inside a button, where the tap belongs to the button. + var tappable = false + + @State private var clock = RemieClock() + @State private var justFinished = false + @State private var jelly = 0 + @Environment(\.accessibilityReduceMotion) private var reduceMotion + + private var look: RemieLook { + if justFinished && state == .idle { return .done } + if muted && state == .idle { return .muted } + switch state { + case .idle: return .idle + case .thinking: return .thinking + case .attention: return .attention + } + } + + var body: some View { + TimelineView(.animation(paused: reduceMotion && clock.look == look)) { context in + let _ = clock.advance(to: context.date, look: look) + let colors = clock.colors() + ZStack { + ZStack { + AngularGradient( + colors: [colors.0, colors.1, colors.2, colors.0], + center: .center, + angle: .degrees(reduceMotion ? 0 : clock.swirlPhase * 360) + ) + .frame(width: size * 1.6, height: size * 1.6) + .blur(radius: size * 0.07) + } + .frame(width: size * 0.88, height: size * 0.88) + .clipShape(BlobShape(phase: reduceMotion ? 0 : clock.bodyPhase)) + .shadow(color: colors.1.opacity(0.55), radius: size * 0.12, y: size * 0.08) + + Ellipse() + .fill(RadialGradient( + colors: [.white.opacity(0.9), .white.opacity(0)], + center: .center, + startRadius: 0, + endRadius: size * 0.16 + )) + .frame(width: size * 0.32, height: size * 0.22) + .rotationEffect(.degrees(-28)) + .opacity(look == .muted ? 0.6 : 1) + .position(x: size * 0.38, y: size * 0.27) + } + .frame(width: size, height: size) + .offset(y: look == .attention && !reduceMotion ? -hop(clock.time) * size : 0) + } + .frame(width: size, height: size) + .keyframeAnimator(initialValue: Squash(), trigger: jelly) { content, s in + content.scaleEffect(x: s.x, y: s.y) + } keyframes: { _ in + KeyframeTrack(\.x) { + SpringKeyframe(1.22, duration: 0.18) + SpringKeyframe(0.9, duration: 0.15) + SpringKeyframe(1.06, duration: 0.12) + SpringKeyframe(1, duration: 0.15) + } + KeyframeTrack(\.y) { + SpringKeyframe(0.84, duration: 0.18) + SpringKeyframe(1.12, duration: 0.15) + SpringKeyframe(0.96, duration: 0.12) + SpringKeyframe(1, duration: 0.15) + } + } + .keyframeAnimator(initialValue: Squash(), trigger: boop) { content, s in + content.scaleEffect(x: s.x, y: s.y) + } keyframes: { _ in + KeyframeTrack(\.x) { + CubicKeyframe(1.16, duration: 0.11) + CubicKeyframe(1, duration: 0.17) + } + KeyframeTrack(\.y) { + CubicKeyframe(0.88, duration: 0.11) + CubicKeyframe(1, duration: 0.17) + } + } + .keyframeAnimator(initialValue: Squash(), trigger: justFinished) { content, s in + content + .scaleEffect(x: s.x, y: s.y, anchor: .bottom) + .offset(y: -s.lift * size) + } keyframes: { _ in + KeyframeTrack(\.x) { + SpringKeyframe(1.18, duration: 0.21) + SpringKeyframe(0.94, duration: 0.18) + SpringKeyframe(1, duration: 0.31) + } + KeyframeTrack(\.y) { + SpringKeyframe(0.88, duration: 0.21) + SpringKeyframe(1.1, duration: 0.18) + SpringKeyframe(1, duration: 0.31) + } + KeyframeTrack(\.lift) { + SpringKeyframe(0, duration: 0.21) + SpringKeyframe(0.14, duration: 0.18) + SpringKeyframe(0, duration: 0.31) + } + } + .contentShape(Circle()) + .simultaneousGesture(TapGesture().onEnded { if !reduceMotion { jelly += 1 } }, isEnabled: tappable) + .onChange(of: state) { old, new in + guard old == .thinking, new == .idle, celebrate else { return } + justFinished = true + Task { + try? await Task.sleep(for: .milliseconds(1400)) + justFinished = false + } + } + .accessibilityHidden(true) + } + + /// The amber hop, as a fraction of the mark's size. + private func hop(_ t: Double) -> CGFloat { + let f = t.truncatingRemainder(dividingBy: 1.4) / 1.4 + func ease(_ x: Double) -> Double { x * x * (3 - 2 * x) } + switch f { + case ..<0.18: return 0.16 * ease(f / 0.18) + case ..<0.32: return 0.16 * (1 - ease((f - 0.18) / 0.14)) + case ..<0.42: return 0.06 * ease((f - 0.32) / 0.10) + case ..<0.55: return 0.06 * (1 - ease((f - 0.42) / 0.13)) + default: return 0 + } + } +} + +/// The bare pixel spark, for inline loaders: a light chases around the ring +/// while thinking and the spark pulses while waiting on approval. +struct RemieSpark: View { + var size: CGFloat = 16 + var state: RemieMarkState = .idle + var muted = false + @Environment(\.accessibilityReduceMotion) private var reduceMotion + + private static let base: [Double] = [0, 0.62, 0, 0.62, 1, 0.62, 0, 0.62, 0] + /// The outer ring, clockwise from the top left. + private static let ring = [0, 1, 2, 5, 8, 7, 6, 3] + + private var look: RemieLook { + if muted && state == .idle { return .muted } + switch state { + case .idle: return .idle + case .thinking: return .thinking + case .attention: return .attention + } + } + + var body: some View { + let animated = state != .idle && !reduceMotion + TimelineView(.animation(paused: !animated)) { context in + grid(time: context.date.timeIntervalSinceReferenceDate) + } + .frame(width: size, height: size) + .animation(.easeOut(duration: 0.22), value: state) + .accessibilityHidden(true) + } + + private func grid(time: Double) -> some View { + let cell = size * 0.26 + let gap = max(0.5, size * 0.1) + return VStack(spacing: gap) { + ForEach(0 ..< 3, id: \.self) { row in + HStack(spacing: gap) { + ForEach(0 ..< 3, id: \.self) { col in + let i = row * 3 + col + RoundedRectangle(cornerRadius: cell * 0.24, style: .continuous) + .fill(look.tint) + .frame(width: cell, height: cell) + .opacity(opacity(i, time: time)) + } + } + } + } + } + + private func opacity(_ i: Int, time: Double) -> Double { + let o = Self.base[i] + guard !reduceMotion else { return o } + switch state { + case .thinking: + guard let r = Self.ring.firstIndex(of: i) else { return 1 } + var f = (time - Double(r) * 0.11).truncatingRemainder(dividingBy: 0.88) / 0.88 + if f < 0 { f += 1 } + if f < 0.12 { return 0.2 + 0.8 * (f / 0.12) } + if f < 0.45 { return 1 - 0.8 * ((f - 0.12) / 0.33) } + return 0.2 + case .attention: + guard o > 0 else { return 0 } + let wave = 0.5 - 0.5 * cos(2 * .pi * time / 1.2) + return o * (1 - 0.65 * wave) + case .idle: + return o + } + } +} + +/// Live status text: a sky light sweeping across slate, like the web's +/// `ai-shimmer-text`. +struct RemieShimmer: ViewModifier { + @Environment(\.accessibilityReduceMotion) private var reduceMotion + + func body(content: Content) -> some View { + if reduceMotion { + content.foregroundStyle(WTheme.inkSecondary) + } else { + content + .foregroundStyle(WTheme.inkSecondary) + .overlay { + TimelineView(.animation) { context in + let t = context.date.timeIntervalSinceReferenceDate.truncatingRemainder(dividingBy: 1.8) / 1.8 + GeometryReader { proxy in + let w = proxy.size.width + LinearGradient( + colors: [Remie.sky500.opacity(0), Remie.sky500, Remie.sky500.opacity(0)], + startPoint: .leading, + endPoint: .trailing + ) + .frame(width: max(24, w * 0.45)) + .offset(x: -max(24, w * 0.45) + (w + max(24, w * 0.45)) * t) + } + } + .mask(content) + .allowsHitTesting(false) + } + } + } +} + +extension View { + func remieShimmer() -> some View { modifier(RemieShimmer()) } +} diff --git a/ios/Warmbly/Features/Assistant/RemieTranscript.swift b/ios/Warmbly/Features/Assistant/RemieTranscript.swift new file mode 100644 index 000000000..f43a971e9 --- /dev/null +++ b/ios/Warmbly/Features/Assistant/RemieTranscript.swift @@ -0,0 +1,683 @@ +import SwiftUI + +// The pieces of a Remie conversation, ported from the web agent panel +// (AgentPanel, AgentActivity, Markdown) so both read the same. + +// MARK: - Tool labels + +/// Human labels for tool calls in two tenses, derived from the tool name like +/// the web's toolLabels.ts. +enum RemieTool { + private static let verbs: [String: (String, String)] = [ + "add": ("Adding", "Added"), "bulk": ("Editing", "Edited"), + "cancel": ("Canceling", "Canceled"), "complete": ("Completing", "Completed"), + "compose": ("Composing", "Composed"), "create": ("Creating", "Created"), + "delete": ("Deleting", "Deleted"), "disconnect": ("Disconnecting", "Disconnected"), + "draft": ("Drafting", "Drafted"), "fetch": ("Fetching", "Fetched"), + "get": ("Reading", "Read"), "invite": ("Inviting", "Invited"), + "list": ("Listing", "Listed"), "load": ("Loading", "Loaded"), + "mark": ("Marking", "Marked"), "mint": ("Creating", "Created"), + "move": ("Moving", "Moved"), "preview": ("Previewing", "Previewed"), + "remove": ("Removing", "Removed"), "revoke": ("Revoking", "Revoked"), + "rotate": ("Rotating", "Rotated"), "run": ("Running", "Ran"), + "search": ("Searching", "Searched"), "send": ("Sending", "Sent"), + "set": ("Updating", "Updated"), "snooze": ("Snoozing", "Snoozed"), + "submit": ("Submitting", "Submitted"), "unsnooze": ("Unsnoozing", "Unsnoozed"), + "update": ("Updating", "Updated"), "verify": ("Verifying", "Verified"), + ] + + private static let named: [String: (String, String)] = [ + "search_web": ("Searching the web", "Searched the web"), + "fetch_url": ("Reading a web page", "Read a web page"), + "load_skill": ("Loading a skill", "Loaded a skill"), + "get_thread": ("Reading the thread", "Read the thread"), + "list_threads": ("Scanning the inbox", "Scanned the inbox"), + "get_dashboard_analytics": ("Reading analytics", "Read analytics"), + "get_advisor_summary": ("Checking the advisor", "Checked the advisor"), + "bulk_edit_contacts": ("Editing contacts", "Edited contacts"), + "add_tag": ("Adding a label", "Added a label"), + "remove_tag": ("Removing a label", "Removed a label"), + "set_thread_labels": ("Labeling the thread", "Labeled the thread"), + ] + + static func label(_ tool: String?, done: Bool = true) -> String { + guard let tool, !tool.isEmpty else { return done ? "Ran a step" : "Working" } + if let n = named[tool] { return done ? n.1 : n.0 } + let parts = tool.split(separator: "_").map(String.init) + let object = parts.dropFirst().joined(separator: " ") + guard let first = parts.first, let v = verbs[first] else { return action(tool) } + let verb = done ? v.1 : v.0 + return object.isEmpty ? verb : "\(verb) \(object)" + } + + /// The imperative form an approval asks about ("Update contact fields"). + static func action(_ tool: String?) -> String { + let plain = (tool ?? "").replacingOccurrences(of: "_", with: " ") + guard let first = plain.first else { return "Run a tool" } + return first.uppercased() + plain.dropFirst() + } +} + +// MARK: - Markdown + +/// The web's small Markdown: paragraphs, lists, headings and code fences, +/// with inline emphasis, code and links. +struct RemieMarkdown: View { + let text: String + /// Puts the insertion caret after the last paragraph. + var caret = false + /// Text is still being revealed: the caret holds and the newest characters fade in. + var typing = false + + private enum Block { + case para(String) + case heading(String) + case list(ordered: Bool, items: [String]) + case code(String) + } + + var body: some View { + let blocks = Self.parse(text) + VStack(alignment: .leading, spacing: 9) { + ForEach(Array(blocks.enumerated()), id: \.offset) { index, block in + view(block, isLast: index == blocks.count - 1) + } + } + .font(.system(size: 16)) + .lineSpacing(5) + .foregroundStyle(WTheme.ink) + .tint(Remie.sky500) + .frame(maxWidth: .infinity, alignment: .leading) + } + + @ViewBuilder + private func view(_ block: Block, isLast: Bool) -> some View { + switch block { + case let .para(s): + paragraph(s, bold: false, isLast: isLast) + case let .heading(s): + paragraph(s, bold: true, isLast: isLast) + case let .list(ordered, items): + VStack(alignment: .leading, spacing: 5) { + ForEach(Array(items.enumerated()), id: \.offset) { i, item in + HStack(alignment: .firstTextBaseline, spacing: 8) { + Text(ordered ? "\(i + 1)." : "•") + .foregroundStyle(WTheme.inkTertiary) + .monospacedDigit() + Text(Self.inline(item)) + .fixedSize(horizontal: false, vertical: true) + } + } + } + .padding(.leading, 2) + case let .code(s): + ScrollView(.horizontal, showsIndicators: false) { + Text(s) + .font(WFont.code(12.5)) + .lineSpacing(3) + .foregroundStyle(WTheme.ink.opacity(0.85)) + .padding(.horizontal, 11) + .padding(.vertical, 9) + } + .background(WTheme.surface, in: RoundedRectangle(cornerRadius: 8, style: .continuous)) + .overlay(RoundedRectangle(cornerRadius: 8, style: .continuous).strokeBorder(WTheme.hairlineStrong, lineWidth: 1)) + } + } + + @ViewBuilder + private func paragraph(_ s: String, bold: Bool, isLast: Bool) -> some View { + var attr = Self.inline(s) + let _ = Self.fadeTail(&attr, when: typing && isLast) + if caret && isLast { + if typing { + Text("\(Text(attr))\(Self.caret(visible: true))") + .fontWeight(bold ? .semibold : nil) + } else { + TimelineView(.periodic(from: .now, by: 0.5)) { context in + let on = Int(context.date.timeIntervalSinceReferenceDate * 2) % 2 == 0 + Text("\(Text(attr))\(Self.caret(visible: on))") + .fontWeight(bold ? .semibold : nil) + } + } + } else { + Text(attr) + .fontWeight(bold ? .semibold : nil) + .textSelection(.enabled) + } + } + + private static func caret(visible: Bool) -> Text { + Text("\u{258F}").foregroundStyle(visible ? Remie.sky500 : .clear) + } + + /// The last few characters of still-typing text resolve in rather than pop. + private static func fadeTail(_ attr: inout AttributedString, when active: Bool) { + guard active else { return } + let count = attr.characters.count + guard count > 0 else { return } + let n = min(6, count) + for k in 0 ..< n { + let start = attr.characters.index(attr.endIndex, offsetBy: -(n - k)) + let end = attr.characters.index(after: start) + attr[start ..< end].foregroundColor = WTheme.ink.opacity(0.25 + 0.6 * Double(k) / Double(n)) + } + } + + private static func inline(_ s: String) -> AttributedString { + var attr = (try? AttributedString( + markdown: s, + options: AttributedString.MarkdownParsingOptions(interpretedSyntax: .inlineOnlyPreservingWhitespace) + )) ?? AttributedString(s) + // Addresses the parser auto-links read as text, not as mail links. + for run in attr.runs where run.link?.scheme == "mailto" { + attr[run.range].link = nil + } + return attr + } + + private static func parse(_ text: String) -> [Block] { + var out: [Block] = [] + let parts = text.components(separatedBy: "```") + for (pi, part) in parts.enumerated() { + if pi % 2 == 1 { + // Drop the fence's language line. + var body = part + if let nl = body.firstIndex(of: "\n") { body = String(body[body.index(after: nl)...]) } + let trimmed = body.trimmingCharacters(in: .newlines) + if !trimmed.isEmpty { out.append(.code(trimmed)) } + continue + } + var para: [String] = [] + var list: (ordered: Bool, items: [String])? + func flushPara() { + if !para.isEmpty { out.append(.para(para.joined(separator: "\n"))) } + para = [] + } + func flushList() { + if let l = list { out.append(.list(ordered: l.ordered, items: l.items)) } + list = nil + } + for line in part.components(separatedBy: "\n") { + let trimmed = line.trimmingCharacters(in: .whitespaces) + if let item = bullet(trimmed) { + flushPara() + if list?.ordered != item.ordered { flushList(); list = (item.ordered, []) } + list?.items.append(item.text) + } else if trimmed.hasPrefix("#") { + let heading = trimmed.drop { $0 == "#" }.trimmingCharacters(in: .whitespaces) + flushPara(); flushList() + if !heading.isEmpty { out.append(.heading(heading)) } + } else if trimmed.isEmpty { + flushPara(); flushList() + } else { + flushList() + para.append(line) + } + } + flushPara(); flushList() + } + return out + } + + private static func bullet(_ line: String) -> (ordered: Bool, text: String)? { + if line.hasPrefix("- ") || line.hasPrefix("* ") { + return (false, String(line.dropFirst(2))) + } + let digits = line.prefix { $0.isNumber } + guard !digits.isEmpty, digits.count <= 3 else { return nil } + let rest = line.dropFirst(digits.count) + guard let mark = rest.first, mark == "." || mark == ")", rest.dropFirst().first == " " else { return nil } + return (true, String(rest.dropFirst(2))) + } +} + +/// Streamed text as a fast typewriter: each frame reveals a twelfth of what +/// is still hidden, so bursts type out at a steady pace. +struct RemieSmoothText: View { + let text: String + @State private var shown = 0 + + var body: some View { + let total = text.count + RemieMarkdown(text: String(text.prefix(shown)), caret: true, typing: shown < total) + .task(id: text) { + while !Task.isCancelled { + let total = text.count + guard shown < total else { break } + shown = min(total, shown + max(1, Int((Double(total - shown) / 12).rounded(.up)))) + try? await Task.sleep(for: .milliseconds(16)) + } + } + } +} + +// MARK: - Activity + +/// A run's tool calls folded into one trace: the step running now while it +/// works, "Ran N steps" after, and every step under a rail when open. +struct RemieActivityTrace: View { + let steps: [AssistantChatStore.Block] + let live: Bool + let streaming: Bool + + @State private var userOpen: Bool? + + private var running: Bool { streaming && steps.contains { !$0.done } } + private var multi: Bool { steps.count > 1 } + private var open: Bool { !multi || (userOpen ?? (running || live)) } + + var body: some View { + VStack(alignment: .leading, spacing: 2) { + if multi { header } + if open { + VStack(alignment: .leading, spacing: 0) { + ForEach(steps) { step in + RemieStepLine(step: step, streaming: streaming) + } + } + .padding(.leading, multi ? 15 : 0) + .overlay(alignment: .leading) { + if multi { + Rectangle() + .fill(WTheme.hairlineStrong) + .frame(width: 1) + .padding(.top, 4) + .padding(.bottom, 8) + .padding(.leading, 6.5) + } + } + .transition(.asymmetric( + insertion: .opacity.combined(with: .offset(y: -4)), + removal: .opacity + )) + } + } + .animation(.spring(response: 0.36, dampingFraction: 0.9), value: open) + } + + private var header: some View { + let current = steps.first { !$0.done } + let doneCount = steps.filter(\.done).count + let summary = steps.reduce(into: [String]()) { names, step in + let name = RemieTool.label(step.tool) + if !names.contains(name) { names.append(name) } + }.joined(separator: ", ") + return Button { + userOpen = !open + } label: { + HStack(spacing: 8) { + RemieSpark(size: 14, state: running ? .thinking : .idle, muted: !running) + if running, let current { + Text(RemieTool.label(current.tool, done: false)) + .font(.system(size: 13.5, weight: .medium)) + .remieShimmer() + .lineLimit(1) + .layoutPriority(1) + Text("\(doneCount)/\(steps.count)") + .font(WFont.meta(11.5)) + .foregroundStyle(WTheme.inkTertiary) + .contentTransition(.numericText()) + } else { + Text("Ran \(steps.count) steps") + .font(.system(size: 13.5, weight: .medium)) + .foregroundStyle(WTheme.inkSecondary) + .layoutPriority(1) + if !open { + Text(summary) + .font(.system(size: 12.5)) + .foregroundStyle(WTheme.inkTertiary) + .lineLimit(1) + } + } + Image(systemName: "chevron.down") + .font(.system(size: 10.5, weight: .semibold)) + .foregroundStyle(WTheme.inkTertiary) + .rotationEffect(.degrees(open ? 180 : 0)) + } + .frame(minHeight: 30) + .contentShape(Rectangle()) + } + .buttonStyle(.plain) + .accessibilityValue(open ? "Expanded" : "Collapsed") + } +} + +private struct RemieStepLine: View { + let step: AssistantChatStore.Block + let streaming: Bool + + var body: some View { + let detail = [step.result, step.argsSummary].compactMap { $0 }.first { !$0.isEmpty } + HStack(spacing: 8) { + status + .frame(width: 14, height: 14) + Text(RemieTool.label(step.tool, done: step.done || !streaming)) + .font(.system(size: 13.5, weight: .medium)) + .lineLimit(1) + .layoutPriority(1) + .modifier(LabelStyle(active: !step.done && streaming)) + if let detail { + Text(detail) + .font(.system(size: 12.5)) + .foregroundStyle(WTheme.inkTertiary) + .lineLimit(1) + } + } + .frame(minHeight: 30) + .transition(.opacity.combined(with: .offset(y: 6))) + } + + @ViewBuilder + private var status: some View { + if step.done { + Image(systemName: "checkmark") + .font(.system(size: 7.5, weight: .heavy)) + .foregroundStyle(Remie.emerald) + .frame(width: 14, height: 14) + .background(Remie.emerald.opacity(0.14), in: Circle()) + .transition(.scale(scale: 0.5).combined(with: .opacity)) + } else if streaming { + RemieSpinner() + } else { + Image(systemName: "xmark") + .font(.system(size: 7.5, weight: .heavy)) + .foregroundStyle(WTheme.inkTertiary) + .frame(width: 14, height: 14) + .background(WTheme.fill, in: Circle()) + } + } + + private struct LabelStyle: ViewModifier { + let active: Bool + func body(content: Content) -> some View { + if active { + content.remieShimmer() + } else { + content.foregroundStyle(WTheme.ink.opacity(0.8)) + } + } + } +} + +/// A slate ring with a sky arc turning on it. +struct RemieSpinner: View { + var size: CGFloat = 14 + + var body: some View { + TimelineView(.animation) { context in + let angle = context.date.timeIntervalSinceReferenceDate.truncatingRemainder(dividingBy: 0.8) / 0.8 * 360 + ZStack { + Circle().stroke(WTheme.hairlineStrong, lineWidth: 1.5) + Circle() + .trim(from: 0, to: 0.25) + .stroke(Remie.sky500, style: StrokeStyle(lineWidth: 1.5, lineCap: .round)) + .rotationEffect(.degrees(angle)) + } + } + .frame(width: size - 1.5, height: size - 1.5) + } +} + +/// The live run's status line: the mark at work, a shimmering phase, the +/// elapsed time and the step count. +struct RemieWorkingStatus: View { + let label: String + var since: Date? + var step = 0 + var budget = 0 + + var body: some View { + HStack(spacing: 10) { + RemieMark(size: 20, state: .thinking) + Text(label) + .font(.system(size: 15, weight: .medium)) + .remieShimmer() + .id(label) + .transition(.asymmetric( + insertion: .opacity.combined(with: .offset(y: 4)), + removal: .opacity.combined(with: .offset(y: -4)) + )) + if let since { + TimelineView(.periodic(from: .now, by: 0.1)) { context in + Text(Self.elapsed(context.date.timeIntervalSince(since))) + .font(WFont.meta(12)) + .foregroundStyle(WTheme.inkTertiary) + .monospacedDigit() + } + } + if step > 0, budget > 0 { + Text("step \(step) of \(budget)") + .font(WFont.meta(11.5)) + .foregroundStyle(WTheme.inkTertiary.opacity(0.75)) + .contentTransition(.numericText()) + } + } + .animation(.easeOut(duration: 0.18), value: label) + .accessibilityElement(children: .combine) + } + + static func elapsed(_ seconds: Double) -> String { + let s = max(0, seconds) + if s < 60 { return String(format: "%.1fs", s) } + return "\(Int(s) / 60)m \(Int(s) % 60)s" + } +} + +/// Under a finished answer: copy it. +struct RemieTurnActions: View { + let text: String + @State private var copied = false + + var body: some View { + HStack(spacing: 2) { + Button { + UIPasteboard.general.string = text + withAnimation(.snappy) { copied = true } + Task { + try? await Task.sleep(for: .seconds(1.6)) + withAnimation(.snappy) { copied = false } + } + } label: { + Image(systemName: copied ? "checkmark" : "square.on.square") + .font(.system(size: 13.5, weight: .medium)) + .foregroundStyle(copied ? Remie.emerald : WTheme.inkTertiary) + .contentTransition(.symbolEffect(.replace)) + .frame(width: 34, height: 30) + .contentShape(Rectangle()) + } + .buttonStyle(TapScaleStyle()) + .accessibilityLabel(copied ? "Copied" : "Copy answer") + .sensoryFeedback(.success, trigger: copied) { _, now in now } + } + .padding(.leading, -9) + } +} + +// MARK: - Approval + +/// A risky tool paused the run. Built for a thumb: what Remie wants to do, +/// the exact arguments, and full-width answers. +struct RemieApprovalCard: View { + let pending: AgentPendingTool + let onDecide: (String) -> Void + + private var isSend: Bool { pending.risk == "send" } + + var body: some View { + VStack(alignment: .leading, spacing: 0) { + HStack(spacing: 8) { + RemieSpark(size: 14, state: .attention) + Text(isSend ? "Ready to send" : "Needs your approval") + .font(.system(size: 13, weight: .semibold)) + .foregroundStyle(Remie.amber) + Spacer(minLength: 6) + Text(isSend ? "Sends email" : "Changes data") + .font(.system(size: 12, weight: .medium)) + .foregroundStyle(Remie.amber) + .padding(.horizontal, 9) + .frame(height: 24) + .background(Remie.amber.opacity(0.12), in: Capsule()) + } + + Text(RemieTool.action(pending.toolName)) + .font(.system(size: 19, weight: .semibold)) + .foregroundStyle(WTheme.ink) + .padding(.top, 12) + + if let summary = pending.argsSummary, !summary.isEmpty { + Text(summary) + .font(WFont.code(13)) + .lineSpacing(3) + .foregroundStyle(WTheme.inkSecondary) + .frame(maxWidth: .infinity, alignment: .leading) + .padding(12) + .background(WTheme.canvas.opacity(0.7), in: RoundedRectangle(cornerRadius: 12, style: .continuous)) + .textSelection(.enabled) + .padding(.top, 12) + } + + Button { + onDecide("approve") + } label: { + HStack(spacing: 7) { + Image(systemName: isSend ? "paperplane.fill" : "checkmark") + .font(.system(size: 13, weight: .bold)) + Text(isSend ? "Send" : "Approve") + .font(.system(size: 16, weight: .semibold)) + } + .foregroundStyle(WTheme.inkInverse) + .frame(maxWidth: .infinity) + .frame(height: 50) + .background(WTheme.ink, in: Capsule()) + } + .buttonStyle(TapScaleStyle()) + .padding(.top, 16) + + HStack(spacing: 10) { + Button { + onDecide("deny") + } label: { + Text("Skip") + .font(.system(size: 15, weight: .medium)) + .foregroundStyle(WTheme.ink) + .frame(maxWidth: .infinity) + .frame(height: 46) + .background(WTheme.fill, in: Capsule()) + } + .buttonStyle(TapScaleStyle()) + if !isSend { + Button { + onDecide("always_allow") + } label: { + Text("Always allow") + .font(.system(size: 15, weight: .medium)) + .foregroundStyle(WTheme.ink) + .frame(maxWidth: .infinity) + .frame(height: 46) + .background(WTheme.fill, in: Capsule()) + } + .buttonStyle(TapScaleStyle()) + .accessibilityHint("Run this kind of action without asking, for everyone in the workspace") + } + } + .padding(.top, 8) + } + .padding(16) + .background(WTheme.surface, in: RoundedRectangle(cornerRadius: 26, style: .continuous)) + .sensoryFeedback(.warning, trigger: pending.toolCallID) + } +} + +// MARK: - Suggestions + +/// `GET /advisor/recommendations`, only the fields Remie suggests from. +struct RemieAdvisorFinding: Decodable, Sendable { + var id: String + var detectorKey: String? + var severity: String? + var status: String? + var impact: Double? + var title: String? + var groupTitle: String? + var remedy: String? + var action: Action? + + struct Action: Decodable, Sendable { + var label: String? + } + + enum CodingKeys: String, CodingKey { + case id, severity, status, impact, title, remedy, action + case detectorKey = "detector_key" + case groupTitle = "group_title" + } + + var rank: Int { + switch severity { + case "critical": 4 + case "high": 3 + case "medium": 2 + default: 1 + } + } +} + +/// One thing Remie suggests: the Advisor's grouping of open findings. +struct RemieSuggestion: Identifiable { + let id: String + let text: String + let severity: String + let findings: [RemieAdvisorFinding] + + var dot: Color { + switch severity { + case "critical": Color(hex: 0xF43F5E) + case "high": Color(hex: 0xF97316) + case "medium": Color(hex: 0xF59E0B) + default: Remie.sky500 + } + } + + /// The same ask the web sends when a suggestion is picked. + var prompt: String { + let lines = findings.enumerated().map { i, f in + "\(i + 1). \(f.title ?? ""). Recommended: \(f.action?.label ?? f.remedy ?? "")" + } + return ([findings.count > 1 ? "Please fix these:" : "Please fix this:"] + lines + [ + "Check the current state first, make the smallest change that resolves each one, and ask me before changing anything.", + ]).joined(separator: "\n") + } + + static func from(_ findings: [RemieAdvisorFinding]) -> [RemieSuggestion] { + let open = findings.filter { $0.status == "open" && $0.rank >= 2 } + var order: [String] = [] + var byKey: [String: [RemieAdvisorFinding]] = [:] + for f in open { + let key = f.detectorKey ?? f.id + if byKey[key] == nil { order.append(key) } + byKey[key, default: []].append(f) + } + var out: [RemieSuggestion] = [] + for key in order { + guard let members = byKey[key], let lead = members.first else { continue } + if members.count >= 2, let group = lead.groupTitle, !group.isEmpty { + out.append(RemieSuggestion( + id: key, + text: group.replacingOccurrences(of: "{count}", with: "\(members.count)"), + severity: lead.severity ?? "low", + findings: members + )) + } else { + for f in members { + out.append(RemieSuggestion(id: f.id, text: f.title ?? "", severity: f.severity ?? "low", findings: [f])) + } + } + } + return out.sorted { a, b in + let ra = a.findings.first?.rank ?? 0, rb = b.findings.first?.rank ?? 0 + if ra != rb { return ra > rb } + if a.findings.count != b.findings.count { return a.findings.count > b.findings.count } + return (a.findings.first?.impact ?? 0) > (b.findings.first?.impact ?? 0) + } + } +} diff --git a/ios/Warmbly/Features/Auth/AuthFlowView.swift b/ios/Warmbly/Features/Auth/AuthFlowView.swift index 89ec90a30..72b6e05b3 100644 --- a/ios/Warmbly/Features/Auth/AuthFlowView.swift +++ b/ios/Warmbly/Features/Auth/AuthFlowView.swift @@ -58,6 +58,22 @@ struct AuthFlowView: View { .sensoryFeedback(.error, trigger: errorPulse) .sheet(isPresented: $showServerConfig) { ServerConfigSheet() } .task { providers = await env.session.fetchAuthProviders() } + #if DEBUG + // Scripted runs can open a later step (WARMBLY_DEBUG_AUTH) to see it. + .onAppear { + guard let target = ProcessInfo.processInfo.environment["WARMBLY_DEBUG_AUTH"] else { return } + email = "dev@warmbly.com" + switch target { + case "signup": mode = .signUp + case "password": step = .password + case "verify": step = .verify(session: "debug") + case "twofa": step = .twoFA(pendingToken: "debug") + case "reset": step = .resetSent + case "server": showServerConfig = true + default: break + } + } + #endif .onReceive(Timer.publish(every: 1, on: .main, in: .common).autoconnect()) { _ in if resendRemaining > 0 { withAnimation(.easeOut(duration: 0.3)) { resendRemaining -= 1 } @@ -84,20 +100,12 @@ struct AuthFlowView: View { private var stepScreen: some View { VStack(spacing: 0) { - HStack(spacing: 12) { - if step != .email { - skyIconButton("chevron.left", label: "Back") { goBackOneStep() } - .transition(.opacity.combined(with: .scale(scale: 0.7))) - } - compactLockup - Spacer() - skyIconButton("gearshape", label: "Server settings") { showServerConfig = true } + FlowTopBar( + onBack: step == .email ? nil : { goBackOneStep() }, + progress: stepProgress.map { ($0.index, 3) } + ) { + FlowSkyButton(symbol: "gearshape", label: "Server settings") { showServerConfig = true } } - .padding(.horizontal, 16) - .padding(.top, 6) - // The top bar reflow animates here; the sheet is left alone so it - // tracks the keyboard's own curve with no gap. - .animation(.spring(response: 0.45, dampingFraction: 0.86), value: step == .email) heroArea .animation(.spring(response: 0.5, dampingFraction: 0.85), value: heroExpanded) @@ -106,22 +114,6 @@ struct AuthFlowView: View { } } - /// The brand lockup, permanently docked in the top-left: the sky's center - /// stays free for the feature showcase. - private var compactLockup: some View { - HStack(spacing: 8) { - WarmblyLogo() - .fill(.white) - .frame(width: 27, height: 28) - Text("Warmbly") - .font(.system(size: 20, weight: .heavy)) - .tracking(-0.4) - .foregroundStyle(.white) - .fixedSize() - } - .shadow(color: Color(hex: 0x0C4A6E).opacity(0.25), radius: 8, y: 3) - } - /// The sky between the top bar and the sheet. On the email step it shows /// the richest thing the available height can hold: the showcase at full /// size, the showcase gently scaled down (to ~72%) when the space is only @@ -135,7 +127,10 @@ struct AuthFlowView: View { .contentShape(Rectangle()) .onTapGesture { focusedField = nil } - HeroFlightScene() + if step == .email { + HeroFlightScene() + .transition(.opacity) + } if step == .email { GeometryReader { proxy in @@ -154,8 +149,8 @@ struct AuthFlowView: View { .opacity(heroAppeared ? 1 : 0) .transition(.opacity.combined(with: .scale(scale: 0.94))) } else if let progress = stepProgress { - stepIndicator(progress) - .transition(.opacity.combined(with: .scale(scale: 0.9))) + FlowSkyStage(icon: progress.icon, title: progress.label) { focusedField = nil } + .transition(.opacity) } } .frame(maxWidth: .infinity, minHeight: 40, maxHeight: .infinity) @@ -166,8 +161,8 @@ struct AuthFlowView: View { } } - /// Where the user is in the flow, shown in the freed-up sky on the - /// deeper steps: the step's icon, name, position, and segment bar. + /// Where the user is on the deeper steps: the step's position for the top + /// bar, and its icon and name for the sky. private var stepProgress: (index: Int, icon: String, label: String)? { switch step { case .email, .resetSent: @@ -181,75 +176,6 @@ struct AuthFlowView: View { } } - /// Picks the tallest step badge that fits the sky left over above the - /// keyboard: icon bubble + name + segments, or a single compact row. - private func stepIndicator(_ progress: (index: Int, icon: String, label: String)) -> some View { - ViewThatFits(in: .vertical) { - VStack(spacing: 12) { - ZStack { - Circle() - .fill(.white.opacity(0.16)) - Circle() - .strokeBorder(.white.opacity(0.3), lineWidth: 1) - Image(systemName: progress.icon) - .font(.system(size: 20, weight: .semibold)) - .foregroundStyle(.white) - .contentTransition(.symbolEffect(.replace)) - } - .frame(width: 54, height: 54) - - VStack(spacing: 4) { - Text(progress.label) - .font(.system(size: 15.5, weight: .bold)) - .foregroundStyle(.white) - Text("Step \(progress.index + 1) of 3") - .font(.system(size: 12)) - .foregroundStyle(.white.opacity(0.7)) - } - - stepSegments(progress.index) - } - .padding(.vertical, 16) - - HStack(spacing: 10) { - ZStack { - Circle().fill(.white.opacity(0.16)) - Circle().strokeBorder(.white.opacity(0.3), lineWidth: 1) - Image(systemName: progress.icon) - .font(.system(size: 13, weight: .semibold)) - .foregroundStyle(.white) - .contentTransition(.symbolEffect(.replace)) - } - .frame(width: 34, height: 34) - - VStack(alignment: .leading, spacing: 4) { - Text(progress.label) - .font(.system(size: 13.5, weight: .semibold)) - .foregroundStyle(.white) - HStack(spacing: 7) { - stepSegments(progress.index) - Text("Step \(progress.index + 1) of 3") - .font(.system(size: 11)) - .foregroundStyle(.white.opacity(0.7)) - } - } - } - .padding(.vertical, 8) - } - .shadow(color: Color(hex: 0x0C4A6E).opacity(0.25), radius: 6, y: 2) - .animation(.spring(response: 0.4, dampingFraction: 0.85), value: progress.index) - } - - private func stepSegments(_ active: Int) -> some View { - HStack(spacing: 6) { - ForEach(0 ..< 3, id: \.self) { index in - Capsule() - .fill(.white.opacity(index <= active ? 0.95 : 0.3)) - .frame(width: index == active ? 26 : 14, height: 4) - } - } - } - /// The white area: full width, flush to the bottom edge (the background /// shape extends under the home indicator and the keyboard), rounded only /// at the top. Content resizes with a spring as steps swap. @@ -299,27 +225,14 @@ struct AuthFlowView: View { // The extra tail below keeps the sheet sealed to the screen edge // even mid-animation, when the sheet overshoots above the rising // keyboard for a few frames. - UnevenRoundedRectangle(cornerRadii: .init(topLeading: 36, topTrailing: 36)) - .fill(Color(.systemBackground) - .shadow(.drop(color: Color(hex: 0x0F172A).opacity(0.28), radius: 34, y: -6))) + UnevenRoundedRectangle(cornerRadii: .init(topLeading: 32, topTrailing: 32), style: .continuous) + .fill(WTheme.canvas) .padding(.bottom, -600) .ignoresSafeArea() } .geometryGroup() } - private func skyIconButton(_ systemName: String, label: String, action: @escaping () -> Void) -> some View { - Button(action: action) { - Image(systemName: systemName) - .font(.system(size: 15, weight: .semibold)) - .foregroundStyle(.white) - .frame(width: 40, height: 40) - .background(.white.opacity(0.16), in: Circle()) - } - .buttonStyle(PressableButtonStyle()) - .accessibilityLabel(label) - } - private func goBackOneStep() { switch step { case .password, .resetSent: @@ -340,12 +253,11 @@ struct AuthFlowView: View { private func sheetTitle(_ title: String, _ subtitle: String) -> some View { VStack(alignment: .leading, spacing: 7) { Text(title) - .font(.system(size: 30, weight: .bold)) - .tracking(-0.6) - .foregroundStyle(.primary) + .displayFont(32) + .foregroundStyle(WTheme.ink) Text(subtitle) .font(.system(size: 15.5)) - .foregroundStyle(.secondary) + .foregroundStyle(WTheme.inkSecondary) .fixedSize(horizontal: false, vertical: true) } .frame(maxWidth: .infinity, alignment: .leading) @@ -356,28 +268,20 @@ struct AuthFlowView: View { Button { Task { await action() } } label: { - Group { + HStack(spacing: 8) { if busy { - ProgressView().tint(.white) + ProgressView().tint(WTheme.inkInverse) } else { Text(title) + Image(systemName: "arrow.right") + .font(.system(size: 14, weight: .medium)) } } - .font(.system(size: 17, weight: .semibold)) - .foregroundStyle(.white) + .font(.system(size: 16.5, weight: .medium)) + .foregroundStyle(WTheme.inkInverse) .frame(maxWidth: .infinity) - .frame(height: 56) - .background( - LinearGradient( - colors: disabled && !busy - ? [WTheme.accent.opacity(0.35), WTheme.accent.opacity(0.35)] - : [Color(hex: 0x0EA5E9), Color(hex: 0x0284C7)], - startPoint: .top, - endPoint: .bottom - ), - in: RoundedRectangle(cornerRadius: 17) - ) - .shadow(color: disabled ? .clear : Color(hex: 0x0284C7).opacity(0.32), radius: 12, y: 6) + .frame(height: 54) + .background(WTheme.ink.opacity(disabled && !busy ? 0.18 : 1), in: Capsule()) } .buttonStyle(PressableButtonStyle()) .disabled(busy || disabled) @@ -387,12 +291,11 @@ struct AuthFlowView: View { private func authField(_ content: some View, focused: Bool) -> some View { content .font(.system(size: 16.5)) - .padding(.horizontal, 16) - .frame(height: 56) - .background(Color(.secondarySystemBackground), in: RoundedRectangle(cornerRadius: 17)) + .padding(.horizontal, 18) + .frame(height: 54) + .background(focused ? WTheme.raised : WTheme.surface, in: Capsule()) .overlay( - RoundedRectangle(cornerRadius: 17) - .strokeBorder(focused ? WTheme.accent : .clear, lineWidth: 1.8) + Capsule().strokeBorder(focused ? WTheme.ink.opacity(0.85) : WTheme.hairlineStrong, lineWidth: focused ? 1.4 : 1) ) .animation(.easeOut(duration: 0.18), value: focused) } @@ -414,10 +317,11 @@ struct AuthFlowView: View { .foregroundStyle(.tertiary) } .font(.system(size: 14)) - .foregroundStyle(.secondary) + .foregroundStyle(WTheme.inkSecondary) .padding(.horizontal, 14) .padding(.vertical, 9) - .background(Color(.secondarySystemBackground), in: Capsule()) + .background(WTheme.surface, in: Capsule()) + .overlay(Capsule().strokeBorder(WTheme.hairlineStrong, lineWidth: 1)) } .buttonStyle(PressableButtonStyle()) } @@ -479,12 +383,13 @@ struct AuthFlowView: View { ) HStack(spacing: 12) { - Rectangle().fill(Color(.separator).opacity(0.45)).frame(height: 1) - Text("or") - .font(.system(size: 13.5)) - .foregroundStyle(.tertiary) + Hairline() + Text("OR") + .font(WFont.meta(11, weight: .medium)) + .tracking(0.6) + .foregroundStyle(WTheme.inkTertiary) .fixedSize() - Rectangle().fill(Color(.separator).opacity(0.45)).frame(height: 1) + Hairline() } .padding(.vertical, 4) } @@ -519,8 +424,9 @@ struct AuthFlowView: View { mode = mode == .signIn ? .signUp : .signIn } } - .foregroundStyle(WTheme.accent) - .fontWeight(.semibold) + .foregroundStyle(WTheme.ink) + .fontWeight(.medium) + .underline(true, color: WTheme.ink.opacity(0.25)) } .font(.system(size: 14.5)) .frame(maxWidth: .infinity) @@ -892,11 +798,11 @@ struct HeroFlightScene: View { // The faint full route, plus a brighter segment forever // travelling along it like a gust carrying the plane. - ctx.stroke(trail, with: .color(.white.opacity(0.14)), style: StrokeStyle(lineWidth: 2, lineCap: .round, dash: [2, 9])) + ctx.stroke(trail, with: .color(WTheme.onSky.opacity(0.14)), style: StrokeStyle(lineWidth: 2, lineCap: .round, dash: [2, 9])) let phase = (t / 6).truncatingRemainder(dividingBy: 1) let window: CGFloat = 0.26 let segment = trail.trimmedPath(from: CGFloat(phase), to: min(CGFloat(phase) + window, 1)) - ctx.stroke(segment, with: .color(.white.opacity(0.5)), style: StrokeStyle(lineWidth: 2.4, lineCap: .round, dash: [2, 9])) + ctx.stroke(segment, with: .color(WTheme.onSky.opacity(0.5)), style: StrokeStyle(lineWidth: 2.4, lineCap: .round, dash: [2, 9])) // Envelopes rising with a gentle sway, fading at both ends. for spec in Self.envelopes { @@ -905,7 +811,7 @@ struct HeroFlightScene: View { let x = size.width * spec.x + sin(t / 2.6 + spec.phase * 9) * 13 let fade = sin(.pi * progress) var image = ctx.resolve(Image(systemName: "envelope.fill")) - image.shading = .color(.white.opacity(spec.baseOpacity * fade)) + image.shading = .color(WTheme.onSky.opacity(spec.baseOpacity * fade)) let box = CGRect(x: x - spec.size / 2, y: y - spec.size / 2, width: spec.size, height: spec.size * 0.72) ctx.draw(image, in: box) } @@ -978,7 +884,7 @@ struct FeatureShowcase: View { } } label: { Capsule() - .fill(.white.opacity(index == slide.id ? 0.95 : 0.35)) + .fill(WTheme.onSky.opacity(index == slide.id ? 0.95 : 0.35)) .frame(width: index == slide.id ? 22 : 7, height: 7) } .buttonStyle(.plain) @@ -1009,33 +915,32 @@ struct FeatureShowcase: View { .padding(.bottom, 14) Text(slide.title) - .font(.system(size: 18, weight: .bold)) - .tracking(-0.3) - .foregroundStyle(.white) + .displayFont(20) + .foregroundStyle(WTheme.onSky) Text(slide.subtitle) .font(.system(size: 13.5)) - .foregroundStyle(.white.opacity(0.78)) + .foregroundStyle(WTheme.onSky.opacity(0.6)) .fixedSize(horizontal: false, vertical: true) .padding(.top, 5) } .padding(22) .frame(maxWidth: .infinity, alignment: .leading) .background { - RoundedRectangle(cornerRadius: 26) - .fill(.white.opacity(0.13)) + RoundedRectangle(cornerRadius: 24, style: .continuous) + .fill(WTheme.skyTile(0.045)) + .background(.ultraThinMaterial.opacity(0.25), in: RoundedRectangle(cornerRadius: 24, style: .continuous)) .overlay( - RoundedRectangle(cornerRadius: 26) + RoundedRectangle(cornerRadius: 24, style: .continuous) .strokeBorder( LinearGradient( - colors: [.white.opacity(0.45), .white.opacity(0.08)], - startPoint: .topLeading, - endPoint: .bottomTrailing + colors: [.white.opacity(0.22), .white.opacity(0.05)], + startPoint: .top, + endPoint: .bottom ), lineWidth: 1 ) ) - .shadow(color: Color(hex: 0x0C4A6E).opacity(0.2), radius: 16, y: 9) } } @@ -1071,11 +976,11 @@ struct FeatureTicker: View { .font(.system(size: 13.5, weight: .semibold)) .fixedSize() } - .foregroundStyle(.white) + .foregroundStyle(WTheme.onSky) .padding(.horizontal, 15) .frame(height: 36) - .background(.white.opacity(0.14), in: Capsule()) - .overlay(Capsule().strokeBorder(.white.opacity(0.25), lineWidth: 1)) + .background(WTheme.skyTile(0.14), in: Capsule()) + .overlay(Capsule().strokeBorder(WTheme.skyEdge(0.25), lineWidth: 1)) .id(index) .transition(.blurReplace) } @@ -1099,16 +1004,16 @@ struct WarmupRampVisual: View { ZStack(alignment: .topLeading) { VStack(spacing: 0) { ForEach(0 ..< 3, id: \.self) { _ in - Rectangle().fill(.white.opacity(0.1)).frame(height: 1) + Rectangle().fill(WTheme.onSky.opacity(0.1)).frame(height: 1) Spacer() } - Rectangle().fill(.white.opacity(0.22)).frame(height: 1) + Rectangle().fill(WTheme.onSky.opacity(0.22)).frame(height: 1) } Self.area(in: size) .fill( LinearGradient( - colors: [.white.opacity(0.22), .white.opacity(0.02)], + colors: [WTheme.onSky.opacity(0.22), WTheme.onSky.opacity(0.02)], startPoint: .top, endPoint: .bottom ) @@ -1117,14 +1022,14 @@ struct WarmupRampVisual: View { Self.ramp(in: size) .trim(from: 0, to: progress) - .stroke(.white, style: StrokeStyle(lineWidth: 2.5, lineCap: .round)) + .stroke(WTheme.onSky, style: StrokeStyle(lineWidth: 2.5, lineCap: .round)) Circle() - .fill(.white) + .fill(WTheme.onSky) .frame(width: 7, height: 7) .background( Circle() - .fill(.white.opacity(0.3)) + .fill(WTheme.onSky.opacity(0.3)) .frame(width: pulse ? 24 : 10, height: pulse ? 24 : 10) ) .position(x: size.width - 2, y: size.height * 0.08) @@ -1173,14 +1078,14 @@ struct InboxPlacementVisual: View { HStack(spacing: 26) { ZStack { Circle() - .stroke(.white.opacity(0.18), lineWidth: 9) + .stroke(WTheme.onSky.opacity(0.18), lineWidth: 9) Circle() .trim(from: 0, to: progress * 0.98) - .stroke(.white, style: StrokeStyle(lineWidth: 9, lineCap: .round)) + .stroke(WTheme.onSky, style: StrokeStyle(lineWidth: 9, lineCap: .round)) .rotationEffect(.degrees(-90)) Text("\(shownValue)%") .font(.system(size: 22, weight: .bold)) - .foregroundStyle(.white) + .foregroundStyle(WTheme.onSky) .monospacedDigit() .contentTransition(.numericText()) } @@ -1208,13 +1113,13 @@ struct InboxPlacementVisual: View { Text(label) .font(.system(size: 12.5, weight: .semibold)) } - .foregroundStyle(.white.opacity(0.85)) + .foregroundStyle(WTheme.onSky.opacity(0.85)) GeometryReader { proxy in ZStack(alignment: .leading) { - Capsule().fill(.white.opacity(0.18)) + Capsule().fill(WTheme.onSky.opacity(0.18)) Capsule() - .fill(.white.opacity(0.9)) + .fill(WTheme.onSky.opacity(0.9)) .frame(width: max(5, proxy.size.width * fraction * progress)) } } @@ -1247,38 +1152,38 @@ struct UnifiedInboxVisual: View { let row = pair.element HStack(spacing: 10) { Circle() - .fill(.white.opacity(0.28)) + .fill(WTheme.onSky.opacity(0.28)) .frame(width: 26, height: 26) .overlay( Text(row.initial) .font(.system(size: 11.5, weight: .bold)) - .foregroundStyle(.white) + .foregroundStyle(WTheme.onSky) ) VStack(alignment: .leading, spacing: 4) { GeometryReader { proxy in Capsule() - .fill(.white.opacity(0.75)) + .fill(WTheme.onSky.opacity(0.75)) .frame(width: proxy.size.width * row.lineWidth, height: 5) } .frame(height: 5) Capsule() - .fill(.white.opacity(0.3)) + .fill(WTheme.onSky.opacity(0.3)) .frame(width: 52, height: 5) } if row.replied { Image(systemName: "arrowshape.turn.up.left.fill") .font(.system(size: 11)) - .foregroundStyle(.white.opacity(0.85)) + .foregroundStyle(WTheme.onSky.opacity(0.85)) } if row.unread { - Circle().fill(.white).frame(width: 7, height: 7) + Circle().fill(WTheme.onSky).frame(width: 7, height: 7) } } .padding(.horizontal, 12) .padding(.vertical, 8) - .background(.white.opacity(0.1), in: RoundedRectangle(cornerRadius: 13)) + .background(WTheme.skyTile(0.1), in: RoundedRectangle(cornerRadius: 13)) .offset(x: shown ? 0 : 46) .opacity(shown ? 1 : 0) .animation( @@ -1308,21 +1213,21 @@ struct CampaignStatsVisual: View { VStack(spacing: 7) { Text("\(Int(bar.fraction * 100))%") .font(.system(size: 12, weight: .bold)) - .foregroundStyle(.white.opacity(0.9)) + .foregroundStyle(WTheme.onSky.opacity(0.9)) .monospacedDigit() .opacity(grown ? 1 : 0) VStack { Spacer(minLength: 0) RoundedRectangle(cornerRadius: 5) - .fill(.white.opacity(0.9 - Double(pair.offset) * 0.18)) + .fill(WTheme.onSky.opacity(0.9 - Double(pair.offset) * 0.18)) .frame(height: grown ? 66 * bar.fraction + 8 : 6) } .frame(height: 74) Text(bar.label) .font(.system(size: 11.5, weight: .semibold)) - .foregroundStyle(.white.opacity(0.7)) + .foregroundStyle(WTheme.onSky.opacity(0.7)) } .frame(width: 62) .animation( @@ -1395,339 +1300,91 @@ struct PasswordStrengthBar: View { } } -// MARK: - The website's airy sky +// MARK: - Brand backdrop -/// The marketing site's auth backdrop, recreated from `web/src/global.css`: -/// a radial sky, a slow "breathing" light layer, a warm sun glow top-right, -/// and the site's painterly cloud renders gliding gently back and forth. +/// The brand moment behind sign-in and onboarding. Light: the site's sheer +/// sky photo, drifting slowly under a soft veil. Dark: a near-black canvas +/// with the dot grid and a sky aurora. Content on it uses `WTheme.onSky`. struct SkyBackdrop: View { var largeCloud = false - @State private var breathe = false - @State private var glide = false - - private static let skyStops: [Gradient.Stop] = [ - .init(color: Color(hex: 0x7DD3FC), location: 0), - .init(color: Color(hex: 0x38BDF8), location: 0.20), - .init(color: Color(hex: 0x0EA5E9), location: 0.40), - .init(color: Color(hex: 0x0284C7), location: 0.62), - .init(color: Color(hex: 0x075985), location: 0.84), - .init(color: Color(hex: 0x0C4A6E), location: 1), - ] + @Environment(\.colorScheme) private var scheme + @State private var drift = false var body: some View { - GeometryReader { proxy in - let size = proxy.size - ZStack { - // sky-base: radial from the upper area, light to deep. - RadialGradient( - stops: Self.skyStops, - center: UnitPoint(x: 0.6, y: 0.18), - startRadius: 0, - endRadius: max(size.width, size.height) * 1.15 - ) - - // sky-breathe: a soft light bloom that swells and fades. - RadialGradient( - stops: [ - .init(color: Color(hex: 0xBAE6FD).opacity(0.8), location: 0), - .init(color: Color(hex: 0x38BDF8).opacity(0.4), location: 0.20), - .init(color: Color(hex: 0x0EA5E9).opacity(0.16), location: 0.40), - .init(color: .clear, location: 0.62), - ], - center: UnitPoint(x: 0.6, y: 0.16), - startRadius: 0, - endRadius: max(size.width, size.height) * 1.05 - ) - .opacity(breathe ? 0.45 : 0.7) - .scaleEffect(breathe ? 1.05 : 1) - - // sun-glow: warm haze off the top-right corner. - RadialGradient( - stops: [ - .init(color: Color(hex: 0xFDE68A).opacity(0.34), location: 0), - .init(color: Color(hex: 0xFDBA74).opacity(0.12), location: 0.32), - .init(color: Color(hex: 0xBAE6FD).opacity(0.05), location: 0.55), - .init(color: .clear, location: 1), - ], - center: .center, - startRadius: 0, - endRadius: 210 - ) - .frame(width: 420, height: 420) - .blur(radius: 36) - .position(x: size.width * 0.96, y: size.height * 0.02) - - // Painterly clouds (the site's pre-rendered webp art), - // mirroring the web auth layout's placement and glide. - Image("Cloud3") - .resizable() - .scaledToFit() - .frame(width: 280) - .opacity(0.6) - .position(x: size.width * -0.16 + 140, y: size.height * 0.04 + 73) - .offset(x: glide ? 40 : 0, y: glide ? -10 : 0) - - Image("Cloud4") - .resizable() - .scaledToFit() - .frame(width: 240) - .opacity(0.5) - .position(x: size.width * 1.14 - 120, y: size.height * 0.88 - 63) - .offset(x: glide ? -38 : 0, y: glide ? 8 : 0) - - if largeCloud { - Image("Cloud1") - .resizable() - .scaledToFit() - .frame(width: 360) - .opacity(0.35) - .position(x: size.width * 0.85, y: size.height * 0.42) - .offset(x: glide ? -24 : 0, y: glide ? 6 : 0) - } - } + Group { + if scheme == .dark { night } else { photo } } .ignoresSafeArea() .onAppear { - withAnimation(.easeInOut(duration: 15).repeatForever(autoreverses: true)) { - breathe = true - } - withAnimation(.easeInOut(duration: 19).repeatForever(autoreverses: true)) { - glide = true + withAnimation(.easeInOut(duration: 14).repeatForever(autoreverses: true)) { + drift = true } } } -} -/// Where the app connects, for local dev or a self-hosted deployment. -/// Presets cover the common cases in one tap; the captcha token and realtime -/// origin live behind Advanced so the everyday view stays simple. -struct ServerConfigSheet: View { - @Environment(\.dismiss) private var dismiss - @State private var origin = AppConfig.serverOrigin - @State private var turnstile = AppConfig.turnstileToken - @State private var realtime = AppConfig.realtimeOriginOverride - @State private var showAdvanced = false - - @FocusState private var focused: Field? - private enum Field { case origin, turnstile, realtime } - - private var isDefault: Bool { - origin == AppConfig.defaultOrigin - && turnstile == AppConfig.defaultTurnstileToken - && realtime.isEmpty - } - - var body: some View { - ScrollView { - VStack(alignment: .leading, spacing: 0) { - HStack(alignment: .center, spacing: 14) { - Image(systemName: "globe") - .font(.system(size: 20, weight: .semibold)) - .foregroundStyle(.white) - .frame(width: 46, height: 46) - .background( - LinearGradient(colors: [Color(hex: 0x38BDF8), Color(hex: 0x0284C7)], startPoint: .topLeading, endPoint: .bottomTrailing), - in: RoundedRectangle(cornerRadius: 14) - ) - - VStack(alignment: .leading, spacing: 3) { - Text("Connection") - .font(.system(size: 24, weight: .bold)) - .tracking(-0.5) - Text("One app, any Warmbly server.") - .font(.system(size: 14)) - .foregroundStyle(.secondary) - } - - Spacer(minLength: 12) - - Button { - dismiss() - } label: { - Image(systemName: "xmark") - .font(.system(size: 13, weight: .semibold)) - .foregroundStyle(.secondary) - .frame(width: 32, height: 32) - .background(Color(.secondarySystemBackground), in: Circle()) - } - .buttonStyle(PressableButtonStyle()) - .accessibilityLabel("Close") - } - .padding(.bottom, 24) - - // One-tap environments. - HStack(spacing: 10) { - presetChip("Warmbly Cloud", icon: "cloud.fill", active: origin == "https://api.warmbly.com") { - origin = "https://api.warmbly.com" - turnstile = "" - realtime = "" - } - presetChip("Local dev", icon: "laptopcomputer", active: origin == "http://localhost:8080") { - origin = "http://localhost:8080" - turnstile = "warmbly-local-turnstile-bypass" - realtime = "" - } - } - .padding(.bottom, 24) - - fieldLabel("Server", icon: "server.rack") - configField( - TextField(AppConfig.defaultOrigin, text: $origin) - .keyboardType(.URL) - .textContentType(.URL) - .textInputAutocapitalization(.never) - .autocorrectionDisabled() - .focused($focused, equals: .origin), - focused: focused == .origin - ) - caption("Bare origin, no path. The app calls /v1. On a physical device, localhost won't reach your Mac; use your Mac's LAN IP or a tunnel URL instead.") - .padding(.bottom, 18) - - // Advanced: rarely needed, one quiet toggle, fields styled - // exactly like the rest of the form. - Button { - withAnimation(.spring(response: 0.4, dampingFraction: 0.85)) { - showAdvanced.toggle() - } - } label: { - HStack(spacing: 5) { - Text(showAdvanced ? "Hide advanced options" : "Advanced options") - .font(.system(size: 14, weight: .medium)) - Image(systemName: "chevron.down") - .font(.system(size: 10, weight: .semibold)) - .rotationEffect(.degrees(showAdvanced ? 180 : 0)) - } - .foregroundStyle(WTheme.accent) - } - .buttonStyle(PressableButtonStyle()) - .padding(.vertical, 2) - - if showAdvanced { - VStack(alignment: .leading, spacing: 0) { - fieldLabel("Captcha token", icon: "checkmark.shield") - .padding(.top, 20) - configField( - TextField("Turnstile token", text: $turnstile) - .textInputAutocapitalization(.never) - .autocorrectionDisabled() - .focused($focused, equals: .turnstile), - focused: focused == .turnstile - ) - caption("Only for self-hosted setups. Dev backends accept the bypass token; the hosted service needs nothing here.") - .padding(.bottom, 18) - - fieldLabel("Realtime server", icon: "bolt.horizontal") - configField( - TextField("Same as server (automatic)", text: $realtime) - .keyboardType(.URL) - .textInputAutocapitalization(.never) - .autocorrectionDisabled() - .focused($focused, equals: .realtime), - focused: focused == .realtime - ) - caption("Optional. Where live updates connect when your realtime service runs on a different host. Leave empty to let the server decide.") - } - .transition(.opacity.combined(with: .move(edge: .top))) - } - - if !isDefault { - Button("Reset to default") { - withAnimation(.easeOut(duration: 0.2)) { - origin = AppConfig.defaultOrigin - turnstile = AppConfig.defaultTurnstileToken - realtime = "" - } - } - .font(.system(size: 14.5, weight: .medium)) - .foregroundStyle(WTheme.accent) - .frame(maxWidth: .infinity) - .padding(.top, 22) - } - } - .padding(24) - } - .scrollBounceBehavior(.basedOnSize) - .safeAreaInset(edge: .bottom) { - Button { - AppConfig.serverOrigin = AppConfig.normalizeOrigin(origin) - AppConfig.turnstileToken = turnstile.trimmingCharacters(in: .whitespaces) - AppConfig.realtimeOriginOverride = AppConfig.normalizeOrigin(realtime) - dismiss() - } label: { - Text("Save") - .font(.system(size: 17, weight: .semibold)) - .foregroundStyle(.white) - .frame(maxWidth: .infinity) - .frame(height: 56) - .background( - LinearGradient(colors: [Color(hex: 0x0EA5E9), Color(hex: 0x0284C7)], startPoint: .top, endPoint: .bottom), - in: RoundedRectangle(cornerRadius: 17) + private var photo: some View { + GeometryReader { proxy in + Image("SheerSky") + .resizable() + .scaledToFill() + .frame(width: proxy.size.width * 1.12, height: proxy.size.height) + .offset(x: proxy.size.width * (drift ? -0.1 : -0.02)) + .frame(width: proxy.size.width, height: proxy.size.height, alignment: .leading) + .clipped() + .overlay { + // A veil so ink reads on the darker folds, fading into the sheet. + LinearGradient( + colors: [.white.opacity(0.42), .white.opacity(0.08), .white.opacity(0.3), .white], + startPoint: .top, + endPoint: .bottom ) - .shadow(color: Color(hex: 0x0284C7).opacity(0.32), radius: 12, y: 6) + } + } + } + + private var night: some View { + GeometryReader { proxy in + let size = proxy.size + ZStack { + WTheme.night + + DotGrid(spacing: 22, opacity: 0.11, color: .white) + .mask( + RadialGradient( + colors: [.black, .black.opacity(0.4), .clear], + center: UnitPoint(x: 0.5, y: 0.1), + startRadius: 0, + endRadius: max(size.width, size.height) * 0.75 + ) + ) + + // Sky aurora: two soft blooms drifting against each other. + Ellipse() + .fill(Color(hex: 0x0EA5E9).opacity(0.42)) + .frame(width: size.width * 1.2, height: size.width * 0.75) + .blur(radius: 80) + .position(x: size.width * (drift ? 0.32 : 0.42), y: -size.width * 0.06) + Ellipse() + .fill(Color(hex: 0x6366F1).opacity(0.26)) + .frame(width: size.width * 0.9, height: size.width * 0.6) + .blur(radius: 90) + .position(x: size.width * (drift ? 0.92 : 0.78), y: size.width * (largeCloud ? 0.2 : 0.06)) + Ellipse() + .fill(Color(hex: 0x7DD3FC).opacity(0.18)) + .frame(width: size.width * 0.7, height: size.width * 0.32) + .blur(radius: 60) + .position(x: size.width * 0.5, y: size.width * (drift ? 0.16 : 0.1)) + + // Faint grain of light across the top edge, like a horizon. + LinearGradient( + colors: [.clear, .white.opacity(0.14), .clear], + startPoint: .leading, + endPoint: .trailing + ) + .frame(height: 1) + .position(x: size.width / 2, y: size.height * 0.001 + 0.5) } - .buttonStyle(PressableButtonStyle()) - .padding(.horizontal, 24) - .padding(.top, 10) - .padding(.bottom, 6) - .background(Color(.systemBackground)) } - .presentationBackground(Color(.systemBackground)) - .presentationDetents([.medium, .large]) - .presentationDragIndicator(.visible) - } - - private func presetChip(_ title: String, icon: String, active: Bool, action: @escaping () -> Void) -> some View { - Button { - withAnimation(.spring(response: 0.3, dampingFraction: 0.8)) { action() } - } label: { - HStack(spacing: 7) { - Image(systemName: icon) - .font(.system(size: 12.5)) - Text(title) - .font(.system(size: 14, weight: .semibold)) - } - .foregroundStyle(active ? .white : .primary) - .padding(.horizontal, 15) - .frame(height: 38) - .background( - active ? AnyShapeStyle(WTheme.accent) : AnyShapeStyle(Color(.secondarySystemBackground)), - in: Capsule() - ) - } - .buttonStyle(PressableButtonStyle()) - } - - private func fieldLabel(_ text: String, icon: String) -> some View { - HStack(spacing: 6) { - Image(systemName: icon) - .font(.system(size: 11)) - Text(text.uppercased()) - .font(.system(size: 11, weight: .semibold)) - .tracking(1.3) - } - .foregroundStyle(.secondary) - .padding(.bottom, 8) - } - - private func configField(_ content: some View, focused: Bool) -> some View { - content - .font(.system(size: 15.5)) - .padding(.horizontal, 15) - .frame(height: 52) - .background(Color(.secondarySystemBackground), in: RoundedRectangle(cornerRadius: 15)) - .overlay( - RoundedRectangle(cornerRadius: 15) - .strokeBorder(focused ? WTheme.accent : .clear, lineWidth: 1.8) - ) - .animation(.easeOut(duration: 0.18), value: focused) - .padding(.bottom, 8) - } - - private func caption(_ text: String) -> some View { - Text(text) - .font(.system(size: 12.5)) - .foregroundStyle(.tertiary) - .fixedSize(horizontal: false, vertical: true) } } diff --git a/ios/Warmbly/Features/Auth/FlowChrome.swift b/ios/Warmbly/Features/Auth/FlowChrome.swift new file mode 100644 index 000000000..4f7625281 --- /dev/null +++ b/ios/Warmbly/Features/Auth/FlowChrome.swift @@ -0,0 +1,165 @@ +import SwiftUI + +// Chrome shared by sign-in, the first-run questions and workspace creation: +// one top bar with the step progress, and a sky that never crams. + +/// The top bar over the sky: back (or the wordmark on a first step), the +/// step progress centered, and one trailing action. +struct FlowTopBar: View { + var onBack: (() -> Void)? + var progress: (index: Int, total: Int)? + @ViewBuilder var trailing: () -> Trailing + + var body: some View { + ZStack { + HStack(spacing: 12) { + if let onBack { + FlowSkyButton(symbol: "chevron.left", label: "Back", action: onBack) + .transition(.opacity.combined(with: .scale(scale: 0.7))) + } else { + FlowWordmark() + .transition(.opacity) + } + Spacer(minLength: 12) + trailing() + } + if let progress { + FlowProgress(index: progress.index, total: progress.total) + .transition(.opacity) + } + } + .frame(height: 44) + .padding(.horizontal, 16) + .padding(.top, 6) + .animation(.spring(response: 0.45, dampingFraction: 0.86), value: onBack == nil) + } +} + +/// The logo and name, for the screen a flow opens on. +struct FlowWordmark: View { + var body: some View { + HStack(spacing: 8) { + WarmblyLogo() + .fill(WTheme.onSky) + .frame(width: 25, height: 26) + Text("Warmbly") + .font(.system(size: 19, weight: .semibold)) + .tracking(-0.5) + .foregroundStyle(WTheme.onSky) + .fixedSize() + } + .accessibilityElement(children: .combine) + } +} + +/// A round glass button on the sky. +struct FlowSkyButton: View { + let symbol: String + let label: String + let action: () -> Void + + var body: some View { + Button(action: action) { + Image(systemName: symbol) + .font(.system(size: 15, weight: .semibold)) + .foregroundStyle(WTheme.onSky) + .frame(width: 40, height: 40) + .background(WTheme.skyTile(0.12), in: Circle()) + .overlay(Circle().strokeBorder(WTheme.skyEdge(0.16), lineWidth: 1)) + } + .buttonStyle(PressableButtonStyle()) + .accessibilityLabel(label) + } +} + +/// A text pill on the sky, like Sign out. +struct FlowSkyPill: View { + let title: String + let action: () -> Void + + var body: some View { + Button(title, action: action) + .font(.system(size: 14, weight: .semibold)) + .foregroundStyle(WTheme.onSky) + .padding(.horizontal, 15) + .frame(height: 36) + .background(WTheme.skyTile(0.12), in: Capsule()) + .overlay(Capsule().strokeBorder(WTheme.skyEdge(0.16), lineWidth: 1)) + .buttonStyle(PressableButtonStyle()) + } +} + +/// Where a flow is: one segment per step, the current one long. +struct FlowProgress: View { + let index: Int + let total: Int + + var body: some View { + HStack(spacing: 5) { + ForEach(0 ..< total, id: \.self) { step in + Capsule() + .fill(WTheme.onSky.opacity(step <= index ? 0.88 : 0.18)) + .frame(width: step == index ? 24 : 12, height: 4) + } + } + .animation(.spring(response: 0.42, dampingFraction: 0.8), value: index) + .accessibilityElement() + .accessibilityLabel("Step \(index + 1) of \(total)") + } +} + +/// The sky between the top bar and the sheet. With room it holds the step's +/// icon and name over the flight ambience; when the keyboard takes the room it +/// is just sky, since the top bar already says where you are. +struct FlowSkyStage: View { + let icon: String + let title: String + var onTap: () -> Void = {} + + /// Below this the badge would crowd the top bar, so it steps aside. + static let roomyHeight: CGFloat = 150 + + @State private var appeared = false + + var body: some View { + GeometryReader { proxy in + let roomy = proxy.size.height >= Self.roomyHeight + ZStack { + Color.clear + .contentShape(Rectangle()) + .onTapGesture(perform: onTap) + if roomy { + HeroFlightScene() + .transition(.opacity) + badge + .scaleEffect(appeared ? 1 : 0.9) + .opacity(appeared ? 1 : 0) + .transition(.opacity.combined(with: .scale(scale: 0.92))) + } + } + .frame(width: proxy.size.width, height: proxy.size.height) + .animation(.easeOut(duration: 0.22), value: roomy) + } + .onAppear { + withAnimation(.spring(response: 0.7, dampingFraction: 0.75).delay(0.05)) { appeared = true } + } + } + + private var badge: some View { + VStack(spacing: 12) { + Image(systemName: icon) + .font(.system(size: 21, weight: .semibold)) + .foregroundStyle(WTheme.onSky) + .contentTransition(.symbolEffect(.replace)) + .frame(width: 56, height: 56) + .background(WTheme.skyTile(0.16), in: Circle()) + .overlay(Circle().strokeBorder(WTheme.skyEdge(0.3), lineWidth: 1)) + Text(title) + .font(.system(size: 16, weight: .semibold)) + .foregroundStyle(WTheme.onSky) + .contentTransition(.opacity) + } + .shadow(color: Color(hex: 0x0C4A6E).opacity(0.18), radius: 8, y: 3) + .animation(.spring(response: 0.45, dampingFraction: 0.85), value: icon) + } +} diff --git a/ios/Warmbly/Features/Auth/OnboardingFlowView.swift b/ios/Warmbly/Features/Auth/OnboardingFlowView.swift index 5f452264f..57a311c41 100644 --- a/ios/Warmbly/Features/Auth/OnboardingFlowView.swift +++ b/ios/Warmbly/Features/Auth/OnboardingFlowView.swift @@ -40,7 +40,6 @@ struct OnboardingFlowView: View { @State private var busy = false @State private var errorMessage: String? @State private var errorPulse = 0 - @State private var badgeAppeared = false @FocusState private var focusedName: NameField? private enum NameField { case first, last } @@ -81,7 +80,18 @@ struct OnboardingFlowView: View { } .sensoryFeedback(.impact(weight: .light), trigger: page) .sensoryFeedback(.error, trigger: errorPulse) - .onAppear { prefillName() } + .onAppear { + prefillName() + #if DEBUG + // Scripted runs can open a later page (WARMBLY_DEBUG_ONBOARDING) to see it. + switch ProcessInfo.processInfo.environment["WARMBLY_DEBUG_ONBOARDING"] { + case "referral": page = .referral + case "role": page = .role + case "team": page = .teamSize + default: break + } + #endif + } } private var pageTransition: AnyTransition { @@ -94,145 +104,23 @@ struct OnboardingFlowView: View { // MARK: - Sky chrome private var topBar: some View { - HStack(spacing: 12) { - if page != .name { - Button { - goBack() - } label: { - Image(systemName: "chevron.left") - .font(.system(size: 15, weight: .semibold)) - .foregroundStyle(.white) - .frame(width: 40, height: 40) - .background(.white.opacity(0.16), in: Circle()) - } - .buttonStyle(PressableButtonStyle()) - .accessibilityLabel("Back") - .transition(.opacity.combined(with: .scale(scale: 0.7))) - } - - HStack(spacing: 8) { - WarmblyLogo() - .fill(.white) - .frame(width: 27, height: 28) - Text("Warmbly") - .font(.system(size: 20, weight: .heavy)) - .tracking(-0.4) - .foregroundStyle(.white) - .fixedSize() - } - .shadow(color: Color(hex: 0x0C4A6E).opacity(0.25), radius: 8, y: 3) - - Spacer() - - Button("Sign out") { + FlowTopBar( + onBack: page == .name ? nil : { goBack() }, + progress: (page.rawValue, Page.allCases.count) + ) { + FlowSkyPill(title: "Sign out") { Task { await env.session.logout() } } - .font(.system(size: 13.5, weight: .semibold)) - .foregroundStyle(.white.opacity(0.9)) - .padding(.horizontal, 14) - .frame(height: 34) - .background(.white.opacity(0.16), in: Capsule()) - .buttonStyle(PressableButtonStyle()) } - .padding(.horizontal, 16) - .padding(.top, 6) - .animation(.spring(response: 0.45, dampingFraction: 0.86), value: page) } - /// The animated sky window: flight ambience plus the current page's badge - /// (icon, question name, position). Picks the tallest badge that fits so - /// the keyboard on the name page only compacts it, never kills it. + /// The sky between the top bar and the sheet: the page's icon and name + /// when there is room, plain sky while the keyboard is up. private var skyArea: some View { - ZStack { - Color.clear - .contentShape(Rectangle()) - .onTapGesture { focusedName = nil } - - HeroFlightScene() - - pageBadge - .scaleEffect(badgeAppeared ? 1 : 0.9) - .opacity(badgeAppeared ? 1 : 0) - } - .frame(maxWidth: .infinity, minHeight: 40, maxHeight: .infinity) - .animation(.spring(response: 0.5, dampingFraction: 0.85), value: page) - .onAppear { - withAnimation(.spring(response: 0.7, dampingFraction: 0.75).delay(0.05)) { - badgeAppeared = true - } - } + FlowSkyStage(icon: page.icon, title: page.skyLabel) { focusedName = nil } + .frame(maxWidth: .infinity, minHeight: 88, maxHeight: .infinity) } - private var pageBadge: some View { - ViewThatFits(in: .vertical) { - VStack(spacing: 12) { - ZStack { - Circle().fill(.white.opacity(0.16)) - Circle().strokeBorder(.white.opacity(0.3), lineWidth: 1) - Image(systemName: page.icon) - .font(.system(size: 20, weight: .semibold)) - .foregroundStyle(.white) - .contentTransition(.symbolEffect(.replace)) - } - .frame(width: 54, height: 54) - - VStack(spacing: 4) { - Text(page.skyLabel) - .font(.system(size: 15.5, weight: .bold)) - .foregroundStyle(.white) - .contentTransition(.opacity) - Text("Step \(page.rawValue + 1) of \(Page.allCases.count)") - .font(.system(size: 12)) - .foregroundStyle(.white.opacity(0.7)) - .contentTransition(.numericText()) - } - - pageSegments - } - .padding(.vertical, 16) - - HStack(spacing: 10) { - ZStack { - Circle().fill(.white.opacity(0.16)) - Circle().strokeBorder(.white.opacity(0.3), lineWidth: 1) - Image(systemName: page.icon) - .font(.system(size: 13, weight: .semibold)) - .foregroundStyle(.white) - .contentTransition(.symbolEffect(.replace)) - } - .frame(width: 34, height: 34) - - VStack(alignment: .leading, spacing: 4) { - Text(page.skyLabel) - .font(.system(size: 13.5, weight: .semibold)) - .foregroundStyle(.white) - .contentTransition(.opacity) - HStack(spacing: 7) { - pageSegments - Text("Step \(page.rawValue + 1) of \(Page.allCases.count)") - .font(.system(size: 11)) - .foregroundStyle(.white.opacity(0.7)) - .contentTransition(.numericText()) - } - } - } - .padding(.vertical, 8) - } - .shadow(color: Color(hex: 0x0C4A6E).opacity(0.25), radius: 6, y: 2) - } - - private var pageSegments: some View { - HStack(spacing: 6) { - ForEach(Page.allCases, id: \.rawValue) { segment in - Capsule() - .fill(.white.opacity(segment.rawValue <= page.rawValue ? 0.95 : 0.3)) - .frame(width: segment == page ? 26 : 14, height: 4) - } - } - } - - // MARK: - The sheet - private var sheet: some View { VStack(alignment: .leading, spacing: 0) { // Always a ScrollView: ViewThatFits swaps identities when the @@ -293,7 +181,7 @@ struct OnboardingFlowView: View { } label: { Group { if busy { - ProgressView().tint(.white) + ProgressView().tint(WTheme.inkInverse) } else { HStack(spacing: 8) { Text(page == .teamSize ? "Enter Warmbly" : "Continue") @@ -304,21 +192,11 @@ struct OnboardingFlowView: View { } } } - .font(.system(size: 17, weight: .semibold)) - .foregroundStyle(.white) + .font(.system(size: 16.5, weight: .medium)) + .foregroundStyle(WTheme.inkInverse) .frame(maxWidth: .infinity) - .frame(height: 56) - .background( - LinearGradient( - colors: !canAdvance && !busy - ? [WTheme.accent.opacity(0.35), WTheme.accent.opacity(0.35)] - : [Color(hex: 0x0EA5E9), Color(hex: 0x0284C7)], - startPoint: .top, - endPoint: .bottom - ), - in: RoundedRectangle(cornerRadius: 17) - ) - .shadow(color: !canAdvance ? .clear : Color(hex: 0x0284C7).opacity(0.32), radius: 12, y: 6) + .frame(height: 54) + .background(WTheme.ink.opacity(!canAdvance && !busy ? 0.18 : 1), in: Capsule()) } .buttonStyle(PressableButtonStyle()) .disabled(busy || !canAdvance) @@ -346,12 +224,11 @@ struct OnboardingFlowView: View { private func pageTitle(_ title: String, _ subtitle: String) -> some View { VStack(alignment: .leading, spacing: 7) { Text(title) - .font(.system(size: 30, weight: .bold)) - .tracking(-0.6) - .foregroundStyle(.primary) + .displayFont(32) + .foregroundStyle(WTheme.ink) Text(subtitle) .font(.system(size: 15.5)) - .foregroundStyle(.secondary) + .foregroundStyle(WTheme.inkSecondary) .fixedSize(horizontal: false, vertical: true) } .frame(maxWidth: .infinity, alignment: .leading) diff --git a/ios/Warmbly/Features/Auth/OrgPickerView.swift b/ios/Warmbly/Features/Auth/OrgPickerView.swift index 1212eeca4..3b30481ac 100644 --- a/ios/Warmbly/Features/Auth/OrgPickerView.swift +++ b/ios/Warmbly/Features/Auth/OrgPickerView.swift @@ -42,12 +42,12 @@ struct OrgPickerView: View { HStack(spacing: 12) { HStack(spacing: 8) { WarmblyLogo() - .fill(.white) + .fill(WTheme.onSky) .frame(width: 27, height: 28) Text("Warmbly") .font(.system(size: 20, weight: .heavy)) .tracking(-0.4) - .foregroundStyle(.white) + .foregroundStyle(WTheme.onSky) .fixedSize() } .shadow(color: Color(hex: 0x0C4A6E).opacity(0.25), radius: 8, y: 3) @@ -58,10 +58,10 @@ struct OrgPickerView: View { Task { await env.session.logout() } } .font(.system(size: 13.5, weight: .semibold)) - .foregroundStyle(.white.opacity(0.9)) + .foregroundStyle(WTheme.onSky.opacity(0.9)) .padding(.horizontal, 14) .frame(height: 34) - .background(.white.opacity(0.16), in: Capsule()) + .background(WTheme.skyTile(0.16), in: Capsule()) .buttonStyle(PressableButtonStyle()) } .padding(.horizontal, 16) @@ -74,17 +74,17 @@ struct OrgPickerView: View { VStack(spacing: 12) { ZStack { - Circle().fill(.white.opacity(0.16)) - Circle().strokeBorder(.white.opacity(0.3), lineWidth: 1) + Circle().fill(WTheme.skyTile(0.16)) + Circle().strokeBorder(WTheme.skyEdge(0.3), lineWidth: 1) Image(systemName: "person.2.fill") .font(.system(size: 20, weight: .semibold)) - .foregroundStyle(.white) + .foregroundStyle(WTheme.onSky) } .frame(width: 54, height: 54) Text("Choose a workspace") .font(.system(size: 15.5, weight: .bold)) - .foregroundStyle(.white) + .foregroundStyle(WTheme.onSky) } .shadow(color: Color(hex: 0x0C4A6E).opacity(0.25), radius: 6, y: 2) .scaleEffect(badgeAppeared ? 1 : 0.9) diff --git a/ios/Warmbly/Features/Auth/ServerConfigSheet.swift b/ios/Warmbly/Features/Auth/ServerConfigSheet.swift new file mode 100644 index 000000000..da17c198c --- /dev/null +++ b/ios/Warmbly/Features/Auth/ServerConfigSheet.swift @@ -0,0 +1,491 @@ +import SwiftUI + +/// Where the app signs in: Warmbly Cloud unless someone picks their own +/// server. The app proves itself with App Attest rather than a captcha; only a +/// dev backend takes a bypass token, for the simulator, which cannot attest. +struct ServerConfigSheet: View { + @Environment(\.dismiss) private var dismiss + + enum Choice: Hashable { case cloud, selfHosted, local } + + @State private var choice: Choice + @State private var customOrigin: String + @State private var turnstile = AppConfig.turnstileToken + @State private var realtime = AppConfig.realtimeOriginOverride + @State private var showAdvanced = false + @State private var probe: Probe = .idle + @State private var saved = 0 + + @FocusState private var focused: Field? + private enum Field { case origin, turnstile, realtime } + + enum Probe: Equatable { case idle, checking, reachable(ServerInfo?), unreachable } + + /// The slice of `GET /v1/auth/config` the sheet shows. + struct ServerInfo: Decodable, Equatable { + let captcha: Bool + let appAttest: Bool? + let selfHosted: Bool? + let brand: Brand? + struct Brand: Decodable, Equatable { let name: String? } + } + + /// False only once the chosen server said it verifies no captcha. + private var needsCaptcha: Bool { + if case .reachable(let info?) = probe { return info.captcha } + return true + } + + /// A server that wants a captcha but takes no App Attest proof: email sign-in is web-only there. + private var emailSignInOff: Bool { + if case .reachable(let info?) = probe { return info.captcha && info.appAttest != true } + return false + } + + /// A dev backend's bypass token, for the simulator (which cannot attest) or a server without App Attest. + private var asksBypassToken: Bool { (choice == .local && needsCaptcha) || (choice == .selfHosted && emailSignInOff) } + + init() { + let origin = AppConfig.serverOrigin + switch origin { + case AppConfig.cloudOrigin: + _choice = State(initialValue: .cloud) + _customOrigin = State(initialValue: "") + case AppConfig.localOrigin: + _choice = State(initialValue: .local) + _customOrigin = State(initialValue: "") + default: + _choice = State(initialValue: .selfHosted) + _customOrigin = State(initialValue: origin) + } + } + + /// The origin the current choice resolves to, or nil while it is unusable. + private var resolvedOrigin: String? { + switch choice { + case .cloud: return AppConfig.cloudOrigin + case .local: return AppConfig.localOrigin + case .selfHosted: + let value = AppConfig.normalizeOrigin(customOrigin) + guard let url = URL(string: value), url.host() != nil else { return nil } + return value + } + } + + private var showsLocal: Bool { + #if DEBUG + return true + #else + return choice == .local + #endif + } + + var body: some View { + ScrollView { + VStack(alignment: .leading, spacing: 0) { + header + .padding(.bottom, 22) + + options + + status + .padding(.top, 10) + .padding(.horizontal, 6) + + if choice != .cloud { + advanced + .padding(.top, 26) + .transition(.opacity.combined(with: .move(edge: .top))) + } + } + .padding(.horizontal, 20) + .padding(.top, 22) + .padding(.bottom, 16) + } + .scrollBounceBehavior(.basedOnSize) + .scrollDismissesKeyboard(.interactively) + .safeAreaInset(edge: .bottom) { saveBar } + .background(WTheme.groupedPage) + .presentationBackground(WTheme.groupedPage) + .presentationDetents([.medium, .large]) + .presentationDragIndicator(.visible) + .presentationCornerRadius(30) + .animation(.spring(response: 0.42, dampingFraction: 0.86), value: choice) + .animation(.spring(response: 0.4, dampingFraction: 0.86), value: showAdvanced) + .animation(.spring(response: 0.4, dampingFraction: 0.86), value: needsCaptcha) + .sensoryFeedback(.selection, trigger: choice) + .sensoryFeedback(.success, trigger: saved) + .task(id: resolvedOrigin) { await check(resolvedOrigin) } + } + + // MARK: Header + + private var header: some View { + HStack(alignment: .top, spacing: 12) { + VStack(alignment: .leading, spacing: 4) { + Text("Server") + .displayFont(28) + .foregroundStyle(WTheme.ink) + Text("Where this app signs in.") + .font(.system(size: 15)) + .foregroundStyle(WTheme.inkSecondary) + } + Spacer(minLength: 12) + Button { dismiss() } label: { + Image(systemName: "xmark") + .font(.system(size: 13, weight: .bold)) + .foregroundStyle(WTheme.inkSecondary) + .frame(width: 32, height: 32) + .background(WTheme.fill, in: Circle()) + } + .buttonStyle(PressableButtonStyle()) + .accessibilityLabel("Close") + } + } + + // MARK: Options + + private var options: some View { + VStack(spacing: 0) { + optionRow( + .cloud, + title: "Warmbly Cloud", + subtitle: "Hosted by Warmbly", + badge: "Default" + ) { + WarmblyLogo() + .fill(WTheme.accent) + .frame(width: 17, height: 18) + .frame(width: 34, height: 34) + .background(WTheme.accent.opacity(0.13), in: RoundedRectangle(cornerRadius: 10, style: .continuous)) + } + + divider + + VStack(spacing: 0) { + optionRow(.selfHosted, title: "Self-hosted", subtitle: "Your own Warmbly instance") { + SettingsIcon(symbol: "server.rack", color: WTheme.special, size: 34) + } + if choice == .selfHosted { + originField + .padding(.leading, 62) + .padding(.trailing, 14) + .padding(.bottom, 14) + .transition(.opacity.combined(with: .move(edge: .top))) + } + } + + if showsLocal { + divider + optionRow(.local, title: "Local development", subtitle: "localhost:8080 on this Mac") { + SettingsIcon(symbol: "laptopcomputer", color: WTheme.warning, size: 34) + } + } + } + .background(WTheme.groupedCard, in: RoundedRectangle(cornerRadius: 22, style: .continuous)) + .clipShape(RoundedRectangle(cornerRadius: 22, style: .continuous)) + } + + private var divider: some View { + Rectangle() + .fill(WTheme.hairlineStrong) + .frame(height: 0.5) + .padding(.leading, 62) + } + + private func optionRow( + _ value: Choice, + title: String, + subtitle: String, + badge: String? = nil, + @ViewBuilder icon: () -> some View + ) -> some View { + let selected = choice == value + return Button { + select(value) + } label: { + HStack(spacing: 14) { + icon() + VStack(alignment: .leading, spacing: 2) { + HStack(spacing: 7) { + Text(title) + .font(.system(size: 16, weight: .semibold)) + .foregroundStyle(WTheme.ink) + if let badge { + Text(badge) + .font(.system(size: 11, weight: .semibold)) + .foregroundStyle(WTheme.accent) + .padding(.horizontal, 7) + .padding(.vertical, 2.5) + .background(WTheme.accentSoft, in: Capsule()) + } + } + Text(subtitle) + .font(.system(size: 13.5)) + .foregroundStyle(WTheme.inkSecondary) + } + Spacer(minLength: 8) + RadioMark(on: selected) + } + .padding(.horizontal, 14) + .padding(.vertical, 13) + .contentShape(Rectangle()) + } + .buttonStyle(MoreRowPressStyle()) + .accessibilityAddTraits(selected ? .isSelected : []) + } + + private var originField: some View { + HStack(spacing: 8) { + Image(systemName: "link") + .font(.system(size: 13, weight: .medium)) + .foregroundStyle(WTheme.inkTertiary) + TextField("warmbly.yourcompany.com", text: $customOrigin) + .font(.system(size: 15)) + .foregroundStyle(WTheme.ink) + .keyboardType(.URL) + .textContentType(.URL) + .textInputAutocapitalization(.never) + .autocorrectionDisabled() + .submitLabel(.done) + .focused($focused, equals: .origin) + } + .padding(.horizontal, 12) + .frame(height: 44) + .background(WTheme.fill, in: RoundedRectangle(cornerRadius: 12, style: .continuous)) + .overlay( + RoundedRectangle(cornerRadius: 12, style: .continuous) + .strokeBorder(focused == .origin ? WTheme.accent : .clear, lineWidth: 1.5) + ) + .animation(.easeOut(duration: 0.18), value: focused == .origin) + } + + // MARK: Status + + private var status: some View { + HStack(spacing: 7) { + Group { + switch probe { + case .checking, .idle: + ProgressView().controlSize(.mini) + case .reachable: + Circle().fill(WTheme.positive).frame(width: 7, height: 7) + case .unreachable: + Circle().fill(WTheme.negative).frame(width: 7, height: 7) + } + } + .frame(width: 12, height: 12) + Text(statusText) + .font(.system(size: 12.5)) + .foregroundStyle(WTheme.inkSecondary) + .lineLimit(1) + .truncationMode(.middle) + .contentTransition(.opacity) + if choice == .selfHosted, emailSignInOff { + Text("Email sign-in off") + .font(.system(size: 11.5, weight: .semibold)) + .foregroundStyle(WTheme.warning) + .padding(.horizontal, 7) + .padding(.vertical, 2.5) + .background(WTheme.warning.opacity(0.12), in: Capsule()) + .fixedSize() + .transition(.opacity.combined(with: .scale(scale: 0.85))) + } + } + .opacity(resolvedOrigin == nil ? 0 : 1) + .animation(.easeOut(duration: 0.2), value: probe) + } + + private var statusText: String { + let host = resolvedOrigin.flatMap { URL(string: $0)?.host(percentEncoded: false) } ?? "" + switch probe { + case .idle, .checking: return "Checking \(host)" + case .reachable(let info): + let name = info?.brand?.name.flatMap { $0.isEmpty ? nil : $0 } + return "Connected to \(choice == .selfHosted ? name ?? host : host)" + case .unreachable: return "Can't reach \(host)" + } + } + + private func check(_ origin: String?) async { + guard let origin, let url = URL(string: origin + "/v1/auth/config") else { + probe = .idle + return + } + probe = .checking + try? await Task.sleep(for: .milliseconds(450)) + guard !Task.isCancelled else { return } + var request = URLRequest(url: url, timeoutInterval: 5) + request.httpMethod = "GET" + let result: Probe + do { + let (data, response) = try await URLSession.shared.data(for: request) + let status = (response as? HTTPURLResponse)?.statusCode ?? 500 + let decoder = JSONDecoder() + decoder.keyDecodingStrategy = .convertFromSnakeCase + // An older server without the endpoint still answered. + result = status < 500 ? .reachable(try? decoder.decode(ServerInfo.self, from: data)) : .unreachable + } catch { + result = .unreachable + } + guard !Task.isCancelled else { return } + probe = result + } + + // MARK: Advanced + + private var advanced: some View { + VStack(alignment: .leading, spacing: 10) { + Button { + showAdvanced.toggle() + } label: { + HStack(spacing: 6) { + Text("Advanced") + .font(.system(size: 14, weight: .semibold)) + Image(systemName: "chevron.down") + .font(.system(size: 10, weight: .bold)) + .rotationEffect(.degrees(showAdvanced ? 180 : 0)) + } + .foregroundStyle(WTheme.inkSecondary) + .padding(.horizontal, 6) + .contentShape(Rectangle()) + } + .buttonStyle(PressableButtonStyle()) + + if showAdvanced { + VStack(spacing: 0) { + if asksBypassToken { + advancedField( + "Captcha bypass", + placeholder: "Dev bypass token", + text: $turnstile, + field: .turnstile + ) + Rectangle() + .fill(WTheme.hairlineStrong) + .frame(height: 0.5) + .padding(.leading, 14) + } + advancedField( + "Realtime server", + placeholder: "Same as server", + text: $realtime, + field: .realtime + ) + .keyboardType(.URL) + } + .background(WTheme.groupedCard, in: RoundedRectangle(cornerRadius: 18, style: .continuous)) + .transition(.opacity.combined(with: .move(edge: .top))) + + Text(advancedHint) + .font(.system(size: 12.5)) + .foregroundStyle(WTheme.inkTertiary) + .fixedSize(horizontal: false, vertical: true) + .padding(.horizontal, 6) + .transition(.opacity) + } + } + } + + private func advancedField(_ title: String, placeholder: String, text: Binding, field: Field) -> some View { + VStack(alignment: .leading, spacing: 3) { + Text(title) + .font(.system(size: 12, weight: .medium)) + .foregroundStyle(focused == field ? WTheme.accent : WTheme.inkSecondary) + TextField(placeholder, text: text) + .font(.system(size: 15)) + .foregroundStyle(WTheme.ink) + .textInputAutocapitalization(.never) + .autocorrectionDisabled() + .focused($focused, equals: field) + } + .padding(.horizontal, 14) + .padding(.vertical, 11) + .contentShape(Rectangle()) + .onTapGesture { focused = field } + .animation(.easeOut(duration: 0.18), value: focused == field) + } + + // MARK: Save + + private var saveBar: some View { + Button(action: save) { + Text(choice == .cloud ? "Use Warmbly Cloud" : "Save") + .font(.system(size: 16.5, weight: .semibold)) + .foregroundStyle(WTheme.inkInverse) + .contentTransition(.opacity) + .frame(maxWidth: .infinity) + .frame(height: 54) + .background(WTheme.ink.opacity(resolvedOrigin == nil ? 0.18 : 1), in: Capsule()) + } + .buttonStyle(PressableButtonStyle()) + .disabled(resolvedOrigin == nil) + .padding(.horizontal, 20) + .padding(.top, 10) + .padding(.bottom, 8) + .background(WTheme.groupedPage) + } + + private var advancedHint: String { + if emailSignInOff, choice == .selfHosted { + return "This server asks for a captcha but takes no App Attest proof. On a dev backend, enter its TURNSTILE_BYPASS_TOKEN; otherwise sign in with Apple, Google or a passkey, or set APP_ATTEST_APP_IDS on the server." + } + return asksBypassToken + ? "The bypass token is the dev stack's TURNSTILE_BYPASS_TOKEN. The realtime field is only needed when live updates run on a separate host." + : "Only needed when your server runs live updates on a separate host." + } + + private func select(_ value: Choice) { + guard choice != value else { return } + choice = value + switch value { + case .cloud: + focused = nil + showAdvanced = false + case .selfHosted: + if turnstile == AppConfig.localTurnstileToken { turnstile = "" } + if customOrigin.isEmpty { focused = .origin } + case .local: + focused = nil + if turnstile.isEmpty { turnstile = AppConfig.localTurnstileToken } + } + } + + private func save() { + guard let origin = resolvedOrigin else { return } + AppConfig.serverOrigin = origin + if choice == .cloud { + AppConfig.turnstileToken = "" + AppConfig.realtimeOriginOverride = "" + } else { + AppConfig.turnstileToken = asksBypassToken ? turnstile.trimmingCharacters(in: .whitespaces) : "" + AppConfig.realtimeOriginOverride = AppConfig.normalizeOrigin(realtime) + } + saved += 1 + dismiss() + } +} + +/// A radio dot that fills with a tick when chosen. +private struct RadioMark: View { + let on: Bool + + var body: some View { + ZStack { + Circle() + .strokeBorder(WTheme.hairlineStrong, lineWidth: 1.5) + .opacity(on ? 0 : 1) + Circle() + .fill(WTheme.accent) + .scaleEffect(on ? 1 : 0.3) + .opacity(on ? 1 : 0) + Image(systemName: "checkmark") + .font(.system(size: 11, weight: .bold)) + .foregroundStyle(.white) + .scaleEffect(on ? 1 : 0.4) + .opacity(on ? 1 : 0) + } + .frame(width: 22, height: 22) + .animation(.spring(response: 0.34, dampingFraction: 0.62), value: on) + } +} diff --git a/ios/Warmbly/Features/Auth/SocialSignIn.swift b/ios/Warmbly/Features/Auth/SocialSignIn.swift index ae110d92f..675e5ba53 100644 --- a/ios/Warmbly/Features/Auth/SocialSignIn.swift +++ b/ios/Warmbly/Features/Auth/SocialSignIn.swift @@ -31,8 +31,10 @@ struct SocialSignInRow: View { handleApple(result) } .signInWithAppleButtonStyle(colorScheme == .dark ? .white : .black) - .frame(height: 56) - .clipShape(RoundedRectangle(cornerRadius: 17)) + // The UIKit button keeps the style it was built with; rebuild it when the theme lands. + .id(colorScheme) + .frame(height: 54) + .clipShape(Capsule()) .disabled(busy) } @@ -48,12 +50,12 @@ struct SocialSignInRow: View { GoogleGlyph() .frame(width: 19, height: 19) Text("Continue with Google") - .font(.system(size: 17, weight: .medium)) + .font(.system(size: 16.5, weight: .medium)) } .frame(maxWidth: .infinity) - .frame(height: 56) - .background(Color(.systemBackground), in: RoundedRectangle(cornerRadius: 17)) - .overlay(RoundedRectangle(cornerRadius: 17).strokeBorder(Color(.separator).opacity(0.7), lineWidth: 1.2)) + .frame(height: 54) + .background(WTheme.raised, in: Capsule()) + .overlay(Capsule().strokeBorder(WTheme.hairlineStrong, lineWidth: 1)) } .buttonStyle(PressableButtonStyle()) .disabled(busy) diff --git a/ios/Warmbly/Features/Auth/WorkspaceCreateFlow.swift b/ios/Warmbly/Features/Auth/WorkspaceCreateFlow.swift index f5c80826e..f72fade03 100644 --- a/ios/Warmbly/Features/Auth/WorkspaceCreateFlow.swift +++ b/ios/Warmbly/Features/Auth/WorkspaceCreateFlow.swift @@ -47,7 +47,6 @@ struct WorkspaceCreateFlow: View { @State private var busy = false @State private var errorMessage: String? @State private var errorPulse = 0 - @State private var badgeAppeared = false @FocusState private var nameFocused: Bool @FocusState private var focusedInvite: UUID? @@ -80,164 +79,35 @@ struct WorkspaceCreateFlow: View { // MARK: - Sky chrome private var topBar: some View { - HStack(spacing: 12) { - if page != .name { - Button { - goBack() - } label: { - Image(systemName: "chevron.left") - .font(.system(size: 15, weight: .semibold)) - .foregroundStyle(.white) - .frame(width: 40, height: 40) - .background(.white.opacity(0.16), in: Circle()) - } - .buttonStyle(PressableButtonStyle()) - .accessibilityLabel("Back") - .transition(.opacity.combined(with: .scale(scale: 0.7))) - } - - HStack(spacing: 8) { - WarmblyLogo() - .fill(.white) - .frame(width: 27, height: 28) - Text("Warmbly") - .font(.system(size: 20, weight: .heavy)) - .tracking(-0.4) - .foregroundStyle(.white) - .fixedSize() - } - .shadow(color: Color(hex: 0x0C4A6E).opacity(0.25), radius: 8, y: 3) - - Spacer() - + FlowTopBar( + onBack: page == .name ? nil : { goBack() }, + progress: (page.rawValue, Page.allCases.count) + ) { if context == .gate { // Nothing to go back to without a workspace; the only exit // is signing out, like the web's select-org gate. - Button("Sign out") { + FlowSkyPill(title: "Sign out") { Task { await env.session.logout() } } - .font(.system(size: 13.5, weight: .semibold)) - .foregroundStyle(.white.opacity(0.9)) - .padding(.horizontal, 14) - .frame(height: 34) - .background(.white.opacity(0.16), in: Capsule()) - .buttonStyle(PressableButtonStyle()) .disabled(busy) } else { // Presented as a cover: the app's standard circular close. - Button { - onClose() - } label: { - Image(systemName: "xmark") - .font(.system(size: 15, weight: .semibold)) - .foregroundStyle(.white) - .frame(width: 40, height: 40) - .background(.white.opacity(0.16), in: Circle()) - } - .buttonStyle(PressableButtonStyle()) - .accessibilityLabel("Cancel") - .disabled(busy) + FlowSkyButton(symbol: "xmark", label: "Cancel") { onClose() } + .disabled(busy) } } - .padding(.horizontal, 16) - .padding(.top, 6) - .animation(.spring(response: 0.45, dampingFraction: 0.86), value: page) } + /// The sky between the top bar and the sheet: the page's icon and name + /// when there is room, plain sky while the keyboard is up. private var skyArea: some View { - ZStack { - Color.clear - .contentShape(Rectangle()) - .onTapGesture { - nameFocused = false - focusedInvite = nil - } - - HeroFlightScene() - - pageBadge - .scaleEffect(badgeAppeared ? 1 : 0.9) - .opacity(badgeAppeared ? 1 : 0) - } - .frame(maxWidth: .infinity, minHeight: 40, maxHeight: .infinity) - .animation(.spring(response: 0.5, dampingFraction: 0.85), value: page) - .onAppear { - withAnimation(.spring(response: 0.7, dampingFraction: 0.75).delay(0.05)) { - badgeAppeared = true - } + FlowSkyStage(icon: page.icon, title: page.skyLabel) { + nameFocused = false + focusedInvite = nil } + .frame(maxWidth: .infinity, minHeight: 88, maxHeight: .infinity) } - private var pageBadge: some View { - ViewThatFits(in: .vertical) { - VStack(spacing: 12) { - ZStack { - Circle().fill(.white.opacity(0.16)) - Circle().strokeBorder(.white.opacity(0.3), lineWidth: 1) - Image(systemName: page.icon) - .font(.system(size: 20, weight: .semibold)) - .foregroundStyle(.white) - .contentTransition(.symbolEffect(.replace)) - } - .frame(width: 54, height: 54) - - VStack(spacing: 4) { - Text(page.skyLabel) - .font(.system(size: 15.5, weight: .bold)) - .foregroundStyle(.white) - .contentTransition(.opacity) - Text("Step \(page.rawValue + 1) of \(Page.allCases.count)") - .font(.system(size: 12)) - .foregroundStyle(.white.opacity(0.7)) - .contentTransition(.numericText()) - } - - pageSegments - } - .padding(.vertical, 16) - - HStack(spacing: 10) { - ZStack { - Circle().fill(.white.opacity(0.16)) - Circle().strokeBorder(.white.opacity(0.3), lineWidth: 1) - Image(systemName: page.icon) - .font(.system(size: 13, weight: .semibold)) - .foregroundStyle(.white) - .contentTransition(.symbolEffect(.replace)) - } - .frame(width: 34, height: 34) - - VStack(alignment: .leading, spacing: 4) { - Text(page.skyLabel) - .font(.system(size: 13.5, weight: .semibold)) - .foregroundStyle(.white) - .contentTransition(.opacity) - HStack(spacing: 7) { - pageSegments - Text("Step \(page.rawValue + 1) of \(Page.allCases.count)") - .font(.system(size: 11)) - .foregroundStyle(.white.opacity(0.7)) - .contentTransition(.numericText()) - } - } - } - .padding(.vertical, 8) - } - .shadow(color: Color(hex: 0x0C4A6E).opacity(0.25), radius: 6, y: 2) - } - - private var pageSegments: some View { - HStack(spacing: 6) { - ForEach(Page.allCases, id: \.rawValue) { segment in - Capsule() - .fill(.white.opacity(segment.rawValue <= page.rawValue ? 0.95 : 0.3)) - .frame(width: segment == page ? 26 : 14, height: 4) - } - } - } - - // MARK: - The sheet - private var sheet: some View { VStack(alignment: .leading, spacing: 0) { // Always a ScrollView: ViewThatFits swaps identities when the @@ -291,7 +161,7 @@ struct WorkspaceCreateFlow: View { } label: { Group { if busy { - ProgressView().tint(.white) + ProgressView().tint(WTheme.inkInverse) } else { HStack(spacing: 8) { Text(page == .invite ? "Create workspace" : "Continue") @@ -302,21 +172,11 @@ struct WorkspaceCreateFlow: View { } } } - .font(.system(size: 17, weight: .semibold)) - .foregroundStyle(.white) + .font(.system(size: 16.5, weight: .medium)) + .foregroundStyle(WTheme.inkInverse) .frame(maxWidth: .infinity) - .frame(height: 56) - .background( - LinearGradient( - colors: !canAdvance && !busy - ? [WTheme.accent.opacity(0.35), WTheme.accent.opacity(0.35)] - : [Color(hex: 0x0EA5E9), Color(hex: 0x0284C7)], - startPoint: .top, - endPoint: .bottom - ), - in: RoundedRectangle(cornerRadius: 17) - ) - .shadow(color: !canAdvance ? .clear : Color(hex: 0x0284C7).opacity(0.32), radius: 12, y: 6) + .frame(height: 54) + .background(WTheme.ink.opacity(!canAdvance && !busy ? 0.18 : 1), in: Capsule()) } .buttonStyle(PressableButtonStyle()) .disabled(busy || !canAdvance) @@ -344,12 +204,11 @@ struct WorkspaceCreateFlow: View { private func pageTitle(_ title: String, _ subtitle: String) -> some View { VStack(alignment: .leading, spacing: 7) { Text(title) - .font(.system(size: 30, weight: .bold)) - .tracking(-0.6) - .foregroundStyle(.primary) + .displayFont(32) + .foregroundStyle(WTheme.ink) Text(subtitle) .font(.system(size: 15.5)) - .foregroundStyle(.secondary) + .foregroundStyle(WTheme.inkSecondary) .fixedSize(horizontal: false, vertical: true) } .frame(maxWidth: .infinity, alignment: .leading) diff --git a/ios/Warmbly/Features/CRM/CRMComponents.swift b/ios/Warmbly/Features/CRM/CRMComponents.swift index 7d3899cd8..a0210ad91 100644 --- a/ios/Warmbly/Features/CRM/CRMComponents.swift +++ b/ios/Warmbly/Features/CRM/CRMComponents.swift @@ -110,117 +110,6 @@ extension CRMMeeting { } } -// MARK: - Browser chrome - -/// Contacts-style search pill for the CRM browsers: a rounded 44pt field with -/// a leading symbol (a drawer hamburger when `onMenu` is provided), clear -/// button and the presence stack riding the trailing edge, plus optional -/// circular accessories (create/close buttons) beside it. -struct CRMSearchBar: View { - @Binding var query: String - let prompt: String - private let onMenu: (() -> Void)? - private let menuLabel: String - private let accessory: Accessory - @FocusState private var focused: Bool - - init( - query: Binding, - prompt: String, - onMenu: (() -> Void)? = nil, - menuLabel: String = "Open menu", - @ViewBuilder accessory: () -> Accessory - ) { - _query = query - self.prompt = prompt - self.onMenu = onMenu - self.menuLabel = menuLabel - self.accessory = accessory() - } - - var body: some View { - HStack(spacing: 10) { - HStack(spacing: 6) { - if let onMenu { - Button { - focused = false - onMenu() - } label: { - Image(systemName: "line.3.horizontal") - .font(.system(size: 17, weight: .medium)) - .foregroundStyle(.primary) - .frame(width: 38, height: 38) - .contentShape(Rectangle()) - } - .buttonStyle(.plain) - .accessibilityLabel(menuLabel) - } else { - Image(systemName: "magnifyingglass") - .font(.system(size: 15, weight: .medium)) - .foregroundStyle(.secondary) - .frame(width: 38, height: 38) - } - - TextField(prompt, text: $query) - .font(.subheadline) - .textInputAutocapitalization(.never) - .autocorrectionDisabled() - .submitLabel(.search) - .focused($focused) - - if !query.isEmpty { - Button { - query = "" - } label: { - Image(systemName: "xmark.circle.fill") - .font(.system(size: 16)) - .foregroundStyle(.tertiary) - } - .buttonStyle(.plain) - .accessibilityLabel("Clear search") - } - - PresenceAvatars() - .padding(.trailing, 8) - } - .frame(height: 44) - .background(Color(.secondarySystemBackground), in: RoundedRectangle(cornerRadius: 22, style: .continuous)) - - accessory - } - .padding(.horizontal, 12) - .padding(.top, 4) - .padding(.bottom, 6) - } -} - -extension CRMSearchBar where Accessory == EmptyView { - init(query: Binding, prompt: String, onMenu: (() -> Void)? = nil, menuLabel: String = "Open menu") { - self.init(query: query, prompt: prompt, onMenu: onMenu, menuLabel: menuLabel) { EmptyView() } - } -} - -/// 44pt circular action button riding beside the search pill (create/close). -struct CRMCircleButton: View { - let symbol: String - let label: String - var weight: Font.Weight = .medium - var size: CGFloat = 17 - let action: () -> Void - - var body: some View { - Button(action: action) { - Image(systemName: symbol) - .font(.system(size: size, weight: weight)) - .foregroundStyle(.primary) - .frame(width: 44, height: 44) - .background(Color(.secondarySystemBackground), in: Circle()) - } - .buttonStyle(TapScaleStyle()) - .accessibilityLabel(label) - } -} - // MARK: - Browser shell /// Shared constants for the CRM full-screen browsers. @@ -237,7 +126,7 @@ enum CRMBrowser { struct CRMBrowserShell: View { @Binding var sidebarOpen: Bool let main: () -> Main - /// Built with the top safe-area inset so the sky hero can run under it. + /// Built with the top safe-area inset so the header can run under it. let drawer: (CGFloat) -> Drawer @State private var sidebarDrag: CGFloat = 0 @@ -266,7 +155,7 @@ struct CRMBrowserShell: View { } ) if sidebarOpen { - Color.black.opacity(0.32) + Color.black.opacity(0.22) .ignoresSafeArea() .transition(.opacity) .onTapGesture { close() } @@ -274,9 +163,13 @@ struct CRMBrowserShell: View { drawer(geo.safeAreaInsets.top) .frame(width: CRMBrowser.sidebarWidth) .frame(maxHeight: .infinity) - .background(Color(.systemBackground)) - .clipShape(UnevenRoundedRectangle(bottomTrailingRadius: 26, topTrailingRadius: 26, style: .continuous)) - .shadow(color: .black.opacity(sidebarOpen ? 0.22 : 0), radius: 30, x: 6, y: 0) + .background(WTheme.canvas) + .clipShape(UnevenRoundedRectangle(bottomTrailingRadius: 22, topTrailingRadius: 22, style: .continuous)) + .overlay { + UnevenRoundedRectangle(bottomTrailingRadius: 22, topTrailingRadius: 22, style: .continuous) + .strokeBorder(WTheme.hairlineStrong, lineWidth: 1) + .opacity(sidebarOpen ? 1 : 0) + } .ignoresSafeArea() .offset(x: (sidebarOpen ? 0 : -CRMBrowser.sidebarWidth - 40) + sidebarDrag) .gesture( @@ -293,6 +186,12 @@ struct CRMBrowserShell: View { } } .sensoryFeedback(.impact(weight: .light), trigger: sidebarOpen) + #if DEBUG + // Scripted debug runs can open the drawer (WARMBLY_DEBUG_DRAWER=1). + .onAppear { + if ProcessInfo.processInfo.environment["WARMBLY_DEBUG_DRAWER"] != nil { sidebarOpen = true } + } + #endif } private func close() { @@ -305,9 +204,8 @@ struct CRMBrowserShell: View { // MARK: - Drawer chrome -/// Drawer layout shared by the CRM browsers, mirroring the contacts/leads -/// sidebars: a slim sky hero (logo + heavy title + optional subtitle + badge -/// strip) over a rounded white sheet that scrolls the scope rows. +/// Drawer layout shared by the CRM browsers, mirroring the contacts sidebar: +/// a title, optional subtitle and soft count chips over the scope rows. struct CRMDrawer: View { let title: String var subtitle: String? = nil @@ -323,71 +221,65 @@ struct CRMDrawer: View { rows() } .padding(.horizontal, 12) - .padding(.top, 8) + .padding(.top, 4) .padding(.bottom, 40) } - .background { - UnevenRoundedRectangle(topLeadingRadius: 24, topTrailingRadius: 24, style: .continuous) - .fill(Color(.systemBackground)) - .shadow(color: .black.opacity(0.1), radius: 14, y: -4) - } } - .background(alignment: .top) { - AirSkyWash().frame(height: 360) - } - .background(Color(.systemBackground)) + .background(WTheme.canvas) } private var hero: some View { - VStack(alignment: .leading, spacing: 13) { - HStack(spacing: 8) { - WarmblyLogo() - .fill(.white) - .frame(width: 21, height: 21 * (764 / 746)) + VStack(alignment: .leading, spacing: 12) { + VStack(alignment: .leading, spacing: 2) { Text(title) - .font(.system(size: 17.5, weight: .heavy)) - .tracking(-0.4) - .foregroundStyle(.white) - } - if let subtitle, !subtitle.isEmpty { - Text(subtitle) - .font(.footnote.weight(.medium)) - .foregroundStyle(.white.opacity(0.82)) - .lineLimit(1) + .displayFont(24, weight: .semibold) + .foregroundStyle(WTheme.ink) + if let subtitle, !subtitle.isEmpty { + Text(subtitle) + .font(.system(size: 14)) + .foregroundStyle(WTheme.inkSecondary) + .lineLimit(1) + } } HStack(spacing: 6) { badges() } } .padding(.horizontal, 20) - .padding(.top, topInset + 12) - .padding(.bottom, 16) + .padding(.top, topInset + 18) + .padding(.bottom, 6) .frame(maxWidth: .infinity, alignment: .leading) } } -/// Translucent count badge on the drawer hero. +/// Hairline count chip on the drawer header; `live` swaps the symbol for a +/// pulsing state dot. struct CRMDrawerBadge: View { let symbol: String let text: String var live = false - var pingColor: Color = .white + var pingColor: Color = WTheme.accent var body: some View { HStack(spacing: 5) { - Image(systemName: symbol) - .font(.system(size: 10.5, weight: .semibold)) - .foregroundStyle(.white.opacity(0.9)) - .modifier(PingEffect(active: live, color: pingColor)) + if live { + LiveDot(color: pingColor, size: 5.5) + .frame(width: 10) + } else { + Image(systemName: symbol) + .font(.system(size: 11, weight: .medium)) + .foregroundStyle(WTheme.inkSecondary) + } Text(text) - .font(.footnote.weight(.medium)) + .font(.system(size: 13, weight: .medium)) .monospacedDigit() - .foregroundStyle(.white) + .foregroundStyle(WTheme.inkSecondary) .contentTransition(.numericText()) + .lineLimit(1) } .padding(.horizontal, 10) - .padding(.vertical, 5.5) - .background(.white.opacity(0.16), in: Capsule()) + .frame(height: 28) + .background(WTheme.fill, in: Capsule()) } } @@ -405,8 +297,8 @@ struct CRMDrawerSectionLabel: View { } } -/// Scope pill row in a CRM drawer: leading icon / dot / pulsing dot, title, -/// trailing live count, and the sliding sky capsule via matchedGeometryEffect. +/// Scope row in a CRM drawer: leading icon / dot / pulsing dot, title, +/// trailing mono count, and the sliding fill via matchedGeometryEffect. /// Rows cascade in with a capped stagger when the drawer reveals. struct CRMDrawerRow: View { var icon: String? = nil @@ -427,44 +319,41 @@ struct CRMDrawerRow: View { HStack(spacing: 13) { Group { if let pingDot { - Circle() - .fill(pingDot) - .frame(width: 11, height: 11) - .modifier(PingEffect(active: true, color: pingDot)) + LiveDot(color: pingDot, size: 8) } else if let dot { Circle() .fill(dot) - .frame(width: 11, height: 11) + .frame(width: 9, height: 9) } else if let icon { Image(systemName: icon) - .font(.system(size: 15, weight: .medium)) - .foregroundStyle(selected ? WTheme.accent : Color.secondary) + .font(.system(size: 14.5, weight: .regular)) + .foregroundStyle(selected ? WTheme.ink : WTheme.inkSecondary) } } .frame(width: 24) Text(title) - .font(.subheadline.weight(selected ? .semibold : .medium)) - .foregroundStyle(selected ? WTheme.accent : Color.primary) + .font(.system(size: 15, weight: selected ? .medium : .regular)) + .foregroundStyle(WTheme.ink) .lineLimit(1) Spacer(minLength: 8) if let count, count > 0 { Text(WFormat.compact(count)) - .font(.footnote.weight(selected ? .semibold : .medium)) + .font(WFont.meta(11.5, weight: .medium)) .monospacedDigit() - .foregroundStyle(selected ? WTheme.accent : Color.secondary) + .foregroundStyle(selected ? WTheme.ink : WTheme.inkTertiary) .contentTransition(.numericText()) } } - .padding(.horizontal, 16) - .frame(height: 44) + .padding(.horizontal, 14) + .frame(height: 42) .background { if selected { - Capsule() - .fill(Tone.sky.background) + RoundedRectangle(cornerRadius: 12, style: .continuous) + .fill(WTheme.fill) .matchedGeometryEffect(id: matchedID, in: namespace) } } - .contentShape(Capsule()) + .contentShape(RoundedRectangle(cornerRadius: 12, style: .continuous)) } .buttonStyle(TapScaleStyle()) .opacity(revealed ? 1 : 0) @@ -478,48 +367,6 @@ struct CRMDrawerRow: View { } } -/// Tracked-uppercase caption as a bare list row (never a sticky `Section` -/// header): an optional stage-colored dot or pulsing tone accent plus a live -/// count. Whitespace above is the group separator. -struct CRMListCaption: View { - let title: String - var count: Int? = nil - var tone: Tone? = nil - var dotColor: Color? = nil - var ping = false - - var body: some View { - HStack(spacing: 6) { - if ping, let tone { - CRMPingDot(color: tone.color) - .padding(.trailing, 2) - } else if let dotColor { - Circle() - .fill(dotColor) - .frame(width: 7, height: 7) - } - Text(title.uppercased()) - .font(.caption.weight(.semibold)) - .tracking(0.9) - .foregroundStyle(tone?.color ?? Color.secondary) - if let count { - Text(WFormat.compact(count)) - .font(.caption.weight(.semibold)) - .monospacedDigit() - .foregroundStyle(.tertiary) - .contentTransition(.numericText()) - } - Spacer(minLength: 0) - } - .padding(.horizontal, 20) - .padding(.top, 18) - .padding(.bottom, 6) - .listRowInsets(EdgeInsets()) - .listRowSeparator(.hidden) - .listRowBackground(Color(.systemBackground)) - } -} - /// End-of-list marker: the exact total for the current scope/search. struct CRMEndMarker: View { let count: Int @@ -536,44 +383,52 @@ struct CRMEndMarker: View { HStack { Spacer() Text("\(count) \(count == 1 ? singular : plural)") - .font(.footnote) + .font(WFont.meta(10.5, weight: .medium)) .monospacedDigit() - .foregroundStyle(.tertiary) + .foregroundStyle(WTheme.inkTertiary) Spacer() } - .padding(.vertical, 10) + .padding(.vertical, 14) .listRowSeparator(.hidden) - .listRowBackground(Color(.systemBackground)) + .listRowBackground(Color.clear) } } // MARK: - Chips and accents -/// Colored capsule chip driven by a server hex color (stages, task types). +/// Hairline chip keyed by a server hex color (stages, task types): the color +/// rides a leading dot, the label stays ink. struct CRMColorChip: View { let text: String var hex: String? var body: some View { let color = CRMHex.color(hex) ?? WTheme.paused - Text(text) - .font(.system(size: 11, weight: .medium)) - .foregroundStyle(color) - .padding(.horizontal, 8) - .padding(.vertical, 3.5) - .background(color.opacity(0.12), in: Capsule()) - .lineLimit(1) + HStack(spacing: 5) { + Circle() + .fill(color) + .frame(width: 6, height: 6) + Text(text) + .font(.system(size: 11.5, weight: .medium)) + .foregroundStyle(WTheme.inkSecondary) + .lineLimit(1) + } + .padding(.horizontal, 8) + .padding(.vertical, 3.5) + .background(WTheme.raised, in: Capsule()) + .overlay(Capsule().strokeBorder(WTheme.hairlineStrong, lineWidth: 1)) } } -/// Small always-pulsing dot (overdue/red, today/sky accents). -struct CRMPingDot: View { - var color: Color +// MARK: - Field chrome - var body: some View { - Circle() - .fill(color) - .frame(width: 6, height: 6) - .modifier(PingEffect(active: true, color: color)) +extension View { + /// The search/input field surface: subtle band, hairline edge, 22pt radius. + func crmFieldChrome(radius: CGFloat = 22) -> some View { + background(WTheme.surface, in: RoundedRectangle(cornerRadius: radius, style: .continuous)) + .overlay( + RoundedRectangle(cornerRadius: radius, style: .continuous) + .strokeBorder(WTheme.hairlineStrong, lineWidth: 1) + ) } } diff --git a/ios/Warmbly/Features/CRM/CRMDealsView.swift b/ios/Warmbly/Features/CRM/CRMDealsView.swift index f4127d722..d679104dc 100644 --- a/ios/Warmbly/Features/CRM/CRMDealsView.swift +++ b/ios/Warmbly/Features/CRM/CRMDealsView.swift @@ -30,6 +30,8 @@ private enum CRMDealScope: String, CaseIterable, Identifiable { } } + var shortTitle: String { self == .all ? "All" : title } + var icon: String { switch self { case .all: "tray.full.fill" @@ -46,6 +48,9 @@ struct CRMDealsView: View { @State private var store = CRMDealsStore() @State private var editing: CRMDeal? @State private var sidebarOpen = false + @State private var shown = false + @State private var celebrate = 0 + @FocusState private var searchFocused: Bool private var canWrite: Bool { env.session.can(.manageContacts) } private var isSearching: Bool { !store.query.trimmingCharacters(in: .whitespaces).isEmpty } @@ -95,9 +100,9 @@ struct CRMDealsView: View { withAnimation(CRMBrowser.spring) { sidebarOpen = true } } - private func selectStatus(_ status: String?) { + private func selectStatus(_ status: String?, close: Bool = true) { withAnimation(.spring(response: 0.38, dampingFraction: 0.8)) { store.statusFilter = status } - closeSidebarSoon() + if close { closeSidebarSoon() } } private func selectPipeline(_ id: String) { @@ -117,54 +122,115 @@ struct CRMDealsView: View { private var mainPane: some View { @Bindable var store = store return VStack(spacing: 0) { - CRMSearchBar( + GlassHeaderBar( + title: "Deals", + subtitle: Text(store.selectedPipeline?.name ?? "Pipeline"), query: $store.query, - prompt: "Search deals", - onMenu: { openSidebar() }, - menuLabel: "Open deals menu" + searchPrompt: "Search deals", + searchFocused: $searchFocused, + menuLabel: "Open deals menu", + onMenu: openSidebar ) { - CRMCircleButton(symbol: "xmark", label: "Close deals", weight: .semibold, size: 15) { - dismiss() - } + GlassCircleButton(symbol: "xmark", label: "Close deals") { dismiss() } } - scopeCaption list } - .background(Color(.systemBackground)) + .background(WTheme.groupedPage) + .overlay { ConfettiBurst(trigger: celebrate) } + .sensoryFeedback(.success, trigger: celebrate) } - // MARK: Caption + // MARK: Pipeline card - private var scopeCaption: some View { - HStack(spacing: 6) { - Text(captionTitle) - .font(.caption.weight(.semibold)) - .tracking(0.9) - .foregroundStyle(.secondary) - if !isSearching, let count = store.statusCount(store.statusFilter), count > 0 { - Text(WFormat.compact(count)) - .font(.caption.weight(.semibold)) - .monospacedDigit() - .foregroundStyle(.tertiary) - .contentTransition(.numericText()) + private var currency: String? { store.displayCurrency } + + private var pipelineCard: some View { + let summary = store.summary + let openValue = summary?.openValue ?? 0 + let openCount = summary?.openCount ?? 0 + let won = summary?.wonCount ?? 0 + let lost = summary?.lostCount ?? 0 + let stages = store.orderedStages + // Open deals only; terminal stages hold closed deals and read as $0 here. + let values: [(CRMStage, Double)] = stages.compactMap { stage in + let open = store.deals(inStage: stage.id) + guard !open.isEmpty else { return nil } + return (stage, open.compactMap(\.value).reduce(0, +)) + } + let total = max(1, values.reduce(0) { $0 + $1.1 }) + return VStack(alignment: .leading, spacing: 16) { + HStack(alignment: .center, spacing: 14) { + VStack(alignment: .leading, spacing: 4) { + Text("Open pipeline") + .font(.system(size: 14, weight: .medium)) + .foregroundStyle(WTheme.inkSecondary) + CountUpText(value: shown ? openValue : 0, format: { CRMFormat.compactCurrency($0.rounded(), code: currency) }) + .font(.system(size: 38, weight: .semibold, design: .rounded)) + .monospacedDigit() + .foregroundStyle(WTheme.ink) + .animation(.easeOut(duration: 1.1), value: shown) + .animation(.snappy, value: openValue) + Text("\(openCount) open \(openCount == 1 ? "deal" : "deals") · \(CRMFormat.compactCurrency(summary?.wonValue ?? 0, code: currency)) won") + .font(.system(size: 13.5)) + .monospacedDigit() + .foregroundStyle(WTheme.inkTertiary) + } + Spacer(minLength: 8) + if won + lost > 0 { + let rate = Double(won) / Double(won + lost) + SweepRing(fraction: rate, color: WTheme.positive, shown: shown, lineWidth: 8) { + VStack(spacing: -1) { + Text("\(Int((rate * 100).rounded()))%") + .font(.system(size: 18, weight: .semibold, design: .rounded)) + .monospacedDigit() + .foregroundStyle(WTheme.ink) + Text("win rate") + .font(.system(size: 10.5, weight: .medium)) + .foregroundStyle(WTheme.inkTertiary) + } + } + .frame(width: 84, height: 84) + } } - Spacer() - if isSearching, store.hasLoaded, let count = store.totalCount { - Text("\(count) found") - .font(.caption.weight(.semibold)) - .monospacedDigit() - .foregroundStyle(.secondary) - .contentTransition(.numericText()) + if !values.isEmpty { + GeometryReader { proxy in + HStack(spacing: 3) { + ForEach(Array(values.enumerated()), id: \.offset) { index, item in + if item.1 > 0 { + RoundedRectangle(cornerRadius: 4, style: .continuous) + .fill(CRMHex.color(item.0.color) ?? WTheme.paused) + .frame(width: shown ? max(8, (proxy.size.width - CGFloat(values.count) * 3) * CGFloat(item.1 / total)) : 0) + .animation(.spring(response: 0.85, dampingFraction: 0.8).delay(0.2 + Double(index) * 0.08), value: shown) + } + } + Spacer(minLength: 0) + } + } + .frame(height: 10) + VStack(spacing: 9) { + ForEach(Array(values.enumerated()), id: \.offset) { _, item in + let count = store.deals(inStage: item.0.id).count + HStack(spacing: 8) { + Circle().fill(CRMHex.color(item.0.color) ?? WTheme.paused).frame(width: 8, height: 8) + Text(item.0.name) + .font(.system(size: 14)) + .foregroundStyle(WTheme.inkSecondary) + .lineLimit(1) + Text("\(count)") + .font(.system(size: 13)) + .monospacedDigit() + .foregroundStyle(WTheme.inkTertiary) + Spacer(minLength: 4) + Text(CRMFormat.compactCurrency(item.1, code: currency)) + .font(.system(size: 14, weight: .semibold)) + .monospacedDigit() + .foregroundStyle(WTheme.ink) + } + } + } } } - .padding(.horizontal, 20) - .padding(.top, 8) - .padding(.bottom, 2) - } - - private var captionTitle: String { - if isSearching { return "SEARCH RESULTS" } - return scope.title.uppercased() + .coverCard() } // MARK: List @@ -172,28 +238,59 @@ struct CRMDealsView: View { @ViewBuilder private var list: some View { if store.isLoading, !store.hasLoaded { - ScrollView { SkeletonRows(rows: 10) } + ScrollView { AnalyticsLoadingCards().padding(16) } } else if let error = store.errorMessage, store.deals.isEmpty { ErrorStateView(title: "Couldn't load deals", message: error) { await store.load(env.api) } - } else if store.deals.isEmpty { - emptyState } else { List { - if store.statusFilter == nil, !store.orderedStages.isEmpty { + Section { + VStack(spacing: 14) { + if !isSearching { + pipelineCard + } + PillSwitcher( + options: CRMDealScope.allCases, + selection: Binding(get: { scope }, set: { selectStatus($0.status, close: false) }), + label: \.shortTitle + ) + } + .listRowInsets(EdgeInsets(top: 4, leading: 0, bottom: 0, trailing: 0)) + .listRowBackground(Color.clear) + .listRowSeparator(.hidden) + } + if store.deals.isEmpty { + Section { + emptyState + .listRowBackground(Color.clear) + .listRowSeparator(.hidden) + } + } else if store.statusFilter == nil, !isSearching, !store.orderedStages.isEmpty { groupedByStage } else { - // The scope caption above already names the filter. - ForEach(store.deals) { deal in - row(deal) + Section { + ForEach(store.deals) { deal in + row(deal) + } + } header: { + CoverSectionHeader(title: isSearching ? "Results" : scope.title, count: store.deals.count) } } - CRMEndMarker(store.totalCount ?? store.deals.count, "deal") + Section { + CRMEndMarker(store.totalCount ?? store.deals.count, "deal") + .listRowBackground(Color.clear) + } } - .listStyle(.plain) + .listStyle(.insetGrouped) + .listSectionSpacing(18) + .contentMargins(.horizontal, 16, for: .scrollContent) + .contentMargins(.top, 0, for: .scrollContent) + .scrollContentBackground(.hidden) .scrollDismissesKeyboard(.immediately) + .defaultScrollAnchor(SettingsDebug.anchor) .refreshable { await store.load(env.api) } + .onAppear { shown = true } } } @@ -202,22 +299,28 @@ struct CRMDealsView: View { ForEach(store.orderedStages) { stage in let stageDeals = store.deals(inStage: stage.id) if !stageDeals.isEmpty { - CRMListCaption( - title: stage.name, - count: stageDeals.count, - dotColor: CRMHex.color(stage.color) ?? WTheme.paused - ) - ForEach(stageDeals) { deal in - // The eyebrow already names the stage; skip the row chip. - row(deal, showsStage: false) + Section { + ForEach(stageDeals) { deal in + row(deal, showsStage: false) + } + } header: { + CoverSectionHeader( + title: stage.name, + count: stageDeals.count, + color: CRMHex.color(stage.color) ?? WTheme.paused, + trailing: CRMFormat.compactCurrency(stageDeals.compactMap(\.value).reduce(0, +), code: currency) + ) } } } let closed = store.closedDeals if !closed.isEmpty { - CRMListCaption(title: "Closed", count: closed.count, tone: .slate) - ForEach(closed) { deal in - row(deal) + Section { + ForEach(closed) { deal in + row(deal) + } + } header: { + CoverSectionHeader(title: "Closed", count: closed.count, color: WTheme.paused) } } } @@ -225,20 +328,17 @@ struct CRMDealsView: View { @ViewBuilder private var emptyState: some View { if isSearching { - EmptyStateView(title: "No matching deals", message: "Try a different search.") + CoverEmptyState(symbol: "magnifyingglass", color: WTheme.inkSecondary, title: "No matching deals", message: "Try a different search.") } else { switch scope { case .all: - EmptyStateView( - title: "No deals yet", - message: "Deals created from campaigns or the web dashboard show up here." - ) + CoverEmptyState(symbol: "briefcase.fill", color: Tone.orange.color, title: "No deals yet", message: "Deals created from replies, campaigns or the web dashboard show up here.") case .open: - EmptyStateView(title: "No open deals", message: "Deals still in play show up here.") + CoverEmptyState(symbol: "circle.lefthalf.filled", color: WTheme.accent, title: "No open deals", message: "Deals still in play show up here.") case .won: - EmptyStateView(title: "No won deals yet", message: "Deals marked won land here.") + CoverEmptyState(symbol: "trophy.fill", color: WTheme.positive, title: "No wins yet", message: "Deals you mark won land here. The first one is worth celebrating.") case .lost: - EmptyStateView(title: "No lost deals", message: "Deals marked lost show up here.") + CoverEmptyState(symbol: "xmark.seal.fill", color: WTheme.inkSecondary, title: "Nothing lost", message: "Deals marked lost show up here.") } } } @@ -247,43 +347,74 @@ struct CRMDealsView: View { private func row(_ deal: CRMDeal, showsStage: Bool = true) -> some View { let stage = deal.stage ?? store.stage(deal.stageID) + let status = deal.status ?? "open" + let person = deal.contact?.displayName + var details: [String] = [] + if let person { details.append(person) } + if status == "open", let close = deal.expectedCloseDate { + details.append("closes \(close.formatted(.dateTime.month(.abbreviated).day()))") + } else if status == "won", let wonAt = deal.wonAt { + details.append("won \(WFormat.ago(wonAt)) ago") + } return HStack(spacing: 12) { - VStack(alignment: .leading, spacing: 4) { + WAvatar(name: person ?? deal.name, seed: deal.contactID ?? deal.id, size: 40) + .overlay(alignment: .bottomTrailing) { + if status != "open" { + Image(systemName: status == "won" ? "checkmark" : "xmark") + .font(.system(size: 8, weight: .heavy)) + .foregroundStyle(.white) + .frame(width: 17, height: 17) + .background(status == "won" ? WTheme.positive : WTheme.paused, in: Circle()) + .overlay(Circle().stroke(WTheme.groupedCard, lineWidth: 2)) + .offset(x: 3, y: 3) + .transition(.scale.combined(with: .opacity)) + } + } + VStack(alignment: .leading, spacing: 3) { Text(deal.name) - .font(.body.weight(.medium)) + .font(.system(size: 15.5, weight: .medium)) + .foregroundStyle(status == "lost" ? WTheme.inkSecondary : WTheme.ink) + .strikethrough(status == "lost", color: WTheme.inkTertiary) .lineLimit(1) - HStack(spacing: 6) { - if let contact = deal.contact { - Text(contact.displayName) - .font(.footnote) - .foregroundStyle(.secondary) - .lineLimit(1) - } - if showsStage, let stage { - CRMColorChip(text: stage.name, hex: stage.color) - } + if !details.isEmpty { + Text(details.joined(separator: " · ")) + .font(.system(size: 13)) + .foregroundStyle(WTheme.inkSecondary) + .lineLimit(1) } } Spacer(minLength: 8) VStack(alignment: .trailing, spacing: 4) { if let value = deal.value { Text(CRMFormat.currency(value, code: deal.currency)) - .font(.subheadline.weight(.semibold)) + .font(.system(size: 16, weight: .semibold, design: .rounded)) .monospacedDigit() - .foregroundStyle(.primary) + .foregroundStyle(status == "won" ? WTheme.positive : status == "lost" ? WTheme.inkTertiary : WTheme.ink) + .contentTransition(.numericText()) } - if (deal.status ?? "open") != "open" { - StatusPill(text: deal.status ?? "open", tone: deal.statusTone) + if showsStage, status == "open", let stage { + CRMColorChip(text: stage.name, hex: stage.color) } } } - .padding(.vertical, 6) + .padding(.vertical, 4) .contentShape(Rectangle()) .onTapGesture { if canWrite { editing = deal } } - .listRowInsets(EdgeInsets(top: 4, leading: 20, bottom: 4, trailing: 16)) - .listRowBackground(Color(.systemBackground)) + .animation(.snappy, value: status) + .listRowBackground(WTheme.groupedCard) + .alignmentGuide(.listRowSeparatorLeading) { _ in 52 } + .swipeActions(edge: .leading, allowsFullSwipe: true) { + if canWrite, status == "open" { + Button { + Task { await setStatus(deal, status: "won") } + } label: { + Label("Won", systemImage: "trophy.fill") + } + .tint(WTheme.positive) + } + } .swipeActions(edge: .trailing, allowsFullSwipe: false) { if canWrite { Button { @@ -297,17 +428,23 @@ struct CRMDealsView: View { .contextMenu { if canWrite { stageMoveMenu(deal) - if (deal.status ?? "open") == "open" { + if status == "open" { Button { Task { await setStatus(deal, status: "won") } } label: { - Label("Mark won", systemImage: "checkmark.seal") + Label("Mark won", systemImage: "trophy") } Button(role: .destructive) { Task { await setStatus(deal, status: "lost") } } label: { Label("Mark lost", systemImage: "xmark.seal") } + } else { + Button { + Task { await setStatus(deal, status: "open") } + } label: { + Label("Reopen", systemImage: "arrow.uturn.backward") + } } } } @@ -345,7 +482,11 @@ struct CRMDealsView: View { private func setStatus(_ deal: CRMDeal, status: String) async { var body = CRMDealUpdateBody() body.status = status - try? await store.update(env.api, deal: deal, body: body) + do { + try await store.update(env.api, deal: deal, body: body) + if status == "won" { celebrate += 1 } + await store.load(env.api) + } catch {} } } diff --git a/ios/Warmbly/Features/CRM/CRMMeetingsView.swift b/ios/Warmbly/Features/CRM/CRMMeetingsView.swift index 7cd5f5a4a..b46de4ec8 100644 --- a/ios/Warmbly/Features/CRM/CRMMeetingsView.swift +++ b/ios/Warmbly/Features/CRM/CRMMeetingsView.swift @@ -1,14 +1,8 @@ import SwiftUI -/// Meetings browser presented as a full-screen cover from the More hub, -/// copying the campaign leads browser: its own NavigationStack, a slide-in -/// drawer (sky hero with the next meeting badge + upcoming/today/past scopes -/// with a sliding capsule, edge-swipe to open), a search pill with hamburger + -/// presence + circular close, a tracked-uppercase scope caption, and a dense -/// hairline list grouped under eyebrow captions (today gets a sky ping). Rows -/// show time + attendee + source + state pill with an inline join affordance -/// when a call link exists; cancel is gated behind manageContacts. Reloads on -/// the .meetings realtime pulse. +/// Meetings browser presented from the settings hub: a next-up hero with a +/// live countdown and join button, today/upcoming/canceled tiles, and a +/// day-grouped agenda. Cancel is gated behind manageContacts. struct CRMMeetingsView: View { @Environment(AppEnvironment.self) private var env @Environment(\.dismiss) private var dismiss @@ -16,6 +10,9 @@ struct CRMMeetingsView: View { @State private var pendingCancel: CRMMeeting? @State private var cancelError: String? @State private var sidebarOpen = false + @State private var shown = false + @State private var lastNext: CRMMeeting? + @FocusState private var searchFocused: Bool private var canWrite: Bool { env.session.can(.manageContacts) } private var isSearching: Bool { !store.query.trimmingCharacters(in: .whitespaces).isEmpty } @@ -79,8 +76,10 @@ struct CRMMeetingsView: View { withAnimation(CRMBrowser.spring) { sidebarOpen = true } } - private func select(_ scope: CRMMeetingScope) { + private func select(_ scope: CRMMeetingScope, close: Bool = true) { + if let next = store.nextUpcoming { lastNext = next } withAnimation(.spring(response: 0.38, dampingFraction: 0.8)) { store.scope = scope } + guard close else { return } Task { try? await Task.sleep(for: .milliseconds(280)) withAnimation(CRMBrowser.spring) { sidebarOpen = false } @@ -92,53 +91,113 @@ struct CRMMeetingsView: View { private var mainPane: some View { @Bindable var store = store return VStack(spacing: 0) { - CRMSearchBar( + GlassHeaderBar( + title: "Meetings", + subtitle: store.hasLoaded ? Text("\(store.count(for: .upcoming) ?? 0) upcoming") : nil, query: $store.query, - prompt: "Search meetings", - onMenu: { openSidebar() }, - menuLabel: "Open meetings menu" + searchPrompt: "Search meetings", + searchFocused: $searchFocused, + menuLabel: "Open meetings menu", + onMenu: openSidebar ) { - CRMCircleButton(symbol: "xmark", label: "Close meetings", weight: .semibold, size: 15) { - dismiss() - } + GlassCircleButton(symbol: "xmark", label: "Close meetings") { dismiss() } } - scopeCaption list } - .background(Color(.systemBackground)) + .background(WTheme.groupedPage) } - // MARK: Caption + // MARK: Next up - private var scopeCaption: some View { - HStack(spacing: 6) { - Text(isSearching ? "SEARCH RESULTS" : store.scope.title.uppercased()) - .font(.caption.weight(.semibold)) - .tracking(0.9) - .foregroundStyle(.secondary) - if !isSearching, let count = captionCount, count > 0 { - Text(WFormat.compact(count)) - .font(.caption.weight(.semibold)) - .monospacedDigit() - .foregroundStyle(.tertiary) - .contentTransition(.numericText()) - } - Spacer() - if isSearching, store.hasLoaded { - Text("\(store.visibleMeetings.count) found") - .font(.caption.weight(.semibold)) - .monospacedDigit() - .foregroundStyle(.secondary) - .contentTransition(.numericText()) + @ViewBuilder + private var heroCard: some View { + if let next = heroMeeting { + NextMeetingCard(meeting: next, shown: shown) + } else { + HStack(spacing: 14) { + SettingsIcon(symbol: "calendar", color: WTheme.accent, size: 46) + VStack(alignment: .leading, spacing: 3) { + Text("Your calendar is clear") + .font(.system(size: 17, weight: .semibold)) + .foregroundStyle(WTheme.ink) + Text("Booked calls from Calendly and Cal.com land here.") + .font(.system(size: 13.5)) + .foregroundStyle(WTheme.inkSecondary) + } + Spacer(minLength: 0) } + .coverCard() } - .padding(.horizontal, 20) - .padding(.top, 8) - .padding(.bottom, 2) } - private var captionCount: Int? { - store.count(for: store.scope) ?? store.totalCount + /// The meeting the hero counts down to, kept while the past scope is open. + private var heroMeeting: CRMMeeting? { + store.nextUpcoming ?? lastNext + } + + private var statsRow: some View { + HStack(spacing: 10) { + statTile("Today", value: store.count(for: .today) ?? 0, symbol: "sun.max.fill", tone: .amber, index: 0) + statTile("Upcoming", value: store.count(for: .upcoming) ?? 0, symbol: "calendar.badge.clock", tone: .sky, index: 1) + statTile("Canceled", value: store.summary?.canceled ?? 0, symbol: "calendar.badge.minus", tone: .rose, index: 2) + } + } + + private func statTile(_ title: String, value: Int, symbol: String, tone: Tone, index: Int) -> some View { + VStack(alignment: .leading, spacing: 8) { + Image(systemName: symbol) + .font(.system(size: 13, weight: .semibold)) + .foregroundStyle(tone.color) + .frame(width: 28, height: 28) + .background(tone.background, in: Circle()) + CountUpText(value: shown ? Double(value) : 0, format: { WFormat.compact(Int($0.rounded())) }) + .font(.system(size: 22, weight: .semibold, design: .rounded)) + .monospacedDigit() + .animation(.spring(response: 0.9, dampingFraction: 0.9).delay(0.1 + Double(index) * 0.06), value: shown) + .foregroundStyle(WTheme.ink) + Text(title) + .font(.system(size: 12.5, weight: .medium)) + .foregroundStyle(WTheme.inkSecondary) + } + .frame(maxWidth: .infinity, alignment: .leading) + .padding(14) + .background(WTheme.groupedCard, in: RoundedRectangle(cornerRadius: 18, style: .continuous)) + .reveal(shown, index + 1) + } + + // MARK: Agenda + + private struct DayGroup: Identifiable { + let id: Date + let title: String + let isToday: Bool + let meetings: [CRMMeeting] + } + + private var dayGroups: [DayGroup] { + let calendar = Calendar.current + var order: [Date] = [] + var buckets: [Date: [CRMMeeting]] = [:] + for meeting in store.visibleMeetings { + let day = calendar.startOfDay(for: meeting.scheduledFor ?? .distantPast) + if buckets[day] == nil { order.append(day) } + buckets[day, default: []].append(meeting) + } + return order.map { day in + DayGroup(id: day, title: dayTitle(day), isToday: calendar.isDateInToday(day), meetings: buckets[day] ?? []) + } + } + + private func dayTitle(_ day: Date) -> String { + let calendar = Calendar.current + if day == .distantPast { return "Unscheduled" } + if calendar.isDateInToday(day) { return "Today" } + if calendar.isDateInTomorrow(day) { return "Tomorrow" } + if calendar.isDateInYesterday(day) { return "Yesterday" } + let sameYear = calendar.isDate(day, equalTo: .now, toGranularity: .year) + return sameYear + ? day.formatted(.dateTime.weekday(.wide).month(.wide).day()) + : day.formatted(.dateTime.month(.wide).day().year()) } // MARK: List @@ -146,27 +205,67 @@ struct CRMMeetingsView: View { @ViewBuilder private var list: some View { if store.isLoading, !store.hasLoaded { - ScrollView { SkeletonRows(rows: 8) } + ScrollView { AnalyticsLoadingCards().padding(16) } } else if let error = store.errorMessage, store.meetings.isEmpty { ErrorStateView(title: "Couldn't load meetings", message: error) { await store.load(env.api) } - } else if store.visibleMeetings.isEmpty { - emptyState } else { List { - if store.scope == .upcoming { - upcomingGroups + Section { + VStack(spacing: 12) { + if !isSearching { + heroCard + .reveal(shown, 0) + statsRow + } + PillSwitcher( + options: CRMMeetingScope.allCases, + selection: Binding(get: { store.scope }, set: { select($0, close: false) }), + label: \.title + ) + .padding(.top, 2) + } + .listRowInsets(EdgeInsets(top: 4, leading: 0, bottom: 0, trailing: 0)) + .listRowBackground(Color.clear) + .listRowSeparator(.hidden) + } + if store.visibleMeetings.isEmpty { + Section { + emptyState + .listRowBackground(Color.clear) + .listRowSeparator(.hidden) + } } else { - ForEach(store.visibleMeetings) { meeting in - row(meeting) + ForEach(dayGroups) { group in + Section { + ForEach(group.meetings) { meeting in + row(meeting) + } + } header: { + CoverSectionHeader( + title: group.title, + count: group.meetings.count, + color: group.isToday ? WTheme.accent : nil, + pulsing: group.isToday && store.scope != .past + ) + } + } + Section { + CRMEndMarker(endCount, "meeting") + .listRowBackground(Color.clear) } } - CRMEndMarker(endCount, "meeting") } - .listStyle(.plain) + .listStyle(.insetGrouped) + .listSectionSpacing(18) + .contentMargins(.horizontal, 16, for: .scrollContent) + .contentMargins(.top, 0, for: .scrollContent) + .scrollContentBackground(.hidden) .scrollDismissesKeyboard(.immediately) + .defaultScrollAnchor(SettingsDebug.anchor) .refreshable { await store.load(env.api) } + .onAppear { shown = true } } } @@ -176,39 +275,22 @@ struct CRMMeetingsView: View { return store.totalCount ?? store.visibleMeetings.count } - @ViewBuilder - private var upcomingGroups: some View { - let today = store.meetings.filter(\.isToday) - let later = store.meetings.filter { !$0.isToday } - if !today.isEmpty { - CRMListCaption(title: "Today", count: today.count, tone: .sky, ping: true) - ForEach(today) { meeting in - row(meeting) - } - } - if !later.isEmpty { - CRMListCaption(title: "Later", count: later.count) - ForEach(later) { meeting in - row(meeting) - } - } - } - @ViewBuilder private var emptyState: some View { if isSearching { - EmptyStateView(title: "No matching meetings", message: "Try a different search.") + CoverEmptyState(symbol: "magnifyingglass", color: WTheme.inkSecondary, title: "No matching meetings", message: "Try a different search.") } else { switch store.scope { case .upcoming: - EmptyStateView( + CoverEmptyState( + symbol: "calendar.badge.clock", title: "No upcoming meetings", - message: "Meetings booked through Calendly, Cal.com or logged manually show up here." + message: "Meetings booked through Calendly, Cal.com or logged by hand show up here." ) case .today: - EmptyStateView(title: "Nothing today", message: "Meetings scheduled for today show up here.") + CoverEmptyState(symbol: "sun.max.fill", color: WTheme.warning, title: "Nothing today", message: "A clear day. Good time to follow up on replies.") case .past: - EmptyStateView(title: "No past meetings", message: "Meetings that already happened show up here.") + CoverEmptyState(symbol: "clock.arrow.circlepath", color: WTheme.special, title: "No past meetings", message: "Meetings that already happened show up here.") } } } @@ -216,56 +298,77 @@ struct CRMMeetingsView: View { // MARK: Row private func row(_ meeting: CRMMeeting) -> some View { - HStack(spacing: 12) { - Circle() - .fill(meeting.statusTone.color.opacity(meeting.isToday && store.scope != .past ? 1 : 0.5)) - .frame(width: 6, height: 6) - VStack(alignment: .leading, spacing: 3) { - Text(meeting.displayTitle) - .font(.body.weight(.medium)) - .lineLimit(1) - HStack(spacing: 6) { - if let scheduled = meeting.scheduledFor { - Text(CRMFormat.meetingTime(scheduled)) - .font(.footnote) - .monospacedDigit() - .foregroundStyle(meeting.isToday ? WTheme.accent : .secondary) - } - if let invitee = meeting.inviteeLabel, meeting.eventName?.isEmpty == false { - Text(invitee) - .font(.footnote) - .foregroundStyle(.tertiary) - .lineLimit(1) - } + let canceled = meeting.status == "canceled" + let live = meeting.isLive + return HStack(spacing: 12) { + VStack(alignment: .trailing, spacing: 2) { + if let start = meeting.scheduledFor { + Text(start.formatted(date: .omitted, time: .shortened)) + .font(.system(size: 14.5, weight: .semibold)) + .monospacedDigit() + .foregroundStyle(canceled ? WTheme.inkTertiary : WTheme.ink) + } else { + Text("TBD") + .font(.system(size: 14.5, weight: .semibold)) + .foregroundStyle(WTheme.inkTertiary) + } + if let minutes = meeting.durationMinutes { + Text(minutes >= 60 && minutes % 60 == 0 ? "\(minutes / 60) h" : "\(minutes) min") + .font(.system(size: 12)) + .monospacedDigit() + .foregroundStyle(WTheme.inkTertiary) } } - Spacer(minLength: 8) + .frame(width: 66, alignment: .trailing) + Capsule() + .fill(live ? WTheme.positive : meeting.statusTone.color.opacity(canceled ? 0.35 : 0.85)) + .frame(width: 3.5) + .padding(.vertical, 2) + VStack(alignment: .leading, spacing: 4) { + Text(meeting.displayTitle) + .font(.system(size: 15.5, weight: .medium)) + .foregroundStyle(canceled ? WTheme.inkTertiary : WTheme.ink) + .strikethrough(canceled, color: WTheme.inkTertiary) + .lineLimit(1) + HStack(spacing: 6) { + if let invitee = meeting.inviteeLabel, meeting.eventName?.isEmpty == false { + Text(invitee) + .lineLimit(1) + } + if meeting.source != "manual", !meeting.sourceLabel.isEmpty { + Text(meeting.sourceLabel) + .foregroundStyle(WTheme.inkTertiary) + } + } + .font(.system(size: 13)) + .foregroundStyle(WTheme.inkSecondary) + if live { + LiveTag() + } else if meeting.status != "booked", meeting.status != nil { + StatusPill(text: meeting.statusLabel.prefix(1).uppercased() + meeting.statusLabel.dropFirst(), tone: meeting.statusTone) + } + } + Spacer(minLength: 6) if let joinURL = meeting.joinURL, let url = URL(string: joinURL), - store.scope != .past, meeting.status != "canceled" { + store.scope != .past, !canceled { Link(destination: url) { Image(systemName: "video.fill") .font(.system(size: 13, weight: .semibold)) - .foregroundStyle(WTheme.accent) - .frame(width: 32, height: 32) - .background(Tone.sky.background, in: Circle()) + .foregroundStyle(live ? .white : WTheme.accent) + .frame(width: 34, height: 34) + .background(live ? WTheme.positive : Tone.sky.background, in: Circle()) } - .buttonStyle(.plain) + .buttonStyle(TapScaleStyle()) .accessibilityLabel("Join meeting") } - VStack(alignment: .trailing, spacing: 4) { - if !meeting.sourceLabel.isEmpty { - Text(meeting.sourceLabel) - .font(.caption.weight(.medium)) - .foregroundStyle(.tertiary) - } - StatusPill(text: meeting.statusLabel, tone: meeting.statusTone) - } } - .padding(.vertical, 6) - .listRowInsets(EdgeInsets(top: 4, leading: 20, bottom: 4, trailing: 16)) - .listRowBackground(Color(.systemBackground)) + .fixedSize(horizontal: false, vertical: true) + .padding(.vertical, 4) + .listRowBackground(WTheme.groupedCard) + .listRowInsets(EdgeInsets(top: 8, leading: 8, bottom: 8, trailing: 14)) + .alignmentGuide(.listRowSeparatorLeading) { _ in 90 } .swipeActions(edge: .trailing, allowsFullSwipe: false) { - if canWrite, meeting.status != "canceled" { + if canWrite, !canceled { Button(role: .destructive) { pendingCancel = meeting } label: { @@ -284,7 +387,7 @@ struct CRMMeetingsView: View { Label("Reschedule", systemImage: "calendar") } } - if canWrite, meeting.status != "canceled" { + if canWrite, !canceled { Button(role: .destructive) { pendingCancel = meeting } label: { @@ -303,6 +406,160 @@ struct CRMMeetingsView: View { } } +// MARK: - Next meeting + +/// The hero: the next meeting with a live countdown, who it is with, and a +/// join button that turns green once the call is starting. +private struct NextMeetingCard: View { + let meeting: CRMMeeting + let shown: Bool + + var body: some View { + TimelineView(.periodic(from: .now, by: 15)) { context in + let now = context.date + let live = meeting.isLive(at: now) + let soon = (meeting.scheduledFor?.timeIntervalSince(now) ?? .infinity) < 10 * 60 + VStack(alignment: .leading, spacing: 14) { + HStack(spacing: 6) { + if live || soon { + PulsingDot(color: live ? WTheme.positive : WTheme.accent) + } + Text(live ? "Happening now" : "Next up") + .font(.system(size: 13, weight: .semibold)) + .foregroundStyle(live ? WTheme.positive : WTheme.inkSecondary) + Spacer() + if meeting.source != "manual", !meeting.sourceLabel.isEmpty { + Text(meeting.sourceLabel) + .font(.system(size: 12, weight: .medium)) + .foregroundStyle(WTheme.inkTertiary) + } + } + Text(countdown(now: now, live: live)) + .font(.system(size: 34, weight: .semibold, design: .rounded)) + .monospacedDigit() + .foregroundStyle(live ? WTheme.positive : WTheme.ink) + .contentTransition(.numericText(countsDown: true)) + .animation(.snappy, value: countdown(now: now, live: live)) + HStack(spacing: 12) { + WAvatar(name: meeting.inviteeLabel ?? meeting.displayTitle, seed: meeting.inviteeEmail ?? meeting.id, size: 40) + VStack(alignment: .leading, spacing: 2) { + Text(meeting.displayTitle) + .font(.system(size: 16, weight: .semibold)) + .foregroundStyle(WTheme.ink) + .lineLimit(1) + Text(subtitle) + .font(.system(size: 13)) + .foregroundStyle(WTheme.inkSecondary) + .lineLimit(1) + } + Spacer(minLength: 0) + } + if let joinURL = meeting.joinURL, let url = URL(string: joinURL) { + Link(destination: url) { + HStack(spacing: 8) { + Image(systemName: "video.fill") + Text(live ? "Join now" : "Join call") + } + .font(.system(size: 15, weight: .semibold)) + .foregroundStyle(.white) + .frame(maxWidth: .infinity) + .frame(height: 46) + .background(live || soon ? WTheme.positive : WTheme.ink, in: Capsule()) + } + .buttonStyle(TapScaleStyle()) + .animation(.snappy, value: live || soon) + } else if let location = meeting.location, !location.isEmpty { + Label(location, systemImage: "mappin.and.ellipse") + .font(.system(size: 13.5)) + .foregroundStyle(WTheme.inkSecondary) + .lineLimit(1) + } + } + } + .coverCard() + } + + private var subtitle: String { + var parts: [String] = [] + if let invitee = meeting.inviteeLabel, meeting.eventName?.isEmpty == false { parts.append(invitee) } + if let start = meeting.scheduledFor { + var when = CRMFormat.meetingTime(start) + when = when.prefix(1).uppercased() + when.dropFirst() + if let end = meeting.endTime { + when += " to " + end.formatted(date: .omitted, time: .shortened) + } + parts.append(when) + } + return parts.joined(separator: " · ") + } + + private func countdown(now: Date, live: Bool) -> String { + guard let start = meeting.scheduledFor else { return "Not scheduled" } + if live { + guard let end = meeting.endTime else { return "Started" } + let left = max(1, Int(end.timeIntervalSince(now) / 60)) + return "\(left) min left" + } + let seconds = start.timeIntervalSince(now) + if seconds < 60 { return "Starting now" } + let minutes = Int(seconds / 60) + if minutes < 60 { return "In \(minutes) min" } + let hours = minutes / 60 + if hours < 24 { return minutes % 60 == 0 ? "In \(hours) h" : "In \(hours) h \(minutes % 60) min" } + let days = Calendar.current.dateComponents([.day], from: Calendar.current.startOfDay(for: now), to: Calendar.current.startOfDay(for: start)).day ?? hours / 24 + return days == 1 ? "Tomorrow" : "In \(days) days" + } +} + +/// A small green "Live" tag for a meeting in progress. +private struct LiveTag: View { + var body: some View { + HStack(spacing: 5) { + PulsingDot(color: WTheme.positive, size: 6) + Text("Live") + .font(.system(size: 12, weight: .semibold)) + .foregroundStyle(WTheme.positive) + } + } +} + +/// A dot with a soft ring breathing out of it. +private struct PulsingDot: View { + var color: Color + var size: CGFloat = 7 + @State private var pulse = false + + var body: some View { + Circle() + .fill(color) + .frame(width: size, height: size) + .background { + Circle() + .fill(color.opacity(0.35)) + .scaleEffect(pulse ? 2.6 : 1) + .opacity(pulse ? 0 : 1) + } + .onAppear { + withAnimation(.easeOut(duration: 1.4).repeatForever(autoreverses: false)) { pulse = true } + } + } +} + +extension CRMMeeting { + var durationMinutes: Int? { + guard let start = scheduledFor, let end = endTime, end > start else { return nil } + return Int(end.timeIntervalSince(start) / 60) + } + + func isLive(at now: Date = .now) -> Bool { + guard status != "canceled", let start = scheduledFor else { return false } + let end = endTime ?? start.addingTimeInterval(30 * 60) + return start <= now && now < end + } + + var isLive: Bool { isLive() } +} + // MARK: - Drawer /// Meetings drawer: sky hero with a next-meeting badge (falling back to the diff --git a/ios/Warmbly/Features/CRM/CRMStore.swift b/ios/Warmbly/Features/CRM/CRMStore.swift index e7333e82a..5a96eabe1 100644 --- a/ios/Warmbly/Features/CRM/CRMStore.swift +++ b/ios/Warmbly/Features/CRM/CRMStore.swift @@ -295,12 +295,31 @@ final class CRMTasksStore { /// Flip completion. Completed <-> pending; setting completed stamps completed_at server-side. func setDone(_ api: APIClient, task: CRMTask, done: Bool) async throws { + // Optimistic: flip it now, put it back if the server refuses. + var local = task + local.status = done ? "completed" : "pending" + local.completedAt = done ? .now : nil + replace(local) var body = CRMTaskUpdateBody() - body.status = done ? "completed" : "pending" - let updated: CRMTask = try await api.patch("crm/tasks/\(task.id)", body: body) - withAnimation(.snappy) { + body.status = local.status + do { + let updated: CRMTask = try await api.patch("crm/tasks/\(task.id)", body: body) + replace(updated) + } catch { + replace(task) + throw error + } + } + + /// Tasks finished today, for the today ring. + var doneToday: Int { + tasks.count { $0.isDone && ($0.completedAt.map(Calendar.current.isDateInToday) ?? false) } + } + + private func replace(_ task: CRMTask) { + withAnimation(.spring(response: 0.45, dampingFraction: 0.85)) { if let index = tasks.firstIndex(where: { $0.id == task.id }) { - tasks[index] = updated + tasks[index] = task } } } diff --git a/ios/Warmbly/Features/CRM/CRMTasksView.swift b/ios/Warmbly/Features/CRM/CRMTasksView.swift index d3e34a8d4..b8fdf544f 100644 --- a/ios/Warmbly/Features/CRM/CRMTasksView.swift +++ b/ios/Warmbly/Features/CRM/CRMTasksView.swift @@ -15,10 +15,19 @@ struct CRMTasksView: View { @State private var store = CRMTasksStore() @State private var showCreate = false @State private var sidebarOpen = false + @State private var shown = false + @State private var celebrate = 0 + @State private var completedPulse = 0 + /// Just-toggled tasks, held in their old place (by their old state) so the check animates before they move. + @State private var lingering: [String: CRMTask] = [:] + @FocusState private var searchFocused: Bool private var canWrite: Bool { env.session.can(.manageContacts) } private var isSearching: Bool { !store.query.trimmingCharacters(in: .whitespaces).isEmpty } - private var scopedTasks: [CRMTask] { store.tasks(in: store.scope) } + private var scopedTasks: [CRMTask] { + let ids = Set(store.tasks(in: store.scope).map(\.id)) + return store.tasks.filter { ids.contains($0.id) || lingering[$0.id] != nil } + } var body: some View { NavigationStack { @@ -69,55 +78,86 @@ struct CRMTasksView: View { private var mainPane: some View { @Bindable var store = store + let open = store.count(for: .open) return VStack(spacing: 0) { - CRMSearchBar( + GlassHeaderBar( + title: "Tasks", + subtitle: store.hasLoaded ? Text("\(open) open") : nil, query: $store.query, - prompt: "Search tasks", - onMenu: { openSidebar() }, - menuLabel: "Open tasks menu" + searchPrompt: "Search tasks", + searchFocused: $searchFocused, + menuLabel: "Open tasks menu", + onMenu: openSidebar ) { if canWrite { - CRMCircleButton(symbol: "plus", label: "New task") { - showCreate = true - } - } - CRMCircleButton(symbol: "xmark", label: "Close tasks", weight: .semibold, size: 15) { - dismiss() + HeaderPrimaryButton(symbol: "plus", label: "New task") { showCreate = true } } + GlassCircleButton(symbol: "xmark", label: "Close tasks") { dismiss() } } - scopeCaption list } - .background(Color(.systemBackground)) + .background(WTheme.groupedPage) + .overlay { ConfettiBurst(trigger: celebrate) } + .sensoryFeedback(.success, trigger: celebrate) + .sensoryFeedback(.impact(weight: .light), trigger: completedPulse) } - // MARK: Caption + // MARK: Today - private var scopeCaption: some View { - HStack(spacing: 6) { - Text(isSearching ? "SEARCH RESULTS" : store.scope.title.uppercased()) - .font(.caption.weight(.semibold)) - .tracking(0.9) - .foregroundStyle(.secondary) - if !isSearching, store.count(for: store.scope) > 0 { - Text(WFormat.compact(store.count(for: store.scope))) - .font(.caption.weight(.semibold)) - .monospacedDigit() - .foregroundStyle(.tertiary) - .contentTransition(.numericText()) + private var todayCard: some View { + let left = store.tasks(in: .dueToday).count + let done = store.doneToday + let total = left + done + let fraction = total > 0 ? Double(done) / Double(total) : 1 + let overdue = store.count(for: .overdue) + let upcoming = store.count(for: .upcoming) + let headline = left > 0 ? "\(left) left for today" : (total > 0 ? "All done for today" : "Nothing due today") + return HStack(spacing: 16) { + SweepRing(fraction: fraction, color: left == 0 ? WTheme.positive : WTheme.accent, shown: shown, lineWidth: 9) { + if left == 0 { + Image(systemName: "checkmark") + .font(.system(size: 26, weight: .bold)) + .foregroundStyle(WTheme.positive) + .symbolEffect(.bounce, value: celebrate) + .transition(.scale.combined(with: .opacity)) + } else { + VStack(spacing: -1) { + Text("\(done)/\(total)") + .font(.system(size: 19, weight: .semibold, design: .rounded)) + .monospacedDigit() + .foregroundStyle(WTheme.ink) + .contentTransition(.numericText()) + Text("done") + .font(.system(size: 11, weight: .medium)) + .foregroundStyle(WTheme.inkTertiary) + } + } } - Spacer() - if isSearching, store.hasLoaded { - Text("\(scopedTasks.count) found") - .font(.caption.weight(.semibold)) - .monospacedDigit() - .foregroundStyle(.secondary) + .frame(width: 86, height: 86) + .animation(.spring(response: 0.5, dampingFraction: 0.7), value: left == 0) + VStack(alignment: .leading, spacing: 5) { + Text(Date.now.formatted(.dateTime.weekday(.wide).month(.wide).day())) + .font(.system(size: 13.5, weight: .medium)) + .foregroundStyle(WTheme.inkSecondary) + Text(headline) + .font(.system(size: 21, weight: .semibold)) + .foregroundStyle(WTheme.ink) .contentTransition(.numericText()) + HStack(spacing: 10) { + if overdue > 0 { + Label("\(overdue) overdue", systemImage: "exclamationmark.circle.fill") + .foregroundStyle(WTheme.negative) + } + Label("\(upcoming) coming up", systemImage: "calendar") + .foregroundStyle(WTheme.inkSecondary) + } + .font(.system(size: 13, weight: .medium)) + .labelStyle(CompactLabelStyle()) } + Spacer(minLength: 0) } - .padding(.horizontal, 20) - .padding(.top, 8) - .padding(.bottom, 2) + .coverCard() + .animation(.snappy, value: left) } // MARK: Due-date groups @@ -125,21 +165,20 @@ struct CRMTasksView: View { private struct TaskBucket: Identifiable { let id: String let title: String - var tone: Tone? + var color: Color? var ping = false let tasks: [CRMTask] } - /// Buckets computed over the scoped tasks; scopes narrower than Open - /// naturally collapse to their own group(s). private var groups: [TaskBucket] { var result: [TaskBucket] = [] let scoped = scopedTasks - let overdue = scoped.filter(\.isOverdue) + let placed = { (task: CRMTask) in lingering[task.id] ?? task } + let overdue = scoped.filter { placed($0).isOverdue } if !overdue.isEmpty { - result.append(TaskBucket(id: "overdue", title: "Overdue", tone: .rose, ping: true, tasks: overdue)) + result.append(TaskBucket(id: "overdue", title: "Overdue", color: WTheme.negative, ping: true, tasks: overdue)) } - let open = scoped.filter { !$0.isDone && !$0.isOverdue } + let open = scoped.filter { !placed($0).isDone && !placed($0).isOverdue } let calendar = Calendar.current let today = open.filter { $0.dueDate.map(calendar.isDateInToday) ?? false } let tomorrow = open.filter { $0.dueDate.map(calendar.isDateInTomorrow) ?? false } @@ -148,22 +187,12 @@ struct CRMTasksView: View { return !calendar.isDateInToday(due) && !calendar.isDateInTomorrow(due) } let undated = open.filter { $0.dueDate == nil } - if !today.isEmpty { - result.append(TaskBucket(id: "today", title: "Due today", tone: .sky, tasks: today)) - } - if !tomorrow.isEmpty { - result.append(TaskBucket(id: "tomorrow", title: "Due tomorrow", tasks: tomorrow)) - } - if !later.isEmpty { - result.append(TaskBucket(id: "later", title: "Upcoming", tasks: later)) - } - if !undated.isEmpty { - result.append(TaskBucket(id: "undated", title: "No due date", tasks: undated)) - } - let done = scoped.filter(\.isDone) - if !done.isEmpty { - result.append(TaskBucket(id: "done", title: "Done", tone: .slate, tasks: done)) - } + if !today.isEmpty { result.append(TaskBucket(id: "today", title: "Today", color: WTheme.accent, tasks: today)) } + if !tomorrow.isEmpty { result.append(TaskBucket(id: "tomorrow", title: "Tomorrow", color: WTheme.special, tasks: tomorrow)) } + if !later.isEmpty { result.append(TaskBucket(id: "later", title: "Upcoming", color: WTheme.paused, tasks: later)) } + if !undated.isEmpty { result.append(TaskBucket(id: "undated", title: "No due date", tasks: undated)) } + let done = scoped.filter { placed($0).isDone } + if !done.isEmpty { result.append(TaskBucket(id: "done", title: "Done", color: WTheme.positive, tasks: done)) } return result } @@ -172,55 +201,86 @@ struct CRMTasksView: View { @ViewBuilder private var list: some View { if store.isLoading, !store.hasLoaded { - ScrollView { SkeletonRows(rows: 10) } + ScrollView { AnalyticsLoadingCards().padding(16) } } else if let error = store.errorMessage, store.tasks.isEmpty { ErrorStateView(title: "Couldn't load tasks", message: error) { await store.load(env.api) } - } else if scopedTasks.isEmpty { - emptyState } else { List { - ForEach(groups) { group in - CRMListCaption(title: group.title, count: group.tasks.count, tone: group.tone, ping: group.ping) - ForEach(group.tasks) { task in - row(task) + Section { + VStack(alignment: .leading, spacing: 14) { + if !isSearching { + todayCard + } + ChipFilterRow( + options: CRMTaskScope.allCases, + selection: Binding(get: { store.scope }, set: { store.scope = $0 }), + label: \.title, + count: { store.count(for: $0) }, + alert: { $0 == .overdue && store.count(for: .overdue) > 0 } + ) + } + .listRowInsets(EdgeInsets(top: 4, leading: 0, bottom: 0, trailing: 0)) + .listRowBackground(Color.clear) + .listRowSeparator(.hidden) + } + if scopedTasks.isEmpty { + Section { + emptyState + .listRowBackground(Color.clear) + .listRowSeparator(.hidden) + } + } else { + ForEach(groups) { group in + Section { + ForEach(group.tasks) { task in + row(task) + } + } header: { + CoverSectionHeader(title: group.title, count: group.tasks.count, color: group.color, pulsing: group.ping) + } } } - CRMEndMarker(scopedTasks.count, "task") + Section { + CRMEndMarker(scopedTasks.count, "task") + .listRowBackground(Color.clear) + } } - .listStyle(.plain) + .listStyle(.insetGrouped) + .listSectionSpacing(18) + .contentMargins(.horizontal, 16, for: .scrollContent) + .contentMargins(.top, 0, for: .scrollContent) + .scrollContentBackground(.hidden) .scrollDismissesKeyboard(.immediately) + .defaultScrollAnchor(SettingsDebug.anchor) .refreshable { await store.load(env.api) } + .onAppear { shown = true } } } @ViewBuilder private var emptyState: some View { if isSearching { - EmptyStateView(title: "No matching tasks", message: "Try a different search.") + CoverEmptyState(symbol: "magnifyingglass", color: WTheme.inkSecondary, title: "No matching tasks", message: "Try a different search.") } else { switch store.scope { case .open: - if canWrite { - EmptyStateView( - title: "No tasks yet", - message: "Track follow-ups and reminders here.", - ctaTitle: "New task" - ) { - showCreate = true - } - } else { - EmptyStateView(title: "No tasks yet", message: "Tasks your team creates will show up here.") - } + CoverEmptyState( + symbol: "checklist", + title: "No tasks yet", + message: "Follow-ups and reminders you create land here.", + actionTitle: canWrite ? "New task" : nil, + action: canWrite ? { showCreate = true } : nil + ) case .dueToday: - EmptyStateView(title: "Nothing due today", message: "Tasks with a due date of today show up here.") + CoverEmptyState(symbol: "sun.max.fill", color: WTheme.warning, title: "Nothing due today", message: "Enjoy the quiet, or get ahead on tomorrow.") case .overdue: - EmptyStateView(title: "Nothing overdue", message: "You're all caught up.") + CoverEmptyState(symbol: "checkmark.seal.fill", color: WTheme.positive, title: "Nothing overdue", message: "You're all caught up.") case .upcoming: - EmptyStateView(title: "Nothing upcoming", message: "Tasks due after today show up here.") + CoverEmptyState(symbol: "calendar", color: WTheme.special, title: "Nothing upcoming", message: "Tasks due after today show up here.") case .completed: - EmptyStateView(title: "Nothing completed yet", message: "Finished tasks land here.") + CoverEmptyState(symbol: "checkmark.circle.fill", color: WTheme.positive, title: "Nothing finished yet", message: "Tick a task off and it lands here.") } } } @@ -228,53 +288,56 @@ struct CRMTasksView: View { // MARK: Row private func row(_ task: CRMTask) -> some View { - HStack(spacing: 12) { - Button { + let priorityColor: Color? = switch task.priority { + case "urgent": WTheme.negative + case "high": Tone.orange.color + default: nil + } + let calendar = Calendar.current + let dueColor: Color = task.isOverdue ? WTheme.negative : (task.dueDate.map(calendar.isDateInToday) ?? false) ? WTheme.accent : WTheme.inkSecondary + return HStack(spacing: 8) { + TaskCheck(done: task.isDone) { Task { await toggle(task) } - } label: { - Image(systemName: task.isDone ? "checkmark.circle.fill" : "circle") - .font(.system(size: 22)) - .foregroundStyle(task.isDone ? WTheme.positive : (task.isOverdue ? WTheme.negative : Color.secondary)) - .contentTransition(.symbolEffect(.replace)) - .frame(width: 30, height: 30) - .contentShape(Rectangle()) } - .buttonStyle(.plain) .disabled(!canWrite) - .accessibilityLabel(task.isDone ? "Reopen task" : "Complete task") - - VStack(alignment: .leading, spacing: 3) { + VStack(alignment: .leading, spacing: 4) { Text(task.title) - .font(.body.weight(.medium)) - .foregroundStyle(task.isDone ? .secondary : .primary) - .strikethrough(task.isDone, color: .secondary) - .lineLimit(1) - HStack(spacing: 6) { - if let due = task.dueDate { - Text(CRMFormat.dueLabel(due)) - .font(.footnote) + .font(.system(size: 15.5, weight: .medium)) + .foregroundStyle(task.isDone ? WTheme.inkTertiary : WTheme.ink) + .strikethrough(task.isDone, color: WTheme.inkTertiary) + .lineLimit(2) + HStack(spacing: 8) { + if let due = task.dueDate, !task.isDone { + Label(CRMFormat.dueLabel(due).prefix(1).uppercased() + CRMFormat.dueLabel(due).dropFirst(), systemImage: task.isOverdue ? "exclamationmark.circle" : "clock") + .labelStyle(CompactLabelStyle()) + .font(.system(size: 13)) .monospacedDigit() - .foregroundStyle(task.isOverdue ? WTheme.negative : .secondary) + .foregroundStyle(dueColor) } if let type = task.type, !type.isEmpty { CRMColorChip(text: type, hex: typeColor(type)) } } } - Spacer(minLength: 8) - if let priority = task.priority, priority != "medium", !task.isDone { - StatusPill(text: priority, tone: task.priorityTone) + Spacer(minLength: 6) + if let priorityColor, !task.isDone { + Image(systemName: "flag.fill") + .font(.system(size: 12)) + .foregroundStyle(priorityColor) + .accessibilityLabel("\(task.priority ?? "") priority") } } - .padding(.vertical, 6) - .listRowInsets(EdgeInsets(top: 4, leading: 16, bottom: 4, trailing: 16)) - .listRowBackground(Color(.systemBackground)) + .padding(.vertical, 2) + .animation(.spring(response: 0.4, dampingFraction: 0.8), value: task.isDone) + .listRowBackground(WTheme.groupedCard) + .listRowInsets(EdgeInsets(top: 6, leading: 6, bottom: 6, trailing: 14)) + .alignmentGuide(.listRowSeparatorLeading) { _ in 50 } .swipeActions(edge: .leading, allowsFullSwipe: true) { if canWrite { Button { Task { await toggle(task) } } label: { - Label(task.isDone ? "Reopen" : "Complete", systemImage: task.isDone ? "arrow.uturn.backward" : "checkmark") + Label(task.isDone ? "Reopen" : "Done", systemImage: task.isDone ? "arrow.uturn.backward" : "checkmark") } .tint(task.isDone ? WTheme.paused : WTheme.positive) } @@ -287,7 +350,18 @@ struct CRMTasksView: View { private func toggle(_ task: CRMTask) async { guard canWrite else { return } + let leftBefore = store.tasks(in: .dueToday).count + if !task.isDone { completedPulse += 1 } + lingering[task.id] = task + Task { + try? await Task.sleep(for: .milliseconds(900)) + _ = withAnimation(.spring(response: 0.45, dampingFraction: 0.85)) { lingering.removeValue(forKey: task.id) } + } try? await store.setDone(env.api, task: task, done: !task.isDone) + // Clearing the last task due today earns a little celebration. + if !task.isDone, leftBefore > 0, store.tasks(in: .dueToday).isEmpty { + celebrate += 1 + } } } @@ -448,3 +522,70 @@ struct CRMTaskCreateSheet: View { } } } + +// MARK: - Check + +/// A round check that fills and draws its tick when done, with a ring that +/// ripples out as it lands. +struct TaskCheck: View { + let done: Bool + var tint: Color = WTheme.inkTertiary + let action: () -> Void + + @State private var ripple = false + + var body: some View { + Button { + if !done { + ripple = false + withAnimation(.easeOut(duration: 0.55)) { ripple = true } + } + action() + } label: { + ZStack { + Circle() + .strokeBorder(done ? WTheme.positive : tint.opacity(0.9), lineWidth: 2) + Circle() + .fill(WTheme.positive) + .scaleEffect(done ? 1 : 0.01) + .opacity(done ? 1 : 0) + TickShape() + .trim(from: 0, to: done ? 1 : 0) + .stroke(.white, style: StrokeStyle(lineWidth: 2.4, lineCap: .round, lineJoin: .round)) + .frame(width: 11, height: 9) + .animation(.easeOut(duration: 0.25).delay(done ? 0.12 : 0), value: done) + Circle() + .stroke(WTheme.positive, lineWidth: 2) + .scaleEffect(ripple ? 1.9 : 1) + .opacity(ripple ? 0 : (done ? 0.5 : 0)) + } + .frame(width: 24, height: 24) + .frame(width: 40, height: 40) + .contentShape(Rectangle()) + .animation(.spring(response: 0.32, dampingFraction: 0.58), value: done) + } + .buttonStyle(.plain) + .accessibilityLabel(done ? "Reopen task" : "Complete task") + } +} + +/// The tick inside a check. +struct TickShape: Shape { + func path(in rect: CGRect) -> Path { + var path = Path() + path.move(to: CGPoint(x: rect.minX, y: rect.midY + rect.height * 0.05)) + path.addLine(to: CGPoint(x: rect.minX + rect.width * 0.36, y: rect.maxY)) + path.addLine(to: CGPoint(x: rect.maxX, y: rect.minY)) + return path + } +} + +/// An icon and a title with a tight gap, for inline metadata. +struct CompactLabelStyle: LabelStyle { + func makeBody(configuration: Configuration) -> some View { + HStack(spacing: 4) { + configuration.icon.imageScale(.small) + configuration.title + } + } +} diff --git a/ios/Warmbly/Features/CRM/TemplatesListView.swift b/ios/Warmbly/Features/CRM/TemplatesListView.swift index 694aa0e46..306e1677a 100644 --- a/ios/Warmbly/Features/CRM/TemplatesListView.swift +++ b/ios/Warmbly/Features/CRM/TemplatesListView.swift @@ -1,71 +1,74 @@ import SwiftUI import WebKit -/// Reply templates browser pushed from the More tab, in the flat browser -/// language: search pill with presence, a tracked-uppercase caption row with -/// the live count, and dense hairline rows (name + subject + two-line snippet -/// + relative updated time) that push the rendered detail. Duplicate is gated -/// behind manageCampaigns. Reloads on the .templates pulse. +/// Reply templates pushed from settings: a hero with the count, native search, +/// and grouped cards showing each template's subject, snippet and the merge +/// fields it uses. Duplicate is gated behind manageCampaigns. struct TemplatesListView: View { @Environment(AppEnvironment.self) private var env @State private var store = TemplatesStore() @State private var openTemplate: EmailTemplate? + @State private var shown = false + @State private var duplicated = 0 private var canWrite: Bool { env.session.can(.manageCampaigns) } private var isSearching: Bool { !store.query.trimmingCharacters(in: .whitespaces).isEmpty } var body: some View { @Bindable var store = store - VStack(spacing: 0) { - CRMSearchBar(query: $store.query, prompt: "Search templates") - captionRow - list - } - .background(Color(.systemBackground)) - .navigationTitle("Templates") - .navigationBarTitleDisplayMode(.inline) - .navigationDestination(item: $openTemplate) { template in - TemplateDetailView(store: store, template: template) - } - .task(id: store.query) { - if store.hasLoaded { - try? await Task.sleep(for: .milliseconds(350)) + list + .background(WTheme.groupedPage) + .navigationTitle("Templates") + .navigationBarTitleDisplayMode(.inline) + .toolbarBackground(WTheme.groupedPage, for: .navigationBar) + .searchable(text: $store.query, placement: .navigationBarDrawer(displayMode: .automatic), prompt: "Search templates") + .navigationDestination(item: $openTemplate) { template in + TemplateDetailView(store: store, template: template) } - guard !Task.isCancelled else { return } - await store.load(env.api) - } - .onChange(of: env.realtime.pulse(for: .templates)) { - Task { await store.load(env.api) } - } + .sensoryFeedback(.success, trigger: duplicated) + .task(id: store.query) { + if store.hasLoaded { + try? await Task.sleep(for: .milliseconds(350)) + } + guard !Task.isCancelled else { return } + await store.load(env.api) + } + .onChange(of: env.realtime.pulse(for: .templates)) { + Task { await store.load(env.api) } + } + #if DEBUG + .onChange(of: store.hasLoaded) { + if ProcessInfo.processInfo.environment["WARMBLY_DEBUG_TEMPLATE"] != nil { openTemplate = store.templates.first } + } + #endif } - // MARK: Caption + // MARK: Hero - private var captionRow: some View { - HStack(spacing: 6) { - Text(isSearching ? "SEARCH RESULTS" : "REPLY TEMPLATES") - .font(.caption.weight(.semibold)) - .tracking(0.9) - .foregroundStyle(.secondary) - if !isSearching, !store.templates.isEmpty { - Text(WFormat.compact(store.templates.count)) - .font(.caption.weight(.semibold)) - .monospacedDigit() - .foregroundStyle(.tertiary) - .contentTransition(.numericText()) - } - Spacer() - if isSearching, store.hasLoaded { - Text("\(store.templates.count) found") - .font(.caption.weight(.semibold)) - .monospacedDigit() - .foregroundStyle(.secondary) - .contentTransition(.numericText()) + private var hero: some View { + let latest = store.templates.compactMap(\.updatedAt).max() + return HStack(spacing: 14) { + SettingsIcon(symbol: "text.bubble.fill", color: Tone.indigo.color, size: 50) + .symbolEffect(.bounce, value: shown) + VStack(alignment: .leading, spacing: 3) { + HStack(alignment: .firstTextBaseline, spacing: 6) { + CountUpText(value: shown ? Double(store.templates.count) : 0, format: { "\(Int($0.rounded()))" }) + .font(.system(size: 28, weight: .semibold, design: .rounded)) + .monospacedDigit() + .foregroundStyle(WTheme.ink) + .animation(.spring(response: 0.9, dampingFraction: 0.9).delay(0.1), value: shown) + Text(store.templates.count == 1 ? "reply template" : "reply templates") + .font(.system(size: 15, weight: .medium)) + .foregroundStyle(WTheme.inkSecondary) + } + Text(latest.map { "Last edited \(WFormat.relative($0))" } ?? "Insert one from any reply in the inbox.") + .font(.system(size: 13)) + .foregroundStyle(WTheme.inkTertiary) } + Spacer(minLength: 0) } - .padding(.horizontal, 20) - .padding(.top, 8) - .padding(.bottom, 2) + .coverCard() + .reveal(shown, 0) } // MARK: List @@ -73,90 +76,233 @@ struct TemplatesListView: View { @ViewBuilder private var list: some View { if store.isLoading, !store.hasLoaded { - ScrollView { SkeletonRows(rows: 8) } + ScrollView { AnalyticsLoadingCards().padding(16) } } else if let error = store.errorMessage, store.templates.isEmpty { ErrorStateView(title: "Couldn't load templates", message: error) { await store.load(env.api) } - } else if store.templates.isEmpty { - emptyState } else { List { - ForEach(store.templates) { template in - row(template) + if !isSearching { + Section { + hero + .listRowInsets(EdgeInsets(top: 4, leading: 0, bottom: 0, trailing: 0)) + .listRowBackground(Color.clear) + .listRowSeparator(.hidden) + } + } + if store.templates.isEmpty { + Section { + emptyState + .listRowBackground(Color.clear) + .listRowSeparator(.hidden) + } + } else { + Section { + ForEach(Array(store.templates.enumerated()), id: \.element.id) { index, template in + row(template, index: index) + } + } header: { + CoverSectionHeader(title: isSearching ? "Results" : "All templates", count: store.templates.count) + } + Section { + CRMEndMarker(store.templates.count, "template") + } } - CRMEndMarker(store.templates.count, "template") } - .listStyle(.plain) + .listStyle(.insetGrouped) + .listSectionSpacing(18) + .contentMargins(.horizontal, 16, for: .scrollContent) + .contentMargins(.top, 4, for: .scrollContent) + .scrollContentBackground(.hidden) .scrollDismissesKeyboard(.immediately) + .defaultScrollAnchor(SettingsDebug.anchor) .refreshable { await store.load(env.api) } + .onAppear { shown = true } } } @ViewBuilder private var emptyState: some View { - EmptyStateView( - title: isSearching ? "No matching templates" : "No templates yet", - message: isSearching - ? "Try a different search." - : "Reply templates you save on the web dashboard show up here." - ) + if isSearching { + CoverEmptyState(symbol: "magnifyingglass", color: WTheme.inkSecondary, title: "No matching templates", message: "Try a different search.") + } else { + CoverEmptyState( + symbol: "text.bubble", + color: Tone.indigo.color, + title: "No templates yet", + message: "Save a reply you send often on the web dashboard and it shows up here." + ) + } } // MARK: Row - private func row(_ template: EmailTemplate) -> some View { - Button { + private func row(_ template: EmailTemplate, index: Int) -> some View { + let tone = TemplateTone.of(template.name) + return Button { openTemplate = template } label: { - VStack(alignment: .leading, spacing: 3) { - HStack(alignment: .firstTextBaseline, spacing: 8) { - Text(template.name) - .font(.body.weight(.medium)) - .lineLimit(1) - Spacer(minLength: 8) - if let updated = template.updatedAt { - Text(WFormat.relative(updated)) - .font(.caption) - .monospacedDigit() - .foregroundStyle(.tertiary) + HStack(alignment: .top, spacing: 12) { + Text(String(template.name.prefix(1)).uppercased()) + .font(.system(size: 17, weight: .semibold, design: .rounded)) + .foregroundStyle(tone.color) + .frame(width: 40, height: 40) + .background(tone.background, in: RoundedRectangle(cornerRadius: 12, style: .continuous)) + VStack(alignment: .leading, spacing: 4) { + HStack(alignment: .firstTextBaseline, spacing: 8) { + Text(template.name) + .font(.system(size: 15.5, weight: .semibold)) + .foregroundStyle(WTheme.ink) + .lineLimit(1) + Spacer(minLength: 8) + if let updated = template.updatedAt { + Text(WFormat.relative(updated)) + .font(.system(size: 12)) + .monospacedDigit() + .foregroundStyle(WTheme.inkTertiary) + } } + if let subject = template.subject, !subject.isEmpty { + Text(EmailTemplate.tinted(subject)) + .font(.system(size: 13.5, weight: .medium)) + .foregroundStyle(WTheme.inkSecondary) + .lineLimit(1) + } + Text(EmailTemplate.tinted(template.snippet)) + .font(.system(size: 13.5)) + .foregroundStyle(WTheme.inkTertiary) + .lineLimit(2) } - if let subject = template.subject, !subject.isEmpty { - Text(subject) - .font(.footnote) - .foregroundStyle(.secondary) - .lineLimit(1) - } - Text(template.snippet) - .font(.footnote) - .foregroundStyle(.tertiary) - .lineLimit(2) } .padding(.vertical, 6) .contentShape(Rectangle()) } - .buttonStyle(.plain) - .listRowInsets(EdgeInsets(top: 4, leading: 20, bottom: 4, trailing: 16)) - .listRowBackground(Color(.systemBackground)) + .buttonStyle(MoreRowPressStyle()) + .listRowBackground(WTheme.groupedCard) + .listRowInsets(EdgeInsets(top: 8, leading: 14, bottom: 8, trailing: 14)) + .alignmentGuide(.listRowSeparatorLeading) { _ in 66 } .swipeActions(edge: .trailing, allowsFullSwipe: false) { if canWrite { Button { - Task { try? await store.duplicate(env.api, template: template) } + Task { await duplicate(template) } } label: { Label("Duplicate", systemImage: "plus.square.on.square") } .tint(WTheme.accent) } } + .contextMenu { + Button { + UIPasteboard.general.string = template.bodyPlain ?? template.snippet + } label: { + Label("Copy text", systemImage: "doc.on.doc") + } + if canWrite { + Button { + Task { await duplicate(template) } + } label: { + Label("Duplicate", systemImage: "plus.square.on.square") + } + } + } + } + + private func duplicate(_ template: EmailTemplate) async { + if (try? await store.duplicate(env.api, template: template)) != nil { + duplicated += 1 + } + } +} + +// MARK: - Merge fields + +extension EmailTemplate { + /// The `{{field}}` names a template fills in, in first-use order. + var mergeFields: [String] { + let text = [subject, bodyPlain ?? bodyHTML].compactMap { $0 }.joined(separator: " ") + guard let regex = try? Regex(#"\{\{\s*([A-Za-z0-9_.]+)[^}]*\}\}"#) else { return [] } + var seen: [String] = [] + for match in text.matches(of: regex) { + if let name = match.output[1].substring.map(String.init), !seen.contains(name) { + seen.append(name) + } + } + return seen + } +} + +extension EmailTemplate { + /// Text with its `{{field}}` tokens tinted, so they read as fill-ins. + static func tinted(_ text: String) -> AttributedString { + var result = AttributedString(text) + guard let regex = try? Regex(#"\{\{[^}]*\}\}"#) else { return result } + for match in text.matches(of: regex) { + if let range = Range(match.range, in: result) { + result[range].foregroundColor = Tone.indigo.color + } + } + return result + } + + /// A merge field as words: `originalSubject` and `first_name` become + /// "Original subject" and "First name". + static func fieldLabel(_ field: String) -> String { + var words = "" + for char in field { + if char == "_" || char == "." { + words.append(" ") + } else if char.isUppercase, !words.isEmpty, words.last != " " { + words.append(" ") + words.append(contentsOf: char.lowercased()) + } else { + words.append(char) + } + } + let lower = words.lowercased() + return lower.prefix(1).uppercased() + lower.dropFirst() + } +} + +/// A short row of merge-field chips, with a "+N" for the rest. +struct MergeFieldChips: View { + let fields: [String] + var limit = 99 + + var body: some View { + HStack(spacing: 5) { + ForEach(fields.prefix(limit), id: \.self) { field in + Text(EmailTemplate.fieldLabel(field)) + .font(.system(size: 11.5, weight: .medium)) + .foregroundStyle(Tone.indigo.color) + .lineLimit(1) + .padding(.horizontal, 7) + .padding(.vertical, 3) + .background(Tone.indigo.background, in: Capsule()) + } + if fields.count > limit { + Text("+\(fields.count - limit)") + .font(.system(size: 11.5, weight: .medium)) + .foregroundStyle(WTheme.inkTertiary) + } + } + } +} + +/// A stable tone per template name, so its monogram keeps its color. +private enum TemplateTone { + static func of(_ name: String) -> Tone { + let tones: [Tone] = [.sky, .indigo, .emerald, .orange, .amber, .rose] + let sum = name.unicodeScalars.reduce(0) { $0 &+ Int($1.value) } + return tones[abs(sum) % tones.count] } } // MARK: - Detail -/// Template detail: renders the body (POST /templates/:id/render with empty -/// variables, mirroring the send path) and falls back to the raw stored body if -/// render fails. Plain HTML shows in a WKWebView; plain text in a scroll view. +/// Template detail: the subject and merge fields over an email-style preview +/// of the rendered body (POST /templates/:id/render with empty variables, +/// falling back to the stored body). struct TemplateDetailView: View { @Environment(AppEnvironment.self) private var env let store: TemplatesStore @@ -165,6 +311,8 @@ struct TemplateDetailView: View { @State private var rendered: TemplateRenderResult? @State private var isRendering = false @State private var duplicating = false + @State private var copied = false + @State private var duplicated = 0 private var canWrite: Bool { env.session.can(.manageCampaigns) } @@ -184,68 +332,134 @@ struct TemplateDetailView: View { } var body: some View { - VStack(spacing: 0) { + VStack(spacing: 12) { header - Divider() preview + actions } + .padding(.horizontal, 16) + .padding(.top, 8) + // Clears the floating tab bar. + .padding(.bottom, 78) + .background(WTheme.groupedPage) .navigationTitle(template.name) .navigationBarTitleDisplayMode(.inline) + .toolbarBackground(WTheme.groupedPage, for: .navigationBar) .presenceResource("template:\(template.id)") - .toolbar { - ToolbarItem(placement: .topBarTrailing) { - if canWrite { - if duplicating { - ProgressView().controlSize(.small) - } else { - Button { - duplicate() - } label: { - Image(systemName: "plus.square.on.square") - } - .accessibilityLabel("Duplicate template") - } - } - } - } + .sensoryFeedback(.success, trigger: duplicated) + .sensoryFeedback(.selection, trigger: copied) .task { await render() } } private var header: some View { - VStack(alignment: .leading, spacing: 6) { - EyebrowLabel("Subject") - Text(subject) - .font(.body.weight(.semibold)) + VStack(alignment: .leading, spacing: 8) { + Text("Subject") + .font(.system(size: 12.5, weight: .medium)) + .foregroundStyle(WTheme.inkTertiary) + Text(EmailTemplate.tinted(subject)) + .font(.system(size: 17, weight: .semibold)) + .foregroundStyle(WTheme.ink) .textSelection(.enabled) + .fixedSize(horizontal: false, vertical: true) + let fields = template.mergeFields + if !fields.isEmpty { + HStack(spacing: 8) { + Text("Fills in") + .font(.system(size: 12.5, weight: .medium)) + .foregroundStyle(WTheme.inkTertiary) + ScrollView(.horizontal) { + MergeFieldChips(fields: fields) + } + .scrollIndicators(.hidden) + } + .padding(.top, 2) + } } .frame(maxWidth: .infinity, alignment: .leading) - .padding(.horizontal, 16) - .padding(.vertical, 12) + .coverCard(padding: 16) } @ViewBuilder private var preview: some View { - if isRendering, rendered == nil { - VStack { - Spacer() - ProgressView() - Spacer() + Group { + if isRendering, rendered == nil { + VStack(alignment: .leading, spacing: 10) { + ForEach(0..<5, id: \.self) { line in + RoundedRectangle(cornerRadius: 4) + .fill(WTheme.fill) + .frame(height: 12) + .frame(maxWidth: line == 4 ? 160 : .infinity) + } + Spacer() + } + .padding(18) + .skeletonShimmer() + } else if let html { + HTMLBodyView(html: html) + } else if let plain { + ScrollView { + Text(plain) + .font(.system(size: 15.5)) + .lineSpacing(3) + .foregroundStyle(WTheme.ink) + .textSelection(.enabled) + .frame(maxWidth: .infinity, alignment: .leading) + .padding(18) + } + } else { + CoverEmptyState(symbol: "doc", color: WTheme.inkSecondary, title: "Empty template", message: "This template has no body yet.") + .frame(maxHeight: .infinity) } - .frame(maxWidth: .infinity, maxHeight: .infinity) - } else if let html { - HTMLBodyView(html: html) - } else if let plain { - ScrollView { - Text(plain) - .font(.body) - .textSelection(.enabled) - .frame(maxWidth: .infinity, alignment: .leading) - .padding(16) + } + .frame(maxWidth: .infinity, maxHeight: .infinity) + .background(WTheme.groupedCard, in: RoundedRectangle(cornerRadius: 22, style: .continuous)) + .clipShape(RoundedRectangle(cornerRadius: 22, style: .continuous)) + .transition(.opacity) + .animation(.easeOut(duration: 0.25), value: rendered == nil) + } + + private var actions: some View { + HStack(spacing: 10) { + Button { + UIPasteboard.general.string = plain ?? template.snippet + withAnimation(.spring(response: 0.35, dampingFraction: 0.7)) { copied = true } + Task { + try? await Task.sleep(for: .seconds(1.6)) + withAnimation(.snappy) { copied = false } + } + } label: { + Label(copied ? "Copied" : "Copy text", systemImage: copied ? "checkmark" : "doc.on.doc") + .contentTransition(.symbolEffect(.replace)) + .font(.system(size: 15, weight: .semibold)) + .foregroundStyle(copied ? WTheme.positive : WTheme.ink) + .frame(maxWidth: .infinity) + .frame(height: 48) + .background(WTheme.groupedCard, in: Capsule()) + } + .buttonStyle(TapScaleStyle()) + if canWrite { + Button { + duplicate() + } label: { + HStack(spacing: 8) { + if duplicating { + ProgressView().controlSize(.small).tint(.white) + } else { + Image(systemName: "plus.square.on.square") + } + Text("Duplicate") + } + .font(.system(size: 15, weight: .semibold)) + .foregroundStyle(WTheme.inkInverse) + .frame(maxWidth: .infinity) + .frame(height: 48) + .background(WTheme.ink, in: Capsule()) + } + .buttonStyle(TapScaleStyle()) + .disabled(duplicating) } - } else { - EmptyStateView(title: "Empty template", message: "This template has no body content.") } } @@ -264,7 +478,9 @@ struct TemplateDetailView: View { guard !duplicating else { return } duplicating = true Task { - try? await store.duplicate(env.api, template: template) + if (try? await store.duplicate(env.api, template: template)) != nil { + duplicated += 1 + } duplicating = false } } @@ -297,7 +513,7 @@ struct HTMLBodyView: UIViewRepresentable { \(body) """ diff --git a/ios/Warmbly/MainTabView.swift b/ios/Warmbly/MainTabView.swift index 0553bf025..0bbe0566e 100644 --- a/ios/Warmbly/MainTabView.swift +++ b/ios/Warmbly/MainTabView.swift @@ -4,46 +4,110 @@ enum AppTab: String, Hashable { case home, inbox, campaigns, contacts, more } +extension AppTab { + /// The tab to open on launch: Home, or WARMBLY_DEBUG_TAB in scripted debug runs. + static var launchTab: AppTab { + #if DEBUG + if let raw = ProcessInfo.processInfo.environment["WARMBLY_DEBUG_TAB"], let tab = AppTab(rawValue: raw) { + return tab + } + #endif + return .home + } +} + /// Home is the workspace pulse and the front door to mailboxes/analytics; /// Inbox carries the unread badge. Tabs the member lacks permission for are -/// hidden, like the web sidebar. +/// hidden, like the web sidebar. The system tab bar is replaced by `WTabBar`. struct MainTabView: View { @Environment(AppEnvironment.self) private var env - @State private var selection: AppTab = .home + @State private var selection: AppTab = .launchTab + @State private var tabBar = TabBarState() + @State private var showAssistant = false private var canInbox: Bool { env.session.can(.accessUnibox) } private var canCampaigns: Bool { env.session.can(.viewCampaigns) } private var canContacts: Bool { env.session.can(.viewContacts) } + private var canAssistant: Bool { env.session.can(.useAI) } + + /// The round button: the current screen's own action, else Remie. + private var barAction: TabBarAction? { + if let action = tabBar.screenAction { return action } + guard canAssistant else { return nil } + return TabBarAction(title: "Ask Remie", symbol: "sparkle", mark: true) { showAssistant = true } + } + + /// Scripted debug runs open Remie on launch, optionally with a first prompt. + private var debugPrompt: String? { + #if DEBUG + if let raw = ProcessInfo.processInfo.environment["WARMBLY_DEBUG_ASSISTANT"], !raw.isEmpty { + return raw == "1" ? "" : raw + } + #endif + return nil + } + + private var items: [WTabItem] { + var items = [WTabItem(tab: .home, title: "Home", symbol: "house")] + if canInbox { + items.append(WTabItem(tab: .inbox, title: "Inbox", symbol: "tray", badge: env.badges.uniboxUnread)) + } + if canCampaigns { + items.append(WTabItem(tab: .campaigns, title: "Campaigns", symbol: "paperplane")) + } + if canContacts { + items.append(WTabItem(tab: .contacts, title: "Contacts", symbol: "person.2")) + } + items.append(WTabItem(tab: .more, title: "More", symbol: "square.grid.2x2")) + return items + } var body: some View { TabView(selection: $selection) { - Tab("Home", systemImage: "house.fill", value: AppTab.home) { - HomeView() + Tab("Home", systemImage: "house", value: AppTab.home) { + HomeView().toolbarVisibility(.hidden, for: .tabBar) } if canInbox { - Tab("Inbox", systemImage: "tray.fill", value: AppTab.inbox) { - UniboxRootView() + Tab("Inbox", systemImage: "tray", value: AppTab.inbox) { + UniboxRootView().toolbarVisibility(.hidden, for: .tabBar) } - .badge(env.badges.uniboxUnread) } if canCampaigns { - Tab("Campaigns", systemImage: "paperplane.fill", value: AppTab.campaigns) { - CampaignsRootView() + Tab("Campaigns", systemImage: "paperplane", value: AppTab.campaigns) { + CampaignsRootView().toolbarVisibility(.hidden, for: .tabBar) } } if canContacts { - Tab("Contacts", systemImage: "person.2.fill", value: AppTab.contacts) { - ContactsRootView() + Tab("Contacts", systemImage: "person.2", value: AppTab.contacts) { + ContactsRootView().toolbarVisibility(.hidden, for: .tabBar) } } - Tab("More", systemImage: "circle.grid.2x2.fill", value: AppTab.more) { - MoreRootView() + Tab("More", systemImage: "square.grid.2x2", value: AppTab.more) { + MoreRootView().toolbarVisibility(.hidden, for: .tabBar) } } - .tabBarMinimizeBehavior(.onScrollDown) - .sensoryFeedback(.selection, trigger: selection) + .safeAreaInset(edge: .bottom, spacing: 0) { + if !tabBar.isHidden { + WTabBar(items: items, selection: $selection, action: barAction) + .transition(.move(edge: .bottom).combined(with: .opacity)) + } + } + .animation(.spring(response: 0.34, dampingFraction: 0.86), value: tabBar.isHidden) + .environment(tabBar) + .fullScreenCover(isPresented: $showAssistant) { + AssistantView(page: selection.rawValue, initialPrompt: debugPrompt.flatMap { $0.isEmpty ? nil : $0 }) + } + .onAppear { + if debugPrompt != nil { showAssistant = true } + } .environment(\.switchTab) { tab in selection = tab } + .onReceive(NotificationCenter.default.publisher(for: UIResponder.keyboardWillShowNotification)) { _ in + tabBar.setKeyboard(true) + } + .onReceive(NotificationCenter.default.publisher(for: UIResponder.keyboardWillHideNotification)) { _ in + tabBar.setKeyboard(false) + } } } diff --git a/ios/Warmbly/RootView.swift b/ios/Warmbly/RootView.swift index 3524546f6..d852404cb 100644 --- a/ios/Warmbly/RootView.swift +++ b/ios/Warmbly/RootView.swift @@ -29,19 +29,26 @@ struct RootView: View { } } -/// Splash: the brand's airy sky with the mark, shown while the persisted -/// session is validated. The mark breathes instead of showing a spinner; -/// matches the auth backdrop so the handoff is seamless. +/// Splash shown while the persisted session is validated: the breathing mark +/// on the theme's canvas, continuing the system launch color in either theme. struct LaunchView: View { + @Environment(\.colorScheme) private var scheme @State private var breathe = false var body: some View { ZStack { - SkyBackdrop() + if scheme == .dark { + SkyBackdrop() + } else { + Color("LaunchBackground").ignoresSafeArea() + } WarmblyLogo() - .fill(.white) + .fill(scheme == .dark ? Color.white : WTheme.ink) .frame(width: 56, height: 57) - .shadow(color: .white.opacity(breathe ? 0.5 : 0.12), radius: breathe ? 28 : 10) + .shadow( + color: (scheme == .dark ? Color.white : WTheme.accent).opacity(breathe ? 0.4 : 0.08), + radius: breathe ? 28 : 10 + ) .scaleEffect(breathe ? 1.06 : 0.96) .animation(.easeInOut(duration: 1.1).repeatForever(autoreverses: true), value: breathe) .onAppear { breathe = true } @@ -59,23 +66,23 @@ struct UnreachableView: View { SkyBackdrop() VStack(spacing: 14) { WarmblyLogo() - .fill(.white) + .fill(WTheme.onSky) .frame(width: 56, height: 57) Text("Can't reach Warmbly") .font(.body.weight(.semibold)) - .foregroundStyle(.white) + .foregroundStyle(WTheme.onSky) Text("You're still signed in. Retrying automatically.") .font(.footnote) - .foregroundStyle(.white.opacity(0.85)) + .foregroundStyle(WTheme.onSky.opacity(0.85)) Button { Task { await env.session.bootstrap() } } label: { Text("Try again") .font(.subheadline.weight(.semibold)) - .foregroundStyle(.white) + .foregroundStyle(WTheme.onSky) .padding(.horizontal, 18) .padding(.vertical, 9) - .background(.white.opacity(0.18), in: Capsule()) + .background(WTheme.skyTile(0.18), in: Capsule()) } .buttonStyle(TapScaleStyle()) } diff --git a/ios/Warmbly/Warmbly.entitlements b/ios/Warmbly/Warmbly.entitlements index 80b5221de..1d3609592 100644 --- a/ios/Warmbly/Warmbly.entitlements +++ b/ios/Warmbly/Warmbly.entitlements @@ -4,6 +4,8 @@ aps-environment development + com.apple.developer.devicecheck.appattest-environment + development com.apple.developer.applesignin Default diff --git a/ios/Warmbly/WarmblyApp.swift b/ios/Warmbly/WarmblyApp.swift index 409a3285e..2200975f7 100644 --- a/ios/Warmbly/WarmblyApp.swift +++ b/ios/Warmbly/WarmblyApp.swift @@ -4,13 +4,15 @@ import SwiftUI struct WarmblyApp: App { @UIApplicationDelegateAdaptor(PushAppDelegate.self) private var pushDelegate @State private var env = AppEnvironment() + @AppStorage(AppearancePreference.storageKey) private var appearance = AppearancePreference.system @Environment(\.scenePhase) private var scenePhase var body: some Scene { WindowGroup { RootView() .environment(env) - .tint(WTheme.accent) + .tint(WTheme.ink) + .preferredColorScheme(appearance.colorScheme) } .onChange(of: scenePhase) { _, phase in if phase == .active { env.realtime.nudge() }