- Pan no longer ghosts/stutters: drop the always-on transform transition
(it interpolated against every mousemove) in favour of will-change layer
promotion; a short transition is pulsed only for button zoom / fit.
- Trackpad zoom is now continuous and cursor-anchored: zoom factor is
exponential in wheel delta (clamped) instead of a fixed 10% per event, so
macOS pinch feels smooth; mouse-wheel deltas are tamed by the same curve.
Two-finger scroll now pans.
- Fit no longer ends up tiny on big diagrams: render flowcharts with
useMaxWidth:false so the SVG's laid-out size equals its viewBox, making the
fit/zoom maths exact (previously the SVG was shrunk responsively *and* again
by fit). Lower the zoom floor so very large diagrams can fit fully.
Add an Optimize side panel that analyses the active flowchart and applies
one-click, reversible source rewrites to make dense graphs readable.
- optimize.ts: pure, label-aware flowchart parser + metrics, a 0-100
readability score, and transforms — ELK layered layout, node/rank
spacing + curved edges, de-emphasising cross-cutting hub edges
(event bus / audit / cost-style fan-ins), duplicate-edge removal,
direction toggle, and a non-destructive focus variant.
- mermaid.ts: register @mermaid-js/layout-elk so `layout: elk` renders.
- OptimizePanel.svelte + Toolbar toggle; panels are mutually exclusive.
- Preview: render the focus variant when a node is spotlighted, with a
clear-focus pill.
- store/Editor: applySource() bumps a revision so programmatic rewrites
re-sync CodeMirror and stay undoable with the editor's history.
- StreamLanguage tokenizer for Mermaid: diagram-type keywords, general
keywords, directions, arrows/links, strings, %% comments, init
directives and YAML frontmatter, with a dark-theme HighlightStyle
- live linter via mermaid.parse: maps parse errors to the right editor
line (accounting for the frontmatter lines mermaid strips), with wavy
underline, gutter marker and message tooltip
- autocomplete: Mermaid keyword/type/direction options plus starter
diagram snippets offered on the first line; bracket closing
- dark-themed completion + diagnostic tooltips
Adds @codemirror/lint, @codemirror/autocomplete and @lezer/highlight.
- CodeMirror 6 editor with a debounced Mermaid 11 preview (zoom, pan,
auto fit-to-view and inline error reporting)
- project start screen with recent projects, sidebar diagram explorer,
toolbar and a Git panel (status, commit, history, branches)
- SVG/PNG export, per-project theme switching, toasts
- rune-based central store orchestrating all backend calls
- view modes (Code / Split / Preview) plus a viewer mode with a
slide-in quick-edit drawer (Cmd/Ctrl+E)
- sqlx/SQLite registry of known projects + user settings (db.rs)
- project create/open with mermix.toml config and slugged paths (project.rs)
- diagram CRUD on .mmd files with frontmatter titles and path-traversal
guards (diagram.rs)
- git2-backed versioning: commit-all, history, branches, checkout,
working-tree status (git_ops.rs)
- Tauri command surface, shared state and unified error type
- headless tests covering project creation, diagram CRUD and branch
isolation (tests.rs)
Standard Tauri layout with a Svelte 5 + TypeScript + Vite frontend and a
Rust backend in src-tauri. Adds build tooling, app/window config,
capabilities, generated icons and the project README.