From 9ee693c6a0623e7822643358ff307292440602e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AF=92=E5=AF=92?= <2596194220@qq.com> Date: Wed, 24 Jun 2026 00:14:45 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=BC=BA=E7=94=BB=E5=B8=83=E7=94=9F?= =?UTF-8?q?=E6=88=90=E4=B8=8E=E8=B5=84=E4=BA=A7=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.example | 2 + data/imagegen.sqlite-shm | Bin 32768 -> 32768 bytes data/imagegen.sqlite-wal | Bin 4120032 -> 4120032 bytes package.json | 1 + pnpm-lock.yaml | 202 ++- pnpm-workspace.yaml | 18 + src/app/api/canvas/image-file/route.ts | 86 -- src/app/api/canvas/models/route.ts | 99 ++ src/app/api/canvas/settings/route.ts | 25 + src/app/api/history/[id]/route.ts | 41 + src/app/api/history/route.ts | 17 +- src/app/page.tsx | 7 +- .../canvas/canvas-editor-client.tsx | 1265 +++++++++++++++-- .../canvas/canvas-node-inspector.tsx | 525 +++++-- src/components/canvas/canvas-node.tsx | 404 +++++- .../canvas/canvas-projects-client.tsx | 49 +- src/components/canvas/canvas-toolbar.tsx | 839 ++++++----- src/components/direct/asset-manager.tsx | 623 ++++++++ src/components/direct/direct-studio.tsx | 226 ++- src/components/direct/home-shell.tsx | 21 +- src/components/ui/alert-dialog.tsx | 130 ++ src/components/ui/button.tsx | 2 +- src/lib/canvas/generation.ts | 27 + src/lib/canvas/node-factory.ts | 3 + src/lib/canvas/settings.ts | 215 +++ src/lib/canvas/types.ts | 18 +- src/lib/image-workflow.ts | 3 + src/lib/server/db.ts | 10 + .../repositories/app-settings-repository.ts | 23 + .../server/repositories/history-repository.ts | 63 +- src/lib/server/services/image-job-service.ts | 204 ++- src/lib/server/storage/image-file-storage.ts | 4 +- 32 files changed, 4307 insertions(+), 845 deletions(-) create mode 100644 .env.example delete mode 100644 src/app/api/canvas/image-file/route.ts create mode 100644 src/app/api/canvas/models/route.ts create mode 100644 src/app/api/canvas/settings/route.ts create mode 100644 src/app/api/history/[id]/route.ts create mode 100644 src/components/direct/asset-manager.tsx create mode 100644 src/components/ui/alert-dialog.tsx create mode 100644 src/lib/canvas/settings.ts create mode 100644 src/lib/server/repositories/app-settings-repository.ts diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..433ceb8 --- /dev/null +++ b/.env.example @@ -0,0 +1,2 @@ +OPENAI_API_KEY=sk-your-key +OPENAI_BASE_URL=https://api.kkrich.ltd/v1 diff --git a/data/imagegen.sqlite-shm b/data/imagegen.sqlite-shm index e4a96c2d2fbcc98bcb54f2de94cf796b31a20382..bcb9cb29aafd91954b836ebda063c95df8500d35 100644 GIT binary patch literal 32768 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 RfD>>6PQVE`fpdw#e*nuG;ROHy delta 205 zcmZo@U}|V!s+V}A%K!p}K+MR%AP@nhxq&#KGbebRG*_GMjm8qA{KmDOqP6NWyDXSU zRSz@@3_#}oM*>h`CI*I$jp>Y=Q}||?Y%bud;hFr;iEncf-#b=jM+TqGiG1HVCVvU6 g1B%qKPW}+i17v()o%|+N0HlVA*@?jys76>G0QapvPXGV_ diff --git a/data/imagegen.sqlite-wal b/data/imagegen.sqlite-wal index a0cfc121549f2e5687013797fe9b70171fcfa839..9b106921c0af7b96193cb929b8e93cce8e13273e 100644 GIT binary patch literal 4120032 zcmeFa3wT^tc`hu+i9>U-X@PRh!AwgN9=x{K{h~vlK#~$l(g5+H?6c=wvErw21HTqY1%CJ1C1q~<)(!xoh9g}d6c2;a!RZ8M?{kpNr#7K5oCG(}h(r|gikC#@JM&RanY4GYBOXUnU zi#+u-S1GZ|3L^77BS|cCqCM5hXEKecfxoJ591Tx0I#$^*S`D|$)#0$AwqxhieNP;I zbUSPtt&Eqe^|w@i7la9>BG@G*CF~t_y#6k@jVOE>O086iDjD|ngXOF`R2mdgz#mwn zm^D^&4u3J^%j<@qFkHw;X=dRLqow0UuPSZu)i{f*aVT4J&jw3ZPu~3$yY_-K9=R?a zC*=+CIzPC2wNK$q8R1DHv>>})u=E9MUjNvyTzKKRT<0d{G9^ByIgu*U#7X!lrOAyI z+Ok;DS$%fg%7|$N<+M^LNlpD-3qd2M;NxU)zlQhG{N&&kV}djIw6)~gO8n@K{n1I5 zP!gw>kt}91(N4R>%Ga$7A3N{+*iD+`xiO67xnOW~b43!FYoh3#XM{uG!8b4NLm