Pin session commands to the session bar (Snooze, Pause, etc.)
Session-bar pinning promotes the actions you use most out of a session's overflow menu and onto its header toolbar as one-tap icon buttons: Snooze, Pause and Unpause, Send Later, Copy app link, Aside Mode and Archive. A pinned command leaves the menu, and unpinning sends it straight back. Archive is pinned by default.
What it is
Every session has a small toolbar at the top-right of its header — the little row where the ⋯ (more) button, the close ✕, and the running cost figure live. That cost is always shown — from $0.00 onward, for every session and whatever bills it, your own API key, a metered provider, or a flat plan — and on a phone it appears just under the session title rather than in this row, so it's fully visible on every device. Most session actions (Snooze, Pause, Send Later, and so on) are tucked inside that ⋯ menu.
Session-bar pinning lets you promote the actions you use most out of the ⋯ menu and onto that toolbar as one-tap icon buttons — so, for example, Snooze becomes a single click instead of "open the menu, find Snooze, click." A pinned command leaves the ⋯ menu and appears on the bar; unpin it and it goes straight back. Archive is pinned by default, so the Archive/Unarchive button shows on the desktop session header out of the box — you can unpin it (or pin any of the others) whenever you like.
Where to find it
How to pin and unpin
Open Settings → Sessions → "Session bar". You'll see a checklist of the six commands, each with a checkbox. Tick a command to pin it to the bar; untick to send it back to the menu. Changes take effect immediately.
For discoverability there's also a "Customize session bar…" entry at the bottom of every session's ⋯ menu — clicking it jumps straight to that Settings checklist.
How it behaves
Which commands can be pinned
Six everyday, one-tap commands:
- Snooze — hide the session until later (only offered when it isn't already snoozed).
- Pause / Unpause — one button that shows Pause while the session is running and Unpause while it's paused.
- Send Later — schedule your typed reply to send later.
- Copy app link — copy an in-app deep link that reopens the session inside Omniscio (for a public, browser-openable link, use Publish & copy web link in the session's right-click menu).
- Aside Mode — toggle side-question mode (the button lights up when it's on).
- Archive / Unarchive — one button that shows Archive for any non-archived session and Unarchive for an archived one. It's pinned by default, so it shows on the desktop bar out of the box.
Pause/Unpause and Archive/Unarchive each count as one pinnable item that changes its label and icon with the session's state. A pinned command only appears on the bar when it actually applies right now — e.g. Snooze won't show on a session that's already snoozed; Pause isn't offered on an archived session. When it doesn't apply, it simply stays available in the ⋯ menu.
Where it shows (and where it doesn't)
- Desktop: pinned commands render as icon buttons on the session header bar, just left of the ⋯ button. Each has a tooltip (and its keyboard shortcut where it has one).
- Phone / mobile: the pinned buttons are not shown on the mobile header (it's too narrow for full-size touch targets) — every command stays in the ⋯ menu there. The Settings checklist still works on mobile; it just governs the desktop bar for now.
A command is only removed from the ⋯ menu when it's actually showing on the bar, so nothing ever becomes unreachable: on a phone, or when a command doesn't apply to the current state, it's still right there in the menu.
For agents
Under the hood (for agents with repo access)
- Registry (single source of truth):
src/renderer/src/features/sessions/session-bar-commands.tsx—SESSION_BAR_COMMANDSdefines each command's icon/label/availability/run viaresolve(ctx);resolveShownBarCommands(ctx, pinnedIds, { isMobile })computes what the bar shows (pinned ∩ available ∩ desktop);useSessionCommandHandlersholds the shared pause/unpause/copy-link handlers (with the undo-toast registration) so the bar and menu never diverge;togglePinnedCommandIdis the pure pin/unpin used by the checklist. - Setting:
pinnedSessionCommandIds: string[](flatAppSettingsfield, default['archive']; mirrorspinnedToolbarItems) — wired throughapp-settings.ts/update-settings.ts/default-settings.ts, searchable viaSessionsSettings-search.ts. Existing users are backfilled to the new default by the one-timesession-archive-pin-migration.ts(flagsessionArchivePinMigrationCompleted, inINTERNAL_ONLY_SETTING_KEYS). - Bar render:
SessionPanelHeader.tsx(maps the resolved commands toIconButtons just before<SessionOverflowMenu>). - Menu:
SessionOverflowMenu.tsxhides any command in the header-computedshownBarCommandIdsset (never merely "pinned", so it stays reachable) and adds the "Customize session bar…" entry (navigateToSettingsProject({ section: 'sessions' }), cli-parity-exempt navigation). - Settings UI: the "Session bar" card in
src/renderer/src/features/settings/sections/session/SessionSettings.tsx. - Contract with test-locked invariants:
.claude/memory/contracts/session-bar-commands-contract.md.
Related
- session-menu-customization.md — the per-session overflow menu these pinned commands are promoted out of.
- session-section-actions.md — the section-level actions menu beside the session bar.
- session-search.md — finding the session whose bar you want to configure.
Last verified 2026-09-27