mirror of
https://github.com/l0ng-ai/tty7.git
synced 2026-10-04 00:02:04 +00:00
* feat(search): replace the command palette with tabbed Search Everywhere The palette was one flat list that every new kind of row had to be squeezed into: tabs and SSH hosts rode along as "Switch to Tab: …" and "SSH: …" commands, and the only way to narrow to one kind was a magic seed word. Search Everywhere splits it into sources behind one trait — All, Actions, Terminals, Hosts — each with its own empty-query layout and ranking. The All tab shows each source's top rows, ordered by best match, with a row that opens the full tab. Tab / Shift-Tab walk the tabs and keep the query. - Terminals lists every open tab of every workspace (reusing the switcher's tab rows) and jumps to it wherever it lives, plus the shells and agents. - Hosts replaces the separate "Add Connection" input: a typed address or full `ssh …` line offers to connect. - Fixes Return doing nothing after a search that found nothing, or when the search opens pre-filtered: gpui-component re-picks the row from a stale frame; the delegate now re-arms the first row. - Fixes `ssh -p 2222 me@box` being offered as a quick-connect address with user `ssh -p 2222 me`. The keymap action stays `TogglePalette` so custom bindings keep working. * feat(search): a Sessions tab to resume past agent sessions Search Everywhere gains a Sessions tab listing the Claude Code and Codex sessions on this computer, read from ~/.claude/projects and ~/.codex/sessions ($CODEX_HOME). Sessions that ran in the focused tab's directory lead; the All tab offers the last three of them before anything is typed. Return opens a new tab in the session's directory and runs the agent's resume command with its configured launch flags. - Only each transcript's head and tail are read, off the window thread, and cached by path, size and mtime: ~170ms cold for 50 sessions, under 1ms warm. The search opens on the cached list and fills in. - Titles: /rename name, then the agent's own title (ai-title, Codex's session_index.jsonl), then the first thing typed, skipping harness injections. Codex rollouts it ran for itself (subagent/internal) and sessions never asked anything are left out. - A session whose directory is gone is refused with a notice rather than resumed where the agent cannot find it.
104 lines
4.5 KiB
Plaintext
104 lines
4.5 KiB
Plaintext
---
|
||
title: "The side panel"
|
||
description: "Info, Source Control, and Files — plus the built-in editor."
|
||
---
|
||
|
||
<kbd>⌘ J</kbd> opens a panel on the right of the window with three tabs. It is
|
||
hidden by default; whichever tab you leave it on is where it opens next time.
|
||
|
||
The three icons at the top switch tabs, and clicking the lit one puts the panel
|
||
away again.
|
||
|
||
<Frame caption="The Info tab beside a terminal: session, processes, listening ports">
|
||
<img src="/images/side-panel.webp" alt="The tty7 side panel" />
|
||
</Frame>
|
||
|
||
## Info
|
||
|
||
Everything tty7 knows about the focused pane, in one column:
|
||
|
||
| Section | What it shows |
|
||
|---|---|
|
||
| **Session** | working directory, shell, SSH connection, git branch, `+N −M` changes, and the coding agent with its status (idle / working / waiting / done) |
|
||
| **Processes** | the process tree inside the pane, with the foreground process marked |
|
||
| **Ports** | every port those processes are listening on |
|
||
|
||
Hovering a row shows what it can do at the right-hand end of it: **Copy** on the
|
||
working directory, the SSH host and the branch, and **Reveal in Finder** / **Open
|
||
Folder** alongside it on a working directory this machine can see. The `+N −M`
|
||
counts open the [diff overlay](/git/diffs), the same click the sidebar's counts
|
||
answer to — and the same **Settings → Window & Tabs → Open diff preview from
|
||
sidebar counts** turns both of them back into plain text.
|
||
|
||
The ports section is the quickest answer to "what is this pane serving, and
|
||
where" — the same data `tty7 procs` prints. A port row copies `localhost:PORT`,
|
||
and on a local pane opens it in your browser.
|
||
|
||
## Source Control
|
||
|
||
The git panel for the focused pane's repository, in four groups — **Merge
|
||
Changes**, **Staged Changes**, **Changes**, **Untracked**. Write a message,
|
||
commit, and push without leaving the window.
|
||
|
||
[Source control →](/git/source-control)
|
||
|
||
## Files
|
||
|
||
A file tree rooted at the pane's working directory, with git status decorations
|
||
on every row and a search box at the top. The search box carries a clear button
|
||
while there is something in it.
|
||
|
||
- **Click a file** to open it in the built-in editor.
|
||
- **Drag a file out** to Finder or Explorer to copy it there.
|
||
- **Drag files in** from the desktop to copy them into the folder under the
|
||
cursor. A folder row takes them itself, a file row stands in for the folder
|
||
holding it, and the empty space below the tree means the top of it. Folders
|
||
come in whole, the executable bit survives, and a name that is already taken
|
||
is asked about rather than replaced.
|
||
|
||
Both directions work over a [remote workspace](/remote/workspaces) too, reading
|
||
on one machine and writing on the other, up to the size one control frame can
|
||
carry — past that the panel tells you to use [SFTP](/remote/sftp).
|
||
|
||
## The editor
|
||
|
||
<kbd>⌘ ⇧ E</kbd> toggles the code panel; clicking a file in the Files tab opens
|
||
it there. It is a real editor — syntax highlighting, line and column readout,
|
||
wrap toggle, and a Markdown preview — meant for the edit you would otherwise
|
||
have opened `vim` for.
|
||
|
||
| | |
|
||
|---|---|
|
||
| <kbd>⌘ S</kbd> | Save |
|
||
| <kbd>Esc</kbd> | Back to the terminal |
|
||
|
||
Files are watched on disk: a change underneath you is picked up, and closing
|
||
with unsaved edits asks before discarding them. Files over 4 MB and anything
|
||
that looks binary are refused with a note rather than opened badly.
|
||
|
||
### Where it opens
|
||
|
||
The editor docks beside the terminal, taking half the space between the sidebar
|
||
and the right panel. The terminal keeps running, stays visible, and stays
|
||
typeable — click it, read what your agent said, click back. Diffs open in the
|
||
same column.
|
||
|
||
Drag the divider for any width between a fifth and four fifths of that space —
|
||
the range `document_ratio` keeps — or double-click it to cycle a third, a half
|
||
and two thirds. **Document: Third / Half / Two-Thirds Width** in Search
|
||
Everywhere do the same. On a narrow window the terminal's own floor stops the
|
||
divider sooner.
|
||
|
||
Right-click the document's header for **Fill window**, which is the old
|
||
full-workspace overlay, unchanged. **Document: Fill Window** and **Document:
|
||
Dock Beside Terminal** in Search Everywhere are the same switch.
|
||
|
||
Fill or dock is **per tab**: read a long file over the whole window in one tab
|
||
while an agent keeps half of another, and neither moves the other. A fresh tab
|
||
starts from `document_layout` in `config.json`. The width is shared, and
|
||
persists as `document_ratio`.
|
||
|
||
A window too narrow to give both the terminal and the document a readable width
|
||
fills for that file only — widen it and the column comes back, without your
|
||
setting having changed.
|