# Gamepad Navigation Map Every arrow key, every position, every page. `[C]` = Container (red tile, D-pad grid) `[N]` = Nav bar item (secondary, reached via Up from top row) `[Y]` = Inner control (entered via Enter on container, exited via Escape) `[S]` = Sidebar item --- ## Sidebar (all pages) Vertical list. Up/Down wrap. Right enters page. Left does nothing. | Position | Up | Down | Right | Left | |------------|------------|------------|----------------|---------| | Home | Logout | Apps | First [C] | nothing | | Apps | Home | Cloud | First [C] | nothing | | Cloud | Apps | Mesh | First [C] | nothing | | Mesh | Cloud | Network | First [C] | nothing | | Network | Mesh | Web5 | First [C] | nothing | | Web5 | Network | Fleet | First [C] | nothing | | Fleet | Web5 | Settings | First [C] | nothing | | Settings | Fleet | AIUI | First [C] | nothing | | AIUI | Settings | Logout | First [C] | nothing | | Logout | AIUI | Home | First [C] | nothing | --- ## HOME `/dashboard` ### Nav bar `[N]` ``` [N] Dashboard [N] Setup ``` ### Grid `[C]` ``` Row 1: [C] My Apps [C] Cloud Row 2: [C] Network [C] Wallet Row 3: [C] System Row 4: [C] Quick Start (full-width, if visible) ``` | Position | Up | Down | Left | Right | Enter | |---------------|--------------|--------------|------------|----------|---------------------------| | [N] Dashboard | nothing | My Apps | nothing | Setup | Switch tab | | [N] Setup | nothing | My Apps | Dashboard | nothing | Switch tab | | My Apps | [N] bar | Network | Sidebar | Cloud | /dashboard/apps | | Cloud | [N] bar | Wallet | My Apps | nothing | /dashboard/cloud | | Network | My Apps | System | Sidebar | Wallet | /dashboard/server | | Wallet | Cloud | nothing | Network | nothing | /dashboard/web5 | | System | Network | Quick Start | Sidebar | nothing | /dashboard/settings | | Quick Start | System | nothing | Sidebar | nothing | Drill into [Y] | ### Quick Start `[Y]` inner controls ``` [Y] Open a Shop [Y] Accept Payments [Y] File Browser ``` | Position | Left | Right | Escape | |------------------|------------------|------------------|----------------| | Open a Shop | nothing | Accept Payments | Back to [C] | | Accept Payments | Open a Shop | File Browser | Back to [C] | | File Browser | Accept Payments | nothing | Back to [C] | --- ## APPS `/dashboard/apps` ### Nav bar `[N]` ``` [N] My Apps [N] App Store [N] Services | [N] All [N] Bitcoin [N] Social (etc) | [N] Search ``` Three groups: page tabs, category filters (dynamic), search input. | Position | Up | Down | Left | Right | Enter | |----------------|---------|---------|----------------|----------------|--------------------| | [N] My Apps | nothing | App1 | nothing | App Store | Switch tab | | [N] App Store | nothing | App1 | My Apps | Services | /dashboard/discover| | [N] Services | nothing | App1 | App Store | All filter | Switch tab | | [N] All | nothing | App1 | Services | Bitcoin (etc) | Filter | | [N] Search | nothing | App1 | last filter | nothing | Type text | ### Grid `[C]` (3-col) ``` Row 1: [C] App1 [C] App2 [C] App3 Row 2: [C] App4 [C] App5 [C] App6 (etc) ``` | Position | Up | Down | Left | Right | Enter | |----------------|------------------|-----------|-----------|----------|-----------------| | App1 (row 1) | [N] bar My Apps | App4 | Sidebar | App2 | Launch app | | App2 (row 1) | [N] bar My Apps | App5 | App1 | App3 | Launch app | | App3 (row 1) | [N] bar My Apps | App6 | App2 | nothing | Launch app | | App4 (row 2) | App1 | App7 | Sidebar | App5 | Launch app | | App5 (row 2) | App2 | App8 | App4 | App6 | Launch app | | App6 (row 2) | App3 | App9 | App5 | nothing | Launch app | | (etc) | above | below | left/side | right | Launch app | ### App `[Y]` inner controls (if no launch action) ``` [Y] Stop [Y] Restart [Y] Uninstall ``` Escape exits back to [C] app card. --- ## CLOUD `/dashboard/cloud` No nav bar. ### Grid `[C]` (3-col) ``` Row 1: [C] Photos [C] Music [C] Documents Row 2: [C] Files [C] Peer1 [C] Peer2 (etc) ``` | Position | Up | Down | Left | Right | Enter | |-------------|------------|-----------|-----------|------------|-------------------| | Photos | nothing | Files | Sidebar | Music | Open section | | Music | nothing | Peer1 | Photos | Documents | Open section | | Documents | nothing | Peer2 | Music | nothing | Open section | | Files | Photos | nothing | Sidebar | Peer1 | Open section | | Peer1 | Music | nothing | Files | Peer2 | Open peer files | | Peer2 | Documents | nothing | Peer1 | nothing | Open peer files | --- ## NETWORK `/dashboard/server` No nav bar. ### Grid `[C]` (2-col) ``` Row 1: [C] Local Network [C] Web3 Row 2: [C] Quick Actions (etc) ``` | Position | Up | Down | Left | Right | Enter | |----------------|-----------|---------------|-----------|-----------|------------------| | Local Network | nothing | Quick Actions | Sidebar | Web3 | Drill into [Y] | | Web3 | nothing | Quick Actions | Local Net | nothing | Drill into [Y] | | Quick Actions | Local Net | nothing | Sidebar | nothing | Drill into [Y] | --- ## WEB5 `/dashboard/web5` No nav bar. Containers from child components stacked vertically + side-by-side. ### Grid `[C]` ``` Row 1: [C] Action1 [C] Action2 [C] Action3 [C] Action4 [C] Action5 [C] Action6 Row 2: [C] Wallet [C] Domains Row 3: [C] Nostr Relays [C] Node Visibility Row 4: [C] Connected Nodes ``` Standard spatial grid nav. Left from leftmost = Sidebar. Enter = drill into [Y] controls. --- ## DISCOVER `/dashboard/discover` ### Nav bar `[N]` ``` [N] My Apps [N] App Store [N] Services | [N] Category filters (etc) ``` ### Grid `[C]` (3-col) ``` Row 0: [C] Featured1 [C] Featured2 [C] Featured3 Row 1: [C] App1 [C] App2 [C] App3 (etc) ``` | Position | Up | Down | Left | Right | Enter | |--------------|-------------|----------|-----------|------------|---------------| | [N] tabs | nothing | Featured1| left tab | right tab | Switch/filter | | Featured1 | [N] bar | App1 | Sidebar | Featured2 | View details | | App1 | Featured1 | App4 | Sidebar | App2 | Install | | (etc) | above | below | left/side | right | Install | --- ## MESH `/dashboard/mesh` ### Grid `[C]` ``` Row 1: [C] Device Status [C] Chat Panel Row 2: [C] Peers List [C] Tab Panel (Bitcoin/Dead Man/Map) ``` Spatial grid nav. Enter = drill into controls. --- ## FLEET `/dashboard/fleet` ### Grid `[C]` ``` Row 1: [C] Nodes [C] Online [C] Offline [C] Health Row 2: [C] Node1 [C] Node2 [C] Node3 (etc) ``` Spatial grid nav. Enter = view node details. --- ## SETTINGS `/dashboard/settings` ### Grid `[C]` (vertical stack) ``` Row 1: [C] Account Info Row 2: [C] Change Password Row 3: [C] Two-Factor Auth Row 4: [C] System Info Row 5: [C] Danger Zone ``` | Position | Up | Down | Left | Right | Enter | |-------------------|-----------------|------------------|---------|---------|------------------| | Account Info | nothing | Change Password | Sidebar | nothing | Drill into [Y] | | Change Password | Account Info | Two-Factor | Sidebar | nothing | Drill into [Y] | | Two-Factor | Change Password | System Info | Sidebar | nothing | Drill into [Y] | | System Info | Two-Factor | Danger Zone | Sidebar | nothing | Drill into [Y] | | Danger Zone | System Info | nothing | Sidebar | nothing | Drill into [Y] | --- ## LOGIN `/login` No sidebar, no grid. Three modes on the same route. `[B]` = Button `[I]` = Input field `[L]` = Link ### Set Password (first visit after onboarding) Auto-focus: `[I] Password` ``` [I] Password [I] Confirm Password [B] Set Password [L] Replay Intro [L] Restart Onboarding ``` | Position | Up | Down | Left | Right | Enter | |-----------------------|---------------------|---------------------|-------------------|---------------------|--------------------| | [I] Password | nothing | [I] Confirm | nothing | nothing | Type / Down | | [I] Confirm | [I] Password | [B] Set Password | nothing | nothing | Type / Down | | [B] Set Password | [I] Confirm | [L] Replay Intro | nothing | nothing | Submit | | [L] Replay Intro | [B] Set Password | nothing | nothing | [L] Restart | Replay intro | | [L] Restart | [B] Set Password | nothing | [L] Replay Intro | nothing | Restart onboarding | ### Normal Login Auto-focus: `[I] Password` ``` [I] Password [B] Login [L] Replay Intro [L] Restart Onboarding ``` | Position | Up | Down | Left | Right | Enter | |-----------------------|------------------|------------------|-------------------|---------------------|---------------| | [I] Password | nothing | [B] Login | nothing | nothing | Type / Down | | [B] Login | [I] Password | [L] Replay Intro | nothing | nothing | Submit | | [L] Replay Intro | [B] Login | nothing | nothing | [L] Restart | Replay intro | | [L] Restart | [B] Login | nothing | [L] Replay Intro | nothing | Restart | ### TOTP Verification (after password accepted) Auto-focus: `[I] TOTP Code` ``` [I] TOTP Code [B] Verify [L] Use Backup Code ``` | Position | Up | Down | Left | Right | Enter | |-----------------------|------------------|------------------|---------|---------|--------------------| | [I] TOTP Code | nothing | [B] Verify | nothing | nothing | Type / Down | | [B] Verify | [I] TOTP Code | [L] Backup Code | nothing | nothing | Submit | | [L] Use Backup Code | [B] Verify | nothing | nothing | nothing | Toggle backup mode | --- ## ONBOARDING `/onboarding/*` No sidebar, no grid. Sequential wizard screens. `[B]` = Button `[I]` = Input field `[C]` = Selectable card `[L]` = Link **Global onboarding rules:** - No sidebar or nav bar on any onboarding screen. - First interactive element auto-focused on each screen (inputs when present, otherwise primary button). - B button (Escape) = go back to previous onboarding step (where applicable). - D-pad Up/Down **always** moves between focusable elements — inputs are never trapping. Up/Down exits a focused input to the adjacent element. - Enter on an input = submit if it's the last field, otherwise move to next field. - Enter activates the focused element. --- ### INTRO `/onboarding/intro` Default focus: `[B] Unlock` ``` [B] Unlock your sovereignty [L] Restore from backup ``` | Position | Up | Down | Left | Right | Enter | |-------------------|-----------------|-----------------|---------|---------|------------------------------| | [B] Unlock | nothing | [L] Restore | nothing | nothing | → /onboarding/path | | [L] Restore | [B] Unlock | nothing | nothing | nothing | Show restore panel | #### Restore Panel `[Y]` (shown after activating Restore link) ``` [I] File picker [I] Passphrase [B] Cancel [B] Restore ``` | Position | Up | Down | Left | Right | Enter | Escape | |-------------------|-----------------|-----------------|------------|------------|--------------------|----------------| | [I] File picker | nothing | [I] Passphrase | nothing | nothing | Open file dialog | Close panel | | [I] Passphrase | [I] File picker | [B] Cancel | nothing | nothing | Type / Down | Close panel | | [B] Cancel | [I] Passphrase | nothing | nothing | [B] Restore| Close panel | Close panel | | [B] Restore | [I] Passphrase | nothing | [B] Cancel | nothing | Submit restore | Close panel | --- ### PATH `/onboarding/path` Default focus: `[C] Fresh Start` ``` [C] Fresh Start [C] Restore (disabled) [C] Connect (disabled) [B] Continue ``` | Position | Up | Down | Left | Right | Enter | |---------------------|-----------------|---------------|-------------------|-------------------|------------------------| | [C] Fresh Start | nothing | [B] Continue | nothing | [C] Restore | Select option | | [C] Restore | nothing | [B] Continue | [C] Fresh Start | [C] Connect | nothing (disabled) | | [C] Connect | nothing | [B] Continue | [C] Restore | nothing | nothing (disabled) | | [B] Continue | [C] Fresh Start | nothing | nothing | nothing | → /login (complete) | --- ### OPTIONS `/onboarding/options` Default focus: `[C] Sovereignty` ``` Row 1: [C] Sovereignty [C] Commerce [C] Projects Row 2: [C] Transmitter [C] Hoster [C] AI [B] Continue ``` | Position | Up | Down | Left | Right | Enter | |---------------------|------------------|------------------|------------------|------------------|--------------------| | [C] Sovereignty | nothing | [C] Transmitter | nothing | [C] Commerce | nothing (display) | | [C] Commerce | nothing | [C] Hoster | [C] Sovereignty | [C] Projects | nothing (display) | | [C] Projects | nothing | [C] AI | [C] Commerce | nothing | nothing (display) | | [C] Transmitter | [C] Sovereignty | [B] Continue | nothing | [C] Hoster | nothing (display) | | [C] Hoster | [C] Commerce | [B] Continue | [C] Transmitter | [C] AI | nothing (display) | | [C] AI | [C] Projects | [B] Continue | [C] Hoster | nothing | nothing (display) | | [B] Continue | [C] Transmitter | nothing | nothing | nothing | → /onboarding/did | --- ### DID `/onboarding/did` **Loading state:** No interactive elements. Auto-advances when generation completes. **After generation:** Default focus: `[B] Continue` ``` [B] Copy DID [B] Copy Nostr (if available) [B] Continue ``` | Position | Up | Down | Left | Right | Enter | |---------------------|------------------|------------------|---------|---------|-----------------------------| | [B] Copy DID | nothing | [B] Copy Nostr | nothing | nothing | Copy to clipboard | | [B] Copy Nostr | [B] Copy DID | [B] Continue | nothing | nothing | Copy to clipboard | | [B] Continue | [B] Copy Nostr | nothing | nothing | nothing | → /onboarding/identity | If no Nostr ID: `[B] Copy DID` → Down → `[B] Continue` directly. --- ### IDENTITY `/onboarding/identity` Auto-focus: `[I] Name` ``` [I] Identity Name [C] Personal [C] Business [C] Anonymous [B] Continue ``` | Position | Up | Down | Left | Right | Enter | |---------------------|------------------|------------------|-----------------|-----------------|-----------------------------| | [I] Name | nothing | [C] Personal | nothing | nothing | Type / Down | | [C] Personal | [I] Name | [B] Continue | nothing | [C] Business | Select purpose | | [C] Business | [I] Name | [B] Continue | [C] Personal | [C] Anonymous | Select purpose | | [C] Anonymous | [I] Name | [B] Continue | [C] Business | nothing | Select purpose | | [B] Continue | [C] Personal | nothing | nothing | nothing | → /onboarding/backup | --- ### BACKUP `/onboarding/backup` Auto-focus: `[I] Passphrase` ``` [I] Passphrase [B] Download Backup [B] Continue (disabled until downloaded) ``` | Position | Up | Down | Left | Right | Enter | |---------------------|------------------|------------------|---------|---------|-----------------------------| | [I] Passphrase | nothing | [B] Download | nothing | nothing | Type / Down | | [B] Download | [I] Passphrase | [B] Continue | nothing | nothing | Create & download backup | | [B] Continue | [B] Download | nothing | nothing | nothing | → /onboarding/verify | `[B] Continue` disabled (skip focus) until backup downloaded. --- ### VERIFY `/onboarding/verify` **Phase 1 — Signing:** Default focus: `[B] Sign Challenge` ``` [B] Sign Challenge ``` | Position | Up | Down | Left | Right | Enter | |----------------------|---------|---------|---------|---------|------------------------| | [B] Sign Challenge | nothing | nothing | nothing | nothing | Sign crypto challenge | **Phase 2 — After verification:** Default focus: `[B] Finish` ``` [B] Finish ``` | Position | Up | Down | Left | Right | Enter | |-------------|---------|---------|---------|---------|------------------------------| | [B] Finish | nothing | nothing | nothing | nothing | → /onboarding/done | --- ### DONE `/onboarding/done` Default focus: `[B] Set Password` ``` [C] Identity [C] Backup [C] Ready [B] Set Password ``` | Position | Up | Down | Left | Right | Enter | |---------------------|--------------|------------------|---------------|---------------|----------------------| | [C] Identity | nothing | [B] Set Password | nothing | [C] Backup | nothing (display) | | [C] Backup | nothing | [B] Set Password | [C] Identity | [C] Ready | nothing (display) | | [C] Ready | nothing | [B] Set Password | [C] Backup | nothing | nothing (display) | | [B] Set Password | [C] Identity | nothing | nothing | nothing | → /login | --- ## Onboarding & Login Rules 1. No sidebar or nav bar — linear wizard flow. 2. First interactive element auto-focused (input fields when present, otherwise primary button). 3. D-pad Up/Down **always** moves between focusable elements — inputs are never trapping. You can always D-pad out of a focused field. 4. Left/Right for horizontal card rows only. 5. Disabled elements are skipped in focus order. 6. B button (Escape) navigates back one onboarding step. 7. Enter on input: submits if last field, otherwise advances to next field. 8. No wrap — edges are dead stops. 9. No dead ends — every screen has a forward action. --- ## Rules 1. Sidebar: Up/Down wrap. Right → first [C]. Left → nothing. 2. Grid: arrows move between [C] spatially. No wrap at edges. 3. Left from leftmost [C] → Sidebar active tab. 4. Up from top-row [C] → [N] nav bar (if page has one), else nothing. 5. Enter on [C]: has link → navigate. No link → drill into [Y]. 6. Inside [Y]: arrows move between inner controls. Escape → back to [C]. 7. Escape from [C] → Sidebar. 8. No dead ends.