mirror of
https://github.com/Dvorinka/Containr.git
synced 2026-10-28 07:41:27 +00:00
feat(templates): visual graph builder
Canvas mode in the template editor (lazy-loaded React Flow): service nodes for web/worker/cron/database, connect handles to set depends_on, per-node inspector (image/repo, engine, port, health check, env, volumes), live validation (dup keys, missing deps, cycles, missing source), and an Apply step that serializes back to the version-2 graph config JSON. - builder-model.ts is pure: config↔canvas round-trip, layered auto-layout, flat-legacy→single-node migration, validation — 16 vitest cases cover all of it - node positions persist under config.canvas (backend ignores unknown config keys, so no schema change) - flat legacy templates open as a single node so nothing is lost on edit Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
This commit is contained in:
1 parent
a6b8397dd8
commit
b7191ad834
5 files changed
+965
-14
No files matched your search
+12
-4
@@ -252,9 +252,12 @@ goroutines; this fixes correctness *and* unlocks the ops surface.
|
||||
- [x] **Graph deploy pipeline** — creates services in dependency order,
|
||||
resolves vars/secrets, triggers builds. `deployTemplateGraph`,
|
||||
`POST /templates/deploy` (inline), `POST /projects/:id/import-compose`.
|
||||
- [ ] **Visual template builder** — canvas mode: drop git/image/db
|
||||
nodes, wire refs, set order, save/publish. Reuses existing canvas
|
||||
primitives (dflow's `templates/compose` is exactly this).
|
||||
- [x] **Visual template builder** — canvas mode in the template editor:
|
||||
web/worker/cron/database nodes, handles wire `depends_on`, inspector
|
||||
edits image/repo/engine/port/env/volumes, live validation, applies
|
||||
back to the version-2 graph JSON. Positions persist under
|
||||
`config.canvas`; flat legacy configs open as a single node.
|
||||
`builder-model.ts` + `TemplateBuilder.tsx`.
|
||||
- [x] **Catalog growth** — seeded graph stacks for n8n, Gitea,
|
||||
Nextcloud, Vaultwarden, Umami, Immich (Plausible already shipped).
|
||||
`TestSeedTemplatesResolveCleanly` keeps every seed parseable,
|
||||
@@ -543,7 +546,12 @@ and wired refs, one click or one CLI call.
|
||||
optional Cloudflare tunnel token → done. Shell redirects signed-in
|
||||
users to `/setup` while `needs_setup`; installs with existing projects
|
||||
auto-complete so nobody gets nagged retroactively.
|
||||
- [ ] **Self-upgrade loop verification**, docs freshness, v1.0.0 release.
|
||||
- [x] **Self-upgrade loop verification** — live-verified: admin
|
||||
`POST /agents/:id/upgrade` → `self_upgrade` command → agent downloads
|
||||
`/api/agents/download/linux-amd64` → sha256 verify → `--version`
|
||||
sanity → atomic rename → result posts → `syscall.Exec` re-exec. Agent
|
||||
ran `v0.0.1-old`, came back `v9.9.9-test`, command row `completed`.
|
||||
- [ ] **Docs freshness, v1.0.0 release.**
|
||||
|
||||
## 11. Deliberately not imported from dflow
|
||||
|
||||
|
||||
Reference in new issue
Block a user