Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
da6a63a
feat(review): capture-tui — rendering claims get pixels, not prose
wenshao Aug 10, 2026
9cab911
fix(review): per-run disposition, an earlier completion flag, and an …
wenshao Aug 10, 2026
34ce35d
test(review): stop six pins from passing for the wrong reason
wenshao Aug 10, 2026
a982681
fix(review): prove ownership before deleting, and keep the sentinel o…
wenshao Aug 13, 2026
2632bea
fix(review): stop an ans-only manifest from clearing a foreign png, a…
wenshao Aug 13, 2026
22571ce
fix(review): scope the reap claim to what it reaps, and close four mo…
wenshao Aug 13, 2026
eb33f76
fix(review): close the capture window as an ownership hole, and six s…
wenshao Aug 14, 2026
9aee844
fix(review): the png rung gets the same window treatment, and eleven …
wenshao Aug 14, 2026
3ab6d93
fix(review): decide at the syscall, not before it, and eleven more
wenshao Aug 14, 2026
051637e
fix(review): a client-side refusal proves nothing about the server, a…
wenshao Aug 14, 2026
3a6321b
fix(review): pin the directory the artifacts live in, and twelve more
wenshao Aug 15, 2026
faf9b93
fix(review): stop the refusal from deleting what it protects, and thi…
wenshao Aug 16, 2026
02ac9b1
fix(review): drop an @ts-expect-error that tsc --build rejects
wenshao Aug 16, 2026
7d81b4a
Merge remote-tracking branch 'origin/main' into feat/review-capture-t…
wenshao Aug 16, 2026
5d306d1
feat(review): capture-tui — rendering claims get pixels, not prose
wenshao Aug 16, 2026
c183b3a
fix(review): capture-tui — byte-unit manifest gate, render-time png o…
qwen-code-dev-bot Aug 16, 2026
1f9375b
fix(review): capture-tui — pretty-measure manifest gate, spare foreig…
qwen-code-dev-bot Aug 16, 2026
ed6f268
Merge remote-tracking branch 'origin/main' into feat/review-capture-t…
qwen-code-dev-bot Aug 17, 2026
a557636
fix(review): capture-tui — kill where the server lives, and gate fixes
qwen-code-dev-bot Aug 17, 2026
e04aeb8
fix(review): capture-tui — base-scoped kill verdicts, spare failed-re…
qwen-code-dev-bot Aug 17, 2026
b632617
Merge branch 'main' into feat/review-capture-tui-core
wenshao Aug 17, 2026
5772f6c
Merge branch 'main' into feat/review-capture-tui-core
qwen-code-dev-bot Aug 18, 2026
39064eb
Merge branch 'main' into feat/review-capture-tui-core
qwen-code-dev-bot Aug 18, 2026
a0d77d6
Merge remote-tracking branch 'origin/main' into feat/review-capture-t…
qwen-code-dev-bot Aug 18, 2026
d2a57af
fix(review): capture-tui — staged freeze render, stamped kill verdict…
qwen-code-dev-bot Aug 18, 2026
cbedfa4
fix(review): capture-tui — credit create-directory kills on a start t…
qwen-code-dev-bot Aug 18, 2026
b84b020
fix(review): capture-tui — refuse a cloned-symlink render stage; clos…
qwen-code-dev-bot Aug 18, 2026
e8ab909
Merge remote-tracking branch 'origin/main' into HEAD
wenshao Aug 21, 2026
2bb3ca0
fix(review): make the main merge type-check — one lstat mock for both…
wenshao Aug 21, 2026
db49abe
fix(review): capture-tui — pin the render stage by identity, not by type
wenshao Aug 21, 2026
88ba7fb
Merge remote-tracking branch 'origin/main' into HEAD
wenshao Aug 22, 2026
0e5e945
Merge remote-tracking branch 'origin/main' into feat/review-capture-t…
wenshao Aug 22, 2026
333599e
fix(review): type the lstat mock partially so main's own describes co…
wenshao Aug 22, 2026
97e914f
fix(review): capture-tui — close the three Critical findings still st…
wenshao Aug 22, 2026
d9845b1
Merge remote-tracking branch 'origin/main' into feat/review-capture-t…
wenshao Aug 22, 2026
c1cfb6d
fix(review): capture-tui — resolve every spawn, and stop trusting an …
wenshao Aug 22, 2026
b923508
Merge remote-tracking branch 'origin/main' into feat/review-capture-t…
wenshao Aug 22, 2026
2e09270
Merge remote-tracking branch 'origin/main' into feat/review-capture-t…
wenshao Aug 23, 2026
5b4f539
fix(review): capture-tui — carry the resolve-before-spawn rule everyw…
wenshao Aug 23, 2026
1857e40
Merge remote-tracking branch 'origin/main' into feat/review-capture-t…
wenshao Aug 23, 2026
972848e
fix(review): capture-tui — read the stamped identity where the verdic…
wenshao Aug 23, 2026
6dbf64c
Merge remote-tracking branch 'origin/main' into feat/review-capture-t…
wenshao Aug 23, 2026
9c225d7
fix(review): capture-tui — an inode is not a durable name for the sta…
wenshao Aug 23, 2026
b8e42d5
Merge remote-tracking branch 'origin/main' into feat/review-capture-t…
wenshao Aug 23, 2026
6c1e26c
Merge remote-tracking branch 'origin/main' into feat/review-capture-t…
wenshao Aug 23, 2026
6e516d8
fix(review): capture-tui — pinned is not examined, and an in-place re…
wenshao Aug 24, 2026
765daba
Merge remote-tracking branch 'origin/main' into feat/review-capture-t…
wenshao Aug 24, 2026
c193cc3
fix(review): scope the orphan sweep's comments to what a name-address…
wenshao Aug 24, 2026
c1b9dfc
Merge remote-tracking branch 'origin/main' into feat/review-capture-t…
wenshao Aug 24, 2026
1a8d6da
fix(review): carry each own-knowledge check to its sibling site (R20-…
wenshao Aug 24, 2026
491ce90
Merge remote-tracking branch 'origin/main' into feat/review-capture-t…
wenshao Aug 24, 2026
78f0db2
fix(review): capture-tui — a staging failure is not a swap (R21-1)
wenshao Aug 24, 2026
aea7d83
Merge remote-tracking branch 'origin/main' into feat/review-capture-t…
wenshao Aug 24, 2026
d35ef3e
Merge remote-tracking branch 'origin/main' into feat/review-capture-t…
wenshao Aug 30, 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
2 changes: 2 additions & 0 deletions docs/users/features/code-review.md
Original file line number Diff line number Diff line change
Expand Up @@ -252,6 +252,8 @@ Confirmed findings are canonicalized into `.qwen/tmp/qwen-review-<target>-findin

The command validates on write: a duplicate id, a finding with no failure scenario, an empty locations array, or an unknown severity is an error rather than a silently mangled entry.

Where do the images come from? For terminal-rendering claims, `qwen review capture-tui` drives the code under review in a **private tmux server** (it cannot touch your own tmux sessions), captures the pane bytes as `.ans`, and renders a `.png` via `freeze` when installed — degrading explicitly (`png` → `ans-only` → refused) and recording which rung it reached, because a verifier must say whether its verdict stands on pixels, bytes, or prose.

## Evidence Images in PR Comments

GitHub's API cannot attach images to review comments, so `/review` can host evidence images (TUI screenshots, rendered-output comparisons) in a repository you designate and embed them by URL:
Expand Down
1 change: 1 addition & 0 deletions packages/cli/src/commands/review.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ describe('reviewCommand', () => {
'comment-body',
'fetch-pr',
'capture-local',
'capture-tui',
'plan-diff',
'repo-context',
'pr-context',
Expand Down
4 changes: 3 additions & 1 deletion packages/cli/src/commands/review.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import { findingsCommand } from './review/findings.js';
import { recoverFindingsCommand } from './review/recover-findings.js';
import { fetchPrCommand } from './review/fetch-pr.js';
import { captureLocalCommand } from './review/capture-local.js';
import { captureTuiCommand } from './review/capture-tui.js';
import { planDiffCommand } from './review/plan-diff.js';
import { repoContextCommand } from './review/repo-context.js';
import { prContextCommand } from './review/pr-context.js';
Expand Down Expand Up @@ -65,6 +66,7 @@ export const reviewCommand: CommandModule = {
.command(commentBodyCommand)
.command(fetchPrCommand)
.command(captureLocalCommand)
.command(captureTuiCommand)
.command(planDiffCommand)
.command(repoContextCommand)
.command(prContextCommand)
Expand Down Expand Up @@ -98,7 +100,7 @@ export const reviewCommand: CommandModule = {
.command(cleanupCommand)
.demandCommand(
1,
'Specify a subcommand: run, parse-args, match-remote, meta, issue-context, fetch-diff, comment-body, fetch-pr, capture-local, plan-diff, repo-context, pr-context, comment-status, load-rules, agent-prompt, emit-workflow, build-test, base-tree, scratch-tree, test-delta, drive, ab-drive, mock-provider, extract-step, script-lint, dedup-candidates, revert-hunk, resolve-anchors, check-coverage, cost-ledger, presubmit, test-efficacy, test-plan, findings, recover-findings, publish-assets, compose-review, save-artifact, submit, or cleanup.',
'Specify a subcommand: run, parse-args, match-remote, meta, issue-context, fetch-diff, comment-body, fetch-pr, capture-local, capture-tui, plan-diff, repo-context, pr-context, comment-status, load-rules, agent-prompt, emit-workflow, build-test, base-tree, scratch-tree, test-delta, drive, ab-drive, mock-provider, extract-step, script-lint, dedup-candidates, revert-hunk, resolve-anchors, check-coverage, cost-ledger, presubmit, test-efficacy, test-plan, findings, recover-findings, publish-assets, compose-review, save-artifact, submit, or cleanup.',
)
.version(false),
handler: () => {
Expand Down
7 changes: 7 additions & 0 deletions packages/cli/src/commands/review/agent-prompt.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4230,6 +4230,13 @@ describe('verify and reverse-audit briefs — the Step 4/5 methodology, in code'
expect(p).toContain('go read the claimed source first');
});

it('wires capture-tui into the verify brief — the producer its rendering claims cite', () => {
// The brief teaches terminal-rendering claims to run `review capture-tui`;
// if the block drops out of the prompt the command exists with no consumer.
const p = buildRoleBrief(PLAN, 'verify');
expect(p).toContain('"${QWEN_CODE_CLI:-qwen}" review capture-tui');
});

it('the verify brief carries the #9789 do-not-refute list and the constructible rejection bar', () => {
// The recall leak the finder-side RECALL rule closes has a verifier half:
// "silence is better than noise" read as a confidence bar lets Step 4 drop
Expand Down
Loading
Loading