---
title: Quick Launch Modal (part 2)
---

# Quick Launch Modal (part 2)

## What it is

This is part 2 of the [Quick Launch Modal](quick-launch-modal.md) page. That page covers what Quick Launch is, how to open it, how to compose and send from its Session tab, and where its settings live. This half carries the rest of the tab strip: every other tab the modal can hold, the per-repo tabs, and the mobile quick-actions sheet that mirrors the same actions on a phone.

## Where to find it

Everything here is reached from the same floating window as the [main page](quick-launch-modal.md) — the tab strip across its top. Which tabs are pinned, and in what order, is set in Settings → Quick Launch; on a phone the same set appears in the quick-actions sheet, opened from the rocket button in the app's header bar.

## How it behaves

### Use a non-Session tab

Click a non-Session tab (or press **Ctrl+Tab** to cycle forward, **Ctrl+Shift+Tab** to cycle back, or **Ctrl+1**…**Ctrl+9** to jump straight to the 1st–9th tab) to swap the body for that tab's mini-form. Seven tabs are pinned by default (Session, Search, Ask Omniscio, Automation, Alarm, Task, Calendar — the last three hidden until their feature is on); the rest are opt-in, added from **Settings → Quick Launch tabs**:

- **Session** — the default "type a prompt → spawn a Claude session" composer described above. Always present (can't be unpinned) but **freely positioned** — drag it anywhere in the strip. Quick Launch opens on the **first tab in your saved order**, which is Session only if you keep it first.
- **Alarm** — a mini _create-an-alarm_ form. A natural-language line at the top parses phrases like _"every weekday at 7:30 AM, take meds"_ into the structured fields below (Label, Time, Recurrence). Gated by **Settings → Notifications → Alarms**.
- **Task** — quick-add a Task. **Gated by Settings → Tasks: with Tasks off the tab is hidden from the strip entirely.** That gate matters — the tab's save path requires the Tasks feature, so before it was gated the tab appeared on every install, accepted what you typed, and then failed when you hit Save. It now only ever appears when it can actually save. With Tasks on, a **Project picker** lets you choose which project (list) it files into: it opens on your **default project for quick tasks** (Inbox until you change it in **Settings → Quick Launch**), and a pick here is a **one-off** that does NOT change that saved default. The main process validates the chosen project (and falls back to Inbox for a missing / deleted one), so a bad id can never misfile a capture. Its global shortcut (**Alt+Space** by default) follows the same rule — it stays unclaimed until Tasks is on, then starts working by itself. **Save now** with the shared send button (the same icon-only send control the Session and Email tabs use) or by pressing **Enter** (**Ctrl+Enter** too; **Shift+Enter** is a newline). To defer it, **Send later**: the clock button next to send — or **Ctrl/Cmd+Shift+L** — opens the shared **Send Later** picker (time-relevant presets like _Tomorrow morning_ plus a natural-language "type a time" box), and picking a time files the task **snoozed** until then (it hides, then resurfaces with a reminder at that time). Send Later reuses the task's `snoozedUntil` field + the existing notification watcher — no new table or service — and a plain save carries no schedule at all. (Ctrl/Cmd+Shift+L is the SAME "Send later" chord the session composer uses — consistent, and conflict-free because the Task tab is its own window.) The earlier bespoke Remind/Hide-until "Schedule" field was retired in favor of this shared picker. Invariants: `quick-launch-task-schedule-contract.md`.
- **Drip** — schedule a drip-style follow-up message for the active project (same backend as the drip composer).
- **Bookmark** — save a URL + title bookmark (same backend as the global bookmark composer).
- **Calendar** — a mini _create-an-event_ form. Type a natural-language line like _"Doctor tomorrow at 2pm"_ or _"Standup every weekday 9am"_; it parses up to four structured interpretations (title, date/time, recurrence) into a pick-list. Arrow keys move the highlight, **Enter** (or a click on a row) creates the event on your linked **Google Calendar**, and a 4-second confirmation pane offers **Undo** plus an **Open in Google Calendar** link. Gated by **Settings → Google Workspace** (connect Google Calendar).
- **Schedule** _(opt-in)_ — a **read-only** view of your calendar for a quick glance, the viewing companion to the Calendar (create-event) tab. A **Day / Week / Month / Agenda** switcher at the top shows your **live** Google Calendar (the same events the full Calendar panel loads — no separate data). The default **Agenda** view is a scannable timeline: every event shows its **full title** (never clipped), today gets a live **"Now"** line with past events dimmed and the next one marked **"Up next"**, all-day events sit in a slim strip at the top, and two things booked at the same time are **grouped together** — flagged **amber** when it's a real double-booking (two meetings at once) or shown quietly when it's just a task deadline landing inside a meeting. The Day and Week grids now lead each block with the event's **name** instead of the time, so short events no longer get their title cut off. Click an event to see its details and **Open in Google Calendar**. It is deliberately look-only — no creating, dragging, editing, or deleting; making events stays on the **Calendar** tab. Default **unpinned** (add it from **Settings → Quick Launch tabs**); gated by **Settings → Google Workspace** (connect Google Calendar). Because the Quick Launch window is only 720 px wide, the Week/Month grids render compact; on the mobile web view the tab shows the **Agenda** list only (the 7-column grids need desktop width).
- **Search** _(pinned by default since 2026-08-25)_ — single-line input with the same paperclip / paste / drag attachment row as the Session tab (see "Attach files" on the [main page](quick-launch-modal.md)). Submitting spawns a new Claude session in the **Session Search** virtual project; Claude uses the bundled `search-sessions` skill to find matching sessions and reports back. Functionally a one-shot wrapper around the same search-spawn path used by Session Search's "Ask AI" button. Three submit shapes are valid:
  - **Text only** — your typed query is the first message.
  - **Attachments only** (image / PDF / .docx etc., with the text input empty) — `processManager.launch()` requires a non-empty `initialPrompt`, so the tab substitutes a directive prompt instructing the agent to mine the attached file(s) for search terms (error text, code snippets, UI labels, filenames) and then run the normal session search across your history. Pinned in code as `DEFAULT_SEARCH_ATTACHMENT_PROMPT`.
  - **Text + attachments** — both ride along; your typed query is the first message and the attachments inline as base64 content blocks / native document blocks.
- **Ask Omniscio** _(pinned by default since 2026-08-25)_ — a multi-line input with the same paperclip / paste / drag attachment row as the Session tab (see "Attach files" on the [main page](quick-launch-modal.md)). Submitting spawns a new Claude session in the **Ask Omniscio** virtual project. The Ask Omniscio project is preconfigured with the codebase context Claude needs to answer "how does X work in Omniscio?" / "where do I configure Y?" / "why is Z happening?". Gated by **Settings → Ask Omniscio**. Three submit shapes are valid (identical to the Search tab — Ask Omniscio is just a session in a different virtual project):
  - **Text only** — your typed question is the first message.
  - **Attachments only** (a screenshot / PDF / .docx etc., with the text box empty) — the CLI requires a non-empty first message, so the tab substitutes a directive prompt telling the agent to read the attached file(s) — usually a screenshot of part of the app — and explain what it is / how it works / help with what's shown. Pinned in code as `DEFAULT_ASK_AMC_ATTACHMENT_PROMPT`. Great for "here's a screenshot — what is this?".
  - **Text + attachments** — both ride along; your typed question is the first message and the attachments inline as base64 content blocks / native document blocks.
- **KMS Note** _(opt-in)_ — a single textarea for jotting a quick note straight into your **KMS** vault without opening the KMS screen. Type, press **Enter** (Shift+Enter for a newline), and the note saves and the modal closes — the close _is_ the confirmation (the QL window has no toast). The note's **first line becomes its title** plus a timestamp (e.g. _Buy milk 2026-06-08 1430_); it lands in an auto-created **Quick Notes/** folder in your **active vault** (the one KMS is currently pointed at — not whichever vault you registered first), and the full text (first line included) is the body. Two captures in the same minute never clobber — a ` 2`, ` 3`, … suffix is appended. Gated by **Settings → Features → Enable KMS**: with KMS off the tab is hidden from the strip (and shows a _"Turn on KMS…"_ note if you pinned it). Unlike the session-spawning tabs, this one writes directly to the vault via its own `KMS_QUICK_NOTE_CREATE` handler.
- **Find Note** _(opt-in)_ — a fast "jump to any KMS note" switcher (Omniscio's port of the standalone Nothari app's Ctrl+Shift+Space Find tab). Start typing a note's **title** and it fuzzy-matches as you go; an **empty box lists your most-recently-edited notes** for a one-keystroke jump back. **Arrow keys** move the highlight, **Enter** opens the highlighted note — **in the standalone KMS window when you've popped one out, otherwise the main window's KMS panel** (Omniscio foregrounds the target and the note opens — even if the KMS screen wasn't open yet), **Esc** closes the modal. Unlike the other tabs it doesn't create anything — it only navigates, reusing Omniscio's existing open-note path (the `omniscio://note/…` deep-link for the main window, or a direct push to an open pop-out) under the hood. Gated by **Settings → Features → Enable KMS** (hidden from the strip when KMS is off). **It has its own dedicated global hotkey** — default **Ctrl+Shift+Space** — that opens Quick Launch straight to this tab from anywhere on your computer; it's a fixed hotkey (distinct from the per-tab hotkeys below), only claimed when KMS is on, and rebindable/disable-able at **Settings → Keyboard Shortcuts** (the "KMS quick find" OS-level row, alongside the KMS-window hotkey). See [kms.md](kms.md#find-note-quick-switcher).
- **Find Email** _(opt-in)_ — a fast **search-your-email** tab: type a query and Omniscio runs a debounced search (over your **Gmail** by default, or over **Supermail** when it's enabled — see below), listing matching threads inline with **sender, subject, snippet, and date**. **Arrow keys** move the highlight, **Enter** (or a click) opens the highlighted email — the main window comes forward, switches to your **Gmail** view, and the thread opens in Omniscio's built-in email reader; **Esc** closes the modal. Like Find Note it doesn't create anything — it only navigates, reusing the same open-in-the-main-window bridge (a `GMAIL_QUICK_FIND_OPEN` handler foregrounds the main window and emits an `open-gmail-thread` deep-link, which activates the Gmail virtual project and selects the thread — the native email viewer needs both). **When Supermail is enabled** (`supermailEnabled`) the tab searches **Supermail's own backend** (`SUPERMAIL_SEARCH` → the hosted `/search`, the JWT staying in Main), and clicking a result opens an **in-modal preview** — you read the full email **right inside the pop-up** instead of navigating away. The preview **jumps to the message that actually matched** your search and **highlights the query terms**, so a match buried in an older reply is never hidden behind the latest message; the other messages sit collapsed (tap any to expand). A **Back** button returns to the results, and an **Open in Supermail** button opens the actual thread in the Supermail panel. Under the hood the preview fetches the thread via a read-only `SUPERMAIL_GET_THREAD` (each body is reduced to **plain text in Main**, so the pop-up never renders raw email HTML), and **Open in Supermail** reuses the existing `SUPERMAIL_QUICK_FIND_OPEN` deep-link — now forcing the Supermail **Mail** view first, so a thread reliably opens instead of landing on the project's _Sessions_ sub-tab (the old "clicking a result dumps me on the Sessions page" bug). If the fetched thread comes back with **no previewable messages** (a genuinely empty thread, or content the preview can't render), the pop-up shows a clear **"Nothing to preview"** empty state — with **Open in Supermail** still there — instead of a blank pane (the 2026-08-03 blank-preview fix). The mode is resolved once from `SETTINGS_GET` on open; with Supermail off it uses the Gmail reader path just described (no in-modal preview). Unlike Find Note's local recent-notes list, an **empty box (or a query shorter than 2 characters) shows a prompt** ("Type to search your email history.") rather than searching — a search is a network round-trip, so nothing is spent until you've typed a real query. Gated by **Settings → Gmail** (hidden from the strip when Gmail is off, with a _"Turn on Gmail…"_ note if you pinned it); **unpinned by default**. It has **no dedicated global hotkey** — reach it by opening Quick Launch and picking the tab.
- **Automation** _(pinned by default since 2026-08-25)_ — a single textarea for describing an automation in plain words. Type what you want automated (e.g. _"email me a summary of my unread mail every morning at 8"_), press **Enter** (Shift+Enter for a newline), and it spawns a session in the **Automation Helper** virtual project seeded with your description — the same "describe your own" path as the Automation Helper gallery, one keystroke from anywhere. The Helper then interviews you for anything it needs, builds it, tests it, and schedules it — and, as always, **nothing runs until you approve it**. Like the Search / Ask Omniscio tabs it's just a session spawned into a virtual project (via the shared `QUICK_LAUNCH_SUBMIT` path with the `__automation_helper__` sentinel), so there's no bespoke backend. It now carries the same **attachment row** as Ask Omniscio — click the paperclip, paste an image, or drag a file to attach a screenshot / PDF of what you want automated, and it rides along to the Helper (an **attachment-only submit** works too — with the text box empty, a default "look at the attached file(s)" instruction is sent so the CLI's non-empty-first-message rule is met). If you've turned the feature on but never opened the Automation Helper, submitting here **creates its project on the spot** so a first-ever launch still works. Gated by **Settings → Agent Tools → Automation Helper** (hidden from the strip when off, with a _"Turn on Automation Helper…"_ note if you pinned it).
- **Team Chat Message** _(opt-in, in development)_ — send a **Team Chat** message to a **person (DM) OR a channel ("board")** without opening the Team Chat panel. Pick a target from one **searchable list** — channels show first as `#name`, then people as name + email (so two people with the same name stay distinct) — type a message, and press **Ctrl/Cmd+Enter** (or Send). The Quick Launch box closes immediately and a **"Sending to <name>… [Undo]"** toast (or **"Sending to #general…"** for a channel) with a ~6-second countdown appears in the main Omniscio window; if you don't undo it the message sends — a **person** creates-if-absent the DM and sends, a **channel** posts directly; click **Undo** and nothing is sent (no empty DM is left behind — the write only happens when the timer fires). A channel you haven't joined shows a friendly _"open it in Team Chat first"_ rather than posting somewhere you're not in. If the send fails, the toast flips to a humanized error. Both the roster and the channel list load on open with explicit **loading / not-signed-in / "no people or channels" / couldn't-load** states, so an empty list is never a silent dead-end. Because the Quick Launch window can't run the chat backend, the actual send happens in the main window (where Team Chat is already connected). **Per-target hotkeys (like Quick Email):** in **Settings → Team Chat → Saved Targets** you can pin people and channels and give each a **global hotkey** that opens this composer **pre-aimed** at that target from anywhere; a **tab hotkey** (default **Alt+T**) opens the composer with nothing preselected. All per-target hotkeys are gated by a master **"Target Hotkeys"** toggle (off by default). Gated by **Settings → Lab → Team Chat** (hidden from the strip when off, with a _"Turn on Team Chat…"_ note if you pinned it); **unpinned by default**. See `quick-dm-contract.md`.
- **Super Prompts** _(opt-in)_ — search your **Super Prompts** library and launch one as a new session, without opening the full Ctrl+Shift+K picker. Type to filter across a prompt's **title, summary, tags, and description** (the same `promptMatchesSearch` matcher the picker uses — so _solving_ surfaces the whole `problem-solving` cluster); **arrow keys** move the highlight and **Enter** (or a click) launches. A **"Launch into"** dropdown at the bottom picks the target project (defaults to the QL default — your active project if it can host a session, else the Claude project). Prompts carrying a stock opening show a **"Pre-loaded"** badge and open with their instant greeting exactly like the picker. Launch runs through the SHARED session-launch core (`launchSessionInMain`) — so the deferred "Pre-loaded" behavior, the non-Claude deferred→immediate degrade, and provider readiness all come for free — via its own `QUICK_LAUNCH_LAUNCH_SUPER_PROMPT` handler, and the spawn is **deferred fire-and-forget** past the exit animation like `QUICK_LAUNCH_SUBMIT` (the mid-animation-freeze fix). Unlike the other tabs there's no attachment row and no picker gate — it loads the lite prompt list + resolves the target itself, then hands a `promptId` + `projectId` to main. Always available (the bundled library always exists — no feature gate); **unpinned by default** (add it from the **"+"** or **Settings → Quick Launch tabs**). See [use-super-prompts.md](use-super-prompts.md).
- **Command Palette** _(opt-in, desktop-only)_ — a searchable list of Omniscio's main actions, so you can fire any of them straight from Quick Launch. Type to filter by name or synonym ("diagram" finds Flowchart), **Arrow keys** move the highlight, **Enter** (or a click) runs it. The seed set covers **New Session · New Mind Map · New Whiteboard · New Flowchart · New Note · New Bookmark · New Task · New Alarm · New Calendar Event · Message a Teammate · New Email · Open Browser · Open Agent Status Board · Open Archive**, grouped under **Create / Communicate / Go to**. Actions for features you've turned off never appear, so the list only shows what you can use. Because Quick Launch is its own window, picking an action **brings the main Omniscio window forward and performs it there** — a "create X" action opens that surface, while one that maps to another Quick Launch tab (like Message) just switches you to that tab. Under the hood the untrusted QL window sends only a **validated command id** to Main (`QUICK_LAUNCH_RUN_COMMAND`), which is authoritative: it resolves the id against the `app-commands.ts` registry (an unknown id is refused) and either switches the QL tab (`QUICK_LAUNCH_OPEN_TO_TAB`) or foregrounds the main window + emits `DISPATCH_APP_COMMAND` for the main-window dispatcher to run via the app's existing "open this screen" plumbing (`open-mindmap` / `open-whiteboard` / `open-flowchart` / `OPEN_VIEW_EVENT`). **Desktop-only** — it drives main-window surfaces and the run-command channel is blocked from the mobile web bridge, so it's hidden from the mobile quick-actions sheet. It has a **dedicated global hotkey — default Ctrl+Shift+P** — that opens Quick Launch straight to this tab from anywhere (rebindable at **Settings → Quick Launch**; Super Prompts moved off that chord to **Ctrl+Shift+K**). With the **universal command palette** turned on (an in-development Lab feature, off by default) the tab grows from this curated action list into a **comprehensive fuzzy launcher** — the same actions _plus_ every **navigation hub** (Playbooks, Memory Palace, PR Merge Queue, Team Time, AI Writer, …) and every **setting** (a simple toggle/number/text setting can be flipped inline; a complex one deep-links into the full Settings screen), ranked best-match-first with your recently-run commands floated to the top. Always available; **unpinned by default** (add it from the **"+"** or **Settings → Quick Launch tabs**). See `command-palette-contract.md` and `quick-launch-action-registry-contract.md`.
- **Settings** _(opt-in, desktop-only)_ — search your Omniscio settings and change the simple ones **right in the popup** instead of opening the full Settings screen. Type to filter across every setting's name, description, and keywords (the same index the global Settings search uses). A simple setting — a **toggle, dropdown, number, or short text** field — renders its control **inline**, and changing it saves immediately (an instant optimistic update; a failed save rolls back and shows a hint). A setting too complex to edit in a small popup — account connections, saved credentials, SSH keys, keyboard shortcuts — instead shows an **"Open in Settings →"** row that brings the main window forward and scrolls the full Settings screen to that setting, highlighted (reusing the existing `SETTINGS_DEEP_LINK` jump). It reuses the app's own setting controls and the shared settings-search index, so a new setting shows up here automatically. **Desktop-only** for now (the deep-link foregrounds the desktop window, which a paired phone can't see), so it's hidden from the mobile quick-actions sheet. Always available; **unpinned by default**.
- **Add Hotstring** _(opt-in, desktop-only)_ — a fast form to save an **AutoHotkey Manager hotstring** from anywhere. Type a **trigger** (e.g. `btw`) and its **replacement** (e.g. `by the way`), optionally tick **Expand immediately** / **Match case**, and **Enter** (or Save) writes it straight into your AutoHotkey Manager — which compiles it into your `.ahk` file, so AutoHotkey then expands it as you type. The capture UI is **100% Omniscio** (no AutoHotkey window is drawn); AutoHotkey only RUNS the compiled result. `{date}` / `{time}` / `{datetime}` in the replacement expand at typing time. **Fast-capture niceties:** if you have **text selected** — in another app OR inside Omniscio itself — when you press Ctrl+Alt+H, Omniscio grabs it and **pre-fills the trigger** (the "When I type" field) — restoring the old native popup's behavior — so you often only fill in the replacement and hit **Enter**; your clipboard is left exactly as it was, and if nothing's selected (or the front app runs elevated) the field simply starts empty. The **replacement** field is yours to fill — or let **Autocorrect** fill it: click the **Autocorrect** button by the "Replace it with" field (or press **Alt+A**) and Omniscio runs your trigger word through the SAME managed AI corrector the AI Text Correction tab uses (`AI_CORRECT_TEXT`, proofread) and drops the corrected spelling into the replacement. Even better, this is a **one-hotkey flow**: select a misspelled word and press **Ctrl+Alt+H** — Omniscio opens this tab, pre-fills the trigger from your selection, **and auto-runs the correction into the replacement**, so you just press **Enter** to save (a spelling-correction hotstring from a single hotkey). The **Autocorrect** button (or **Alt+A**) is the manual path for a trigger you typed yourself. It's safe: if it can't correct, it leaves the field for you to type, and the trigger (your misspelling) is never changed — so typing it still fires the expansion. A plain open with nothing selected never auto-fires (no surprise AI call). A small **live preview** shows what the hotstring will do (`btw → by the way`), and the **Expand immediately** / **Match case** toggles sit in one compact row. **Enter saves from anywhere in the form** — even while one of those toggles is focused — while **Space** flips the focused toggle, so you can adjust a switch and still press Enter to save without tabbing back to a field. Saving **closes immediately** and the new hotstring goes live through the Manager's normal reload-on-save (on by default). **It ships a dedicated per-tab global hotkey — default Ctrl+Alt+H** — that opens Quick Launch straight to this tab from anywhere (rebindable at **Settings → Quick Launch**, or the strip's right-click menu). Gated by the **AutoHotkey Manager** feature (Windows-only; hidden from the strip when off, with a _"Turn on the AutoHotkey Manager…"_ note if you pinned it); **unpinned by default**. Replaces the old native-AutoHotkey quick-add popup — the capture UI is now this real Omniscio surface.
- **AI Text Correction** _(opt-in, desktop-only)_ — an **Omniscio-native** proofreading panel (nothing touches AutoHotkey). Its global hotkey — **default Ctrl+Alt+G** — opens this tab, which takes the text you had **selected** in your current app — whether that app is another program OR Omniscio itself (a selection inside Omniscio is read straight from the focused window; captured automatically at summon, exactly like the Add Hotstring tab) — or falls back to the text on your **clipboard** when nothing's selected — and **auto-proofreads** it (fixes spelling / grammar / punctuation while keeping your wording), then shows the result in an editable **Corrected** box with a one-click **Copy**. So you can just **select text and press the hotkey** — no copy step needed. Edit either box and press **Proofread** to re-run. The correction runs through Omniscio's own managed AI — the SAME `correctText` engine the AutoHotkey correction uses, via a new `AI_CORRECT_TEXT` channel — so it's always **safe** (on empty / oversized / a soft failure it returns your original text unchanged, never an error), rate-limited, and bounded by the AI daily-spend cap. Unlike the AutoHotkey "AI text correction" (which injects a hotkey into your `.ahk`), this owns everything itself — **no `.ahk` edits, no hotkey conflicts**. Gated by the **AutoHotkey Manager** feature (desktop-only); **unpinned by default**.

Common contract across every non-Session tab:

- **Enter** inside the form submits; **Shift+Enter** inserts a newline in multi-line fields, and **Ctrl+Enter** / **Cmd+Enter** also submit.
- **Esc** or **Ctrl+W** (**Cmd+W** on mac) dismisses the whole Quick Launch window — non-Session tabs do not get their own Esc level. Both keys are caught in the window's `before-input-event` handler, so they work on every tab (including Session); if the Ctrl+P project picker is open, they close that overlay first and leave the modal up.
- **Ctrl+Tab** / **Ctrl+Shift+Tab** cycle through the pinned tabs (skipping disabled ones), and **Ctrl+1** … **Ctrl+9** jump straight to the 1st–9th visible tab (a tab past the 9th stays reachable by cycling). Both fire whenever the modal window is focused — including after you click out of the text box onto empty modal space — not only while the textarea holds focus. Hovering a tab reveals its shortcuts as a tooltip: the **Ctrl+N** position shortcut (first nine tabs), and — when you've assigned one in Settings → Keyboard Shortcuts → System-wide — the tab's **works-anywhere global hotkey** too, e.g. "Ctrl+2 or Ctrl+Alt+J (works anywhere)".
- The **project chip and microphone are hidden** — non-Session tabs don't need either, so the row collapses cleanly.
- Save closes the modal the same way a session submit does; cancel returns you to the Session tab without persisting.
- Opening Quick Launch lands on the **first visible tab in your saved order** (a repo tab too, if you put one first) — not always Session. Non-Session tabs aren't sticky: after you dismiss or submit, the next open resets to that first tab. A per-tab hotkey still opens straight to its target tab.

### Repo tabs (a tab per repo)

A **repo tab** is a tab pinned to one specific repo. Selecting it opens the full Session composer — prompt box, file attachments, voice — but **locked to that repo**: the project chip is omitted (the tab itself already names the repo), so you just type and hit Send to start a session there. Pin a few repos you work in often and they sit one click apart in the strip (or cycle with Ctrl+Tab).

- **Add one** — click the **"+"** on the tab strip, choose **"New session in a repo…"**, then pick a repo from the list. Or add one from **Settings → Quick Launch** using the **Add a repo session tab** dropdown there. Either way only real, spawnable repos are offered (inbox-style virtual projects like Gmail/Drive are excluded since you can't run a session in them), and a repo you've already pinned won't be offered again.
- **What it shows** — the repo's name + its project icon in the strip tab. Inside the composer the project chip is omitted — the tab already names the repo, so the chip would be redundant.
- **Assign a hotkey, remove, or reorder** — **right-click the tab in the strip** for a menu with a **Global hotkey** field (assign a shortcut that opens a new session straight into this repo from anywhere) and a **Remove** option to unpin it on the spot; or drag it in the strip to reorder. You can also manage repo tabs in **Settings → Quick Launch**, where they appear as rows alongside the other tabs (uncheck to remove, drag to reorder, and set a hotkey in the Tab hotkeys list below). Session can be dragged too — it just can't be removed.
- **Self-cleaning** — if you delete a repo, its tab quietly disappears (and the leftover entry is cleaned out of your settings the next time the tab manager loads your project list) — no broken tabs left behind.
- The repo is fixed for that tab: there's **no project chip, and Ctrl+P does nothing** (there's no project to switch to). Use the plain **Session** tab when you want to pick the repo each time.

### On mobile (quick-actions sheet)

Quick Launch's floating window is desktop-only — a phone can't pop up a separate always-on-top window — so on mobile the same actions live in a **quick-actions sheet**. Tap the **🚀 button in the top header bar** (between the Inbox/Projects tabs and the menu) and a sheet slides up from the bottom showing your quick actions as a grid of tiles. (On a small screen or a large text size the "Inbox"/"Projects" tabs shorten to just their icons so the bar always fits.)

- **Same actions as desktop.** The tiles are exactly the tabs you've pinned in **Settings → Quick Launch** (filtered to the ones whose feature is on) — one shared configuration, so pinning/unpinning a tab changes both surfaces at once.
- **Tap a tile to do it.** Alarm, Task, Drip, Bookmark, Calendar, KMS Note, and the rest open their little form right inside the sheet; fill it in, save, and the sheet closes with the same confirmation as desktop. A **back** control returns to the grid.
- **The phone keyboard's Enter/Go key submits.** On the single-line tabs — Search, Bookmark, and Web Clip — the on-screen keyboard's action key saves/searches without reaching for the button; on the find-and-pick tabs (Find Note, Find Email, Super Prompts) it opens the highlighted result. (Multi-line tabs like Ask Omniscio keep Enter as a newline — tap the button to send.)
- **New Session tiles open the phone's own new-session flow.** Neither the **Session** tile nor a pinned **repo** tile embeds the desktop composer (it's too tied to the floating window) — they start a new session directly, the same instant-reveal flow the mobile "New Session" buttons use. The plain **Session** tile starts a session in your **Claude workspace** (the general-purpose `~/Claude` project) — matching what the desktop **Session** action defaults to — rather than in whatever project you're currently viewing; a **repo** tile starts a session in that repo's own project.
- **Attachments are desktop-only for now.** The attachment-capable tabs (Ask Omniscio, Search) run **text-only** in the mobile sheet — you attach files inside a session as usual.

Full behavior + invariants: `mobile-quick-actions-contract.md`.

## For agents

The machinery behind these tabs — the shared action registry, the per-tab component map, the shared composer field every type-and-submit tab renders, and the push allow-list — is in [part 3](quick-launch-modal-part-3.md). The settings key that gates each tab is documented with the tab it hides on the [main page](quick-launch-modal.md).

## Related

The [main page](quick-launch-modal.md) is the Session composer these tabs sit beside, and it documents the tab strip they live in. [part 3](quick-launch-modal-part-3.md) carries how the whole surface is built.
