Skip to main content

Tessera Widget Roadmap

This roadmap expands the widget catalog by +34 additional widgets in delivery waves, keeping the public C# API cohesive and theme-first.

Target and Delivery Model

  • Target: move toward 40-50 production-grade widgets with consistent authoring patterns.
  • Scope: docs + implementation waves, no DI-first requirement on default app path.
  • Delivery: each wave must ship with tests, examples, and theme mapping hooks.

Strict Theming Contract (applies to every new widget)

Each widget in this roadmap must implement the same minimum visual contract from day one:

  • required state styles: Default, Hover, Focus, Pressed/Active, Selected, Disabled, Error, ReadOnly (if editable)
  • hover/focus/selected behavior: visually distinct in both color and monochrome terminals; Focus must not be hidden by Hover
  • glyph hooks: widget-specific glyph set properties (no hardcoded glyph literals in render path)
  • override layers: global theme -> control type defaults -> instance overrides -> state overrides
  • API shape: explicit C# properties/events; default authoring docs/examples stay centered on primary Tessera namespaces

Delivery Waves (+34 Widgets)

Notation: all rows inherit the strict state-style contract above; Glyph hooks column lists required widget-specific glyph seams.

Wave 1 (P0): App Shell + Forms (9)

WidgetPriorityC# workflow rationaleGlyph hooks
FormP0Standard CRUD/data-entry scaffoldingsection divider, required marker, submit marker
FieldSetP0Group reusable input blocksborder set, title markers
ValidationSummaryP0Centralized model validation outputseverity markers, bullet markers
DataForm<TModel>P0Strongly-typed model editingfield separators, validation markers
WizardP0Multi-step onboarding/config flowsstep markers, connector glyphs
SplitViewP0Master/detail and inspector layoutssplitter glyph, collapse marker
InspectorPanelP0Right-pane metadata/property editingsection expand/collapse glyphs
EmptyStateP0Predictable zero-data UXicon/marker slot glyph
SearchResultsViewP0Common search result renderingmatch markers, rank marker

Wave 1 integration status (current lane):

  • Shipped and integrated: Form, FieldSet, DataForm<TModel>, Wizard, SplitView, InspectorPanel, EmptyState, ValidationSummary, SearchResultsView.
  • Theme extension coverage includes all listed controls (ApplyTheme, ApplyThemeDefaults, override overloads).
  • Bordered parity + control-catalog + theme-override tests include bordered Wave 1 controls (Form, FieldSet, DataForm<TModel>, Wizard, SplitView, InspectorPanel).
  • Remaining Wave 1 backlog: none.

Wave 2 (P0/P1): Data, Planning, Query (9)

WidgetPriorityC# workflow rationaleGlyph hooks
VirtualizedListView<T>P0Large collections without UI lagoverflow, continuation markers
GroupedListView<TGroup,TItem>P0Grouped domain listsgroup expand/collapse markers
PivotTableP1Analytical summaries in-consolesort marker, subtotal marker
QueryBuilderP1Filter/query composition in toolsoperator markers, join markers
KanbanBoardP1Task-state workflowslane separators, card markers
CalendarMonthViewP1Scheduling and planning UIsday markers, current-day marker
SchedulerTimelineP1Time-slice planning/editor toolstick markers, range handles
TagInputP1Label-driven domain modelingadd/remove tag markers
RichTextViewP1Structured text output with emphasisheading/list/quote markers

Wave 2 integration status (current lane):

  • Implemented and wired: VirtualizedListView<T>, GroupedListView<TGroup,TItem>, PivotTable, QueryBuilder, KanbanBoard, CalendarMonthView, SchedulerTimeline, TagInput, RichTextView.
  • Theme extension coverage added for all Wave 2 controls (ApplyTheme, ApplyThemeDefaults, override overloads).
  • Bordered parity + control-catalog + theme-override tests now include all bordered Wave 2 controls.
  • Remaining Wave 2 backlog: none.

Wave 3 (P1): Dev/Ops Workflows (8)

WidgetPriorityC# workflow rationaleGlyph hooks
JsonTreeViewP1API/debug payload inspectionnode expand/collapse, type marker
LogTailPanelP1Streaming logs with filterslevel markers, follow marker
TraceViewerP1Request/operation trace analysisspan markers, timing separators
CommandOutputP1Deterministic process output panesprompt marker, continuation marker
TaskRunnerPanelP1Build/test/deploy dashboardsstatus markers, progress markers
ActivityFeedP1Event/audit visualizationevent type markers, timestamp marker
NotificationInboxP1Persistent in-app notificationsunread marker, severity marker
KeyBindingHelpDialogP1Discoverability for shortcutskeycap separators, category markers

Wave 3 integration status (current lane):

  • Implemented and wired: JsonTreeView, TraceViewer, CommandOutput, LogTailPanel, TaskRunnerPanel, ActivityFeed, NotificationInbox, KeyBindingHelpDialog.
  • Theme extension coverage added for all Wave 3 controls (ApplyTheme, ApplyThemeDefaults, override overloads).
  • Bordered parity + control-catalog + theme-override tests now include bordered Wave 3 controls (JsonTreeView, TraceViewer, CommandOutput, LogTailPanel, TaskRunnerPanel, ActivityFeed).
  • Remaining Wave 3 backlog: none.

Wave 4 (P2): Advanced Composition + Visual Data (8)

WidgetPriorityC# workflow rationaleGlyph hooks
DockWorkspaceP2IDE-like pane compositiondock handle glyphs
PaneTabsP2Multi-pane/multi-view workspacestab close/dirty markers
PaletteEditorP2Theme/palette authoring toolsswatch markers, active marker
HeatmapP2Dense matrix-based insightscell markers, legend markers
Sparkline (baseline shipped)P2Inline trend telemetrymin/max markers
TreeMapChartP2Hierarchical metric distributionhierarchy separators
TerminalPanelP2Embedded subprocess sessionsprompt/stream markers
ProcessListViewP2Runtime process inspectionstatus markers, sort marker

Wave 4 integration status (batch A + B):

  • Shipped and integrated: DockWorkspace, PaneTabs, PaletteEditor, Heatmap, TreeMapChart, TerminalPanel, ProcessListView.
  • Theme extension domain file TesseraThemeControlExtensions.Workspace.cs is active for Wave 4 workspace/visual-data mappings.
  • Remaining Wave 4 backlog: none (Sparkline already shipped in plotting baseline).

Shipped Plotting Baseline (Current V1 Track)

These controls are already shipped on the public path and are not part of the +34 backlog count:

  • Sparkline
  • TelemetryChart
  • AreaPlot
  • ScatterPlot
  • Histogram
  • LinePlot
  • PlotPanel

All shipped plotting controls follow the strict theming contract (state styles, glyph hooks where applicable, and override hierarchy).

Plotting Dashboard Authoring Notes

Use the shipped plotting controls by intent:

  • Sparkline for inline single-row trend hints
  • TelemetryChart for tiny multi-row dashboard telemetry cards (braille-first compact coverage with block/area fallbacks)
  • AreaPlot for bounded single-series filled plots when the plot region is larger than a telemetry card
  • LinePlot for multi-series trend dashboards and larger/coarser single-series plots
  • ScatterPlot for correlation
  • Histogram for distribution buckets
  • PlotPanel to compose multiple plotting controls into one screen region

Recommended implementation pattern:

  • keep bounded buffers for stream inputs
  • update existing controls/series in place (avoid rebuilding control trees)
  • apply theme defaults, then instance-level visual overrides

Documentation and examples:

  • canonical plotting/dashboard sample: examples/PlottingDashboard (add when available)
  • current stopgap references: examples/OpsWatch, examples/DownloadCenter

Expansion Backlog: +36 Dashboard-First Widgets (10 Landed)

This backlog is intentionally implementation-oriented for the next growth tranche beyond the current +34 wave completion. It keeps dashboard and operational TUI use-cases first.

Dependency keys:

  • D0: existing V1 control contract (selection/focus/title/border hooks, theme override layers)
  • D1: shared chart primitives (Series, scales, legends, bucket/axis formatters)
  • D2: shared virtualization/windowing helpers for dense rows/cells
  • D3: shared overlay stack and focus trapping contract
  • D4: shared adaptive layout primitives (pane resize, snap, docking rules)
  • D5: terminal capability-gated image/media path (V1.1 only)

Data Viz (6)

WidgetTargetDashboard use-caseDepends on
BulletChartV1KPI vs target and qualitative rangesD0, D1
BoxPlotV1percentile/distribution inspectionD0, D1
CandlestickChartV1market/service interval trend viewsD0, D1
RadarChartV1.1multivariate profile comparisonD0, D1
GanttChartV1timeline execution planningD0, D1, D2
FunnelChartV1conversion/drop-off pipelinesD0, D1

Layout and Composition (6)

WidgetTargetDashboard use-caseDepends on
DashboardGridV1drag/reflow card-based metric boardsD0, D4
CardDeckV1card stacks for grouped summariesD0, D4
ResizablePaneGroupV1multi-pane operator workspacesD0, D4
TileLayoutPanelV1dense tiled monitoring surfacesD0, D4
DrilldownStackV1master->detail history navigationD0, D4
FloatingPanelHostV1.1detachable inspector/transient panesD0, D3, D4

Inputs and Editors (6)

WidgetTargetDashboard use-caseDepends on
AutocompleteInputV1command/filter authoring with suggestionsD0, D3
TokenEditorV1structured labels/tags/owners editingD0
PathPickerV1file/log/config source selectionD0, D3
CronExpressionInputV1schedule authoring in automation toolsD0
NumericRangeInputV1bounded thresholds and filter rangesD0
JsonEditorV1.1structured JSON edit/validate panesD0, D2

Overlays and Workflow (6)

WidgetTargetDashboard use-caseDepends on
QuickOpenOverlayV1fuzzy jump across resources/viewsD0, D3
ActionSheetV1context-safe command execution menusD0, D3
TooltipOverlayV1dense-help hints for complex UIsD0, D3
SpotlightOverlayV1focused walkthrough/highlight modeD0, D3
CommandHistoryOverlayV1replay/reuse previous commandsD0, D3
ImagePreviewOverlayV1.1capability-gated image preview panesD0, D3, D5

Status and Ops (6)

WidgetTargetDashboard use-caseDepends on
HealthBoardV1aggregated service health surfaceD0, D1
IncidentTimelinePanelV1incident events and milestone reviewD0, D1
DeploymentPipelineViewV1stage-gated release visibilityD0
AlertRuleTableV1rule status and suppression controlsD0, D2
SlaBurnRatePanelV1SLO/error-budget burn monitoringD0, D1
ResourceQuotaPanelV1quota/limit and headroom trackingD0, D1
WidgetTargetDashboard use-caseDepends on
SideNavRailV1persistent section navigationD0
WorkspaceSwitcherV1fast context switching between workspacesD0, D3
OutlineNavigatorV1tree-like structural navigationD0, D2
JumpListV1MRU and pinned target navigationD0
RecentItemsNavigatorV1recency-based productivity flowD0
KeymapCheatSheetPanelV1always-available shortcut discoverabilityD0

Expansion Tranche Status (March 22, 2026)

Landed controls from the expansion tranche:

ControlLanded commit(s)Current verification signal
DashboardGrid8593562, 4e005edimplemented; deterministic render/interaction tests present in DashboardGridControlTests; included in passing targeted suite
QuickOpenOverlayd91c934, db63e01implemented; keyboard/pointer/submit + deterministic render tests present in QuickOpenOverlayControlTests; typed theme/parity wiring landed; included in passing targeted suite
BulletChartdfd4221, c681b64, 4e005edimplemented; style-focused test stabilization landed; included in passing targeted suite
ResizablePaneGroup77cc95d, 1c1b748implemented; selection/resize/style + deterministic render tests present; theme/parity wiring restored; included in passing targeted suite
SideNavRaild236de2, 1c1b748implemented; keyboard/pointer/activation/style tests present; theme/parity wiring restored; included in passing targeted suite
TokenEditor7fbf7be, 1c1b748implemented; add/remove/navigation/style tests present; theme/parity wiring restored; currently passing in targeted suite reruns
HealthBoard18adc16, 1c1b748implemented; severity/selection/ack/style tests present; theme/parity wiring restored; included in passing targeted suite
JumpList187468c, 03c7a43implemented; activation/navigation/style tests present in JumpListControlTests; included in passing targeted suite
AutocompleteInput50212de, be23de7, 03c7a43implemented; suggestion ranking/commit/style behavior stabilized; included in passing targeted suite
BoxPlot6ae3c5b, 03c7a43implemented; deterministic render/style tests present in BoxPlotControlTests; included in passing targeted suite

Targeted verification command (current host):
dotnet test tests/Tessera.Tests --no-restore --nologo --filter "DashboardGrid|QuickOpenOverlay|BulletChart|ResizablePaneGroup|SideNavRail|TokenEditor|HealthBoard|JumpList|AutocompleteInput|BoxPlot" -> pass (48/48).

Outstanding for this tranche (do not mark done yet):

  • Theme extension parity is confirmed for all currently landed tranche controls (4e005ed, 1c1b748, 03c7a43, db63e01).
  • Remaining tranche scope is unimplemented backlog controls from the expansion list (not parity gaps on landed controls).

Dependency Graph (Build Order)

  1. D0 and D4 first (API/style parity + layout substrate). This unlocks DashboardGrid, ResizablePaneGroup, TileLayoutPanel, SideNavRail.
  2. D3 second (overlay host contracts). This unlocks QuickOpenOverlay, ActionSheet, WorkspaceSwitcher, AutocompleteInput.
  3. D1 third (shared chart primitives). This unlocks BulletChart, BoxPlot, FunnelChart, HealthBoard, SlaBurnRatePanel.
  4. D2 fourth (dense virtualization helpers). This unlocks GanttChart, AlertRuleTable, OutlineNavigator, and V1.1 JsonEditor.
  5. D5 last and V1.1-only. This unlocks ImagePreviewOverlay and any future image-capable widgets.

Top 12 Widgets: Minimal Public API Sketch + Style Contract

WidgetMinimal C# API sketchRequired style/theming hooks
DashboardGridSetTiles(IEnumerable<DashboardTile>), MoveTile(string tileId, int row, int column), ResizeTile(string tileId, int rowSpan, int columnSpan), SelectedTileId, SelectionChangedtile border/title style hooks, selected tile style, drag-preview style, focus marker support
ResizablePaneGroupSetPanes(IEnumerable<PaneSpec>), SetSplitRatio(int paneIndex, double ratio), SelectedPaneIndex, SelectionChangedsplitter style text, focused splitter style, pane title/focus marker hooks
SideNavRailSetItems(IEnumerable<NavItem>), SetSelectedIndex(int index), SelectedItem, SelectionChanged, Activatedselected/hover/focus item styles, collapse marker glyphs, badge marker glyph
WorkspaceSwitcherSetWorkspaces(IEnumerable<WorkspaceItem>), Open(), Close(), SetSelectedIndex(int index), Submittedoverlay border hooks, selected row style, search-hit marker glyph, dim-backdrop style
QuickOpenOverlaySetItems(IEnumerable<QuickOpenItem>), SetQuery(string query), SetSelectedIndex(int index), Submitted, Cancelledquery input style hooks, row state styles, match marker glyphs, focused border hooks
AutocompleteInputText, SetSuggestions(IEnumerable<string>), SetSelectedSuggestionIndex(int index), SuggestionCommittedinput/title/focus styles, popup border hooks, highlighted suggestion style, suggestion marker glyph
TokenEditorSetTokens(IEnumerable<TokenItem>), AddToken(string text), RemoveSelectedToken(), SelectedTokenIndex, SelectionChangedtoken chip default/selected/error styles, add/remove marker glyphs, focus marker support
BulletChartTitle, SetRanges(IEnumerable<BulletRange>), SetValue(double value), SetTarget(double target)range-segment styles, value bar style, target marker glyph/style, threshold warning styles
BoxPlotTitle, SetSeries(IEnumerable<BoxPlotSeries>), SetSelectedSeries(int index), SelectionChangedquartile/median/whisker styles, selected series style, axis/legend text hooks
GanttChartSetTasks(IEnumerable<GanttTask>), SetViewport(DateOnly start, DateOnly end), SetSelectedIndex(int index), SelectionChangedbar styles by status, dependency marker glyphs, today marker style, focused border hooks
HealthBoardSetServices(IEnumerable<HealthService>), SetSelectedIndex(int index), SelectionChanged, Acknowledge(string serviceId)status-severity styles, degraded/outage glyph hooks, selected row style, muted acknowledged style
DeploymentPipelineViewSetStages(IEnumerable<PipelineStage>), SetSelectedStageIndex(int index), SelectionChanged, RetrySelected()stage state styles, connector glyph hooks, selected stage style, running animation marker text

Global style contract for every widget above:

  • must support state styles: Default, Hover, Focus, Selected, Disabled
  • bordered controls must expose BorderStyleText + FocusedBorderStyleText
  • title-bearing controls must expose FocusMarker + ShowFocusMarker
  • all marker literals must be typed glyph-set properties (no hardcoded render literals)

Implementation Sequencing (Parallel Agent Lanes)

Phase 1 (foundation, 2 weeks):

  • Lane A (layout/nav): DashboardGrid, ResizablePaneGroup, SideNavRail, JumpList
  • Lane B (overlays/input): QuickOpenOverlay, AutocompleteInput, TokenEditor
  • Lane C (data viz/ops): BulletChart, BoxPlot, HealthBoard

Phase 2 (breadth, 2-3 weeks):

  • Lane A: TileLayoutPanel, DrilldownStack, WorkspaceSwitcher, OutlineNavigator
  • Lane B: ActionSheet, TooltipOverlay, CommandHistoryOverlay, PathPicker, NumericRangeInput, CronExpressionInput
  • Lane C: FunnelChart, GanttChart, IncidentTimelinePanel, DeploymentPipelineView, AlertRuleTable, SlaBurnRatePanel, ResourceQuotaPanel

Phase 3 (V1.1 capability tranche):

  • Lane A: FloatingPanelHost
  • Lane B: JsonEditor, ImagePreviewOverlay
  • Lane C: RadarChart and other higher-density chart variants gated by terminal capability + perf budget

Execution rules:

  • each widget slice must land with tests + theme mapping + deterministic interaction coverage
  • each phase ends with benchmark checks for render-only and render+materialize hot paths
  • image-capable widgets remain strictly V1.1 and capability-gated

Visual Pass Timing

  • Phase A (implementation-first): each widget ships with strict minimal visual contract (state styles + glyph hooks + override hierarchy) and monochrome-safe rendering.
  • Phase B (full visual polish): after functionality stabilizes, run a dedicated visual pass for spacing, animation cadence, token tuning, and showcase examples.
  • Release rule: no widget can skip Phase A; Phase B is scheduled after wave completion and before RC promotion.

Coordination Notes