Add forge-neutral commit-by-commit and version comparison walkthroughs#135
Open
xortive wants to merge 20 commits into
Open
Add forge-neutral commit-by-commit and version comparison walkthroughs#135xortive wants to merge 20 commits into
xortive wants to merge 20 commits into
Conversation
This was referenced Jul 21, 2026
Render the pull request description, status actions, and reviewer summary inside one consistent overview grid instead of separate nested cards. This keeps the existing data and behavior intact while making the source header reusable across the normal code view and shared review surfaces.
Render the walkthrough arc outside the flexing `.wt-hybrid` content container for every host, matching the existing Web presentation. This keeps chapter navigation visible while the diff body scrolls and removes the local-versus-Web placement distinction.
Introduce forge-neutral revision, range, comparison, evolution, version, and review-plan types plus the constructors and plan-resolution helpers that operate on them. Keeping this domain model independent gives Codiff Web and provider adapters a stable contract before any shared review UI is introduced.
Centralize draft parsing, prompt construction, hunk indexing, normalization, comment attachment, and unit composition in Core. This gives Codiff Web and Electron one deterministic authoring pipeline while leaving model execution, retries, caching, and storage in their respective hosts.
Implement patch-signature generation and confidence-based pairing for commits across rewritten review stacks. The matcher lives in Core so GitLab and GitHub can share retained, revised, removed, ambiguous, and absorbed-into-base classification without duplicating provider logic.
Introduce the GitLab transport abstraction and read-side provider implementation for versions, commit diffs, comparisons, review strategy, and commit evolution. Build the provider on Core review-history contracts and the shared matcher so Codiff Web can supply authenticated HTTP transport without carrying provider logic in its host.
Add focused fixtures for pure rebases, edited rebases, conflict resolutions, strategy classification, and commit pairing. Keeping the high-volume scenario coverage separate makes the provider implementation reviewable while preserving regression coverage for the analysis behavior Codiff Web will depend on.
Describe the shared Core and GitLab APIs, walkthrough-authoring ownership, generation inputs, and the Codiff Web migration checklist. Keep local Electron authentication and IPC guidance out of this document so the foundation MR remains scoped to reusable Web-facing packages.
Resolve review plans into whole-diff or per-unit generation, invoke a host-supplied model runner, normalize each authored result, and compose unit walkthroughs in Core. This lets Codiff Web share one orchestration contract while retaining ownership of model selection, queues, retries, and persistence.
Move commit-evolution projection and shared unit helpers into Core so provider adapters produce the same review-history model. Update the GitLab adapter to consume that shared projection instead of owning provider-specific copies, preparing the API used by Codiff Web and later GitHub integration.
Extend the existing shared review surface with commit and version navigation, whole-diff comparison state, review-history sidebars, and the controls needed to inspect changed files across review iterations. Keep the UI host-driven so Codiff Web can supply provider data without embedding GitLab or local Electron behavior in the components.
Remove shared walkthrough section identifiers from provider-facing comment payloads and recover the rendered diff section from file, side, and line coordinates. Update Core and Codiff Web callers so persisted comments use one provider-neutral contract without losing their in-app placement.
Present introduced, removed, revised, retained, ambiguous, and absorbed commits with consistent labels in tooltips, comparison lists, and walkthrough chapter boundaries. Carry the classification through walkthrough authoring so reviewers can understand why a logical change moved or was rewritten without reading provider-specific metadata.
Expose structured generation progress to the shared review surface and render current phases plus per-unit status while a walkthrough is prepared, generated, and combined. Keep loading and generation messaging host-neutral so Codiff Web can provide useful feedback without coupling the UI to a specific agent runtime.
Introduce the `@nkzw/codiff-github` workspace package with transport contracts, force-push timeline loading, historical comparison tests, and package build configuration. The package is kept separate from Electron wiring so its provider behavior can be reviewed before local Codiff adopts it.
Route local prompt construction, draft normalization, hunk aliasing, and walkthrough composition through the shared Core authoring module. Keep Electron responsible only for agent execution and host concerns so Codiff Web and local Codiff use the same authored walkthrough semantics.
Route pull-request sources through LocalMergeRequestReviewHost so local Codiff renders MergeRequestReviewApp chrome (tree/walkthrough/comments) instead of the reduced App.tsx PR path. Baseline whole-PR review, comments, and walkthrough generation use existing IPC; version compare stays unwired for the next step.
Implement the `GitLabTransport` contract over authenticated `glab api` calls and expose it from the local merge-request backend. This isolates process execution and pagination from the shared GitLab provider package before the review host starts loading version history.
Bridge the shared GitLab provider package into Electron and implement local version, comparison, evolution, and unit-diff loading for merge requests. Keep this backend provider-specific so its CLI transport and projection behavior can be reviewed independently from GitHub force-push handling.
xortive
force-pushed
the
codiff-review-history
branch
from
July 21, 2026 23:05
72c6b64 to
0bf5597
Compare
xortive
force-pushed
the
codiff-review-history
branch
4 times, most recently
from
July 22, 2026 00:07
42f52b8 to
0bf5597
Compare
Member
xortive
force-pushed
the
codiff-review-history
branch
from
July 22, 2026 03:44
4f50ea7 to
8c070bc
Compare
xortive
force-pushed
the
codiff-review-history
branch
from
July 22, 2026 03:55
8c070bc to
fb64620
Compare
xortive
force-pushed
the
codiff-review-history
branch
from
July 22, 2026 04:35
fb64620 to
e815212
Compare
Implement GitHub head-timeline, comparison, evolution, and unit-diff loading over `gh` plus local Git objects, then dispatch review-history requests by provider. This keeps GitHub rewrite semantics separate from the GitLab merge-request backend while sharing the same Core review model. Connect local review history to the shared host Expose provider-neutral review-history and walkthrough-generation IPC to `LocalMergeRequestReviewHost`, materialize comparison and commit-unit files, and refresh the local repository state after review actions. Wire agent generation progress through Electron at the same integration boundary so the shared progress UI receives coherent host events. Document local review-history parity and follow-ups Record the local host architecture, authentication requirements, provider-specific terminology, and remaining review findings after the shared packages are adopted. Keeping these notes at the local MR tip makes deferred Electron and GitHub issues visible without leaking local concerns into the Codiff Web foundation docs.
xortive
force-pushed
the
codiff-review-history
branch
from
July 22, 2026 04:40
e815212 to
e64db1a
Compare
Author
|
fixed |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Background
I like to author MRs/PRs with structured commits that are meant to assist the reviewer in understanding the change, by breaking out refactors or code movement into early commits, and leaving the actual semantic intent of the change for later commits. Combined with stacked diffs, this is my preferred way to submit changes.
However, the native review process for these in the popular git forges is often pretty bad. Some forges like gitlab, implement "version comparison" where a new push or update to the MR's destination generates a new "version", such that you can review the diff between "versions" of your MR. For forges that don't implement this, I would often settle for uploading !fixup commits as a workaround, and squashing them before merge.
This MR introduces many new features intended to make MRs of this nature easier to review.
New features
There's quite a bit of new functionality in this PR intended to improve the experience of using codiff to review MRs in this form:
diff(diff(vFrom_start,vFrom_end), diff(vTo_start, vTo_end)).codiffwith our internalcodiff-webdeployment.TODO
So far, I believe I've gotten all of the local equivalents to
codiff-webfeatures working against gitlab, and some of the features work using the github provider. There's a few things still missing:web/share UI supports the new walkthrough variants