Skip to content

Feat/cinematic export polish#45

Merged
Vrun-design merged 9 commits intomainfrom
feat/cinematic-export-polish
Apr 11, 2026
Merged

Feat/cinematic export polish#45
Vrun-design merged 9 commits intomainfrom
feat/cinematic-export-polish

Conversation

@Vrun-design
Copy link
Copy Markdown
Owner

No description provided.

Vrun-design and others added 9 commits April 2, 2026 13:57
Icon enrichment:
- Raise import threshold to 0.92; add isTrustedImportMatch gate for substring matches
- Skip enrichment entirely for stateDiagram, sequence, classDiagram, erDiagram, journey
- For flowchart: only enrich on specific technology proper nouns, not generic English words
- No Lucide fallback in import mode — generic nodes get no icon rather than a random one
- Add CNCF coverage: Istio, Cilium, Linkerd, Helm, ArgoCD, FluxCD, Dapr, Prometheus,
  Jaeger, OpenTelemetry, Grafana, Datadog, Sentry, Vault, Keycloak, etcd, Harbor, Falco
- Add Azure coverage: Cosmos DB, Service Bus, Event Hubs, AKS, Functions, OpenAI, Monitor,
  Key Vault, Container Apps, API Management, Cognitive Services, DevOps, Front Door

Layout:
- Auto-select algorithm per graph topology: cyclic → force/stress, wide fan-out → mrtree,
  hierarchical → layered; removes hardcoded 'layered' from import path
- ELK compound layout for groups (elk.hierarchyHandling: INCLUDE_CHILDREN)
- Normalize ELK absolute→relative coords for children inside sections
- Dynamic layer ordering for architecture diagrams from subgraph labels
- Spacing by node count: ≤10 → loose, ≤25 → normal, >25 → compact
- Stagger parallel edge labels across 0.3–0.7 range to prevent midpoint pile-up
- Self-loop safety in applyElkHandles
- Unified handleSideFromVector helper shared between elkLayout and smartEdgeRouting

Parser:
- Ampersand edge expansion: A & B --> C & D produces all source×target pairs
- Subgraph end guard: pop only when parentStack is non-empty
- context-aware arrow detection: skips arrows inside quotes, pipes, brackets
- normalizeEdgeLabels: collapse extended arrows, inline-label forms

Plugin quality:
- stateDiagram: note syntax, [*] initial/final states, fork/join
- sequence: fragment (alt/loop/opt/par) and note nodes rendered visually
- journey: score-based color coding
- classDiagram: generics <T>, visibility modifiers, cardinality
- erDiagram: PK/FK/UK field type and constraint parsing
- architecture: dynamic semantic layer order

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Normalize provider icon metadata (archIconPackId, archIconShapeId, assetProvider)
  across import, editing, bulk ops, templates, and connect menu suggestions
- Shared IconPicker for all node types including icon-backed asset nodes
- Update NodeProperties, BulkNodeProperties, ArchitectureNodeSection to use
  unified icon editing path
- Fix edge path utilities and custom edge routing
- Update ConnectMenu suggestions to use normalized provider icon data
- nodeParent helpers, types, domainLibrary, templateFactories polish
- mermaidBuilder and mermaidParser test coverage additions

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- NVIDIA default: llama-4-scout → llama-4-maverick-17b-128e-instruct
- Mistral default: mistral-medium-latest → mistral-large-latest
- OpenRouter default: gemini-2.5-flash → gemini-2.5-pro
- README: icon count 1,100+ → 1,600+ (actual SVG count)
- README: mermaid types 7 → 8 (flowchart, architecture, stateDiagram,
  classDiagram, erDiagram, sequence, mindmap, journey)
- README: cinematic export format WebM/MP4 (not MP4/GIF — GIF not yet
  surfaced as a user export option)
- README: Groq/NVIDIA model IDs corrected
- README: OpenRouter 100+ → 300+ models

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
ELK does not cascade elk.direction from parent to child compound nodes —
each compound node must set it explicitly or ELK falls back to its own
default (DOWN), causing subgraphs to always render vertically regardless
of the root graph direction setting.

buildElkNode now accepts rootElkDirection and sets elk.direction on every
compound node's layoutOptions. Subgraphs with internal edges inherit the
root direction (DOWN for TB = sources on rank 1, targets on rank 2, side
by side). Subgraphs with no internal edges (pure parallel siblings) still
override to RIGHT.

This fixes the main visual quality gap vs Mermaid.js — imported flowchart
subgraphs now render wide and horizontal instead of stacking into tall
vertical columns.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@Vrun-design Vrun-design merged commit 03f0b5c into main Apr 11, 2026
4 checks passed
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