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 surfaceDSH implementationStatus / evidence
Git workbench panelconversation.view Git Log after 轨迹Verified in browser
Repository toolbar, HEAD, fetch, stash, pane collapse, More actionssrc/client/ui.js; stash-list faults propagate into inline/global diagnosticsVerified in browser, including failing stash transport
Commit/ref/file context action matricessrc/client/ui.js, strict operations in src/host/operations.jsVerified, including one-use confirmation, branch/HEAD/index/worktree snapshots, explicit force-push destination lease, and conflict recovery
Text/hash, branch, author, date and path filterssrc/host/git.js, src/client/ui.jsVerified; full-history scan bounded to 10,000 results
Virtualized graph paginationsrc/shared/graph.js, virtual.js, commit-window.jsUnit tested across continuation and window trimming
Multi-select and keyboard navigationsrc/client/ui.js; Go to HEAD preserves filters; Ref Search force-expands matchesBrowser verified, including HEAD outside filtered window and collapse-state restoration
Details, changed files, parent-specific merge diffsrc/host/git.js, src/client/ui.js; 8 MiB + 50,000-line patch boundsUnit and browser verified
Native editor diffEmbedded DSH split/unified diff workspaceDSH-native equivalent; browser verified
File/line history editor panelsEmbedded movable history/file/blame workspaces; Working Tree → HEAD mapping; HEAD/path LRU scans; C-quoted/octal UTF-8 patch-path decodingDSH-native equivalent; deep paging, refs, mapping states and quoted Unicode paths unit/browser verified
Compare file with refEmbedded Comparison workspaceDSH-native equivalent; browser verified
Current-line blame decorationInline active-line annotation in Current File, with 150ms selection / 300ms dirty-buffer scheduling, minute refresh, and bounded SHA-256 edit-age persistenceHost/API unit tests plus browser timing and non-writing dirty-buffer verification
Repository discovery and lifecycleRuntime nested + bare discovery; depth/exclude globs; fs.watch event rediscovery; selected-ID fallbackUnit/browser verified for add, switch, delete, exclude and bare read-only
Workspace/repository stateSHA-256 opaque workspace/repository IDs; 20-workspace/100-anchor caps, 90-day expiry, bounded commit window and graph continuationBrowser verified across reload and repository switching; legacy absolute-path keys are rejected
Bare, worktree, detached and unborn repositoriesHost summaries and UI state gatingUnit/browser verified
Repository metadata watcherHost fs.watch, 150ms debounce and same-origin SSE; 30-second visible-page fallback scanExternal commit browser verification observed 200ms update, one SSE stream, and no watchState polling
Arbitrary repository-file commandsSearchable bounded tracked/untracked file picker with Current File, File History, Line History and Blame; bare HEAD-tree supportUnit and browser verified, including deleted, ignored, Unicode and binary paths
Shiki syntax pipelineSame-origin dedicated worker, JS regex engine, GitHub Light/Dark variants, upstream language allowlist, UTF-8/source/token budgets, timeout/abort/restart and client teardownBrowser verified in File Viewer, Split, Unified and History for JavaScript/Python and DSH dark-theme marker
Query failure affordancesShared Retry / Copy Diagnostic in global, comparison, diff, file, blame, selection and history surfacesBrowser verified through forced object-read failure and recovery
Git runner, diagnostics and 2.27+ checkConfigurable executable; latest-wins browser reads; HTTP→AsyncLocalStorage→runner AbortSignal; shell-free process groups; output bounds; TERM→KILLProcess/API unit tests plus configured and cancellation-wrapper browser verification
Commit signature state%G?/%GS/%GK/%GF/%GP/%GT + accessible badgeUnit/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.