Skip to content

Renderer crash in renderTimelineRow when workspace files are deleted #35493

Description

@jxl0421

Bug Description

The desktop app (v1.17.13, Windows x64) crashes repeatedly with a renderer process error when timeline entries reference deleted workspace files.

Crash Error

TypeError: Cannot read properties of undefined (reading '_tag') at renderTimelineRow (main-Do1GNfcH.js:142494) at TimelineRowView (main-Do1GNfcH.js:142679) at VirtualTimelineRow (main-Do1GNfcH.js:142735) at Solid.js component tree... at Virtualizer2.notify -> setStore -> onChange

Steps to Reproduce

  1. Open multiple project directories in OpenCode Desktop
  2. Perform some LLM sessions (file edits, bash commands, etc.)
  3. Delete one of the project directories or files externally (e.g., via File Explorer)
  4. Continue using OpenCode or switch sessions
  5. The renderer crashes when the timeline tries to render history entries that reference deleted files

Root Cause Analysis

The timeline component (
enderTimelineRow) does not handle undefined/null row data. When workspace files are deleted, the timeline history still contains records referencing those files. The Virtualizer2 scroll notification triggers a store update that calls
enderTimelineRow with undefined data, causing an uncaught TypeError.

Key error before the fatal crash:

Uncaught TypeError: Cannot read properties of undefined (reading 'time')

This indicates the timeline row data is already undefined before the fatal _tag access.

Supporting Evidence

From debug logs (opencode-debug-20260705T084757):

ENOENT errors for deleted paths:

PlatformError: NotFound: FileSystem.realPath (F:\project\Feishu\WeeklyReport\EncryptTool) Error: ENOENT: no such file or directory, lstat 'F:\project\Feishu\WeeklyReport\EncryptTool'

10+ renderer crashes on the same day (2026-07-05), each session lasting ~30-60 minutes.

Repeated ResizeObserver errors (layout thrashing) preceding the crash.

Expected Behavior

The timeline component should gracefully handle missing/deleted file references:

  • Skip or show a placeholder for timeline entries referencing non-existent files
  • Catch undefined data in
    enderTimelineRow instead of throwing an uncaught exception

Environment

  • OpenCode Desktop v1.17.13
  • Windows 10/11 x64
  • Electron 42.3.3 / Chrome 148
  • Node 24.15.0
  • Multiple project directories loaded simultaneously

Debug Logs

Full debug logs attached as zip file below.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions