Files
ComfyUI_frontend/src/AGENTS.md
Alexander Brown 14369c08a3 refactor: parallelize bootstrap and simplify lifecycle with VueUse (#8307)
## Summary

Refactors bootstrap and lifecycle management to parallelize
initialization, use Vue best practices, and fix a logout state bug.

## Changes

### Bootstrap Store (`bootstrapStore.ts`)
- Extract early bootstrap logic into a dedicated store using
`useAsyncState`
- Parallelize settings, i18n, and workflow sync loading (previously
sequential)
- Handle multi-user login scenarios by deferring settings/workflows
until authenticated

### GraphCanvas Refactoring
- Move non-DOM composables (`useGlobalLitegraph`, `useCopy`, `usePaste`,
etc.) to script setup level for earlier initialization
- Move `watch` and `whenever` declarations outside `onMounted` (Vue best
practice)
- Use `until()` from VueUse to await bootstrap store readiness instead
of direct async calls

### GraphView Simplification
- Replace manual `addEventListener`/`removeEventListener` with
`useEventListener`
- Replace `setInterval` with `useIntervalFn` for automatic cleanup
- Move core command registration to script setup level

### Bug Fix
Using `router.push()` for logout caused `isSettingsReady` to persist as
`true`, making new users inherit the previous user's cached settings.
Reverted to `window.location.reload()` with TODOs for future store reset
implementation.

## Testing

- Verified login/logout cycle clears settings correctly
- Verified bootstrap sequence completes without errors

---------

Co-authored-by: Amp <amp@ampcode.com>
2026-01-27 12:50:13 -08:00

681 B

Source Code Guidelines

Error Handling

  • User-friendly and actionable messages
  • Proper error propagation

Security

  • Sanitize HTML with DOMPurify
  • Validate trusted sources
  • Never log secrets

State Management (Stores)

  • Follow domain-driven design for organizing files/folders
  • Clear public interfaces
  • Restrict extension access
  • Clean up subscriptions
  • Only expose state/actions that are used externally; keep internal state private

General Guidelines

  • Use es-toolkit for utility functions
  • Use TypeScript for type safety
  • Avoid @ts-expect-error - fix the underlying issue
  • Use vue-i18n for ALL user-facing strings (src/locales/en/main.json)