---
title: "The side panel"
description: "Info, Files, Search, Source Control and GitHub — plus the built-in editor."
---
⌘ J opens a panel on the right of the window. It is hidden by
default; whichever tab you leave it on is where it opens next time.
The icons at the top switch tabs — hover one for its name — and clicking the
lit one puts the panel away again.
## 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.
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.
## 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).
## Search
Find in files across the project the Files tab shows: the repository root of
each pane in the tab, or its working directory outside a repository. Opening the
tab — from its icon, **Right Panel: Search** in Search Everywhere, or the
`ShowRightPanelSearch` action — puts the cursor in the search field.
Results arrive as you type, grouped by file with a count per file; click a
file's row to fold it away. Each hit is its line with the matches highlighted,
and **clicking one opens the file in the built-in editor with the cursor on that
line and column**. Enter in the field searches again, for when the
files changed underneath you.
The three toggles at the end of the field:
| | |
|---|---|
| **Aa** | Match case — off by default, so `needle` finds `Needle` |
| **ab** | Whole word — `foo` no longer finds `foobar` or `foo_bar` |
| **.\*** | Regular expression, in Rust [`regex`](https://docs.rs/regex) syntax. A pattern that does not parse says why in red instead of searching |
What is searched is what the tree shows: a folder's `.gitignore` applies whether
or not it is in a repository, and dot-files and dot-directories are skipped.
Binary files and files over 1 MB are stepped past. A search stops at 2,000
matching lines, 100 per file, 20,000 files or ten seconds, whichever comes
first, and says so under the results — narrow the query to see the rest.
In a [remote workspace](/remote/workspaces) the search runs on the remote
machine and only the hits cross the network. A remote `tty7-server` older than
this feature cannot search; the tab says so and asks you to update the server
rather than showing an empty result. An SSH pane's files are browsed over
[SFTP](/remote/sftp), which cannot search them — open the host as a remote
workspace for that.
## 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)
## GitHub
Issues and pull requests for the repository the focused pane is in, read-only.
The tab reads the repository's remotes and binds to the one on `github.com`; in a
fork, where `origin` is yours and `upstream` is the project, it picks
`upstream`, and the name at the top is a menu of every GitHub remote when there
is more than one. GitHub Enterprise hosts are not supported.
- **Issues | Pull Requests** and **Open | Closed** switch the list, newest
activity first, 50 at a time with **Load more** underneath.
- Each row carries a state glyph whose *shape* says open, closed, not planned,
merged or draft; the number, author and last update; and the labels.
**Click a label** to show only that label, and the × beside it to clear it.
- **Click a row** for the detail: title, state, author, labels, the description
and the conversation as Markdown. A pull request adds its branches, size and
changed files — click a file to open its patch in the
[diff overlay](/git/diffs).
- The ↗ button opens the repository, or the issue, on github.com; ↻ refreshes.
Lists are kept per repository, so switching tabs or panes does not fetch them
again; anything older than two minutes is refreshed in the background while
it stays on screen.
### Signing in
There is nothing to sign in to in tty7. It reuses the GitHub CLI's login: the
token comes from `GH_TOKEN`, then `GITHUB_TOKEN`, then `gh auth token`. `gh` is
looked for on your `PATH` and in the usual Homebrew and `/usr/local/bin`
locations, so it is found even when tty7 was opened from Finder.
Without a token, public repositories still work, at GitHub's unauthenticated
limit of 60 requests an hour. A private repository, or a spent limit, says so
in the panel and suggests running `gh auth login`; press ↻ afterwards and the
new login is picked up without a restart.
The Info tab gains a **GitHub** row for a repository with a GitHub remote. It
opens the branch you are on, on the remote it tracks — or the repository's page
for a branch you have not pushed.
Markdown from GitHub is written by strangers, so it is rendered with two
changes: only images GitHub hosts itself — the screenshots pasted into an issue
— are loaded, and any other image becomes a link you can open in the browser;
and links that would open anything other than a web page or an e-mail are
disabled. See [what leaves your machine](/reference/privacy#what-leaves-your-machine).
## The editor
⌘ ⇧ E 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.
| | |
|---|---|
| ⌘ S | Save |
| Esc | 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.