Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions app/src/components/box-processes.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -142,8 +142,7 @@ function ProcessesBody({ box, data, error, reload }: { box: string; data?: BoxPr
const sessions = (data.sessions ?? []).slice(0, 5);
return (
<>
<Section title="Browsers">
{data.browsers.length === 0 && <p className="px-4 py-3 text-muted-foreground text-xs">No browsers running on {box}.</p>}
<Section title="Browsers" empty={data.browsers.length === 0 ? `No browsers running on ${box}.` : undefined}>
{data.browsers.map((b) => (
<BrowserRow key={b.id} box={box} b={b} onStopped={reload} />
))}
Expand All @@ -162,11 +161,12 @@ function ProcessesBody({ box, data, error, reload }: { box: string; data?: BoxPr
);
}

function Section({ title, children }: { title: string; children: React.ReactNode }) {
// empty says so in place of the list, which may hold only its rows.
function Section({ title, empty, children }: { title: string; empty?: string; children: React.ReactNode }) {
return (
<div>
<div className="sticky top-0 z-1 border-b bg-popover px-4 py-1 font-medium text-[11px] text-muted-foreground">{title}</div>
<ul className="divide-y">{children}</ul>
{empty ? <p className="px-4 py-3 text-muted-foreground text-xs">{empty}</p> : <ul className="divide-y">{children}</ul>}
</div>
);
}
Expand Down
15 changes: 7 additions & 8 deletions docs/changelog.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,13 @@ upgrades with `berth upgrade BOX`, or by running the
[install command](/getting-started/add-a-box#with-the-install-command)
again.


## Unreleased
- **Settings › Boxes reads correctly to a screen reader.** A box with no
browsers running put its "No browsers running" note inside the browsers
list, so assistive tech announced an empty list with a stray line in it.
The note now stands on its own.

## v0.3.17

- **Agents sharing a worktree each get a browser tab of their own.** When
Expand All @@ -32,13 +39,6 @@ again.
chat, commands and file changes to approve come to it as Allow / Always
allow / Deny (or, with Bypass, run without asking), its questions are
answered there, and it can be stopped and resumed. Needs the box upgraded.

- **Labs: a structured Claude agent's conversation can be resumed.** When
one ends, its pane offers *Resume the conversation* rather than a fresh
start, and once its session is closed a worktree's menu lists its
conversations under *Resume a conversation*: each carries on where it left
off, earlier turns and permission mode included. Needs the box upgraded.

- **Labs: a structured Claude agent opens in Claude Code's own terminal and
comes back.** The Terminal switch on a structured agent's pane stops it and
opens the same conversation in Claude Code's screen, for `/login`,
Expand All @@ -55,7 +55,6 @@ again.
as Allow / Always allow / Deny, or with *Permissions: Bypass* (the
default) the box allows them for you; questions and plans always wait for
you. They open as conversations. Needs the box upgraded.

- **Doctor no longer says berthd runs "not as a service" when it does.**
`berthd install` puts your login shell's PATH in the service, and doctor
compared the service with one that had no PATH, so on a Mac it always
Expand Down