Commit Graph

20 Commits

Author SHA1 Message Date
Julien Calixte
32498d51d1 fix(editor): render the palette above the loop-badge overlay 2026-06-20 10:13:21 +02:00
Julien Calixte
cd276d9d2a feat(editor): add glossary tooltips to the palette 2026-06-20 10:08:30 +02:00
Julien Calixte
e1efa3c823 feat(editor): gloss the selected element in a panel 2026-06-20 10:08:30 +02:00
Julien Calixte
6815b81701 fix(editor): fit the view after loaded nodes are measured 2026-06-20 10:07:59 +02:00
Julien Calixte
5e50b2dfd4 feat(model): add node and link glossary definitions 2026-06-20 10:05:58 +02:00
Julien Calixte
72ef29413a feat(editor): wire autosave and add JSON import/export 2026-06-20 10:02:42 +02:00
Julien Calixte
75ebb39848 feat(editor): add debounced model autosave composable 2026-06-20 10:01:44 +02:00
Julien Calixte
4c55ff9ffa feat(model): add IndexedDB-backed model repository 2026-06-20 10:01:44 +02:00
Julien Calixte
9f71febca0 feat(model): round-trip models as versioned JSON 2026-06-20 10:01:43 +02:00
Julien Calixte
bc90a9bca9 fix(editor): keep loop badges on nodes while dragging
Badge centroids now read Vue Flow's live computedPosition instead of the
store, which commits positions only on drop — so badges no longer lag a
node drag. Centres use real node dimensions, dropping the hard-coded nudge.
2026-06-20 09:42:37 +02:00
Julien Calixte
d3119e8a20 feat(editor): wire the canvas and mount the editor 2026-06-20 09:37:50 +02:00
Julien Calixte
03848ae893 feat(editor): add node, edge, palette, and loop-overlay components 2026-06-20 09:37:42 +02:00
Julien Calixte
0416581799 feat(editor): add shared loop-highlight state 2026-06-20 09:37:32 +02:00
Julien Calixte
0aaa4114d9 feat(store): add model store with snapshot undo/redo and loops 2026-06-20 09:37:32 +02:00
Julien Calixte
6d03d706a0 feat(model): add a gallery of sample models 2026-06-20 09:37:32 +02:00
Julien Calixte
5c3f467a24 feat(model): detect and classify feedback loops
Loops are derived from the wiring, never stored (ADR-0001): a signed
graph (link polarities plus flows' inherent inflow/outflow) is searched
with Tarjan SCC and a capped enumeration, classifying each cycle R or B
by the parity of its negative links. Both the result count and the
search are bounded so detection can never blow the frame budget.
2026-06-20 09:37:26 +02:00
Julien Calixte
fd94a8b7ed feat(model): guard connections to preserve valid structure 2026-06-20 09:37:19 +02:00
Julien Calixte
8fac6f4694 feat(model): project the model into a Vue Flow graph 2026-06-20 09:37:19 +02:00
Julien Calixte
95990b0d1f feat(model): add domain types and model factory 2026-06-20 09:37:18 +02:00
Julien Calixte
68a8c303d9 chore: initial scaffold 2026-06-20 01:28:32 +02:00