Clicking a file reference in a chat message (e.g. `useShellTerminal.ts`)
opened a new browser window because it was rendered as a plain anchor with
target="_blank" and an empty/relative href.
The markdown link renderer now intercepts file-path links — using the href,
or the link text when the href is empty — strips any `:line:col` suffix, and
opens the file in the in-app editor side panel while keeping the Chat tab
active (matching the inline edit view).
- useFileOpenResolver: resolves bare/partial references to real project
files via the cached project file tree
- PaletteOpsContext: add `openFileInEditor` op that opens the editor without
switching tabs