Skip to content

The workbench your users get

This is a guide, not the contract. What the platform guarantees is specified under openspec/specs/. For this page: commands · content-tabs · panes · workspaces · shell-layout · menus · plugin-store · plugin-permissions · surface-retention · popout-windows. Where this page and a specification disagree, the specification is right, and that is a defect in this page: change the behaviour there, then explain it here.

A product built on LoomWeaver ships with a workbench its users can already operate. Panes and tabs, two searches, workspaces, a settings dialog, a plugin store with its consent step, context menus, and the prompts around unsaved work are all there before the product’s first plugin is written. This page shows them, one picture each, as they look in the live demo. Every section ends with the page that says how to declare, curate or switch off what it shows.

Panes and tabs

Two panes side by side in the content area, a customer list on the left and a contact history on the right, each with its own tab strip and toolbar.

Two panes side by side in the content area, a customer list on the left and a contact history on the right, each with its own tab strip and toolbar.

Two panes from one click on Split right, or from dragging a tab to an edge. Each pane is a tab group with its own strip, and the window stays as wide as it was. Tabs can be pinned, opened as a preview, reordered, and popped out into a window of their own. The controls in each toolbar are the shell’s, and a distribution takes any of them away with a switch rather than a rebuild.

Where it is described: Surfaces and panes, Panes and splits, Content tabs and the pane toolbar.

The command palette

The command palette open over the workbench, listing commands contributed by plugins with their keyboard shortcuts.

The command palette open over the workbench, listing commands contributed by plugins with their keyboard shortcuts.

mod+k opens it anywhere. It lists every command a plugin or the product registered, with the chord each one has, and keeps the recently used ones on top. A command declared once is in the palette without further work, and the palette hides what the signed-in user may not run.

Where it is described: Commands and their triggers, Command palette entry.

Quick open, and the tab picker

The quick open list over the workbench, four open tabs marked now at the top and the other views the product can open below.

The quick open list over the workbench, four open tabs marked now at the top and the other views the product can open below.

mod+p opens the second search. What is open comes first, marked now; below it, everything the product could open, so a view that is not open yet is one keystroke away. The tab picker is its sibling on a tab strip: the New tab button lists the content a pane can host, and a click opens it there. Both lists come from the routes and surfaces plugins contribute. Nothing registers for them separately.

Where it is described: The content area, Command palette entry for placing the badge that opens it.

Workspaces

The Workspaces dialog on its Mine tab, showing the Default workspace and a saved one named Month end marked as a variant of Sales, with save, rename, delete and reset controls.

The Workspaces dialog on its Mine tab, showing the Default workspace and a saved one named Month end marked as a variant of Sales, with save, rename, delete and reset controls.

A workspace is a whole arrangement: which sidebars are open, what is in them, which tabs are in which pane. The product provides some, the user saves others, and the dialog keeps the two lists apart. Save as new, rename, delete and reset to the baseline are already here. A saved workspace remembers what it was derived from, which is what Variant of Sales says.

Where it is described: Workspaces, Declaring workspaces.

The rail and the sidebars, curated

The curation dialog for the rail, listing every entry with a Hidden, Left or Right choice for each, and a search field above.

The curation dialog for the rail, listing every entry with a Hidden, Left or Right choice for each, and a search field above.

A right-click on the rail’s empty part offers Customize activity bar, and this dialog opens: every entry, and whether it sits hidden, left or right. The same dialog exists for the views of a sidebar under Customize views. These pages say rail; the workbench’s own menus say Activity bar, and the glossary keeps the two together. Whatever the user arranges here is part of the workspace, so it survives a reload and a sign-in.

Where it is described: Curating the rail, Curating a sidebar.

Context menus

The context menu of a content tab, offering Split right, Split down, Close, Close Others, Close to the Right, Close All, Pinned and Open in New Window.

The context menu of a content tab, offering Split right, Split down, Close, Close Others, Close to the Right, Close All, Pinned and Open in New Window.

The context menu of a rail entry, offering to move the entry to the other rail or to hide it.

The context menu of a rail entry, offering to move the entry to the other rail or to hide it.

The shell draws its own menus on a tab, on a sidebar view, on a rail entry, and on the empty parts of the rail and the sidebar strip. Entries a plugin contributes go into these same menus, beside the shell’s, and an entry that needs a capability the plugin lacks is not drawn. Where nobody draws a menu, the browser’s own stays.

Where it is described: Menus, Sorting and moving.

Settings and permissions

The Settings dialog on its Permissions section, with a switch per plugin and, under each, a switch per capability the plugin holds.

The Settings dialog on its Permissions section, with a switch per plugin and, under each, a switch per capability the plugin holds.

One dialog for the product, with a section per plugin that wants one and the shell’s own sections beside them. The Permissions section is the shell’s: a switch turns a whole plugin off, and under it a switch per capability takes one thing away from it, effective at once. The dialog, its navigation and that section come with the shell; a plugin registers a section and the shell paints it.

Where it is described: Settings sections, The Permissions section.

The plugin store

The plugin store dialog with a catalogue card on the left and the Payment matching plugin’s detail on the right, with an Install button.

The plugin store dialog with a catalogue card on the left and the Payment matching plugin’s detail on the right, with an Install button.

The install prompt for the Payment matching plugin, listing the two permissions it requests, with Cancel and Install buttons.

The install prompt for the Payment matching plugin, listing the two permissions it requests, with Cancel and Install buttons.

A distribution serves a catalogue, and the user gets this. Cards, a search, a detail page from the plugin’s own readme, an installed list, and an update path driven by the catalogue’s version. Before anything is installed, the prompt lists every capability the plugin asked for, and the user answers once. The plugin then runs in a sandboxed frame with exactly what was granted. The catalogue is the product’s; the surface is not the product’s work.

Where it is described: Plugin store, The plugin system.

An agent at the keyboard

A workbench with a quote open, beside an assistant panel showing the tool call that opened it, the workbench’s answer, and a second call that was declined and never ran.

A workbench with a quote open, beside an assistant panel showing the tool call that opened it, the workbench’s answer, and a second call that was declined and never ran.

Every command in the palette can be offered to an agent that speaks AG-UI, through an adapter that ships with the platform. The panel in the picture is the demo’s; the calls going through it reach the same commands the palette does, under the same gating, so the agent cannot reach further than the person at the keyboard.

Where it is described: Driving your product with an AG-UI agent, Agent tools.

What else comes along

Some of what a user meets has no picture here, because it is small on screen or lives in a second window. All of it is the shell’s:

  • The unsaved-work prompt. Closing a tab whose surface reports unsaved work asks Save, Discard or Cancel. The surface only reports that it is dirty; the prompt and the three answers are the shell’s. Retention and unsaved work.
  • Pop-out windows. A tab or a sidebar view opens in a window of its own, and state stays in sync across every window and tab of the product. Windows and sync.
  • Light, dark and system, a language switch, and four text sizes, in the top bar and in the settings dialog. Appearance, Translations.
  • Toasts for what a plugin or the product wants to say, and an update badge that turns into Reload to update when a new build is ready. Dialogs and toasts, PWA.
  • Access-aware chrome. A contribution that needs a sign-in or a role is hidden, disabled or blocked as the session changes, in the rail, the menus, the palette and the tab picker alike. Access gating.

Keyboard shortcuts

The shell binds these itself. mod is ⌘ on macOS and Ctrl elsewhere, and every chord a command declares is printed beside it in the palette and the menus.

Keys What happens Where it is described
mod+k Opens the command palette Command palette entry
mod+p Opens quick open, the search over open tabs and openable content Command palette entry
mod+\ Splits the current pane to the right Content tabs and the pane toolbar
Alt+Arrow on a tab or rail entry Moves it within its strip or band Sorting and moving
Alt+Shift+←/→ on a rail entry Moves it to the other rail (Move to other activity bar) Curating the rail
Alt+Shift+←/→ on a sidebar view Moves it to the other sidebar Curating a sidebar
Arrow on a focused split handle Resizes the split; with Shift, in larger steps Panes and splits
Esc Closes the open dialog, menu or palette Dialogs and toasts

A distribution that switches a capability off takes its chord with it, so no menu entry or badge advertises a key that does nothing.

Where next