Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
a14ea64
refactor: setting dialog
viva-jinyi Jan 23, 2026
c747132
style: based on BaseModalLayout modified
viva-jinyi Feb 10, 2026
a30a42d
feat: auto-select and scroll to matching nav category on search
viva-jinyi Feb 10, 2026
378e132
Merge branch 'main' into refactor/setting-dialog
viva-jinyi Feb 10, 2026
72c5f07
refactor: apply code review
viva-jinyi Feb 10, 2026
a2514a2
[automated] Update test expectations
invalid-email-address Feb 10, 2026
33de8aa
chore: status badge updated
viva-jinyi Feb 10, 2026
6a219d7
refactor: applied code review
viva-jinyi Feb 10, 2026
816c5aa
refactor: tab style modified
viva-jinyi Feb 10, 2026
442f2d6
fix: preserve active nav category when clearing search via nav click
viva-jinyi Feb 10, 2026
b541266
refactor: applied code review
viva-jinyi Feb 10, 2026
8cb0615
Update src/platform/settings/composables/useSettingUI.ts
viva-jinyi Feb 10, 2026
7ee94e5
Merge branch 'main' into refactor/setting-dialog
DrJKL Feb 10, 2026
e0bb160
refactor: add size prop to BaseModalLayout and remove style overrides
viva-jinyi Feb 11, 2026
39f8d27
Merge remote-tracking branch 'origin/main' into refactor/setting-dialog
viva-jinyi Feb 11, 2026
ad059db
refactor: address PR review feedback on types and semantics
viva-jinyi Feb 11, 2026
9bb9a96
Merge branch 'main' into refactor/setting-dialog
viva-jinyi Feb 11, 2026
3d8c808
[automated] Update test expectations
invalid-email-address Feb 11, 2026
47904f1
Merge remote-tracking branch 'origin/main' into refactor/setting-dialog
viva-jinyi Feb 12, 2026
10f481c
Update src/components/dialog/content/setting/WorkspacePanelContent.vue
DrJKL Feb 12, 2026
a65ec3c
fix: e2e test failed so BaseModalLayout close action modified
viva-jinyi Feb 12, 2026
1e7597c
[automated] Update test expectations
invalid-email-address Feb 12, 2026
0673fc1
[automated] Update test expectations
invalid-email-address Feb 12, 2026
3060fc5
Merge branch 'main' into refactor/setting-dialog
viva-jinyi Feb 12, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions .storybook/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -100,8 +100,7 @@ const config: StorybookConfig = {
rolldownOptions: {
treeshake: false,
output: {
keepNames: true,
strictExecutionOrder: true
keepNames: true
},
onwarn: (warning, warn) => {
// Suppress specific warnings
Expand Down
33 changes: 23 additions & 10 deletions browser_tests/fixtures/components/SettingDialog.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,7 @@ export class SettingDialog extends BaseDialog {
* @param value - The value to set
*/
async setStringSetting(id: string, value: string) {
const settingInputDiv = this.page.locator(
`div.settings-container div[id="${id}"]`
)
const settingInputDiv = this.root.locator(`div[id="${id}"]`)
await settingInputDiv.locator('input').fill(value)
}

Expand All @@ -34,16 +32,31 @@ export class SettingDialog extends BaseDialog {
* @param id - The id of the setting
*/
async toggleBooleanSetting(id: string) {
const settingInputDiv = this.page.locator(
`div.settings-container div[id="${id}"]`
)
const settingInputDiv = this.root.locator(`div[id="${id}"]`)
await settingInputDiv.locator('input').click()
}

get searchBox() {
return this.root.getByPlaceholder(/Search/)
}

get categories() {
return this.root.locator('nav').getByRole('button')
}

category(name: string) {
return this.root.locator('nav').getByRole('button', { name })
}

get contentArea() {
return this.root.getByRole('main')
}

async goToAboutPanel() {
await this.page.getByTestId(TestIds.dialogs.settingsTabAbout).click()
await this.page
.getByTestId(TestIds.dialogs.about)
.waitFor({ state: 'visible' })
const aboutButton = this.root.locator('nav').getByRole('button', {
name: 'About'
})
await aboutButton.click()
await this.page.waitForSelector('.about-container')
}
}
6 changes: 2 additions & 4 deletions browser_tests/tests/bottomPanelShortcuts.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -226,9 +226,7 @@ test.describe('Bottom Panel Shortcuts', { tag: '@ui' }, () => {
await expect(bottomPanel.shortcuts.manageButton).toBeVisible()
await bottomPanel.shortcuts.manageButton.click()

await expect(comfyPage.page.getByRole('dialog')).toBeVisible()
await expect(
comfyPage.page.getByRole('option', { name: 'Keybinding' })
).toBeVisible()
await expect(comfyPage.settingDialog.root).toBeVisible()
await expect(comfyPage.settingDialog.category('Keybinding')).toBeVisible()
})
})
23 changes: 17 additions & 6 deletions browser_tests/tests/dialog.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -244,9 +244,13 @@ test.describe('Missing models warning', () => {
test.describe('Settings', () => {
test('@mobile Should be visible on mobile', async ({ comfyPage }) => {
await comfyPage.page.keyboard.press('Control+,')
const settingsContent = comfyPage.page.locator('.settings-content')
await expect(settingsContent).toBeVisible()
const isUsableHeight = await settingsContent.evaluate(
const settingsDialog = comfyPage.page.locator(
'[data-testid="settings-dialog"]'
)
await expect(settingsDialog).toBeVisible()
const contentArea = settingsDialog.locator('main')
await expect(contentArea).toBeVisible()
const isUsableHeight = await contentArea.evaluate(
(el) => el.clientHeight > 30
)
expect(isUsableHeight).toBeTruthy()
Expand All @@ -256,7 +260,9 @@ test.describe('Settings', () => {
await comfyPage.page.keyboard.down('ControlOrMeta')
await comfyPage.page.keyboard.press(',')
await comfyPage.page.keyboard.up('ControlOrMeta')
const settingsLocator = comfyPage.page.locator('.settings-container')
const settingsLocator = comfyPage.page.locator(
'[data-testid="settings-dialog"]'
)
await expect(settingsLocator).toBeVisible()
await comfyPage.page.keyboard.press('Escape')
await expect(settingsLocator).not.toBeVisible()
Expand All @@ -275,10 +281,15 @@ test.describe('Settings', () => {
test('Should persist keybinding setting', async ({ comfyPage }) => {
// Open the settings dialog
await comfyPage.page.keyboard.press('Control+,')
await comfyPage.page.waitForSelector('.settings-container')
await comfyPage.page.waitForSelector('[data-testid="settings-dialog"]')

// Open the keybinding tab
await comfyPage.page.getByLabel('Keybinding').click()
const settingsDialog = comfyPage.page.locator(
'[data-testid="settings-dialog"]'
)
await settingsDialog
.locator('nav [role="button"]', { hasText: 'Keybinding' })
.click()
await comfyPage.page.waitForSelector(
'[placeholder="Search Keybindings..."]'
)
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions browser_tests/tests/subgraph.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -826,7 +826,7 @@ test.describe('Subgraph Operations', { tag: ['@slow', '@subgraph'] }, () => {

// Open settings dialog using hotkey
await comfyPage.page.keyboard.press('Control+,')
await comfyPage.page.waitForSelector('.settings-container', {
await comfyPage.page.waitForSelector('[data-testid="settings-dialog"]', {
state: 'visible'
})

Expand All @@ -836,7 +836,7 @@ test.describe('Subgraph Operations', { tag: ['@slow', '@subgraph'] }, () => {

// Dialog should be closed
await expect(
comfyPage.page.locator('.settings-container')
comfyPage.page.locator('[data-testid="settings-dialog"]')
).not.toBeVisible()

// Should still be in subgraph
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading