Upstream parity evidence
August 24, 2026 · View on GitHub
Baseline: ascenx/vscode-git-log checkout at /tmp/vscode-git-log. This document distinguishes verified parity, DSH-native equivalents, and remaining divergences. “Verified” requires source coverage plus a unit or browser regression; it does not mean the whole port is complete.
| Upstream surface | DSH implementation | Status / evidence |
|---|---|---|
| Git workbench panel | conversation.view Git Log after 轨迹 | Verified in browser |
| Repository toolbar, HEAD, fetch, stash, pane collapse, More actions | src/client/ui.js; stash-list faults propagate into inline/global diagnostics | Verified in browser, including failing stash transport |
| Commit/ref/file context action matrices | src/client/ui.js, strict operations in src/host/operations.js | Verified, including one-use confirmation, branch/HEAD/index/worktree snapshots, explicit force-push destination lease, and conflict recovery |
| Text/hash, branch, author, date and path filters | src/host/git.js, src/client/ui.js | Verified; full-history scan bounded to 10,000 results |
| Virtualized graph pagination | src/shared/graph.js, virtual.js, commit-window.js | Unit tested across continuation and window trimming |
| Multi-select and keyboard navigation | src/client/ui.js; Go to HEAD preserves filters; Ref Search force-expands matches | Browser verified, including HEAD outside filtered window and collapse-state restoration |
| Details, changed files, parent-specific merge diff | src/host/git.js, src/client/ui.js; 8 MiB + 50,000-line patch bounds | Unit and browser verified |
| Native editor diff | Embedded DSH split/unified diff workspace | DSH-native equivalent; browser verified |
| File/line history editor panels | Embedded movable history/file/blame workspaces; Working Tree → HEAD mapping; HEAD/path LRU scans; C-quoted/octal UTF-8 patch-path decoding | DSH-native equivalent; deep paging, refs, mapping states and quoted Unicode paths unit/browser verified |
| Compare file with ref | Embedded Comparison workspace | DSH-native equivalent; browser verified |
| Current-line blame decoration | Inline active-line annotation in Current File, with 150ms selection / 300ms dirty-buffer scheduling, minute refresh, and bounded SHA-256 edit-age persistence | Host/API unit tests plus browser timing and non-writing dirty-buffer verification |
| Repository discovery and lifecycle | Runtime nested + bare discovery; depth/exclude globs; fs.watch event rediscovery; selected-ID fallback | Unit/browser verified for add, switch, delete, exclude and bare read-only |
| Workspace/repository state | SHA-256 opaque workspace/repository IDs; 20-workspace/100-anchor caps, 90-day expiry, bounded commit window and graph continuation | Browser verified across reload and repository switching; legacy absolute-path keys are rejected |
| Bare, worktree, detached and unborn repositories | Host summaries and UI state gating | Unit/browser verified |
| Repository metadata watcher | Host fs.watch, 150ms debounce and same-origin SSE; 30-second visible-page fallback scan | External commit browser verification observed 200ms update, one SSE stream, and no watchState polling |
| Arbitrary repository-file commands | Searchable bounded tracked/untracked file picker with Current File, File History, Line History and Blame; bare HEAD-tree support | Unit and browser verified, including deleted, ignored, Unicode and binary paths |
| Shiki syntax pipeline | Same-origin dedicated worker, JS regex engine, GitHub Light/Dark variants, upstream language allowlist, UTF-8/source/token budgets, timeout/abort/restart and client teardown | Browser verified in File Viewer, Split, Unified and History for JavaScript/Python and DSH dark-theme marker |
| Query failure affordances | Shared Retry / Copy Diagnostic in global, comparison, diff, file, blame, selection and history surfaces | Browser verified through forced object-read failure and recovery |
| Git runner, diagnostics and 2.27+ check | Configurable executable; latest-wins browser reads; HTTP→AsyncLocalStorage→runner AbortSignal; shell-free process groups; output bounds; TERM→KILL | Process/API unit tests plus configured and cancellation-wrapper browser verification |
| Commit signature state | %G?/%GS/%GK/%GF/%GP/%GT + accessible badge | Unit/browser verified |
Known remaining divergences
The latest independent source-surface audit still tracks these concrete divergences:
No material parity blocker remains in the final independent source-surface audit. DSH-native substitutions retain bounded host APIs, same-origin routing, and browser-backed workspace state while preserving the upstream user-visible outcomes.
The maintained self-contained browser acceptance command is pnpm run test:browser; DSH_GIT_LOG_E2E_URL may optionally target an already-running latest-artifact DSH host.