Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
6f8cdc6
feat(PRO-547): add CLI-side GitHub comment sync (pull/push)
dastratakos Jun 22, 2026
ffbd8f3
feat(PRO-547): add GitHub comment sync UI and author rendering
dastratakos Jun 22, 2026
559ee09
feat(PRO-547): mirror PR resolved state on pull
dastratakos Jun 22, 2026
524cac4
feat(PRO-547): sync comment resolution back to GitHub
dastratakos Jun 22, 2026
5745864
feat(PRO-547): add live GitHub review server layer (pending-review li…
dastratakos Jun 22, 2026
d320501
feat(PRO-547): rebuild comment UI on live-fetch review model; remove …
dastratakos Jun 22, 2026
38b4911
chore(PRO-547): drop this PR's net-zero migrations (collapse into 0006)
dastratakos Jun 22, 2026
e7a9157
feat(PRO-547): add 'Comment on the PR' and 'Start a review' composer …
dastratakos Jun 22, 2026
aaf624e
feat(PRO-547): close review-tray fidelity gaps (pending list, markdow…
dastratakos Jun 22, 2026
83958d8
fix(PRO-547): address PR review — push guardrail, scope checks, atomi…
dastratakos Jun 22, 2026
105f8ac
fix(PRO-547): guard unresolvable PR + discard empty review on failed …
dastratakos Jun 22, 2026
d265444
fix(PRO-547): preserve unposted replies on promote failure; guard rea…
dastratakos Jun 22, 2026
545fcf6
fix(PRO-547): gate GitHub review on run diff == PR head; refresh PR q…
dastratakos Jun 22, 2026
9c4afec
fix(PRO-547): guard submit/reply with assertPushable; scope PR-query …
dastratakos Jun 22, 2026
b828070
fix(PRO-547): keep string GraphQL vars as -f; serialize concurrent pr…
dastratakos Jun 22, 2026
902637f
fix(PRO-547): reject empty Comment review at the API boundary
dastratakos Jun 22, 2026
6b25131
fix(PRO-547): count pending drafts on anchorless threads to avoid fal…
dastratakos Jun 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
511 changes: 511 additions & 0 deletions packages/cli/src/__tests__/review.routes.test.ts

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions packages/cli/src/db/schema/comment.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ import { LOCAL_USER_ID } from "../local-user.js";
import { baseColumns } from "./columns.js";
import { commentThread } from "./comment-thread.js";

// Local (CLI-only) review comments. GitHub review comments are never mirrored
// here — they're fetched live (see the `review` server layer).
export const comment = sqliteTable(
"comment",
{
Expand Down
14 changes: 14 additions & 0 deletions packages/cli/src/github/exec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,20 @@ export async function gh(args: string[], cwd: string): Promise<string> {
return stdout;
}

/**
* Run a `gh` command and return stdout, surfacing failures as a clean Error with
* gh's stderr message. Use for user-initiated actions (reads and writes alike)
* where the failure reason should reach the user, unlike the passive PR-context
* adapters that degrade to empty.
*/
export async function ghOrThrow(args: string[], cwd: string): Promise<string> {
try {
return await gh(args, cwd);
} catch (err) {
throw new Error(ghErrorMessage(err));
}
}

/**
* Extract the most useful message from a failed `gh`/`git` exec: prefer the
* command's stderr (where these tools write human-readable failures), falling
Expand Down
Loading
Loading