Navigation
How screens stack, when back works, when up works
Navigation
How screens are organised in OctoMY™: the three kinds of screen, what the back arrow does, what the up arrow does, and what happens when you try to leave an app with unsaved work.
Why this exists
The app contains dozens of screens — lobbies, settings, pickers, confirmations, full editors. Some you can back out of freely; some collect a single choice and disappear; some are full work surfaces that need a save prompt before you can leave. The model below describes which is which so that "back" and "up" behave predictably everywhere.
The three kinds of screen
Every screen in OctoMY™ is one of three kinds: Root, Page, or Prompt.
| Kind | What it is | Examples |
|---|---|---|
| Root | The "home" screen of an app. You can always get back to it. There's only ever one on the stack at a time. | The Hub main menu, the Agent face, the Remote control surface |
| Page | A screen you reach from a Root or from another Page. Has a back arrow. Stacks on top of whatever's below. | Lobbies, settings, list views, editors, wizards |
| Prompt | A screen that collects a single decision and then disappears. Returns a result to whatever was below it. | Selection pickers, passphrase entries, Yes/No confirmations, success messages |
You can think of it as a deck of cards stacked face-up — only the top one is visible. Pushing a new screen drops it on top. Popping the top screen reveals what was underneath.
What "back" does
| Kind | Back arrow behavior |
|---|---|
| Root | Disabled (no back arrow shown). Backing out of a Root means exiting the app, which goes through a shutdown confirm dialog. |
| Page | Returns to whatever screen was below it on the stack. |
| Prompt | Cancels the decision and pops. Whoever pushed the Prompt is told it was cancelled. |
The back arrow always follows the chronological path — the screen you came from is the screen you go back to.
What "up" does (and how it differs from back)
Some screens declare a canonical parent — the screen that, conceptually, sits one level above them in the app's hierarchy. When such a screen is on top, the navigation header shows an up arrow instead of (or in addition to) the back arrow.
The up arrow jumps to the canonical parent regardless of how you got there. For example:
- You open
HiveSettingsfrom the lanyard's hive chip → up arrow goes toHiveLobby. - You open
HiveSettingsfrom a notification five layers deep → up arrow still goes toHiveLobby.
In short: back = "where I just was". Up = "where this screen belongs".
A Root never has an up arrow (it has no parent). A Page or Prompt may or may not declare one; if it doesn't, only the back arrow is shown.
Apps and the save-prompt convention
Heavy editing surfaces — Construct, Bahn, BanterLab, Paint — are apps. They behave like Pages with two extra rules:
- They aren't allocated until you first open them. When you leave them they're fully torn down and the next visit starts fresh. This keeps memory and GPU resources in check.
- They refuse to close if you have unsaved work. The back arrow brings up a save / discard / cancel prompt rather than silently dropping your changes.
The save prompt also runs when you do something that wipes the stack — for instance, clicking the home chip in the lanyard while you have unsaved work in Construct. The app surfaces its save prompt; you make your choice; navigation continues.
Boot-anchor prompts
Sometimes the app needs to ask you something before there's anywhere else to go — typically at startup. For example, the very first time you launch the app on a fresh device it needs to know whether to create a Sentient or restore one from a backup phrase.
These are boot-anchor prompts: they sit at the bottom of the otherwise-empty stack and you can't back out of them. The only way past is to make the choice. Once you do, the prompt is replaced by whatever screen the app routes you to next.
If you ever see the back arrow disappear on a screen that isn't a Root, you're probably on a boot-anchor prompt.
See also
- Identity Switching — uses the navigation model when you change Sentient or Node.
- Sentient Identity — what a Sentient is.