Commit Graph
7 Commits
Author SHA1 Message Date
dokploy-bot 910651ddba feat(canvas): manual node linking + no-model hint + render-hardening
- drag from a node's side port onto another node to create an edge
  (dashed live preview, dedupe, self-link rejected); click an edge to
  select (highlighted), Delete removes it, Ctrl+Z restores — all in
  undo history and autosave
- generate panel shows an explicit hint when the site has no image
  models instead of an empty dropdown
- render hardening: viewport-culling size now has a hard floor
  (max(stageSize, window, 1600x900)) so a delayed/degenerate
  ResizeObserver reading can never cull nodes out of the DOM; stage
  listeners attach with retry + rAF self-healing measure; pointer
  capture wrapped in try/catch for synthetic pointers
2026-09-20 00:06:08 +08:00
dokploy-bot 38367c36ab feat(canvas): localStorage document cache for instant open
- paint from cv:cache:<id> before the network fetch (works offline too),
  then reconcile with the server copy in the background; identical content
  skips the re-apply so undo history and in-flight interaction survive
- cache is written on every successful autosave and cleared on delete;
  quota errors are swallowed (best-effort by design)
2026-09-19 23:10:10 +08:00
dokploy-bot e83da82f3d fix(canvas): E2E-hardened interaction fixes
- Teleport canvas to body: layout <main> z-10 stacking context let the
  fixed site header (z-40) cover the canvas toolbar
- defer setPointerCapture until the 3px drag threshold: immediate capture
  retargets click/dblclick to the stage, which silently broke note editing
- commitNote no longer early-returns on the editing flag (event-ordering
  could drop typed text); sync node.text back to the non-controlled
  contenteditable on undo/redo restores
- contenteditable only while editing: single click used to focus and allow
  raw typing outside edit mode, swallowing Delete-key handling
2026-09-19 22:55:39 +08:00
dokploy-bot 571ee2c801 feat: 无限画布 — infinite canvas with generation integration
Backend:
- canvases table + owner-scoped CRUD under /admin/api/canvas
  (list/create/get/save/delete, 50 docs/user, 4MiB cap, JSON validation)

Frontend:
- /canvas full-screen workspace: DOM+CSS-transform infinite pan/zoom
  (GPU-composited world layer, viewport culling, rAF-batched pointer moves)
- nodes: image (thumb display, natural-size correction), note
  (uncontrolled contenteditable), generation placeholder with edges
- generate on canvas: prompt from panel or selected notes, selected image
  nodes as references, results auto-placed + bezier edges to sources
- multi-canvas management, debounced autosave + keepalive flush,
  snapshot undo/redo (60 steps), marquee/keyboard interactions
2026-09-19 22:38:41 +08:00
dokploy-bot 42208c0753 security: fix rate-limit bypass, payment amount check, stats leak, owner-dir collision, video panic guard
- clientIP: stop trusting client-supplied X-Forwarded-For; use gin ClientIP
  with trusted proxies limited to private docker networks
- payment: verify notify money matches order amount; remove hardcoded
  gateway default, fail loudly when api_base is unset
- stats: public endpoint now serves aggregates only; recent files (owner
  names) moved to admin-only /stats/recent
- auth: reject signups whose username/email-local collides with another
  user's media directory namespace
- v1: recover panics in background video jobs, refund + mark failed
2026-09-19 22:13:08 +08:00
dokploy-bot 34f808e7e3 fix: attach web to default network too (overlay-only endpoint fails) 2026-09-19 15:26:54 +02:00
dokploy-bot be23e9fe77 fix: use quay.io/minio/mc (minio/mc unavailable on Docker Hub) 2026-09-19 14:51:05 +02:00