@qwen-code/qwen-code 0.15.7-preview.0 → 0.15.7-preview.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -109,7 +109,10 @@ Settings are organized into categories. Most settings should be placed within th
109
109
  | `ui.statusLine` | object | Custom status line configuration. A shell command whose output is shown in the footer's left section. See [Status Line](../features/status-line). | `undefined` |
110
110
  | `ui.hideWindowTitle` | boolean | Hide the window title bar. | `false` |
111
111
  | `ui.hideTips` | boolean | Hide all tips (startup and post-response) in the UI. See [Contextual Tips](../features/tips). | `false` |
112
- | `ui.hideBanner` | boolean | Hide the application banner. | `false` |
112
+ | `ui.hideBanner` | boolean | Hide the startup ASCII logo and info panel. Tips and chat input still render unless `ui.hideTips` is also set. | `false` |
113
+ | `ui.customBannerTitle` | string | Replace the default `>_ Qwen Code` title in the banner info panel. The `(vX.Y.Z)` version suffix is always appended; auth, model, and path lines are not affected. Sanitized; capped at 80 characters. | `""` |
114
+ | `ui.customBannerSubtitle` | string | Optional subtitle line rendered between the banner title and the auth/model line, in place of the blank spacer row. Sanitized; capped at 160 characters. Empty (default) keeps the original blank spacer. | `""` |
115
+ | `ui.customAsciiArt` | string \| object | Replace the QWEN ASCII logo in the banner. Accepts an inline string (used for both width tiers), `{ "path": "./brand.txt" }` (relative paths resolve against the owning settings file's directory; read once at startup with `O_NOFOLLOW` on POSIX, capped at 64 KB), or `{ "small": ..., "large": ... }` for width-aware selection. Sanitized; capped at 200 lines × 200 columns per tier. | `undefined` |
113
116
  | `ui.hideFooter` | boolean | Hide the footer from the UI. | `false` |
114
117
  | `ui.showMemoryUsage` | boolean | Display memory usage information in the UI. | `false` |
115
118
  | `ui.showLineNumbers` | boolean | Show line numbers in code blocks in the CLI output. | `true` |
@@ -129,15 +129,15 @@ You can review PRs from other repositories by passing the full URL:
129
129
 
130
130
  This runs in **lightweight mode** — no worktree, no linter, no build/test, no autofix. The review is based on the diff text only (fetched via GitHub API). PR comments can still be posted if you have write access.
131
131
 
132
- | Capability | Same-repo | Cross-repo |
133
- | ------------------------------------------------ | --------- | ----------------------------- |
132
+ | Capability | Same-repo | Cross-repo |
133
+ | ---------------------------------------------------------- | --------- | ----------------------------- |
134
134
  | LLM review (Agents 1-6 + verify + iterative reverse audit) | ✅ | ✅ |
135
135
  | Agent 7: Build & test | ✅ | ❌ (no local codebase) |
136
- | Deterministic analysis (linter/typecheck) | ✅ | ❌ |
137
- | Cross-file impact analysis | ✅ | ❌ |
138
- | Autofix | ✅ | ❌ |
139
- | PR inline comments | ✅ | ✅ (if you have write access) |
140
- | Incremental review cache | ✅ | ❌ |
136
+ | Deterministic analysis (linter/typecheck) | ✅ | ❌ |
137
+ | Cross-file impact analysis | ✅ | ❌ |
138
+ | Autofix | ✅ | ❌ |
139
+ | PR inline comments | ✅ | ✅ (if you have write access) |
140
+ | Incremental review cache | ✅ | ❌ |
141
141
 
142
142
  ## PR Inline Comments
143
143
 
@@ -258,13 +258,13 @@ For large diffs (>10 modified symbols), analysis prioritizes functions with sign
258
258
 
259
259
  The review pipeline uses a bounded number of LLM calls regardless of how many findings are produced:
260
260
 
261
- | Stage | LLM calls | Notes |
262
- | -------------------------------- | ----------------- | ---------------------------------------------------- |
263
- | Deterministic analysis (Step 3) | 0 | Shell commands only |
264
- | Review agents (Step 4) | 9 (or 8) | Run in parallel; Agent 7 skipped in cross-repo mode |
265
- | Batch verification (Step 5) | 1 | Single agent verifies all findings at once |
266
- | Iterative reverse audit (Step 6) | 1-3 | Loops until "No issues found" or 3-round cap |
267
- | **Total** | **11-13 (10-12)** | Same-repo: 11-13; cross-repo: 10-12 (no Agent 7) |
261
+ | Stage | LLM calls | Notes |
262
+ | -------------------------------- | ----------------- | --------------------------------------------------- |
263
+ | Deterministic analysis (Step 3) | 0 | Shell commands only |
264
+ | Review agents (Step 4) | 9 (or 8) | Run in parallel; Agent 7 skipped in cross-repo mode |
265
+ | Batch verification (Step 5) | 1 | Single agent verifies all findings at once |
266
+ | Iterative reverse audit (Step 6) | 1-3 | Loops until "No issues found" or 3-round cap |
267
+ | **Total** | **11-13 (10-12)** | Same-repo: 11-13; cross-repo: 10-12 (no Agent 7) |
268
268
 
269
269
  Most PRs converge to the lower end of the range (1 reverse audit round); the cap prevents runaway cost on pathological cases.
270
270
 
@@ -121,6 +121,7 @@ Forcing the user to confirm-or-decline every time the PR has any Qwen Code histo
121
121
  **Priority matters because** a stale or resolved comment that happens to share a `(path, line)` with a new finding is not a real conflict — the underlying code may have changed in the stale case, and the conversation is already closed in the resolved case. Without priority, the line-based check would fire false-positive prompts on those.
122
122
 
123
123
  **Trade-off:**
124
+
124
125
  - ✅ Common case (re-running /review on a PR after a few new commits) no longer prompts unnecessarily.
125
126
  - ✅ The terminal log keeps the user informed about what was skipped, so transparency is preserved.
126
127
  - ❌ Conceptual overlap that doesn't share a line is missed — e.g. a prior comment on line 559 about cache lifecycle and a new comment on line 1352 about cache lifecycle would be classified `No conflict`. Line-based heuristics cannot detect "same root cause, different anchor." If the user wants semantic-overlap detection, they must read the terminal log and the PR comments themselves.
@@ -144,6 +145,7 @@ Line-based classification was chosen because it's deterministic, cheap, and catc
144
145
  **Why this stacks with self-PR downgrade:** a self-authored PR with red CI hits **both** downgrade rules. The event is `COMMENT` either way, so stacking is operationally a no-op — but the body should mention both reasons so a future maintainer reading the review knows why an LLM that found no Critical issues did not approve.
145
146
 
146
147
  **Trade-off:**
148
+
147
149
  - ✅ No more "LLM approved while CI is red" embarrassments.
148
150
  - ✅ Reviewer's substantive work (inline comments) is preserved.
149
151
  - ❌ Adds two extra API calls (`check-runs` + `statuses`) per APPROVE-bound submit; only relevant for the `APPROVE` path so the cost is negligible.
@@ -117,12 +117,12 @@ Extract the list of changed files from the diff output. For local uncommitted re
117
117
 
118
118
  Tools currently covered:
119
119
 
120
- | Language | Tools |
121
- |---|---|
122
- | TypeScript / JavaScript | `tsc --noEmit --incremental` (typecheck), `eslint --format=json` (linter, changed files only) |
123
- | Python | `ruff check --output-format=json` (linter, changed files only) |
124
- | Rust | `cargo clippy --message-format=json` (typecheck — clippy includes compile checks; Agent 7 can skip `cargo build`) |
125
- | Go | `go vet ./...` (typecheck — vet includes compile checks; Agent 7 can skip `go build`), `golangci-lint run --out-format=json ./...` (linter) |
120
+ | Language | Tools |
121
+ | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
122
+ | TypeScript / JavaScript | `tsc --noEmit --incremental` (typecheck), `eslint --format=json` (linter, changed files only) |
123
+ | Python | `ruff check --output-format=json` (linter, changed files only) |
124
+ | Rust | `cargo clippy --message-format=json` (typecheck — clippy includes compile checks; Agent 7 can skip `cargo build`) |
125
+ | Go | `go vet ./...` (typecheck — vet includes compile checks; Agent 7 can skip `go build`), `golangci-lint run --out-format=json ./...` (linter) |
126
126
 
127
127
  Read the output JSON. `findings[]` entries are already pre-confirmed (Source: `[typecheck]` for tsc / cargo-clippy / go-vet, `[linter]` for eslint / ruff / golangci-lint, with `severity` mapped to Critical / Nice to have); pass them straight through to Step 5. `toolsRun[]` records exit codes / durations / timeout flags; `toolsSkipped[]` records why a tool didn't run (no config, missing runtime, etc.) — include the skipped tool names in the Step 7 summary.
128
128