Commit Graph

14 Commits

Author SHA1 Message Date
root 1a1c0a6544 fix(image): add response-header timeout and idempotent retry
Give the image client a configurable ResponseHeaderTimeout (default 4m,
capped at the overall timeout) so a stalled upstream fails fast, and
retry such timeouts when an idempotency key is set so a slow-but-safe
request can recover instead of terminating. Raise the Next.js API proxy
maxDuration to 1200s to accommodate long generations.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-08 10:56:42 +08:00
root 222e5a0219 refactor(ui): focus the product on image generation only
Drop the disabled video/3D model tabs from the composer and home model
picker, reword storyboard/campaign copy away from motion/video toward
static campaign frames, ease the home prompt editor font sizing, and
update the deterministic fallback message to describe image generation
and editing instead of "video not yet supported".

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-08 10:56:14 +08:00
root d5c5470c3c feat(timeline): download generated images from a hover control
Render generated artifacts with a native <img> at their true aspect
ratio instead of a background-image fill, and add a hover/focus download
button that fetches the blob (falling back to a direct link) and saves
it with a sanitized, extension-aware filename.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-08 10:56:04 +08:00
root a549c7b14b refactor(i18n): extract inline dictionaries into locale JSON files
Move the large in-code zh-CN/en-US dictionaries out of i18n.tsx and
import them from locales/*.json, shrinking the module and making
translations easier to edit.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-08 10:55:56 +08:00
root ef45606a24 feat(home): animated typewriter placeholder for the prompt composer
Cycle through localized example prompts with a typing/deleting animation
in the home composer placeholder, start the field empty instead of with
a default prompt, and style the home editor with larger prompt text.

Also rebrand the device-management copy from Lovart to Moteva.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-08 09:00:20 +08:00
root 3c5006e2f3 feat(composer): carry reference image names and submit on Enter
Propagate an optional imageName through the agent content pipeline
(frontend types → API → domain → prompt building) so reference images
render with their name instead of a bare "image" label.

Also switch PromptComposer to submit on plain Enter (Shift+Enter for
newline, IME-safe) and add a submitDisabled guard wired from the canvas
and home composers.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-08 08:41:15 +08:00
root 398dec422d fix(references): make image thumbnails drag-safe with delayed hover preview
Render reference thumbnails and generated images as background-image spans
instead of <img> so they no longer produce drag ghosts or interfere with
text selection. Open the hover preview after a short delay, dismiss it on
text selection, pointer-down, and drag start, and open the full image via
click instead of an anchor.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-08 02:18:06 +08:00
root f23c847e13 fix(agent-threads): hide prompt reference directives in thread titles
Add a shared visiblePromptText helper and strip reference tokens,
image-generator directives, and model-selection lines from agent thread
summaries and the assistant panel header, so titles show the user's
actual prompt instead of internal directives. Covered by a server test.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-08 01:55:08 +08:00
root 2ede253b39 feat(clipboard): paste images and text from the system clipboard
Replace the internal single-node clipboard with real clipboard paste:
the prompt composer uploads pasted image files as references, and the
canvas pastes clipboard images as nodes and clipboard text as text
nodes anchored at the pointer, reading from the async clipboard API on
the context-menu paste action.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-08 01:54:56 +08:00
root 07aa33d30e feat(image): preserve transparency for alpha images end to end
Skip WebP re-encoding for PNG/AVIF/BMP uploads and any bitmap that
actually contains alpha, tag transparency-capable canvas uploads with
the transparent-image tone, and detect alpha in merged layers so the
composed node keeps a transparent tone.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-08 01:54:32 +08:00
root bd327e8564 feat(canvas): add helpers to detect transparent clipboard nodes
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-08 01:23:57 +08:00
root 2f5291a0f9 feat(image): pass reference images to GPT image model for edits
Server: forward canvas/reference images to the image model so extract,
continue, and edit requests stay faithful to the source product.
- Add ImageRequestOptions.Images and route requests with inputs to the
  /v1/images/edits endpoint, via multipart upload (default) or JSON
  image_url payload, selectable through Agent.Image.InputImageTransport.
- Extract reference URLs from prompt directives, inline @image tokens,
  and chat message image/mask contents; fold them into the idempotency
  key and prepend a reference-fidelity instruction to the prompt.

Frontend:
- Shrink CanvasToast to a compact top pill.
- Paste an internal transparent clipboard node instead of re-uploading
  when it matches the clipboard image.
- Keep agent-project polling alive on stream error while streaming.
2026-07-08 01:19:20 +08:00
root bb7fce9171 fix(PromptComposer): clear empty editor fillers before chip insertion
Insert a helper that strips filler-only editor content (stray <br> and
caret-anchor text nodes) before inserting reference/annotation chips and
on paste, so chips no longer land after an empty line. Also anchor the
caret after each inserted/updated chip and reorder focus/insert so the
caret reliably follows the new chip.
2026-07-07 23:19:49 +08:00
root 44406b72db Initial commit: img-infinite-canvas AI design workbench MVP
Moteva-style AI design workbench replica. Home prompt creates a project;
the project page provides an infinite canvas with node drag, zoom/pan,
a design chat panel, history replay, image asset upload, and project
save/regenerate.

- Backend: go-zero, DDD layering, sqlc/pgx, optional PostgreSQL; memory
  or Redis cache; asynq job queue; MinIO/S3/R2/OSS object storage;
  sky-valley/pi agent runtime adapter.
- Frontend: Next.js App Router + Vite artifact build, TypeScript, i18n,
  shadcn/ui components, auth (OTP/Turnstile/Google/WeChat).
- Deploy: Docker Compose and k3s manifests.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-07 23:15:37 +08:00