![]() |
Hierarchical tree (Projects view) Every / in a workspace title creates a virtual folder: github/dsh-plan-plus automatically groups under github, arbitrarily deep; workspaces without a / (like dsh-workspace-plus) stay at the root. Renaming a workspace re-derives the tree instantly — folders are a projection of names, there is no second source of truth. |

![]() |
When the chips run out of room: shrink, scroll, then list them all Chips shrink to a readable floor browser-style; past that the row scrolls (wheel or trackpad) with both edges fading. The ▾ button at its end lists every open tab — including the ones scrolled out of view — with its status dot, project, a check on the active one, a per-row close and the same session menu on right-click; ↑/↓ + Enter to switch, Esc to close. |
![]() |
![]() |
Sections: one place for workspaces and sessions Right-click a workspace or session → Section, then pick an existing section, Ungrouped (Projects) or New section…. Creation files the right-clicked object into the new section; a section heading's own menu can create an empty one. Sections are a single level shared by workspaces and sessions: a separately sectioned session sits directly under its section with a workspace badge. Headings collapse, accept drops, and can be renamed or deleted (with confirmation). |
![]() |
![]() One-click view switching The header button previews the active workspace, tree, list or calendar view. Its menu separates grouping, sorting and archive filters; **Settings → Plugins → Better Workspaces** exposes the same choices (see the Plugin settings page section below). Time view (Global timeline) ONE global timeline across all projects — every visible session joins the same stream, bucketed by today / yesterday / last 7 days / last 30 days / earlier (local calendar days), empty buckets hidden; direction is latest / oldest first. On hover, the relative timestamp swaps for its workspace badge (and the pin button appears), with a Codex-style hover card pinned to the row's right edge and vertically centred on it (full title on the first line, project · git branch · absolute time on the second, a missing segment omitted; it flips to the left when short of room and only falls back below/above in a very narrow window); the plugin owns that bubble, so it withdraws the moment the pointer leaves, the row re-sorts away or the list scrolls. |
![]() |
Settings → Plugins → Better Workspaces The plugin owns a configuration page in Settings (the plugin version sits next to its name), so nothing has to be hunted down in a sidebar menu: Display: five switches — Show session tabs (off restores the shell's native header layout completely), Open sidebar clicks in a new tab (on by default; off restores replace-in-place and makes Shift+click open a new tab), Enable status dots (off hands the sidebar back to the host's native status lights and hides the dots in the tab strip), single-chain collapsing, and the status breathing light. View: grouping (workspace / workspace tree / flat list / time), sorting (manual / recently updated), time direction (latest / oldest first, only in the time view), and archive filter (hide archived / all conversations / archived only). It reads and writes the same preferences as the sidebar's view menu — a change on either side applies immediately and persists in the current browser. |
![]() |
Global Pinned Tray Right-click → Pin / Unpin, or click the pin button on row hover, for any session including ungrouped ones. The global Pinned section stays at the very top: cross-workspace aggregation, most-recent pin first, each row tagged with its workspace name, click opens it directly (switching workspaces); a pinned session is hidden inside its workspace / the ungrouped area (tray-only — unpinning restores it), and a collapsed workspace row keeps a pin-count badge. Pinned rows carry a small brand-colored pin glyph, subtle tint and a left accent bar, stacking cleanly with the current-session highlight. Pure display-layer projection (never alters titles or host order), persists across restarts, auto-unpins hard-deleted sessions, and keeps archived pins out of the tray. When archives are shown, they appear as ordinary rows; unarchiving restores their saved pin. |
![]() |
One 6px status dot for every state Running: the plugin-drawn orange #ff9f45 breathing dot, also covering "{n} subagent(s) running"; waiting for approval / plan review / answer: amber #d29922; completed, unread: green #3fb950. Read sessions draw no dot, and the session on screen never shows the green completion reminder, even the moment it finishes. All three dots share one diameter, so a status change never makes rows jump, and orange never reads as the amber "waiting for you" dot next to it. Sessions with active scheduled tasks show an alarm-clock badge (matching official rows). The current session additionally gets a row highlight that stacks with the pin accent.Can be turned off entirely: switching "Enable status dots" off in the plugin settings page restores the host's native status-light style and hides the dots in the tab strip; switching it back on brings the unified 6px dots back. Status breathing light (toggleable in the plugin settings page): status dots hidden by a collapse bubble outward — workspace/folder rows breathe on their icon in the status color (custom-glow labels breathe along), session-group rows show a breathing dot; the running orange breathes only on the session row itself and never relays, and with the light off it is a static orange dot. |
![]() |
Appearance customization Right-click any row (workspace folder / workspace / session / session group) → Customize: color (9 swatches + native picker + RGB input), glow strength (0–14 slider, text glow only), font weight (regular/medium/semibold/bold), font shadow toggle, an icon grid (71 icons: solid / outline / hidden — three folder icon styles — plus 68 dsh primitives icons; icons apply to workspace & workspace-folder rows only), with a live preview at the bottom. Reset returns to default in one click. |
![]() |
Applied immediately Color, text glow, font weight, shadow and icon apply per row and persist, together with expansion state, via the dsh client store in the current browser. |
![]() |
Session context menu Context menus organize operations into structured sections:
|
![]() |
"Section" is a second-level menu The Section entry opens a submenu: move into an existing section, Follow workspace (drop the independent section), or New section… inline. Sections share the same data as the sidebar and the tree header, and the check mark shows the current membership. |