Add explicit type assertions for RailroadPrimary/RailroadPostfix
subtypes since Langium-generated base interfaces do not include
subtype-specific properties. Also remove the orientation limitation
note from docs since the config option has been removed.
Aligns Cynefin with the radar diagram convention so that the diagram's
internal identity matches the rest of the codebase. Previously cynefin
diverged: the registered detector id and config key were 'cynefin-beta',
which forced bracket-access (DEFAULT_CONFIG['cynefin-beta']) — the only
such case in defaultConfig.ts. Radar by contrast uses id 'radar' / config
key 'radar' with the '-beta' marker living only in the syntax keyword.
Changes:
- Detector id: 'cynefin-beta' -> 'cynefin'
- Config schema key (cynefin-beta -> cynefin) in config.schema.yaml,
defaultConfig.ts, .build/jsonSchema.ts, and the regenerated
config.type.ts
- Example id back to 'cynefin' (matches the registered diagram id)
- Test/spec config-object keys updated (multi-diagram uniqueness spec,
cypress cynefin spec)
- Docs source updates for the config-key references; generated docs
regenerated via pnpm --filter mermaid docs:build
Unchanged: the syntax keyword 'cynefin-beta' remains the trigger token
in the Langium grammar, parser tokenBuilder, detector regex, and all
diagram code examples — exactly mirroring radar-beta.
- Honor `useMaxWidth` config in renderer (match radar reference pattern)
- Rename config/detector/schema key to `cynefin-beta` to match keyword
and align with the `wardley-beta` convention
- Simplify transition control-point math into a single coordinate space
- Document the expectation that quadrant item counts stay small
- Add smart label positioning based on node layer relative to central node
- Add outlined label style (labelStyle: 'outlined') as new default
- Add nodeColors config option for custom node color mapping
- Add configurable nodeWidth and nodePadding options
- Update styles.js with new CSS for outlined labels
- Fix YAML frontmatter indentation in demos/sankey.html
- Add Cypress tests for new features
BREAKING CHANGE: labelStyle now defaults to 'outlined' instead of 'default'
Add a Cynefin framework diagram type for categorizing problems by
complexity domain. Five fixed domains (Complex, Complicated, Clear,
Chaotic, Confusion) with wavy organic boundaries, items placed within
domains, and transition arrows between them.
Features:
- Langium grammar with domain blocks, items, and transitions
- Wavy SVG bezier boundaries (deterministic via seeded PRNG)
- The "cliff" between Clear and Chaotic
- Domain labels with decision model and practice type subtitles
- Item badges stacked within each domain
- Curved transition arrows with optional labels
- Full theme integration (5 themes with domain-specific colors)
- Schema-driven config (width, height, padding, boundaryAmplitude)
- Accessibility (ARIA roles, labels)
Ref: mermaid-js/mermaid#7534
Changes requested by @sidharthv96:
- Add version tag to documentation (v<MERMAID_RELEASE_VERSION>+)
- Rename diagram type from 'wardley' to 'wardley-beta' for beta release
- Update all examples to use 'wardley-beta' syntax
Updated files:
- wardleyDetector.ts: Changed id and detector regex to 'wardley-beta'
- wardleyDb.ts: Updated config access to use 'wardley-beta'
- wardleyRenderer.ts: Updated config access to use 'wardley-beta'
- config.schema.yaml: Renamed config key from 'wardley' to 'wardley-beta'
- wardley.md: Added version tag and updated all code examples
- wardley.ts: Updated 4 examples to use 'wardley-beta'
- wardley.spec.js: Updated 6 E2E tests to use 'wardley-beta'
- demos/wardley.html: Updated 6 demo examples to use 'wardley-beta'
- Changeset: Updated description to indicate beta status
Note: Parser refactoring to use Jison/Langium will be addressed in a follow-up commit.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>