You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(orchestrator): make the dock's start-up state configurable
The dock always opened in card density with "all worktrees" off and
"show empty" on, and never opened by itself. Those defaults were module
constants only a source-reader could find, and the in-dock controls only
remembered a change for the current session.
Declare four fields through the plugin config API, so they render in the
Settings UI under "Plugin: orchestrator" and layer/persist like any other
setting:
autoOpenDock (false) open the dock on `ready`, unfocused
defaultView ("card") density the dock opens at
showAllWorktrees (false) initial "all worktrees" checkbox state
showEmptyWorkspaces (true) initial "show empty" checkbox state
Plugin config rather than core config: these mean nothing without the
plugin loaded, and the plugin API already supplies schema validation, the
User/Project/Session merge, and the rendered widgets.
Each is only where the dock *starts*. The "view" button and the two
Filters checkboxes still win for the rest of the session — the session
state they write is now `null` until touched, and the settings fill in
underneath. Settings are re-read on every dock open, so an edit lands on
the next toggle without a plugin reload or restart.
`showDockForPending` becomes `showDockUnfocused`: the auto-open path
wants exactly its behaviour (mount the dock, leave the keyboard with the
editor), and the name no longer fits only the placeholder case.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CstcifC5JjgznkUK8L8dm2
Copy file name to clipboardExpand all lines: CHANGELOG.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -18,6 +18,7 @@ Keyboard and mouse input is now parsed by our own `fresh-input-parser` crate ins
18
18
***Orchestrator: agents & workspaces**
19
19
***`Run Agent…` command** launches a terminal or a coding agent (`claude`, `codex`, `opencode`, `aider`) in your current workspace or a new one, without the full New Workspace dialog.
20
20
***Non-blocking workspace creation** - creating a workspace no longer freezes the editor; choose **Create & Visit** or **Create in Background** and keep working while it comes up.
21
+
***The dock's start-up state is now configurable** - Settings → **Plugin: orchestrator** has four new options: open the dock automatically on startup (off by default, and it opens unfocused so typing still goes to the editor), the layout it opens with (**card** or **compact**), and the starting state of the **all worktrees** and **show empty** checkboxes. They're defaults, not locks: the dock's own view button and checkboxes still win for the rest of the session, and an edit applies the next time you open the dock — no restart.
21
22
***Restart an exited terminal in place** - when a terminal's process quits, the status bar offers a clickable `⟳ Restart terminal` (or `⟳ Resume claude`, named after whatever was running, with the exit code when it's non-zero). Click it, run **Restart Terminal Process** from the command palette, or use **View → Terminal → Restart Terminal Process**, and the process comes back in the *same* buffer below the existing scrollback — no new terminal, no lost place. A coding agent with a resume spec rejoins its conversation rather than starting over, exactly as it does when you reopen the editor. Works for plain shells and commands too; a *running* terminal is never restarted. The offer survives quitting the editor — the pane comes back with its transcript and the indicator, deliberately still stopped rather than silently re-running.
22
23
* A terminal's exit is **no longer written into the output** as a `[Terminal process exited]` line, which cost a row and scrolled the top of the final screen out of view — often the first, most important line of an agent's last answer. The tab reads `claude (exited)` instead, and the dead terminal is left exactly on its last frame.
23
24
***Terminal tab names now survive an editor restart** — a restored agent tab stays named `claude` instead of falling back to `bash` / `*Terminal 1*`.
// Dock settings (Settings → Plugin: orchestrator)
875
+
//
876
+
// The dock's start-up defaults are *plugin* config, not core editor
877
+
// config: they only mean anything while this plugin is loaded, and the
878
+
// plugin-config API already gives us schema validation, the layered
879
+
// User/Project/Session merge, and a rendered Settings sub-category for
880
+
// free. Declaring them here is what makes them discoverable — before
881
+
// this, the dock's defaults were module constants only a source-reader
882
+
// could find, and the checkbox/density state was session-only.
883
+
//
884
+
// Each field is the *default* the dock opens with. The in-dock controls
885
+
// (the "view" button, the two Filters checkboxes) still win for the rest
886
+
// of the session — they set the `*Override` / `last*` values above —
887
+
// they just no longer decide where the dock starts.
888
+
editor.defineConfigBoolean("autoOpenDock",{
889
+
default: false,
890
+
description:
891
+
"Open the workspace dock automatically when Fresh starts. The dock opens unfocused, so typing still goes to the editor.",
892
+
});
893
+
editor.defineConfigEnum("defaultView",{
894
+
values: ["card","compact"]asconst,
895
+
default: "card",
896
+
description:
897
+
"Dock layout the panel opens with: 'card' (multi-line pill per workspace) or 'compact' (one line per workspace). The dock's 'view' button flips it for the current session.",
898
+
});
899
+
editor.defineConfigBoolean("showAllWorktrees",{
900
+
default: false,
901
+
description:
902
+
"Start the dock (and the Open picker) with 'all worktrees' checked, listing on-disk worktrees that have no open workspace.",
0 commit comments