feat(ios): refresh mobile settings layout (#15234)

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **New Features**
- Redesigned mobile Settings with localized sections, promotional
content, support actions, subscription access, and improved account
controls.
- Added sign-in prompts for signed-out users and clearer device-session
handling.
- Added a guided account-deletion flow with email confirmation and
completion messaging.
- Added App Store, download, team invitation, rating, and external
support links.
- **Bug Fixes**
- Improved interactive row behavior, keyboard accessibility, navigation,
and subscription availability.
  - Prevented account deletion for unresolved team owners.
- **Style**
- Refreshed mobile settings, subscription, profile, and promotional card
layouts.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: DarkSky <darksky2048@gmail.com>
This commit is contained in:
keepClamDown
2026-08-19 10:30:37 +08:00
committed by GitHub
parent b4c8548c09
commit d6fd3174b2
25 changed files with 1260 additions and 297 deletions
+1 -4
View File
@@ -16,9 +16,8 @@ test('after loaded, will land on the home page', async ({ page }) => {
});
test('stale first-open state still restores one local workspace', async ({
browser,
context,
}) => {
const context = await browser.newContext();
await context.addInitScript(() => {
window.localStorage.setItem('app_config', '{"onBoarding":false}');
window.localStorage.setItem('is-first-open', 'false');
@@ -56,8 +55,6 @@ test('stale first-open state still restores one local workspace', async ({
() => window.currentWorkspace?.meta
);
expect(reloadedWorkspace?.id).toBe(firstWorkspace?.id);
await context.close();
});
test('workspace selector does not offer workspace creation', async ({