Cleanup: YAGNI readonly props, private swap on ComfyApp, Canvas resize events simplification, v-memos on individual instances (#5869)

## Summary

Assorted cleanup opportunities found while working through the Vue node
rendering logic cleanup.

## Review Focus

Am I wrong that the readonly logic was never actually executing because
it was defined as False in GraphCanvas when making each LGraphNode?

Is there an edge case or some other reason that the ResizeObserver
wouldn't work as a single signal to resize the canvas?

┆Issue is synchronized with this [Notion
page](https://www.notion.so/PR-5869-Cleanup-YAGNI-readonly-props-private-swap-on-ComfyApp-Canvas-resize-events-simplificat-27e6d73d3650811ba1dcf29e8d43091e)
by [Unito](https://www.unito.io)

---------

Co-authored-by: github-actions <github-actions@github.com>
This commit is contained in:
Alexander Brown
2025-10-02 10:35:10 -07:00
committed by GitHub
parent 706ff953de
commit 37fab21daf
35 changed files with 88 additions and 247 deletions

View File

@@ -118,7 +118,6 @@ const mountHeader = (
...config,
props: {
nodeData: makeNodeData(),
readonly: false,
collapsed: false,
...props
}
@@ -182,20 +181,6 @@ describe('NodeHeader.vue', () => {
expect(wrapper.get('[data-testid="node-title"]').text()).toContain('KeepMe')
})
it('honors readonly: hides collapse button and prevents editing', async () => {
const wrapper = mountHeader({ readonly: true })
// Collapse button should be hidden
const btn = wrapper.find('[data-testid="node-collapse-button"]')
expect(btn.exists()).toBe(true)
// v-show hides via display:none
expect((btn.element as HTMLButtonElement).style.display).toBe('none')
// In unit test, presence is fine; simulate double click should not create input
await wrapper.get('[data-testid="node-header-1"]').trigger('dblclick')
const input = wrapper.find('[data-testid="node-title-input"]')
expect(input.exists()).toBe(false)
})
it('renders correct chevron icon based on collapsed prop', async () => {
const wrapper = mountHeader({ collapsed: false })
const expandedIcon = wrapper.get('i')
@@ -222,16 +207,6 @@ describe('NodeHeader.vue', () => {
expect(directive).toBeTruthy()
})
it('disables tooltip when in readonly mode', () => {
const wrapper = mountHeader({
readonly: true,
nodeData: makeNodeData({ type: 'KSampler' })
})
const titleElement = wrapper.find('[data-testid="node-title"]')
expect(titleElement.exists()).toBe(true)
})
it('disables tooltip when editing is active', async () => {
const wrapper = mountHeader({
nodeData: makeNodeData({ type: 'KSampler' })