Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Add experimental GoFish IR adapter and docs#1032

Open
emeeks wants to merge 3 commits into
main from
custom-chart-improvements
Open

Add experimental GoFish IR adapter and docs #1032
emeeks wants to merge 3 commits into
main from
custom-chart-improvements

Conversation

@emeeks

@emeeks emeeks commented Jun 18, 2026
edited
Loading

Copy link
Copy Markdown
Member
Screenshot 2026年06月17日 at 7 39 53 PM

Introduce an experimental GoFish Frontend IR adapter and supporting UI/docs. Adds a new GoFishLayouts feature page, a blog draft (Making Better Custom Charts), nav entry, and route; links Custom Charts docs to the new page and documents recipe authoring, push semantics, and network diagrams. Implements adapter/runtime pieces under src/components/recipes (gofish interpreter, lambdas, examples, tests), exposes experimental APIs in semiotic-experimental, and updates semiotic-recipes usage. Adds integration tests and example pages for custom layout behavior, diagnostic helpers, and multiple stream/pipeline test updates. Also updates package/scripts and API surface docs to reflect the new experimental surface.

This pull request adds a new draft blog entry, "Making Better Custom Charts," and introduces documentation and navigation updates to support new experimental features, particularly the GoFish IR interpreter and custom charting capabilities. It also enhances the documentation for custom chart authoring, including best practices and API usage.

Key changes:

New blog entry and content:

  • Added a draft blog post, making-better-custom-charts.js, which discusses the evolution of Semiotic's custom chart surface, the scene-node/overlay contract, domain-driven layouts (with a Kafka Streams example), and the new GoFish IR interpreter that can execute foreign chart grammars. The post includes a live demo and detailed explanations of when and how to use custom charts.
  • Registered the new blog entry in entries-meta.js and included it in the blog entry list for drafts and previews. [1] [2] [3]

Navigation and documentation updates:

  • Added "Experimental GoFish Adapter" to the navigation menu, linking to /features/gofish-layouts, and registered the new route and page in the app. [1] [2] [3]

Custom chart documentation enhancements:

  • Expanded the "Custom Charts" documentation page with new sections on recipe authoring contracts, push semantics, and network diagrams. These sections provide guidance on scene node vs. overlay responsibilities, tooltip construction, and when to use custom layouts versus built-in charts. [1] [2]

Experimental features and API exposure:

  • Exposed and documented the use of buildTooltipEntries from semiotic/recipes for consistent tooltip payloads in custom charts.

These changes collectively improve the documentation and developer experience for advanced chart customization and experimental grammar interpretation in Semiotic.

Introduce an experimental GoFish Frontend IR adapter and supporting UI/docs. Adds a new GoFishLayouts feature page, a blog draft (Making Better Custom Charts), nav entry, and route; links Custom Charts docs to the new page and documents recipe authoring, push semantics, and network diagrams. Implements adapter/runtime pieces under src/components/recipes (gofish interpreter, lambdas, examples, tests), exposes experimental APIs in semiotic-experimental, and updates semiotic-recipes usage. Adds integration tests and example pages for custom layout behavior, diagnostic helpers, and multiple stream/pipeline test updates. Also updates package/scripts and API surface docs to reflect the new experimental surface.
"Every charting library hits the wall where the catalog runs out. This is about what's on the other side of that wall in Semiotic — a custom-layout surface principled enough to host a domain pipeline's lineage DAG and to interpret another library's serialized grammar, escape hatches and all.",
}

const card = {

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR introduces an experimental GoFish Frontend IR → Semiotic custom-layout adapter (exposed via semiotic/experimental) and a supporting documentation/demo surface, while also tightening core streaming/custom-layout behavior (responsive alignment, diagnostics, staleness semantics, and canvas alpha handling).

Changes:

  • Add semiotic/experimental entry point plus GoFish IR adapter/runtime pieces (IR types, example fixtures, lambda registry, tests).
  • Improve streaming/custom-layout runtime correctness: recompute scenes on responsive resizes during transitions, warn on overlay-only/null-datum custom layouts, refresh staleness clock on update()/remove(), and fix point renderer alpha composition.
  • Add docs + integration coverage: new GoFish feature page/route/nav, expanded Custom Charts docs, blog draft, and a Playwright regression suite for overlay alignment.

Reviewed changes

Copilot reviewed 45 out of 45 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
src/components/stream/StreamXYFrame.tsx Re-solves scene on responsive size changes mid-transition; keeps overlays aligned; updates dirty/annotation rerender logic
src/components/stream/StreamOrdinalFrame.tsx Mirrors XY resize/transition scene re-solve and state update behavior for ordinal streaming
src/components/stream/renderers/pointCanvasRenderer.ts Fixes globalAlpha handling to multiply node opacity into any pre-existing chart alpha (e.g. staleness dim)
src/components/stream/renderers/pointCanvasRenderer.test.ts Updates and expands tests to validate alpha multiplication and save/restore behavior
src/components/stream/PipelineStore.ts Adds custom-layout diagnostics warnings; refreshes staleness clock on remove()/update()
src/components/stream/PipelineStore.customLayout.test.ts Adds console warning coverage for custom layout diagnostics
src/components/stream/PipelineStore.cache.test.ts Adds tests ensuring update()/remove() refresh lastIngestTime
src/components/stream/OrdinalPipelineStore.ts Adds custom-layout diagnostics warnings; refreshes staleness clock on remove()/update()
src/components/stream/OrdinalPipelineStore.test.ts Adds tests ensuring update()/remove() refresh lastIngestTime
src/components/stream/OrdinalPipelineStore.customLayout.test.ts Adds console warning coverage for ordinal custom layout diagnostics
src/components/stream/NetworkPipelineStore.ts Adds custom-layout diagnostics warnings; refreshes staleness clock on node/edge updates/removals
src/components/stream/NetworkPipelineStore.customLayout.test.ts Adds console warning coverage for network custom layout diagnostics
src/components/stream/customLayoutDiagnostics.ts New dev-only diagnostics helper for overlay-only / null-datum custom layouts
src/components/semiotic-recipes.ts Exposes custom tooltip helpers from semiotic/recipes
src/components/semiotic-experimental.ts New experimental entry point exporting GoFish adapter APIs and example IR docs
src/components/recipes/gofishLambdas.ts Lambda registry + built-in derives (e.g. boba/bottle geometry) for GoFish IR escape hatches
src/components/recipes/gofishIRExamples.ts Canonical IR example documents used by docs/demo and tests
src/components/recipes/gofishIR.ts GoFish Frontend IR adapter (unstable_fromGofishIR) + IR type subset + family routing
src/components/recipes/gofishIR.test.ts Interpreter/adapter behavior tests, including routing and example output sanity checks
src/components/recipes/gofishBoba.tsx Ordinal custom layout for boba glyph rendering (scene-node + overlay split)
src/components/recipes/gofish.test.ts Tests for GoFish-style recipe layouts and network/diagram output
src/components/recipes/customTooltip.ts New tooltip datum extraction + entry building/formatting helpers for custom charts
src/components/recipes/customTooltip.test.ts Unit tests for tooltip helpers
src/components/charts/shared/useCustomChartSetup.ts Widens emptyContent typing to allow false (suppress empty UI)
src/components/charts/shared/useChartSetup.ts Widens emptyContent typing to allow false (suppress empty UI)
scripts/sync-bundle-sizes.mjs Excludes ./experimental from bundle-size table/gate inputs
scripts/prerender.mjs Adds prerender metadata for the new GoFish feature route
scripts/generate-api-surface.mjs Notes intentional omission of experimental entrypoint from stable API snapshots
scripts/check-context7.mjs Ignores experimental subpath in Context7 subpath drift checks
scripts/build.mjs Builds semiotic-experimental declarations and bundle artifacts
package.json Adds ./experimental export + workspace alias + example-serve route for custom-layout tests
integration-tests/index.html Adds navigation entry for custom layout regression tests
integration-tests/custom-layout.spec.ts New Playwright spec to ensure custom-layout overlays stay aligned on resize/transition
integration-tests/custom-layout-examples/index.js Fixture page rendering a responsive custom layout used by Playwright regression
integration-tests/custom-layout-examples/index.html HTML harness for the custom layout regression fixture
etc/api-surface/semiotic-recipes.api.md Updates semiotic/recipes API surface to include tooltip helpers
docs/src/pages/features/GoFishLayoutsPage.js New docs feature page showcasing IR-driven charts + streaming + tooltip helpers
docs/src/pages/features/CustomChartsPage.js Adds sections on recipe contracts, push semantics, network diagrams; links GoFish page
docs/src/components/navData.js Adds nav item to the GoFish adapter feature page
docs/src/blog/entries/making-better-custom-charts.js Adds draft blog entry describing custom charts + GoFish IR interpreter
docs/src/blog/entries.js Registers the new blog entry
docs/src/blog/entries-meta.js Registers the new blog entry metadata for previews/sync checks
docs/src/App.js Adds route for /features/gofish-layouts

Comment on lines +1304 to +1308
// If a prop/layout/size change arrives while a transition is active,
// computeScene is intentionally deferred. Keep the dirty flag set so
// the next non-transition frame applies the new responsive dimensions
// instead of leaving canvas scene nodes and SVG overlays out of sync.
dirtyRef.current = wasDirty && isTransitioning && !computedSceneThisFrame
emeeks added 2 commits June 17, 2026 19:44
Update docs to import experimental utilities from the local source so the documentation and examples use the current local implementation. Changed imports in docs/src/blog/entries/making-better-custom-charts.js and docs/src/pages/features/GoFishLayoutsPage.js to point to ../../../../src/components/semiotic-experimental instead of the published package.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

Copilot code review Copilot Copilot left review comments

+1 more reviewer

@github-code-quality github-code-quality[bot] github-code-quality[bot] left review comments

Reviewers whose approvals may not affect merge requirements

At least 1 approving review is required to merge this pull request.

Assignees

No one assigned

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

2 participants

AltStyle によって変換されたページ (->オリジナル) /