You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Repo: github.com/INTENTIUS/pinhole, TypeScript. Build/verify: npm ci && npm run tsc && npm test && npm run build. Flow: feature branch → PR → CI green → squash-merge. Renders chant projects by shelling chant graph --format ir|layout.
The pipeline is essentially built. Themes, icons, labels, the interactive artifact, size-aware layout, the full animation channel, and a salience/containment view with intent focus have all landed. The remaining child is #14 (the NL agent loop). Polish + the containment-view refinements (#21, split into #24–#28) have all shipped.
Goal
Build pinhole's painter as a layered, themeable pipeline over chant's graph IR. The pieces share the Theme tokens and one cross-cutting principle, so they're tracked together.
First principle: two render tiers, one scene graph
Portable tier (.svg / PNG / <img> / GitHub)
Rich tier (inlined in the HTML artifact, browser)
color
baked theme (concrete colors)
CSS-var live theming
labels
native <text>/<tspan>, hand-laid bullets/rows
<foreignObject> HTML — lists, wrapping, badges, tables
icons
monochrome glyphs (themeable)
+ full-color brand packs
interactivity
none
hover / inspect / links
The painter renders one scene graph to both tiers, degrading gracefully. The portable export must never depend on <foreignObject> or page CSS.
Status
Repo: github.com/INTENTIUS/pinhole, TypeScript. Build/verify:
npm ci && npm run tsc && npm test && npm run build. Flow: feature branch → PR → CI green → squash-merge. Renders chant projects by shellingchant graph --format ir|layout.The pipeline is essentially built. Themes, icons, labels, the interactive artifact, size-aware layout, the full animation channel, and a salience/containment view with intent focus have all landed. The remaining child is #14 (the NL agent loop). Polish + the containment-view refinements (#21, split into #24–#28) have all shipped.
Goal
Build pinhole's painter as a layered, themeable pipeline over chant's graph IR. The pieces share the
Themetokens and one cross-cutting principle, so they're tracked together.First principle: two render tiers, one scene graph
<img>/ GitHub)<text>/<tspan>, hand-laid bullets/rows<foreignObject>HTML — lists, wrapping, badges, tablesThe painter renders one scene graph to both tiers, degrading gracefully. The portable export must never depend on
<foreignObject>or page CSS.Children
Also shipped under this epic (not original children)
fitScaleretired. Drove the chant-side redesign (chant#509 /@intentius/chant@0.12.0: node sizes as input + dagre engine, no nativedotdependency).--icondensity mode, centered popover, edge rollovers + edge-click relationship inspector.--focus app|network|security, topology-inferred incidental, implied composite edges, row-packed layout, app↔network drill-down.Open follow-ups
--focus securityview, view polish, and the salience presentation pack + manual hint channel. The containment view is now mature.Related (not children)