Files
tty7/docs/window/search-everywhere.mdx
l0ng-ai 399ecdf777 docs(readme): lead with three pillars instead of a feature list (#1046)
Restructure both READMEs around what tty7 is for: shells that outlive the
window, agents that drive other agents, and remote machines that work the
same way because they run the same server. Performance becomes a short
supporting section with concrete numbers; the rest of the feature list
collapses into one paragraph that links to the docs.

Also:
- Correct the persistence claim: shells survive quitting the app, not a
  reboot; after a reboot the layout, the screen tail, and supported agent
  conversations come back.
- Add a past-sessions column to the agent matrix, matching the agents
  agent_history::scan reads.
- Drop the wrapper-script / agent_launch paragraph (already in the
  configuration reference) and the separate full-quality video link.
- docs/window/search-everywhere.mdx: the Sessions tab has listed every
  supported agent, on remote workspaces too, since #977; the page still
  described only Claude Code and Codex on this computer. Also document the
  Cmd/Ctrl-E row actions.
2026-09-30 17:40:14 +08:00

120 lines
6.3 KiB
Plaintext

---
title: "Search Everywhere"
description: "One key for every action, open tab, past agent session and host — each in a tab of its own."
---
<kbd>⌘ P</kbd> (<kbd>Ctrl ⇧ P</kbd> on Linux and Windows) opens Search
Everywhere. Type to filter, <kbd>↑</kbd> <kbd>↓</kbd> to move, <kbd>⏎</kbd> to
run, <kbd>⇥</kbd> / <kbd>⇧ ⇥</kbd> to move between its tabs. Press the key again
or <kbd>Esc</kbd> to close it.
## Tabs
| Tab | What it holds |
|---|---|
| **All** | The best few rows from each tab below, each under the tab's name. The tab holding the best match comes first, so <kbd>⏎</kbd> always runs the best answer anywhere. When a tab has more rows than fit, a *N more in …* row opens that tab with your query still typed. |
| **Actions** | Every action tty7 can perform, whether or not it has a keybinding — the fastest way to reach the ones that deliberately ship unbound, like pane resize and swap. |
| **Terminals** | Every open tab of every workspace, this window's first and most recently used first, then every way to open a new one: the shells this machine has (*Shell: zsh*) and the coding agents on your `PATH` (*Agent: Claude Code*). |
| **Sessions** | Past coding-agent sessions on this machine — the ones that ran in the focused tab's directory first, then the rest, newest first. <kbd>⏎</kbd> resumes one. |
| **Hosts** | Your saved SSH hosts, most used first — and whatever address you type. |
With nothing typed, **All** leads with this window's other tabs, most recent
first, so <kbd>⌘ P</kbd> <kbd>⏎</kbd> takes you back to the tab you were just
in. The actions you run most follow under *Actions*, and the last few agent
sessions that ran in this directory under *Sessions*.
## Actions
With nothing typed, the Actions tab lists what you use most under *Recent*,
then everything else in groups — the groups are the map of the app:
| Group | Examples |
|---|---|
| **Tabs & Panes** | New Tab · New Worktree Tab… · Split Right · Zoom Pane · Focus Pane Left · Resize Pane Up · Swap Pane Next · Reopen Closed Tab · Copy Working Directory · Fork Session |
| **Workspaces** | New Workspace… · Switch Workspace… · Rename Workspace… · Stop Workspace… · Delete Workspace… |
| **View** | Show/Hide Left Sidebar · Show/Hide Right Panel · Show Code Panel · Tab Bar: Move to Top · Right Panel: Info / Files / Search / Changes / GitHub · Change Theme… · Enter Full Screen · Toggle Unified / Side-by-Side Diff |
| **Git** | Commit · Stage All Changes · Unstage All · Discard All · Create Branch… · Sync · Push · Pull · Fetch |
| **Terminal** | Clear Scrollback · Find in Terminal… · Find Next / Previous · Copy · Cut · Paste · Select All |
| **SSH** | Add Connection… · Manage Profiles… · Reconnect · Remote Files · Port Forwarding |
| **Agents** | New Agent Tab · Send Selection · Send Git Diff for Review · Copy Session ID |
| **Application** | Settings… · Keyboard Shortcuts · Check for Updates… · Documentation · Join the Discord · Report an Issue… · Restart Server… |
Entries that do something destructive say so under the name — *Delete
Workspace…* is subtitled "ends its shells and forgets the layout", *Restart
Server…* is "ends every running shell; layout is kept".
Every action is found by its name in any language tty7 ships, so an English
query finds a Chinese or Japanese label.
**Change Theme…** opens the theme list in place: moving through it previews
each theme on the window, <kbd>⏎</kbd> keeps it, <kbd>Esc</kbd> puts the old one
back and returns to where you were.
## Resuming a past session
The **Sessions** tab lists the sessions coding agents keep on this machine,
read straight from each agent's own history: Claude Code, Codex, Gemini, Qwen
Code, Pi, Oh My Pi, Kimi Code, Copilot, Droid, Qoder CLI, CodeBuddy, OpenCode,
and Cursor. Each agent's own location override is honoured (`CODEX_HOME`,
`QWEN_HOME`, `COPILOT_HOME`, and so on).
A session is listed under the name you or the agent gave it, or failing that
what you first asked, with where it ran, its branch and when it was last used.
Subagent sessions, archived ones, and ones that were never asked anything are
left out. Search matches the title, the directory, the branch and the session
id.
<kbd>⏎</kbd> opens a new tab in the directory the session ran in and resumes it
there (`claude --resume <id>`, `codex resume <id>`, …), with the flags
`agent_launch` gives the agent. An agent only finds a session from the directory
it started in, so a session whose directory is gone is not resumed; tty7 says
so instead.
<kbd>⌘ E</kbd> (<kbd>Ctrl E</kbd> elsewhere) opens the row's other actions:
- **Fork Session** — for agents that can fork; starts a new conversation from
the same history
- **Copy Session ID**
- **Remove from List** — hides the row (`hidden_agent_sessions` in
`config.json`); the agent's own history files are not touched
In a remote workspace the tab lists the sessions on that machine, and resume
and fork open their tab there. That needs a `tty7-server` recent enough to
answer; an older one needs an update first.
The list is read in the background when the search opens, so a session started
a moment ago may appear a beat after the rest. Cursor records a chat's
directory only as a hash, so a Cursor chat is listed only once its directory
is open in a tab or known from another agent's session.
## Connecting to a host
Type an SSH address — in the **Hosts** tab, or straight into **All** — and it
offers to connect to it, or to save it as a host:
```
me@devbox
me@devbox:2222
[::1]:22
```
A full command line works too — `ssh -p 2222 -J jump me@devbox` connects with
exactly those options, and `ssh devbox` resolves an alias from
`~/.ssh/config` the way `ssh` would. A bare word on its own is a search, not
an address.
Saved hosts are listed by name; <kbd>⌘ E</kbd> on one opens it for editing
instead of connecting. **SSH: Add Connection…** in the Actions tab takes you to
the Hosts tab. [SSH →](/remote/ssh)
## Sending context to an agent
Two actions hand what is in front of you to the coding agent running in the
pane, as a ready-made prompt:
- **Agent: Send Selection** — the current selection.
- **Agent: Send Git Diff for Review** — the repository's `git diff`.
If no agent is running, tty7 says so rather than typing into your shell.
[Agents →](/agents/overview)