Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
68 commits
Select commit Hold shift + click to select a range
be8ad2d
feat(review): capture-tui — rendering claims get pixels, not prose (P…
wenshao Aug 2, 2026
25c325a
Merge branch 'main' into feat/review-capture-tui
wenshao Aug 2, 2026
254e8ac
fix(review): capture-tui round-1 review fixes — refusal contract, arg…
wenshao Aug 2, 2026
c6b4964
fix(review): capture-tui round-2 review fixes — NaN durations, wedged…
wenshao Aug 2, 2026
ac04c0b
fix(review): capture-tui probes the binary, not `which`
wenshao Aug 2, 2026
fb3c6de
test(review): make capture-tui's no-tmux refusal testable everywhere
wenshao Aug 2, 2026
a389db3
fix(review): capture-tui bot-round-2 fixes — mkdir refusal, ladder co…
wenshao Aug 2, 2026
71d74d2
fix(review): capture-tui bot-round-3 fixes — pane holder, logical mat…
wenshao Aug 3, 2026
14d25e7
fix(review): capture-tui bot-round-4 fixes — holder tail-proofing, ev…
wenshao Aug 3, 2026
c238027
style(review): drop expect() message arg — vitest/valid-expect allows…
wenshao Aug 3, 2026
9fe1d5f
feat(review): capture-tui --ready — gate keystrokes on a rendered marker
wenshao Aug 3, 2026
88b34e6
Merge branch 'main' into feat/review-capture-tui
qwen-code-dev-bot Aug 3, 2026
99a4b5e
fix(review): capture-tui phase-2 review fixes — no stale artifacts, t…
wenshao Aug 3, 2026
6d62c58
Merge remote-tracking branch 'origin/main' into feat/review-capture-tui
qwen-code-dev-bot Aug 3, 2026
2eb45c0
fix(review): capture-tui bot-round-5 fixes — the timed-out review's f…
wenshao Aug 3, 2026
f573380
Merge branch 'feat/review-capture-tui' of https://github.com/QwenLM/q…
qwen-code-dev-bot Aug 3, 2026
a5f3578
style(review): drop expect() message args — vitest/valid-expect allow…
wenshao Aug 3, 2026
6f89e58
fix(tests): sync qwen-resolve-workflow expectations with externalized…
qwen-code-dev-bot Aug 3, 2026
3840f7d
fix(review): capture-tui bot-round-6 fixes — clear-first ordering, si…
wenshao Aug 4, 2026
a661b1f
test(ci): pin the timeout-advice branch CONDITION (R4-21)
wenshao Aug 4, 2026
55c9887
Merge remote-tracking branch 'origin/main' into feat/review-capture-tui
wenshao Aug 4, 2026
e46c9a0
fix(review): correct the -N version claim the R4-2 fix missed (JSDoc)
wenshao Aug 4, 2026
805fad2
Merge branch 'main' into feat/review-capture-tui
wenshao Aug 4, 2026
2cf87df
fix(review): stabilize capture-tui evidence tests and reap orphans (#…
qwen-code-dev-bot Aug 4, 2026
3bbab46
fix(tests): gate install-script zip packaging tests on POSIX zip avai…
qwen-code-dev-bot Aug 4, 2026
b864370
fix(review): capture-tui bot-round-7 fixes — the R5 ledger from the s…
wenshao Aug 4, 2026
d78b67d
fix(review): capture-tui R5 findings — holder SIGINT, png size, zip g…
qwen-code-dev-bot Aug 4, 2026
2f5d7cb
Merge branch 'main' into feat/review-capture-tui
qwen-code-dev-bot Aug 5, 2026
59ccbbd
fix(review): capture-tui round-8 follow-through — the C-c race and th…
wenshao Aug 5, 2026
22b9da1
fix(review): capture-tui round-9 follow-through — the -L position pin…
wenshao Aug 5, 2026
9c5d734
Merge remote-tracking branch 'origin/main' into feat/review-capture-tui
Aug 5, 2026
d78759f
fix(review): capture-tui round-9 fixes — holder loop, escaped sentine…
wenshao Aug 5, 2026
dacd3ed
fix(review): probe deadline as a seam, pinned against a hanging shim …
wenshao Aug 5, 2026
8a2c06e
fix(review): pin the escaped-readyFile and loop-hold Critical fixes (…
wenshao Aug 5, 2026
5d830e0
test(core): glob external-path test uses a dedicated empty dir, not /tmp
wenshao Aug 5, 2026
7606107
fix(review): capture-tui round-10 fixes — layer-0 trap, wedged-vs-abs…
wenshao Aug 6, 2026
fa23ef4
test(review): pin the render-window signal disposition end to end
wenshao Aug 6, 2026
e719bc6
fix(review): capture-tui round-11 fixes — SIGKILL belts, dual-base sw…
wenshao Aug 6, 2026
d43932e
test(review): cleanup kill assertions carry the SIGKILL belt option
wenshao Aug 6, 2026
cc83296
Merge remote-tracking branch 'origin/main' into feat/review-capture-tui
wenshao Aug 6, 2026
1c58cba
fix(review): capture-tui round-12 fixes — belt-cut reap, capture-shap…
wenshao Aug 6, 2026
8b9a1f4
fix(review): capture-tui round-13 fix — REAP set pin lives outside th…
wenshao Aug 6, 2026
b8edd8c
fix(review): never recursively delete at artifact paths — a directory…
wenshao Aug 6, 2026
9aede43
fix(review): statSync import for the blocker-survival pins
wenshao Aug 6, 2026
3208d23
fix(review): capture-tui round-12 suggestions — dual-base truth, belt…
wenshao Aug 6, 2026
401987d
Merge remote-tracking branch 'origin/main' into feat/review-capture-tui
wenshao Aug 6, 2026
fb662c7
fix(review): capture-tui round-14 — land the pins the replies claimed…
wenshao Aug 6, 2026
dd490b0
Merge branch 'main' into feat/review-capture-tui
qwen-code-dev-bot Aug 7, 2026
8bacf5b
fix(review): drain queued signals via setImmediate — a 0ms timer race…
wenshao Aug 7, 2026
9d12f4a
fix(review): round-13 criticals — deletion is only ever this run's own
wenshao Aug 8, 2026
b4c5b43
Merge remote-tracking branch 'origin/main' into wt-8388-work
wenshao Aug 8, 2026
52de532
fix(review): round-13 suggestions — fail fast, model bash, drop dead …
wenshao Aug 8, 2026
61ae1f8
fix(review): never let a partial artifact outlive its failed write
wenshao Aug 8, 2026
00cbac4
fix(review): round-14 criticals — evidence must be what THIS run rend…
wenshao Aug 8, 2026
3470023
fix(review): round-14 suggestions — pin what the shell runs, not what…
wenshao Aug 8, 2026
3ccefa6
fix(review): drop the banned two-argument expect in the probe-refusal…
wenshao Aug 8, 2026
7056931
fix(review): round-15 criticals — no fabricated bytes, no foreign del…
wenshao Aug 8, 2026
824d64e
fix(review): round-15 suggestions — reachable caps, honest probes, qu…
wenshao Aug 8, 2026
e9e4594
fix(review): round-16 criticals — the watchdog must not answer a keyp…
wenshao Aug 9, 2026
71a1537
chore(review): split the CI tooling step and its pin out to #8792
wenshao Aug 9, 2026
e7bcfca
fix(review): round-16 production defects — a hang is not a refusal
wenshao Aug 9, 2026
d8410d3
fix(review): a symlink is an occupant — writes must not escape the --…
wenshao Aug 9, 2026
544083e
fix(review): a failing stderr must not silence the refusal JSON
wenshao Aug 9, 2026
dbdcb81
test(review): restore the probe seams in a hook, not per test
wenshao Aug 9, 2026
b56348d
test(review): actually install the probe-restore hook
wenshao Aug 9, 2026
f65fd74
fix(review): a partial cleanup, an unbounded read, and a sentinel tha…
wenshao Aug 9, 2026
a1b5bed
test(review): make five pins discriminate, and retire one that cannot
wenshao Aug 9, 2026
d5e293e
test(review): contain the fd-exhaustion test in a child process
wenshao Aug 9, 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 @@ -231,6 +231,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 @@ -44,6 +44,7 @@ describe('reviewCommand', () => {
'match-remote',
'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 @@ -15,6 +15,7 @@ import { composeReviewCommand } from './review/compose-review.js';
import { findingsCommand } from './review/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 @@ -51,6 +52,7 @@ export const reviewCommand: CommandModule = {
.command(matchRemoteCommand)
.command(fetchPrCommand)
.command(captureLocalCommand)
.command(captureTuiCommand)
.command(planDiffCommand)
.command(repoContextCommand)
.command(prContextCommand)
Expand Down Expand Up @@ -78,7 +80,7 @@ export const reviewCommand: CommandModule = {
.command(cleanupCommand)
.demandCommand(
1,
'Specify a subcommand: run, parse-args, match-remote, fetch-pr, capture-local, plan-diff, repo-context, pr-context, comment-status, load-rules, agent-prompt, build-test, base-tree, test-delta, drive, mock-provider, extract-step, script-lint, resolve-anchors, check-coverage, cost-ledger, presubmit, test-efficacy, test-plan, findings, publish-assets, compose-review, save-artifact, submit, or cleanup.',
'Specify a subcommand: run, parse-args, match-remote, fetch-pr, capture-local, capture-tui, plan-diff, repo-context, pr-context, comment-status, load-rules, agent-prompt, build-test, base-tree, test-delta, drive, mock-provider, extract-step, script-lint, resolve-anchors, check-coverage, cost-ledger, presubmit, test-efficacy, test-plan, 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 @@ -2599,6 +2599,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 is a verdict role: Exclusion Criteria yes, finding format no', () => {
const p = buildRoleBrief(PLAN, 'verify');
expect(p).toContain('What is NOT a finding'); // the Exclusion Criteria heading
Expand Down
Loading
Loading