### Added

- **Git diff file preview** — the file preview overlay now shows a unified diff view for changed files in Git workspaces. Added (green) and removed (red) lines are displayed inline with syntax highlighting and line numbers, giving a code-editor-like read-only experience. Unchanged files continue to show the regular code view.
- **Markdown preview tabs** — markdown files now show `Preview` / `Source` tabs. The Preview tab renders markdown; the Source tab shows the raw content with syntax highlighting and diff highlights when changes exist.
- **`FileCodeView` component** — new unified code viewer that renders full file content with syntax highlighting, line numbers, and optional diff tinting (added lines in green, removed lines in red). Replaces the previous code view in the file preview overlay.
- **`useFileGitDiffQuery` hook** — new TanStack Query hook for fetching per-file Git diff data via the SDK REST client.

### Changed

- **DiffViewer** — added optional `disablePathOpen` prop to render the file path as plain text instead of a clickable button, used in the file preview overlay to avoid re-opening the same file.
- **File preview overlay header** — shows `+N` (green) and `-N` (red) change count badges when the file has Git changes.

### Fixed

- **Git status stale after manual file panel refresh** — `FileTree.refresh()` now invalidates all browse queries for the workspace (root + every expanded subdirectory) via TanStack Query's `invalidateQueries`, instead of only refetching the root query. Also sends a `clearGitCache` request to bust the server-side 2-second Git status cache so fresh data is fetched on explicit refresh.

### Fixed

- **DiffViewer and CodeBlock file opening on Windows** — clicking file paths in diff visualizations and code blocks failed to open files on Windows because `path.startsWith('/')` didn't detect Windows absolute paths (`C:\\…`), causing double path concatenation. Added cross-platform `isAbsolutePath()` and `pathBasename()` utilities to handle both Unix and Windows path formats.
