ns-ui

Prompt Version Grain

Prompt version history read like woodgrain — one vertical fiber per prompt block running down through every revision, continuous where that block is unchanged and nicked where it churned, so the load-bearing parts of a prompt are visible without diffing anything.

Use when the panel that answers 'which parts of this prompt are load-bearing and which churn every release' across a whole version history at once — each prompt block is one vertical fiber whose unbroken length IS its stability, so a never-touched system block reads as a single 300px line and a rewritten tools block reads as a ladder of stubs. Pick diff-unified-viewer instead when the user needs the actual line-level text change between two specific versions, approval-inline-diff when a proposed edit needs accepting or rejecting, and context-prompt-shims when the user is composing what goes into the prompt rather than auditing what already happened to it.

Install

npx shadcn add https://design.helpmarq.com/r/prompt-version-grain.json
View source and playground

ns-ui / prompt-version-grain

support-triage / system prompt

12 releases · v26 → v37
system
0%
persona
18%
tools
73%
rules
55%
examples
9%
format
0%
vertokeval
v371,8400.94
v361,7970.93
v351,7540.91
v341,6840.90
v331,6410.87
v321,5980.86
v311,5280.85
v301,4850.83
v291,4420.80
v281,3720.79
v271,3290.78
v261,2860.76
  • system: 0 of 11 version boundaries changed, 0% churn.
  • persona: 2 of 11 version boundaries changed, 18% churn.
  • tools: 8 of 11 version boundaries changed, 73% churn.
  • rules: 6 of 11 version boundaries changed, 55% churn.
  • examples: 1 of 11 version boundaries changed, 9% churn. Introduced in v32.
  • format: 0 of 11 version boundaries changed, 0% churn.

One fiber per prompt block, running down through every release. Unbroken means untouched; a nick marks the release where that block changed.

Props

PropTypeDefaultDescription
blocks?PromptGrainBlock[]Prompt blocks, left to right.
versions?PromptGrainVersion[]Versions, NEWEST FIRST.
rowHeight?numberResting row height in px.
expandedRowHeight?numberRow height while a nick is expanded, in px.
columnMinWidth?numberMinimum column width in px.
ariaLabel?string
className?string