Skip to main content

Pattern · Composites

Schema Browser

Application recipe composed from public TermRock building blocks; domain state and effects remain host-owned.

Kind
paint
Input
interactive
Canvas
120×40

Live preview

Loading terminal preview.

Static terminal poster. Choose Run live to start the Rust demo.

Ghosttyschema-browser/basic
Loading terminal poster…
○ loading posterNo input — rendered state only
Schema Browser · exact mounted Rust story

01 · Purpose

What it is for

Application recipe composed from public TermRock building blocks; domain state and effects remain host-owned.

Best fit: Composites · composite · Tree

02 · Behavior

What the mounted story proves

  1. 01

    SchemaBrowser

    Representative 120×40 terminal state.

  2. 02

    Passive paint

    No keyboard or pointer action is claimed by this representative story.

  3. 03

    Evidence stays explicit

    0 covered · 9 partial · 5 missing axes.

03 · Implement

Install, then start from exact code

Install

cargo add termrock --git https://github.com/tailrocks/termrock.git --rev 5283c2acf9154d0cfcd37b1ffe821c00faf90ea2

Add TermRock once. Keep domain effects in the host application.

Minimal implementation

Exact Rust setup used by schema-browser/basic.

Open to load code.

04 · Adapt

Variants and composition

Public building blocks

Tree

Supporting types

BreadcrumbItem · QuickOpenItem · QuickOpenPreview · StatefulWidget · TreeNode · TreeNodeStatus

05 · Reference

API, tokens, accessibility

API

SchemaBrowserOpen source ↗

Tokens

DesignSystemInspect exact story code for roles and capability projection.

Accessibility

Input contract mountedNo input claim in the representative story.

Contract

Evidence in progress0/23 axes covered

06 · Go deeper

Advanced guidance

Authored implementation guidance

Hierarchical catalog navigator for connections → databases → schemas → tables/views → columns/indexes/constraints/routines. Host owns metadata fetch and SQL; TermRock paints the tree and emits typed requests.

When to use / when not

Use SchemaBrowserPrefer
DB catalog side pane—
Filesystem explorerFileTree
Generic hierarchyTree
Query body / resultsQueryEditor · ResultGrid

Ownership

ConcernOwner
Catalog introspection, reconnectHost
Cursor, filter, presentation, expand preserve setSchemaBrowserState
Children load / open query / DDL UIHost via outcomes

Lazy expansion & preserve

  1. Host projects flattened visible rows (branch + TreeNodeStatus::Lazy).
  2. Expand → LoadChildrenRequested or Toggle.
  3. state.expanded accumulates open branch ids.
  4. On refresh/reconnect: reproject, then apply_expanded_set(&mut entries, &state.expanded) and state.reconcile_expanded(&live_ids).

Presentation

SidePane (default) → Drawer → Fullscreen via Ctrl+M or auto from bounds.

Keys

KeyAction
/ · r · RFilter · refresh node · refresh all
y · p · Ctrl+OCopy path · preview · QuickOpen
q · d · xQuery · describe · context
Ctrl+M · Ctrl+Shift+CPresentation · reconnect
Ownership boundary

TermRock owns reusable terminal rendering and interaction state. The host owns domain data, policy, persistence, authorization, and side effects.

Evidence status

0 covered, 9 partial, and 5 missing contract axes. Missing evidence is not a behavior claim.