Skip to content

epic: rendering pipeline — themes, icons, rich labels (portable + rich tiers) #4

Description

@lex00

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 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.

Children

Also shipped under this epic (not original children)

  • layout: consume chant's size-aware layout; retire the fitScale band-aid #16Size-aware layout ✅ (PR#15) — pinhole feeds card sizes to chant; fitScale retired. Drove the chant-side redesign (chant#509 / @intentius/chant@0.12.0: node sizes as input + dagre engine, no native dot dependency).
  • Cards & interaction (PR#17) — icon-forward cards, --icon density mode, centered popover, edge rollovers + edge-click relationship inspector.
  • Salience / containment view (PR#20) — roles (place/plumbing), containment-primary nesting, --focus app|network|security, topology-inferred incidental, implied composite edges, row-packed layout, app↔network drill-down.

Open follow-ups

Related (not children)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions