Skip to content

Harden chart node data, rendering, and lifecycle - #9

Merged
dovvnloading merged 1 commit into
mainfrom
agent/chart-node-repair
Jul 15, 2026
Merged

dovvnloading merged 1 commit into
mainfrom
agent/chart-node-repair

Conversation

@dovvnloading

Copy link
Copy Markdown
Owner

Summary

This PR repairs chart/graph-node data integrity, rendering behavior, graph lifecycle handling, and persistence.

What changed

  • Added one canonical chart-data validator for all chart types.
  • Rejects malformed containers, non-finite values, oversized payloads, invalid Sankey cycles, and mismatched series.
  • Aggregates duplicate Sankey edges.
  • Added responsive categorical tick selection and pie-slice grouping.
  • Added render caching, font/theme-aware invalidation, resize bounds, and safer export cleanup.
  • Added explicit chart provenance connections and recursive cleanup.
  • Added stable chart IDs and parent/source references.
  • Made chart restore fault-tolerant so one bad chart does not abort the entire chat.
  • Prevented stale asynchronous chart results from landing in a different chat.
  • Included chart structured data in search and chart-generation context.
  • Added chart-focused regression coverage and updated search-highlight expectations.

Root cause

Chart data rules were duplicated between the agent, scene item, renderer, and persistence layers. Async insertion relied on the current node as a fallback, and charts were represented as loosely attached content without stable graph lifecycle metadata.

Validation

  • python -m pytest -q
  • Result: 408 passed, 1 existing asyncio deprecation warning
  • Focused chart/scene tests also pass.

@dovvnloading
dovvnloading merged commit cf2cc6a into main Jul 15, 2026
6 checks passed
dovvnloading added a commit that referenced this pull request Jul 18, 2026
…27)

Two related documentation cleanups.

Document the branch/PR/merge workflow. CONTRIBUTING.md covered PR content
expectations but never described branching or merge mechanics, even though the
commit history has followed a consistent convention for 26 PRs. Writes down what
was already practice: topic branches off main, agent/<slug> naming, push, PR via
the existing template, squash-merge, delete branch. Also corrects README.md,
which still claimed a GitHub Actions workflow runs a compile check on every push
- that automation was removed in 185143a, so local validation is now the only
gate.

Remove references to gitignored planning docs. 65 tracked files carried 79
citations like "see doc/ARCHITECTURE_REVIEW_FINDINGS.md #9". Because doc/ is
gitignored, these were dead links for anyone reading the repo, exposed the
internal doc names and their finding/section numbering, and replaced the actual
rationale with a lookup key - so the reader most likely to need the reasoning
could not reach it. Each citation is replaced with the substance it pointed at,
stated inline. Comments and docstrings only; no behavior change.

Verified: python -m compileall passes, full suite 486 passed.

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
@dovvnloading
dovvnloading deleted the agent/chart-node-repair branch July 19, 2026 15:35
dovvnloading added a commit that referenced this pull request Jul 29, 2026
Settings' General page had a Theme select (Dark/Muted/Monochromatic) that
persisted a real setTheme intent, but nothing in the SPA ever applied the
value: no data-theme attribute, no alternate --gl-surface-* token set, the
app rendered identically regardless of selection. Per user decision,
removed rather than wired up - building two real alternate palettes is a
design investment, not a bug fix, and a persisted preference that provably
does nothing is worse than no preference.

Removed end to end: the frontend select and its options, the setTheme
intent and its handler, get_theme/set_theme on SettingsManager (including
the now-pointless in-memory backfill for legacy state files missing the
key), the theme field from the app-settings wire contract (regenerated),
and the now-stale "Appearance" Help entry that described this exact
control.

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant