Skip to content

Commit c4e266b

Browse files
authored
Merge pull request #69 from new-sankaku/claude/fix-canvas-page-switching-gm4t3
Add cross-page generation task tracking and offscreen canvas processing
2 parents 6a3b44f + 355b999 commit c4e266b

File tree

7 files changed

+443
-29
lines changed

7 files changed

+443
-29
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,3 +167,4 @@ package-lock.json
167167

168168
# Claude Code temp files
169169
tmpclaude-*
170+
test_offscreen.html

css/ui/bottom-bar.css

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,4 +192,22 @@ color:#00ffff;
192192
border-radius: 4px;
193193
font-size: 12px;
194194
z-index: 1;
195+
}
196+
197+
@keyframes btm-pulse-glow {
198+
0% {
199+
box-shadow: 0 0 5px #00ffff, 0 0 10px #00ffff;
200+
}
201+
50% {
202+
box-shadow: 0 0 15px #00ffff, 0 0 25px #00ffff, 0 0 35px #00ffff;
203+
}
204+
100% {
205+
box-shadow: 0 0 5px #00ffff, 0 0 10px #00ffff;
206+
}
207+
}
208+
209+
.btm-generation-complete {
210+
animation: btm-pulse-glow 0.5s ease-in-out 3;
211+
border: 2px solid #00ffff;
212+
border-radius: 4px;
195213
}

index.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2077,6 +2077,7 @@ <h2 data-i18n="shortcutTitle">Keyboard Shortcuts</h2>
20772077
<script src="js/ai/role/ai-roles.js?v=7.2" defer></script>
20782078
<script src="js/ai/queue/spinner.js?v=7.2" defer></script>
20792079
<script src="js/ai/queue/task-queue.js?v=7.2" defer></script>
2080+
<script src="js/ai/queue/generation-task-manager.js?v=7.2" defer></script>
20802081
<script src="js/ai/sdwebui/sdwebui-settings.js?v=7.2" defer></script>
20812082
<script src="js/ai/sdwebui/sdwebui-multi-call-api.js?v=7.2" defer></script>
20822083
<script src="js/ai/sdwebui/sdwebui-single-call-api.js?v=7.2" defer></script>

js/ai/comfyui/comfyui-management.js

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,27 @@ requestData["uploadFileName"]=uploadFilename;
158158

159159
var workflow=comfyuiReplacePlaceholders(selectedWorkflow,requestData,Type);
160160

161+
var taskId=generateTaskId();
162+
var layerType='unknown';
163+
var targetLayerGuid=null;
164+
if(isPanel(layer)){
165+
layerType='panel';
166+
targetLayerGuid=getGUID(layer);
167+
}else if(layer.clipPath){
168+
layerType='clipPath';
169+
targetLayerGuid=layer.relatedPoly?getGUID(layer.relatedPoly):getGUID(layer);
170+
}else{
171+
layerType='standalone';
172+
}
173+
var center=calculateCenter(layer);
174+
await registerGenerationTask(taskId,{
175+
layerGuid:getGUID(layer),
176+
layerType:layerType,
177+
centerX:center.centerX,
178+
centerY:center.centerY,
179+
targetLayerGuid:targetLayerGuid
180+
});
181+
161182
return comfyuiQueue.add(async ()=>{
162183
const result=await comfyui_put_queue_v2(workflow);
163184
if (!result||result.error) return result;
@@ -173,7 +194,13 @@ if (result&&result.error) {
173194
createToastError("Generation Error",result.message);
174195
throw new Error(result.message);
175196
} else if (result) {
176-
197+
if(isPageChanged(taskId)){
198+
var applied=await applyGeneratedImageToOriginalPage(taskId,result);
199+
if(applied){
200+
return;
201+
}
202+
}
203+
removeGenerationTask(taskId);
177204
if(isPanel(layer)){
178205
var center=calculateCenter(layer);
179206
putImageInFrame(result,center.centerX,center.centerY,false,false,true,layer);
@@ -193,6 +220,7 @@ throw new Error("Unexpected error: No result returned from comfyui_put_queue_v2"
193220
}
194221
})
195222
.catch((error)=>{
223+
removeGenerationTask(taskId);
196224
let help=getText("comfyUI_workflowErrorHelp");
197225
createToastError("Generation Error",[error.message,help],8000);
198226
comfyuiLogger.error("Error:",error);

0 commit comments

Comments
 (0)