* fix(chat): restore desktop editor file-open in PendingChangesBar (#979)
Commit d1553ba removed the runtime?.editor branch from handleOpenFile,
breaking file-click in VS Code and Electron desktop runtimes.
Restore the 3-branch logic: editor.openDiff(patch) → editor.openFile()
→ openContextDiff() web fallback. Display paths remain relative.
* fix(chat): route non-git changed files to file view in desktop
DiffView requires a git repository to display diffs. In desktop
(Electron/Tauri), runtime.editor is unavailable, so non-git files
fell through to openContextDiff which shows "Not a git repository".
Route non-git files to openContextFile instead, which works without
git. Git-tracked files continue to use openContextDiff.
* feat(chat): per-turn changes dropdown for non-git; self-sufficient git sync in bar
- PendingChangesBar seeds git store + listens to onGitRefreshHint; works without RightSidebarTabs (fixes VS Code where bar never rendered).
- Bar is git-only now; non-git shows per-turn dropdown at end of completed assistant turns.
- Dropdown uses base-ui Popover for collision-aware position; icon-only collapse with tooltips at narrow container widths.
- Extract shared helpers (changedFiles.ts), popover list (ChangedFilesList.tsx), styles (changedFilesPopover.ts).
---------
Co-authored-by: Bohdan Triapitsyn <artmore@protonmail.com>