Vertical Right-Dock Tabs — Delivery Notes
Delivery summary for replacing ADR-0008 (tree-view↔tab sync) with a simpler, browser-native vertical tab-list panel in the right dock that mirrors the main (center) view’s open tabs. For the decision record, read ADR-0012; this note says what changed and where.
Status
Implemented. Two parts: a full removal of ADR-0008, and a new opt-in panel.
| Piece | State |
|---|---|
Remove tree-view sync + .url reverse-map + toggle (tranquil-config) | ✅ done |
Remove center-cycle commands (tranquil-automations) | ✅ done |
Revert ctrl-tab → pane:show-next-item in the 3 client keymaps | ✅ done |
Remove ⌥⌘W close-and-trash, reopen-restore, command + keymaps (tranquil-browser) | ✅ done |
Remove browser-tab drop-to-.url path (tranquil-drag-drop) | ✅ done |
VerticalTabsView right-dock panel + config/command wiring (tranquil-automations) | ✅ built |
Row icons: favicon (browser) + tree-view file octicon (atom.file-icons service) | ✅ built |
Labels: live page <title> + per-URI cache; title/favIcon persisted on the browser model | ✅ built |
| Draggable to any dock/center; toggle always reveals the pane | ✅ built |
Default the Settings pane to the Tranquil tab + pin it to the top (tranquil-config) | ✅ built |
Panel styling via ui-variables (styles/tranquil-automations.less) | ✅ built |
Note. A first pass styled the right dock’s own native tab bar vertically (a config-toggled body class + CSS). That was the wrong reading — it makes the dock’s tabs vertical, not a navigator for the center. It was reverted and replaced with the mirror-view panel below.
Not yet verified in-app. All of this is compile-/parse-checked only; a live GUI pass is pending (the dev launcher couldn’t be driven this session — see the background app launch blocker).
Why this shape
ADR-0008 spread one idea — “the tree acts like a tab list” — across five packages and leaned on tree-view internals. The real want is the browser one: see the main view’s open tabs in a vertical list down the side, content staying center. So the panel is a navigator, not a second editor.
It’s a plain workspace item with getDefaultLocation() === 'right', so it drops into the dock and
the reload/restore machinery for free — no third-party (tabs) code touched.
What was removed (ADR-0008)
tranquil-config—.urlreverse-map (buildUrlIndex/resolveUrlFile),patchTreeViewKeepSelection, theautoReveal/focusOnRevealdefaults, thetranquil-config:toggle-tree-view-synccommand, andmenus/tranquil-config.json. Kept the unrelatedpatchTreeViewNoHorizontalScroll.tranquil-automations— thecycle-{next,previous}-center-tabcommands.tranquil-client— revertedctrl-tab/ctrl-shift-tabtopane:show-next-item/pane:show-previous-item(ADR-0006) inkeymaps/{darwin,linux,win32}.cson.tranquil-browser—_trashedUrlFiles,closeTabAndTrashUrl, the reopen-restoreonDidAddPaneItemobserver, theclose-tab-and-delete-urlcommand, the ⌥⌘WkeyHandlerbranch, and the twoalt-cmd-w/ctrl-alt-wkeymaps. Kept thefilePathplumbing — the core.urlopen/save system depends on it.tranquil-drag-drop— the browser-tabsaveUrlToTreepath and its now-dead helpers. Kept file-tab drop-to-copy and entry copy/move + undo, none of which were ADR-0008.
What shipped & where
tranquil-automations/lib/vertical-tabs-view.js—VerticalTabsView, a workspace item (URI = 'tranquil-automations://vertical-tabs'). Renders the center’s active pane’s items as<li class="tranquil-vertical-tab">rows (title · unsaved dot · hover close). Row click →pane.activateItem(item)+pane.activate(); close →pane.destroyItem(item). Re-renders off the pane’sonDidAddItem/onDidRemoveItem/onDidMoveItem/onDidChangeActiveItemand each item’sonDidChangeTitle/onDidChangeModified; re-watches oncenter.observeActivePane.tranquil-automations/lib/tranquil-automations.js— registers the deserializer + anaddOpenerfor the URI, ashowVerticalTabsboolean config (default off), aconfig.observethat opens/closes the panel to match, and atranquil-automations:toggle-vertical-tabscommand that flips the config.tranquil-automations/styles/tranquil-automations.less—.tranquil-vertical-tabslist styling usinginherit+ neutralrgba(127,127,127,…)overlays (the business themes don’t export ui-variables), withbackground: transparent !importanton the close button to beat the theme’sbuttonrule.
How to use
- Toggle Show Vertical Tab List (Right Dock) in Settings → Packages →
tranquil-automations, or run Tabs: Toggle Vertical Tab List from the command palette. Both flip the same persisted config, and the panel restores on reload.
Constraints & caveats
- Active pane only. The list reflects the center’s active pane, so under a split it follows the focused side rather than showing every pane at once. Extendable later.
- No drag-reorder yet. Click-to-activate and close only for v1; the list is owned code, so reordering can be added without third-party constraints.
Verify
Reload, enable the setting (or run the command) → a Tabs panel appears in the right dock listing
the main view’s open tabs. Clicking a row activates that tab in the center; the close button removes
it; opening/closing/renaming center tabs updates the list live. Also confirm the ADR-0008 removals: ctrl-tab cycles positionally with no MRU popup, and no “Tree View: Toggle File Sync” /
“…center tab” commands remain.