Context
PR #59 (tab bar) adds setFileDirty with updateLeafInTree to workspace-store.ts.
PR #61 (CodeMirror editor) adds setPaneDirty with its own tree traversal to workspace-store.ts.
Both do the same thing — update isDirty on a PaneLeaf — but with different names and implementations.
Issue
When merging these PRs, the store will end up with two redundant APIs for the same operation. One should be kept and the other removed.
Suggested fix
Keep setPaneDirty(paneId, isDirty) (more general name) and update PR #59's setFileDirty references to use it. Consolidate updateLeafInTree as the shared helper.
From cross-PR review.