Skip to content

Releases: footprintjs/explainable-ui

v0.18.1

20 Apr 16:45

Choose a tag to compare

Fixed

  • FootprintTheme wrapper div uses display: contents so its
    box is invisible to the host's layout. Previously the wrapper
    participated in flex/grid layout as a block-level div that auto-
    sized to its content — which silently collapsed descendants that
    relied on flex: 1 / height: 100% to fill the theme root. The
    bug manifested as "tabpanel / card / scroller height = 0" inside
    themed trees; host apps had to add workaround CSS like
    .tab-content > .fp-theme-root { flex: 1; display: flex; } to
    cope. With display: contents, CSS custom property inheritance
    still flows (vars cascade via the DOM, not the render tree) while
    the layout box is removed. Consumers no longer need workaround
    CSS. One caveat: display: contents elements are removed from
    the accessibility tree in Safari <15.4 — the wrapper is purely
    presentational so this is acceptable.

v0.18.0

19 Apr 22:47

Choose a tag to compare

Added

  • <NarrativePanel> "Copy for LLM" now exports the full debug
    bundle
    when optional runtimeSnapshot + spec props are provided.
    The copied Markdown now includes: rendered narrative, Final Shared
    State
    , Commit Log (per-stage writes keyed by runtimeStageId),
    Recorder Snapshots (metrics, tokens, instructions, emit events),
    Subflow Results, and the flowchart Spec (topology).
    Previously only the rendered text was copied, which told the story
    but not the payloads. Paste into Claude and ask "why did iter N
    fail?" — the model now has everything it needs.
  • ExplainableShell forwards runtimeSnapshot + spec through to
    the Narrative tab's RightPanel → NarrativePanel so the enhanced
    copy bundle works in the standard zero-boilerplate setup.
  • Safe JSON serialization helper (safeJsonStringify) in NarrativePanel
    handles circular references + caps output at 500KB so clipboard
    pastes stay responsive on very long runs.

Fixed

  • GanttTimeline showed 0ms durations for every stage.
    extractStageTimings in adapters/fromRuntimeSnapshot.ts still
    read the legacy MetricRecorder.data.stages[stageName].totalDuration
    shape, but MetricRecorder now emits
    data.steps[runtimeStageId] = {stageName, duration, ...}
    per-execution. Adapter now iterates data.steps, extracts
    {stageName, duration} per entry, and sums durations by
    stageName so looped stages (e.g. CallLLM × N iters) show
    cumulative wall time. Legacy data.stages shape still accepted
    for back-compat with older snapshots.

v0.17.0

18 Apr 07:01

Choose a tag to compare

Added

  • <TraceViewer> — drop-in component that renders an agentfootprint.exportTrace() JSON as a fully interactive Behind-the-Scenes view. Accepts a parsed AgentfootprintTrace object or a raw JSON string; validates schemaVersion === 1; surfaces parse / validation errors via an optional onError callback. Internally a thin shell over toVisualizationSnapshots + <ExplainableShell /> — same composition consumers would write by hand. Drop into any React app to give users a "paste a trace, debug visually" workflow without re-executing the agent.
    import { TraceViewer } from 'footprint-explainable-ui';
    
    <TraceViewer trace={pastedJsonString} fallback={<div>Paste a trace</div>} />
  • AgentfootprintTrace + TraceParseError types exported from the main entry. Pin consumers to schemaVersion: 1; future shape changes ship as new schema versions with multi-version dispatch.
  • 11 new tests (5 patterns) covering parse + validation surface, JSDOM ResizeObserver polyfill added to test/setup.ts.

v0.16.0

16 Apr 19:04

Choose a tag to compare

Added

  • RightPanel with two modes — Insights and What Happened. Memoized toggle between high-level analytics (recorder views, quality scores) and event-level detail (narrative entries, raw log). Replaces the single-view right column with a mode-switched layout in ExplainableShell.
  • Data Trace discoverability — the panel now teaches its own capability. Empty state explains "Backward causal chain — trace any value back to the stage that created it." When frames exist, the header gains an italic subtitle "Every value here was derived from the stages below." — surfacing the differentiator at the moment of first encounter.

v0.15.0

14 Apr 18:53

Choose a tag to compare

Added

  • Three-column layout: Flowchart | Inspector (State + Data Trace) | Insights (Story, Performance, Quality, Cost)
  • DataTracePanel — backward causal chain visualization (like Chrome DevTools Call Stack)
  • InspectorPanel — State + Data Trace tabs for selected node
  • InsightPanel — tabs mode (one at a time) or 2x2 grid mode (all visible when flowchart collapsed)
  • CompactTimeline — collapsed dot line, expands to Gantt chart
  • Responsive: wide (3-col), medium (2-col, no flowchart), narrow (mobile stacked)
  • Insight naming: Narrative→Story, Memory→State, Metrics→Performance

v0.12.1

21 Mar 00:08

Choose a tag to compare

Added

  • 90 unit tests — Comprehensive test coverage for narrative sync (position-based), heading numbering (Stage/Selector/Subflow N.M), entry filtering, and loop edge creation in specToReactFlow.

Fixed

  • Stage 4 after Subflow 3.x — Root counter increments for subflow step so subsequent stages number correctly.

v0.12.0

20 Mar 22:28

Choose a tag to compare

Added

  • Narrative headings — Type-specific headings: Stage N, Selector N, Decider N, Subflow N.M. Stage numbering accounts for selectors and subflows (Stage 1 → Selector 2 → Subflow 3.1/3.2 → Stage 4).
  • Position-based narrative sync — Replaces set-based stageId matching with sequential position mapping. Correctly handles loops (same stageId at different iterations) and parallel subflows.
  • Subflow filtering — Main narrative hides subflow-internal entries (stages, steps inside subflows). Shows Entering markers, hides Exiting markers. Internal stages appear in drill-down view only.

Fixed

  • Flowchart renders for all specs — No longer requires subflows. SubflowTree sidebar only shows when spec has subflow nodes.
  • Loop back-edge rendering — Fixed edge target to use stageId instead of name. Dotted loop arrow now appears in the flowchart.
  • Stage 4 numbering after subflows — Root counter increments for subflow step so subsequent stages number correctly.

v0.11.5

20 Mar 21:18

Choose a tag to compare

Changed

  • Narrative hides subflow internals — StoryNarrative filters out subflow-internal entries (stages, steps, conditions inside subflows) and Entering/Exiting markers. The main narrative shows only root-level entries + [Selected]/[Parallel] markers. Internal stages appear in the drill-down view. Future count accurately reflects visible entries only.

v0.11.4

20 Mar 20:55

Choose a tag to compare

Added

  • Subflow group headers in narrative — StoryNarrative shows subflow ID headers when subflowId changes between entries. Subflow entries are grouped consecutively and indented for readability in parallel execution flows.

v0.11.3

20 Mar 20:28

Choose a tag to compare

Fixed

  • Narrative sync with stageId + subflowId — StoryNarrative now matches entries using stageId, subflowId, and stageName against the revealed snapshot set. Entries without identifiers belong to the previous revealed section. Works correctly with selectors, forks, parallel branches, and subflows.
  • NarrativeEntry type includes stageId and subflowId — Matches footprintjs v0.17.2 CombinedNarrativeEntry shape.