OlaProis
Joined 9 months ago
Joined 9 months ago
The plan: use %% comments as layout hints. Something like:
%% @pos NodeA 100 200>
Mermaid.js ignores these, so the diagram stays portable. But Ferrite (and anyone using mermaid-rs) could parse them for manual positioning.
You'd be able to drag nodes around in Ferrite, have positions saved to the source, and still share with mermaid.js users (they'd get auto-layout).
If you want to follow progress or have input on the syntax, feel free to open an issue on the repo!
Honestly, this is a gap in the ecosystem. For now, most people either:
- Use draw.io/Excalidraw despite the pain
- Build diagrams programmatically (Diagrams-as-code Python library has good AWS support)
- Just accept text-based flowcharts without icons
If I add custom icon/shape support to Ferrite's Mermaid renderer (v0.3.0+), AWS icons could be a good test case. No promises, but I hear the frustration.
The challenge is Mermaid is declarative — layout is computed, not specified. Some options I'm considering:
1. layout hints/constraints in the syntax,
2. export to SVG then use a proper editor like Excalidraw for repositioning. For now, influencing layout via subgraphs and edge ordering is the best workaround."
3. separate system for that, maybe to be included in the crate, would only work in Ferrite in the start
For sync, I've been thinking about:
- Git-based sync for power users (already have git integration)
- Simple local network sync (mDNS discovery, no cloud required)
- Optional relay server, as you described — small binary for hub-and-spoke
The plain-file approach (no proprietary format) makes this tractable since any sync tool works today (Syncthing, Dropbox, etc.). But a native, frictionless solution would be better.
2. Tool Integration API
This aligns with v0.3.0's direction. The plan is:
- Mermaid crate extraction, establishes the modular pattern
- Editor widget as library, opens up embedding
- Command palette / IPC, could expose operations to external tools
For accessibility specifically, what interfaces work well for you? Shell commands? Named pipes? JSON-RPC? Knowing your workflow would help prioritize.
3. Vaults/Profiles
Good point — workspace settings are currently per-folder (`.ferrite/`), but there's no concept of isolated plugin configurations per vault. Added to the consideration list.
Thanks for the detailed feedback!
A few thoughts:
What might work today: - Sequence diagrams can model service-to-service flows (API calls, auth handoffs)
- Flowcharts with subgraphs can represent VPC boundaries, security groups
- C4-style (context, container, component) is sometimes modeled with flowcharts
What would make it better:
- Custom shapes/icons (AWS service icons)
- Annotations for security boundaries, trust zones
- Data flow direction markers
Alternative you might try now:
D2 (https://d2lang.com) has better icon support and was designed for architecture diagrams. It has an AWS icon pack. Structurizr also does C4 well.
That said, if there's demand for architecture-specific diagrams in Ferrite's Mermaid renderer, I could look at:
1. Custom icon/shape support via external SVGs
2. A dedicated "architecture" diagram type with security-relevant annotations
Would a template or example for modeling security flows in Mermaid's current syntax help as a starting point?
AI Development Workflow: Complete explanation of the process, handover system, how I manage context between sessions
Historical PRDs: The actual Product Requirements Documents used to generate tasks (v0.1.x through v0.3.0)
Task JSON files: How requirements were broken down into implementable tasks via Task Master
Handover templates: The reusable prompts I use to maintain context between AI sessions
Thanks for pushing on transparency, your comment about "open weights vs open source" is a useful framing. The goal is to share enough that someone could reproduce and learn from the approach.