opencode icon indicating copy to clipboard operation
opencode copied to clipboard

TypeError: Cannot read properties of undefined (reading 'localeCompare') in sort operations

Open leprachuan opened this issue 3 weeks ago • 1 comments

Description

Multiple sort operations in the web UI crash when sorting items with undefined/null values.

TypeError: Cannot read properties of undefined (reading 'localeCompare')

OpenCode version

v1.0.207+ (dev branch)

Steps to reproduce

Occurs intermittently when:

  • Data is still loading (async operations in progress)
  • Optional fields are missing (e.g., unnamed sessions, models without names)
  • Race conditions during UI state updates

Example from packages/app/src/context/sync.tsx:79:

sessions.sort((a, b) => a.id.localeCompare(b.id))
// Crashes if a.id is undefined

Affected files

  • packages/app/src/context/sync.tsx (lines 79, 83, 94)
  • packages/app/src/context/global-sync.tsx (lines 118, 344)
  • packages/app/src/pages/session.tsx (line 85)
  • packages/app/src/pages/layout.tsx (line 127)
  • packages/app/src/components/dialog-select-mcp.tsx (lines 16, 44)
  • packages/app/src/components/dialog-select-model.tsx (line 44)
  • packages/app/src/components/dialog-manage-models.tsx (line 18)
  • packages/app/src/components/dialog-select-model-unpaid.tsx (line 74)
  • packages/app/src/components/dialog-select-provider.tsx (line 27)
  • packages/ui/src/components/session-turn.tsx (line 109)
  • packages/console/app/src/routes/workspace/[id]/model-section.tsx (line 51)

Proposed fix

Add null coalescing to all localeCompare calls:

sessions.sort((a, b) => (a.id ?? "").localeCompare(b.id ?? ""))

Screenshot and/or share link

No response

Operating System

Linux/macOS/Windows (affects all platforms)

Terminal

Web UI (browser-based)

leprachuan avatar Dec 29 '25 20:12 leprachuan