Class BowireWorkspacesRailContribution

Namespace
Kuestenlogik.Bowire.Rails
Assembly
Kuestenlogik.Bowire.dll

Workspaces rail contribution — the workspace-navigation hub (the closest thing to a file tree in Bowire), core-resident by design.

public sealed class BowireWorkspacesRailContribution : IBowireRailContribution
Inheritance
BowireWorkspacesRailContribution
Implements
Inherited Members

Remarks

Folded into Kuestenlogik.Bowire (Core) alongside Home + Discover (#368, the #306 Phase G tail). Workspaces is the workspace-navigation hub whose detail pane dispatches into the Collections / Environments / Recordings / Sources / Settings sub-views, so — like Home and Discover — it must always be present rather than shipping in a thin optional package while its JS lives in core. The previous descriptor-only Kuestenlogik.Bowire.Workspaces package has been retired; the Id string stays "workspaces" verbatim so operator-saved railMode + bowire_enabled_rails values keep dispatching correctly.

Constructors

BowireWorkspacesRailContribution()

public BowireWorkspacesRailContribution()

Properties

AlwaysOn

Whether the rail is part of the locked always-on set. Differs from DefaultEnabled: an always-on rail also can't be disabled at all. Defaults to false; only the four core rails (Home, Discover, Compose, Workspaces) ship as always-on.

public bool AlwaysOn { get; }

Property Value

bool

DisplayName

Human-readable label shown in the rail tooltip + Settings.

public string DisplayName { get; }

Property Value

string

Group

Visual group the rail belongs to. Adjacent rails with different group values get a divider between them. Built-in groups: "work", "scenarios", "quality", "hardening". New groups land at the bottom of the rail by default.

public string Group { get; }

Property Value

string

Remarks

Own 'admin' group — separated from Security's 'hardening' group because the Workspaces switcher is a project/context surface, not an audit/scan surface. Sits just above Settings (which has its own divider at the rail foot), so admin + global config cluster visually at the bottom. Operator feedback: 'workspaces in eigene gruppe'.

IconKey

Icon key from the workbench's SVG-icon catalogue (e.g. "house", "discover", "shield"). Resolved JS-side via svgIcon(key). Unknown keys fall back to a generic square placeholder.

public string IconKey { get; }

Property Value

string

Id

Stable identifier (e.g. "discover", "recordings", "security"). Must match the rail-mode id the JS bundle uses for routing — operators' localStorage.bowire_rail_mode values + deep links key off this. Case-sensitive (snake-lower).

public string Id { get; }

Property Value

string

SidebarKind

Sidebar template the rail renders. Recognised values: "none", "services", "collections", "environments", "recordings", "mocks", "workspaces", "sources", "benchmarks", "flows", "proxy", "security", "library". Adding a new value requires a matching arm in render-sidebar.js's dispatcher — see the sidebar.kind comment block in that file.

public string SidebarKind { get; }

Property Value

string

SortIndex

Sort priority. Lower values appear higher in the rail strip. The built-in catalogue uses 100-step intervals so third-party rails can wedge between two built-ins without re-numbering everything.

public int SortIndex { get; }

Property Value

int