feat(spec)!: ChartInteraction drops zoom and clickAction; stepSize/description/height are delivered (#3752) - #3763
Merged
Conversation
…scription/height are delivered (#3752) The tail of the declared-≠-delivered sweep from #3729. Five ChartConfig props reached the renderer and did nothing; each got the ADR-0078 call — honor it, or remove it. Three were honored (objectui#2885), two are removed here. Removed: ChartInteraction.zoom and ChartInteraction.clickAction. Both were redundant against something the platform already delivers, which is why neither had a consumer anywhere in the framework, the console, the showcase or the skill corpus. `zoom` had no renderer primitive behind it and `brush` already narrows a range (migration: brush: true). `clickAction` competed with two click owners that DO work — drillDown, which opens the filtered records and is what a segment click is almost always for, and the react tier's own onSegmentClick; a third, silent owner only invited authors to wire a click that never fired (migration: drillDown, or handle it in React). ChartInteraction is now { tooltips, brush }, both honored — the #1475 precedent: trim what cannot be cleanly delivered, implement the rest, leave nothing inert in between. Delivered: ChartAxis.stepSize, ChartConfig.description and ChartConfig.height (objectui#2885). description and height join <ObjectChart>'s published dataProps now that they do something; stepSize rides along inside xAxis/yAxis. Their schema descriptions say what they do rather than restating their names. Off-spec zoom/clickAction keys are stripped by Zod rather than rejected, so no stored metadata fails to parse — the break is at the TypeScript type level for anyone constructing a ChartInteraction in code. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UMHZBHTjH4rw8xmDYirFC7
|
The latest updates on your projects. Learn more about Vercel for GitHub. 1 Skipped Deployment
|
Contributor
📓 Docs Drift CheckThis PR changes 1 package(s): 104 hand-written doc(s) reference the affected code and may need an implementation-accuracy re-verification:
|
os-zhuang
marked this pull request as ready for review
July 28, 2026 02:46
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #3752. Depends on objectstack-ai/objectui#2888 — merge that first, then this.
The tail of the declared-≠-delivered sweep from #3729. Five
ChartConfigprops reached the renderer and did nothing; each got the ADR-0078 call — honor it, or remove it. Three were honored (objectui#2888), two are removed here.Removed
ChartInteraction.zoombrushalready narrows a range.interaction: { brush: true }ChartInteraction.clickActiondrillDown(opens the filtered records, which is what a segment click is almost always for) and, in the react tier, the host'sonSegmentClick. A third, silent owner only invited authors to wire a click that never fired.drillDown, or handle the click in ReactNeither had a consumer anywhere in the framework, the console, the showcase, or the skill corpus — which is itself the signal that they were redundant capability rather than missing capability.
ChartInteractionis now{ tooltips, brush }, both honored. This is the #1475 precedent applied: trim what cannot be cleanly delivered, implement the rest, leave nothing declared-but-inert in between.Delivered
ChartAxis.stepSize,ChartConfig.descriptionandChartConfig.heightare implemented in objectui#2888.descriptionandheightjoin<ObjectChart>'s publisheddataPropsnow that they do something;stepSizerides along insidexAxis/yAxis. All three schema descriptions now say what the prop does rather than restating its name —descriptionin particular reads as "announced to screen readers as the chart's label" instead of the bare "Accessibility description" that gave an author no idea whether anything consumed it.Also cleaned up: the
ChartTypeSchemataxonomy note had a mangled paragraph left from #3750's edit, where themetric/kpisentence ran into the stacking one.Breaking, shipped as
minorPer the launch-window convention (
scripts/check-changeset-no-major.mjs— the repo is currently in RC pre-release mode). Off-speczoom/clickActionkeys are stripped by Zod rather than rejected, so no stored metadata fails to parse; the break is at the TypeScript type level for anyone constructing aChartInteractionin code.Verification
@objectstack/spec6716 tests,@objectstack/lint471 tests — all passcheck:react-blocks,check:api-surface,check:skill-refs,check:skill-docs,check:docs,check:spec-changes,check:skill-examples)node scripts/check-changeset-no-major.mjspassesos validatepassesWhere this leaves the chart contract
Every
ChartConfigprop<ObjectChart>publishes is now honored by the renderer. The audit that started at #3701 ("what does an aggregate name its result columns?") ends with no known declared-≠-delivered props on this surface.🤖 Generated with Claude Code
https://claude.ai/code/session_01UMHZBHTjH4rw8xmDYirFC7
Generated by Claude Code