fix: preserve grouped control_after_generate modes

This commit is contained in:
dante01yoon
2026-04-12 08:39:55 +09:00
parent 4b35c984fb
commit db43803e3b
2 changed files with 73 additions and 2 deletions

View File

@@ -0,0 +1,68 @@
import { describe, expect, it, vi } from 'vitest'
import type { GroupNodeWorkflowData } from '@/lib/litegraph/src/LGraph'
const mockRegisterExtension = vi.hoisted(() => vi.fn())
vi.mock('@/scripts/app', () => ({
app: {
registerExtension: mockRegisterExtension
}
}))
import { GroupNodeConfig } from '@/extensions/core/groupNode'
const createGroupNodeConfig = () =>
new GroupNodeConfig('Test Group', {
external: [],
links: [],
nodes: []
} satisfies GroupNodeWorkflowData)
describe('GroupNodeConfig.getInputConfig', () => {
it('does not infer control_after_generate from seed-like input names', () => {
const groupNodeConfig = createGroupNodeConfig()
const node: Parameters<GroupNodeConfig['getInputConfig']>[0] = {
index: 0,
type: 'KSampler',
inputs: [{ name: 'seed' }]
}
const config: Parameters<GroupNodeConfig['getInputConfig']>[3] = [
'INT',
{ min: 0 }
]
const result = groupNodeConfig.getInputConfig(node, 'seed', {}, config)
expect(result.config).toEqual(['INT', { min: 0 }])
})
it('preserves explicit control_after_generate modes for grouped inputs', () => {
const groupNodeConfig = createGroupNodeConfig()
const node: Parameters<GroupNodeConfig['getInputConfig']>[0] = {
index: 0,
type: 'KSampler',
inputs: [{ name: 'seed' }]
}
const config: Parameters<GroupNodeConfig['getInputConfig']>[3] = [
'INT',
{ control_after_generate: 'increment' }
]
const result = groupNodeConfig.getInputConfig(
node,
'seed',
{ seed: 1 },
config
)
expect(result.name).toBe('KSampler seed')
expect(result.config).toEqual([
'INT',
{
control_after_generate: 'increment',
control_prefix: 'KSampler'
}
])
})
})

View File

@@ -550,8 +550,11 @@ export class GroupNodeConfig {
'control_after_generate' in configOptions &&
configOptions.control_after_generate
) {
if (!extra) extra = {}
extra.control_after_generate = `${prefix}control_after_generate`
const controlPrefix = prefix.trimEnd()
if (controlPrefix) {
if (!extra) extra = {}
extra.control_prefix = controlPrefix
}
}
if (config[0] === 'IMAGEUPLOAD') {
if (!extra) extra = {}