mirror of
https://github.com/l0ng-ai/tty7.git
synced 2026-09-21 16:02:20 +00:00
`sidebar_grouping` gains a third, opt-in mode, `repo-or-directory`: group by repository home as before, and when the repo probe has landed and answered "not a repo", group under the cwd itself instead of filing every such tab under Scratch. A probe that has not run yet resolves to no decision, so a tab keeps the group it already has rather than bouncing through Scratch mid-probe. The decision lives in one `resolved_group` free function shared by the per-frame key derivation and spawn-time seeding. The default (`repo`) and flat modes behave exactly as before, and an unknown value in an existing config still degrades to `repo`. Knock-on: `machine_mirror::subject_path_of` names a window after its most common group, so in the new mode a window of plain shells takes its name from the most common directory rather than from the first pane's cwd. Closes #620.
83 lines
3.5 KiB
Plaintext
83 lines
3.5 KiB
Plaintext
---
|
||
title: "The sidebar"
|
||
description: "Tabs grouped by repository, with branch, diff counts, and agent status on every row."
|
||
---
|
||
|
||
The left sidebar is tty7's tab bar, and it is the default because a vertical row
|
||
has room for things a horizontal chip does not: the repository a tab belongs to,
|
||
the branch it is on, how much has changed there, and what a coding agent in it
|
||
is doing.
|
||
|
||
<kbd>⌘ B</kbd> shows and hides it. Drag its right edge to resize.
|
||
|
||
<Frame caption="Placeholder — screenshot: the sidebar with two repo groups, agent avatars and status dots, branch and +N −M counts">
|
||
<img src="/images/placeholder.svg" alt="The tty7 tab sidebar" />
|
||
</Frame>
|
||
|
||
## Grouped by repository
|
||
|
||
Rows sit under a header per git repository, with everything else collected in a
|
||
trailing **Scratch** section. The grouping follows the tab's working directory,
|
||
not its history — switching branches or `cd`-ing around inside a repository
|
||
never moves a row out from under its header.
|
||
|
||
**Settings → Window & Tabs → Sidebar grouping** switches between *By repo* (the
|
||
default), *By repo or folder*, and *Flat*. The default collects every non-repo
|
||
tab in Scratch; *By repo or folder* groups those tabs under their working
|
||
directory instead — for agents running in plain folders — leaving Scratch to
|
||
tabs whose shell has not reported a directory yet.
|
||
|
||
## What a row tells you
|
||
|
||
<CardGroup cols={2}>
|
||
<Card title="Who is running there" icon="robot">
|
||
A brand avatar when a coding agent is in the tab, plus a status dot —
|
||
blue for working, amber for needs-your-input, green for done.
|
||
</Card>
|
||
<Card title="Where it is" icon="code-branch">
|
||
The pane's git branch, refreshed on `cd` and whenever a command finishes.
|
||
</Card>
|
||
<Card title="What changed" icon="plus-minus">
|
||
The working-tree diff as `+N −M`. Click the counts to open the
|
||
[diff overlay](/git/diffs).
|
||
</Card>
|
||
<Card title="Whether you have looked" icon="circle-dot">
|
||
An unread marker on tabs where a coding agent finished its turn while you
|
||
were elsewhere. Agent tabs also carry *Mark as Unread* in the right-click
|
||
menu, once there is a finished turn to mark.
|
||
</Card>
|
||
</CardGroup>
|
||
|
||
If you would rather the counts not be clickable, turn off **Settings → Window &
|
||
Tabs → Open diff preview from sidebar counts**. The branch and the numbers stay;
|
||
they simply stop opening the overlay.
|
||
|
||
## Rearranging
|
||
|
||
Drag a row to reorder it within its group, or drag a whole group header to move
|
||
the group. A row cannot be dragged into a different group: a tab's group comes
|
||
from its working directory, so `cd` is what moves it.
|
||
|
||
## Naming
|
||
|
||
Almost no tab has a name of its own, so the sidebar falls back:
|
||
|
||
1. a name you set (right-click → **Rename Tab…**)
|
||
2. the title the shell is reporting — the running command, usually
|
||
3. **Shell 3**, numbered by position, when there is no title at all
|
||
|
||
`tty7 tab ls` answers the same question with more evidence, because a script has
|
||
no screen to look at. Its `label` falls back through the name, then the coding
|
||
agent running in the tab ("Claude Code"), then the last segment of the working
|
||
directory, then the foreground process — while `name` stays literal, so a script
|
||
can tell a real name from a stand-in.
|
||
|
||
## The switcher
|
||
|
||
<kbd>⌘ ⇧ O</kbd> opens the workspace switcher: every workspace on every machine
|
||
you are connected to on the left, that workspace's tabs on the right. Type to
|
||
filter both, <kbd>⇥</kbd> to cross into the tab column, <kbd>⏎</kbd> to open.
|
||
|
||
From here you can also rename a workspace, open one in a new window, stop one,
|
||
or connect to a machine you have a profile for.
|