archy/neode-ui/docs/GAMEPAD-NAV-MAP.md
Dorian 11f7434866 fix: gamepad nav dead ends on Apps page, orange glass active sidebar style
- Nav-tab-active now uses orange glass (bg, border, glow, gradient)
- Sidebar focus-visible uses matching orange tint
- Enter on containers skips uninstall button, finds primary action
- Down/Right from grid edges falls back to all focusable elements
- Global fallback for standalone buttons in empty/error states
- Full gamepad nav map for all onboarding screens + login modes

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 00:04:58 +01:00

21 KiB

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
[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.