> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tuturuuu.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Mobile settings shell

> Shared shell chrome, profile settings routes and accessible edit entry

## Settings detail shell and profile settings

All mobile Settings children use the same shell background and one shell top
navbar with the destination title and actions. In-app Back appears only in the
floating bottom navbar, never in the top navbar. Android system Back remains
available. Offline is `/settings/offline`; its
Finance, Inventory, Tasks and Calendar details are `/settings/offline/<module>`.
They do not add body title/back bars, nested AppBars or another top safe area.
Their scroll content reserves the shell-provided bottom padding, so the floating
dock clears the last actionable row. Pushed destinations return to the screen
that opened them; direct links fall back to their Settings parent.

Settings → You now opens identity, avatar and account-status settings at
`/settings/profile`, with account management at `/settings/accounts`. Legacy
`/profile/edit` and `/profile/accounts` links redirect to those destinations.
`/profile` retains the Overview/Timeline activity surface. Its edit entry is a
compact icon with an accessible Identity label and tooltip. Account-switching
shortcuts remain available there. These defaults apply in both mobile languages;
workspace permissions and queued profile writes retain their existing rules.

Profile identity fields use the shared Settings tiles and panel material, with
read-only values until a field is opened for editing. Manage accounts uses the
same grouped Add account row and account panels; its shell title is not repeated
in a hero card. The Profile account-management entry has one label, and What's
new keeps its description and installed version without repeating the shell
heading. Account removal confirmations and queued profile writes are unchanged.
These defaults apply to both languages, light/dark themes and enlarged text.

Licenses, onboarding replay and explicit admin edit forms intentionally open
above the shell on the root navigator with their own full-screen chrome. Sheet
editors retain their existing modal presentation. They never stack a second
navbar within a shell body.

Home Agenda, Profile Overview/Timeline and Calendar Agenda reclaim the dock's
bottom scroll clearance while it is hidden, retaining the physical safe area.
The viewport remains full height; reverse scrolling or idle restores the dock
and its clearance. Other screens keep stable clearance by default. Text Assistant
publishes a lifecycle-scoped composer/action slot into the same shell-owned
floating dock used by every root and detail destination. The material stays
mounted as navigation and prompt content change; width and root bodies animate
independently, with only the current dock controls interactive. No page mounts a
second dock. Reduced motion disables transitions, and a focused composer remains
visible above the keyboard. Draft controllers stay with the cached Assistant
page, while disposed publishers cannot overwrite a newer registration. Text
immersive mode retains the same composer and navigation toggle,
including when entered through an Assistant tool. Live retains its existing
shell navigation and fullscreen policy. While no workspace is resolved, shell
navigation remains available.

Shell profile reads and cache mutations are fenced by current actor and request
generation. Account changes, logout and newer edits reject late results; cache
writes and clearing remain ordered. Feature-level identity guards also remain.

Regression coverage: `settings_detail_shell_checks.dart` exercises actual
Offline registrations, inherited background/header and dock clearance, enlarged
text, system/dock back without a top Back button, and unknown module links;
`profile_overview_shell_test.dart` covers the icon edit entry and return path.
`floating_shell_dock_test.dart` verifies hidden clearance and stable viewport;
`shell_assistant_composer_test.dart` verifies one dock, draft/focus and Live
transitions, and `shell_profile_races_test.dart` covers delayed account/cache
completion. These widget checks do not establish installed-device or production evidence.

### Centered navigation and action group

Root and mini-app destinations center the combined visible navigation island and
its actions whenever they fit. Empty action columns do not consume space after
exit. Dynamic actions reserve width first, moving navigation left, then fade and scale into the free space. On
exit, controls disappear before their width is released and navigation recenters.
The combined navigation/action group stays centered at every intermediate frame;
actions do not animate through a size clip. An interrupted transition reverses
from its current geometry, and a replaced outgoing action cannot accept input or
accessibility focus. Reduced motion settles both phases immediately. Actions
keep 52px slots and share the bottom baseline, including when large text makes
the composer taller; narrow layouts keep secondary actions in the top navbar.
When the viewport becomes too narrow, the second dock column is removed
immediately rather than retaining it while shrinking navigation touch targets. The navigation and Assistant dock share horizontal and safe-area bottom insets, and
switching root destinations retains one dock while bodies ease between tabs.
Only the active body receives pointer input or semantics. Visited tabs remain
mounted, preserving drafts and scroll positions; reduced-motion changes retain
the same page elements. Navigation and prompt slots never paint two docks.
Coverage: `dock_action_choreography_test.dart`, `persistent_shell_dock_test.dart`,
`lazy_indexed_stack_test.dart`, `floating_dock_rail_test.dart`,
`apps_search_submit_test.dart`, and `shell_assistant_composer_test.dart`.

Leaving Apps or launching a module clears Apps search so returning starts in
navigation mode. Workspace picker search replaces the shell title, and its
visible footer actions are centered. Hiding and restoring workspace shortcuts
belongs to Settings; the normal picker never exposes hide buttons. Coverage:
`workspace_picker_sheet_test.dart`. Native dark launch backgrounds match the
actual app theme, checked by `native_splash_theme_test.dart`; the locked screen
shows only the lock status and unlock action. Device visual, transition, and
keyboard checks on the exact CI-built artifact remain required.

## Notification navigation and refresh

Mobile Notifications keeps its scoped snapshot visible while revalidating on
entry. Concurrent unread badge refreshes share one awaitable request; the visible
feed owns its push listener, and count-only changes do not rebuild page rows.
Unchanged counts do not serialize the retained feed again. Workspace switches
clear the visible feed and reload the selected tab; responses from an older
workspace or actor cannot replace current reads. Pagination and offline pending
read overlays retain their existing behavior. These defaults apply to the native
Inbox and Archive; the sheet also updates its unread header. Empty and error
messages use a minimum height rather than a fixed height, so narrow screens and
enlarged text can wrap without clipping. The real 320px root transition matrix
in `shell_assistant_composer_test.dart` covers this responsive empty-state path.

`notifications_cubit_test.dart` covers coalescing, retry, delayed scope responses
and close safety. Focused tests establish request behavior, not a measured device
frame-time improvement.

The persistent notifications action button coalesces unread refreshes only for
the same signed-in actor and workspace. An account transition clears the badge,
retained feeds and pending state before starting a new request, including a
switch away and back in the same workspace. Delayed old requests cannot replace
the new count or end its loading state. This applies to the native shell action
button and shared notifications cubit; delayed-actor and same-workspace ABA
regressions are in `notifications_cubit_test.dart`.

## Product settings entry points

The central Settings overview lists native products with maintained settings
entries in `product_settings_registry.dart`. Calendar and Finance open the
existing shared Preferences controls; Mail resolves the selected workspace's
mailboxes and opens its existing quick-settings editor. Entries are shown only
when the product's corresponding state/access is available; this registry does
not grant permissions or fabricate settings for unimplemented products. App
quick settings and central entries share implementations and persisted state.
Mail's nested editor uses the shell title, bottom navigation/actions and inherited
background. A scoped route is cancelled on any account/workspace transition;
request completion cannot replace an editor opened for another scope.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.