@qwen-code/qwen-code 0.15.7-preview.2 → 0.15.8-nightly.20260508.0491252b2
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.
- package/README.md +11 -2
- package/bundled/qc-helper/docs/configuration/model-providers.md +7 -0
- package/bundled/qc-helper/docs/configuration/settings.md +40 -31
- package/bundled/qc-helper/docs/features/_meta.ts +1 -0
- package/bundled/qc-helper/docs/features/markdown-rendering.md +163 -0
- package/bundled/qc-helper/docs/reference/keyboard-shortcuts.md +11 -10
- package/cli.js +10536 -7519
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -353,6 +353,9 @@ Use the `/model` command at any time to switch between all configured models.
|
|
|
353
353
|
|
|
354
354
|
You can also run models locally — no API key or cloud account needed. This is not an authentication method; instead, configure your local model endpoint in `~/.qwen/settings.json` using the `modelProviders` field.
|
|
355
355
|
|
|
356
|
+
Set `generationConfig.contextWindowSize` inside the matching provider entry
|
|
357
|
+
and adjust it to the context length configured on your local server.
|
|
358
|
+
|
|
356
359
|
<details>
|
|
357
360
|
<summary>Ollama setup</summary>
|
|
358
361
|
|
|
@@ -368,7 +371,10 @@ You can also run models locally — no API key or cloud account needed. This is
|
|
|
368
371
|
"id": "qwen3:32b",
|
|
369
372
|
"name": "Qwen3 32B (Ollama)",
|
|
370
373
|
"baseUrl": "http://localhost:11434/v1",
|
|
371
|
-
"description": "Qwen3 32B running locally via Ollama"
|
|
374
|
+
"description": "Qwen3 32B running locally via Ollama",
|
|
375
|
+
"generationConfig": {
|
|
376
|
+
"contextWindowSize": 131072
|
|
377
|
+
}
|
|
372
378
|
}
|
|
373
379
|
]
|
|
374
380
|
},
|
|
@@ -400,7 +406,10 @@ You can also run models locally — no API key or cloud account needed. This is
|
|
|
400
406
|
"id": "Qwen/Qwen3-32B",
|
|
401
407
|
"name": "Qwen3 32B (vLLM)",
|
|
402
408
|
"baseUrl": "http://localhost:8000/v1",
|
|
403
|
-
"description": "Qwen3 32B running locally via vLLM"
|
|
409
|
+
"description": "Qwen3 32B running locally via vLLM",
|
|
410
|
+
"generationConfig": {
|
|
411
|
+
"contextWindowSize": 131072
|
|
412
|
+
}
|
|
404
413
|
}
|
|
405
414
|
]
|
|
406
415
|
},
|
|
@@ -417,6 +417,13 @@ The configuration resolution follows a strict layering model with one crucial ru
|
|
|
417
417
|
- All fields **not defined** by the provider are set to `undefined` (not inherited from settings)
|
|
418
418
|
- This ensures provider configurations act as a complete, self-contained "sealed package"
|
|
419
419
|
|
|
420
|
+
If a model is listed in `modelProviders`, put all model-specific
|
|
421
|
+
generation settings for that model in the matching provider entry. Top-level
|
|
422
|
+
`model.generationConfig` values, including `contextWindowSize`,
|
|
423
|
+
`modalities`, `customHeaders`, and `extra_body`, are ignored for provider
|
|
424
|
+
models. Configure those fields under
|
|
425
|
+
`modelProviders[authType][].generationConfig` for them to apply.
|
|
426
|
+
|
|
420
427
|
2. **When NO modelProvider model is selected** (e.g., using `--model` with a raw model ID, or using CLI/env/settings directly):
|
|
421
428
|
- The resolution falls through to lower layers
|
|
422
429
|
- Fields are populated from CLI → env → settings → defaults
|
|
@@ -116,6 +116,7 @@ Settings are organized into categories. Most settings should be placed within th
|
|
|
116
116
|
| `ui.hideFooter` | boolean | Hide the footer from the UI. | `false` |
|
|
117
117
|
| `ui.showMemoryUsage` | boolean | Display memory usage information in the UI. | `false` |
|
|
118
118
|
| `ui.showLineNumbers` | boolean | Show line numbers in code blocks in the CLI output. | `true` |
|
|
119
|
+
| `ui.renderMode` | string | Default Markdown display mode. Use `"render"` for rich visual previews or `"raw"` to show source-oriented Markdown by default. Toggle during a session with `Alt/Option+M`; on macOS the terminal must send Option as Meta. See [Markdown Rendering](../features/markdown-rendering). | `"render"` |
|
|
119
120
|
| `ui.showCitations` | boolean | Show citations for generated text in the chat. | `true` |
|
|
120
121
|
| `ui.compactMode` | boolean | Hide tool output and thinking for a cleaner view. Toggle with `Ctrl+O` during a session or via the Settings dialog. Tool approval prompts are never hidden, even in compact mode. The setting persists across sessions. | `false` |
|
|
121
122
|
| `ui.shellOutputMaxLines` | number | Max number of shell output lines shown inline. Set to `0` to disable the cap and show full output. Hidden lines are surfaced via the `+N lines` indicator. Errors, `!`-prefix user-initiated commands, confirming tools, and focused embedded shells always show full output. | `5` |
|
|
@@ -199,15 +200,20 @@ To override this behavior, either set `samplingParams.max_tokens` in your settin
|
|
|
199
200
|
|
|
200
201
|
Overrides the default context window size for the selected model. Qwen Code determines the context window using built-in defaults based on model name matching, with a constant fallback value. Use this setting when a provider's effective context limit differs from Qwen Code's default. This value defines the model's assumed maximum context capacity, not a per-request token limit.
|
|
201
202
|
|
|
203
|
+
When the selected model is defined in `modelProviders`, set
|
|
204
|
+
`contextWindowSize` in that provider entry's `generationConfig` instead of the
|
|
205
|
+
top-level `model.generationConfig`. Provider model entries are sealed, so
|
|
206
|
+
top-level generation settings do not fill missing provider fields.
|
|
207
|
+
|
|
202
208
|
**modalities:**
|
|
203
209
|
|
|
204
210
|
Overrides the auto-detected input modalities for the selected model. Qwen Code automatically detects supported modalities (image, PDF, audio, video) based on model name pattern matching. Use this setting when the auto-detection is incorrect — for example, to enable `pdf` for a model that supports it but isn't recognized. Format: `{ "image": true, "pdf": true, "audio": true, "video": true }`. Omit a key or set it to `false` for unsupported types.
|
|
205
211
|
|
|
206
212
|
**customHeaders:**
|
|
207
213
|
|
|
208
|
-
Allows you to add custom HTTP headers to all API requests. This is useful for request tracing, monitoring, API gateway routing, or when different models require different headers.
|
|
214
|
+
Allows you to add custom HTTP headers to all API requests. This is useful for request tracing, monitoring, API gateway routing, or when different models require different headers. For provider models, define `customHeaders` in `modelProviders[].generationConfig.customHeaders`. For runtime models without a matching provider entry, define it in `model.generationConfig.customHeaders`. No merging occurs between the two levels.
|
|
209
215
|
|
|
210
|
-
The `extra_body` field allows you to add custom parameters to the request body sent to the API. This is useful for provider-specific options that are not covered by the standard configuration fields. **Note: This field is only supported for OpenAI-compatible providers (`openai`, `qwen-oauth`). It is ignored for Anthropic and Gemini providers.**
|
|
216
|
+
The `extra_body` field allows you to add custom parameters to the request body sent to the API. This is useful for provider-specific options that are not covered by the standard configuration fields. **Note: This field is only supported for OpenAI-compatible providers (`openai`, `qwen-oauth`). It is ignored for Anthropic and Gemini providers.** For provider models, define `extra_body` in `modelProviders[].generationConfig.extra_body`. For runtime models without a matching provider entry, define it in `model.generationConfig.extra_body`.
|
|
211
217
|
|
|
212
218
|
**model.openAILoggingDir examples:**
|
|
213
219
|
|
|
@@ -463,15 +469,16 @@ Configures connections to one or more Model-Context Protocol (MCP) servers for d
|
|
|
463
469
|
|
|
464
470
|
Configures logging and metrics collection for Qwen Code. For more information, see [telemetry](/developers/development/telemetry).
|
|
465
471
|
|
|
466
|
-
| Setting
|
|
467
|
-
|
|
|
468
|
-
| `telemetry.enabled`
|
|
469
|
-
| `telemetry.target`
|
|
470
|
-
| `telemetry.otlpEndpoint`
|
|
471
|
-
| `telemetry.otlpProtocol`
|
|
472
|
-
| `telemetry.logPrompts`
|
|
473
|
-
| `telemetry.
|
|
474
|
-
| `telemetry.
|
|
472
|
+
| Setting | Type | Description | Default |
|
|
473
|
+
| ------------------------------------------ | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- |
|
|
474
|
+
| `telemetry.enabled` | boolean | Whether or not telemetry is enabled. | |
|
|
475
|
+
| `telemetry.target` | string | The destination for collected telemetry. Supported values are `local` and `gcp`. | |
|
|
476
|
+
| `telemetry.otlpEndpoint` | string | The endpoint for the OTLP Exporter. | |
|
|
477
|
+
| `telemetry.otlpProtocol` | string | The protocol for the OTLP Exporter (`grpc` or `http`). | |
|
|
478
|
+
| `telemetry.logPrompts` | boolean | Whether or not to include the content of user prompts in the logs. | |
|
|
479
|
+
| `telemetry.includeSensitiveSpanAttributes` | boolean | Whether to include `prompt`, `function_args`, and `response_text` in spans created by the log-to-span bridge. Only controls bridge spans; OTel logs and other telemetry sinks may still receive `response_text`. | `false` |
|
|
480
|
+
| `telemetry.outfile` | string | The file to write telemetry to when `target` is `local`. | |
|
|
481
|
+
| `telemetry.useCollector` | boolean | Whether to use an external OTLP collector. | |
|
|
475
482
|
|
|
476
483
|
### Example `settings.json`
|
|
477
484
|
|
|
@@ -513,7 +520,8 @@ Here is an example of a `settings.json` file with the nested structure, new as o
|
|
|
513
520
|
"enabled": true,
|
|
514
521
|
"target": "local",
|
|
515
522
|
"otlpEndpoint": "http://localhost:4317",
|
|
516
|
-
"logPrompts": true
|
|
523
|
+
"logPrompts": true,
|
|
524
|
+
"includeSensitiveSpanAttributes": false
|
|
517
525
|
},
|
|
518
526
|
"privacy": {
|
|
519
527
|
"usageStatisticsEnabled": true
|
|
@@ -559,25 +567,26 @@ For authentication-related variables (like `OPENAI_*`) and the recommended `.qwe
|
|
|
559
567
|
|
|
560
568
|
### Environment Variables Table
|
|
561
569
|
|
|
562
|
-
| Variable
|
|
563
|
-
|
|
|
564
|
-
| `QWEN_TELEMETRY_ENABLED`
|
|
565
|
-
| `QWEN_TELEMETRY_TARGET`
|
|
566
|
-
| `QWEN_TELEMETRY_OTLP_ENDPOINT`
|
|
567
|
-
| `QWEN_TELEMETRY_OTLP_PROTOCOL`
|
|
568
|
-
| `QWEN_TELEMETRY_LOG_PROMPTS`
|
|
569
|
-
| `
|
|
570
|
-
| `
|
|
571
|
-
| `
|
|
572
|
-
| `
|
|
573
|
-
| `
|
|
574
|
-
| `
|
|
575
|
-
| `
|
|
576
|
-
| `
|
|
577
|
-
| `
|
|
578
|
-
| `
|
|
579
|
-
| `
|
|
580
|
-
| `
|
|
570
|
+
| Variable | Description | Notes |
|
|
571
|
+
| -------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
572
|
+
| `QWEN_TELEMETRY_ENABLED` | Set to `true` or `1` to enable telemetry. Any other value is treated as disabling it. | Overrides the `telemetry.enabled` setting. |
|
|
573
|
+
| `QWEN_TELEMETRY_TARGET` | Sets the telemetry target (`local` or `gcp`). | Overrides the `telemetry.target` setting. |
|
|
574
|
+
| `QWEN_TELEMETRY_OTLP_ENDPOINT` | Sets the OTLP endpoint for telemetry. | Overrides the `telemetry.otlpEndpoint` setting. |
|
|
575
|
+
| `QWEN_TELEMETRY_OTLP_PROTOCOL` | Sets the OTLP protocol (`grpc` or `http`). | Overrides the `telemetry.otlpProtocol` setting. |
|
|
576
|
+
| `QWEN_TELEMETRY_LOG_PROMPTS` | Set to `true` or `1` to enable or disable logging of user prompts. Any other value is treated as disabling it. | Overrides the `telemetry.logPrompts` setting. |
|
|
577
|
+
| `QWEN_TELEMETRY_INCLUDE_SENSITIVE_SPAN_ATTRIBUTES` | Set to `true` or `1` to include `prompt`, `function_args`, and `response_text` in spans created by the log-to-span bridge. Any other value disables it. | Overrides the `telemetry.includeSensitiveSpanAttributes` setting. Only controls bridge spans; OTel logs and other telemetry sinks may still receive `response_text`. |
|
|
578
|
+
| `QWEN_TELEMETRY_OUTFILE` | Sets the file path to write telemetry to when the target is `local`. | Overrides the `telemetry.outfile` setting. |
|
|
579
|
+
| `QWEN_TELEMETRY_USE_COLLECTOR` | Set to `true` or `1` to enable or disable using an external OTLP collector. Any other value is treated as disabling it. | Overrides the `telemetry.useCollector` setting. |
|
|
580
|
+
| `QWEN_SANDBOX` | Alternative to the `sandbox` setting in `settings.json`. | Accepts `true`, `false`, `docker`, `podman`, or a custom command string. |
|
|
581
|
+
| `QWEN_SANDBOX_IMAGE` | Overrides sandbox image selection for Docker/Podman. | Takes precedence over `tools.sandboxImage`. |
|
|
582
|
+
| `SEATBELT_PROFILE` | (macOS specific) Switches the Seatbelt (`sandbox-exec`) profile on macOS. | `permissive-open`: (Default) Restricts writes to the project folder (and a few other folders, see `packages/cli/src/utils/sandbox-macos-permissive-open.sb`) but allows other operations. `strict`: Uses a strict profile that declines operations by default. `<profile_name>`: Uses a custom profile. To define a custom profile, create a file named `sandbox-macos-<profile_name>.sb` in your project's `.qwen/` directory (e.g., `my-project/.qwen/sandbox-macos-custom.sb`). |
|
|
583
|
+
| `DEBUG` or `DEBUG_MODE` | (often used by underlying libraries or the CLI itself) Set to `true` or `1` to enable verbose debug logging, which can be helpful for troubleshooting. | **Note:** These variables are automatically excluded from project `.env` files by default to prevent interference with the CLI behavior. Use `.qwen/.env` files if you need to set these for Qwen Code specifically. |
|
|
584
|
+
| `NO_COLOR` | Set to any value to disable all color output in the CLI. | |
|
|
585
|
+
| `CLI_TITLE` | Set to a string to customize the title of the CLI. | |
|
|
586
|
+
| `CODE_ASSIST_ENDPOINT` | Specifies the endpoint for the code assist server. | This is useful for development and testing. |
|
|
587
|
+
| `QWEN_CODE_MAX_OUTPUT_TOKENS` | Overrides the default maximum output tokens per response. When not set, Qwen Code uses an adaptive strategy: starts with 8K tokens and automatically retries with 64K if the response is truncated. Set this to a specific value (e.g., `16000`) to use a fixed limit instead. | Takes precedence over the capped default (8K) but is overridden by `samplingParams.max_tokens` in settings. Disables automatic escalation when set. Example: `export QWEN_CODE_MAX_OUTPUT_TOKENS=16000` |
|
|
588
|
+
| `QWEN_CODE_UNATTENDED_RETRY` | Set to `true` or `1` to enable persistent retry mode. When enabled, transient API capacity errors (HTTP 429 Rate Limit and 529 Overloaded) are retried indefinitely with exponential backoff (capped at 5 minutes per retry) and heartbeat keepalives every 30 seconds on stderr. | Designed for CI/CD pipelines and background automation where long-running tasks should survive temporary API outages. Must be set explicitly — `CI=true` alone does **not** activate this mode. See [Headless Mode](../features/headless#persistent-retry-mode) for details. Example: `export QWEN_CODE_UNATTENDED_RETRY=1` |
|
|
589
|
+
| `QWEN_CODE_PROFILE_STARTUP` | Set to `1` to enable startup performance profiling. Writes a JSON timing report to `~/.qwen/startup-perf/` with per-phase durations. | Only active inside the sandbox child process. Zero overhead when not set. Example: `export QWEN_CODE_PROFILE_STARTUP=1` |
|
|
581
590
|
|
|
582
591
|
## Command-Line Arguments
|
|
583
592
|
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
# Markdown Rendering
|
|
2
|
+
|
|
3
|
+
Qwen Code renders common Markdown structures directly in the TUI so model
|
|
4
|
+
answers are easier to scan without leaving the terminal. The renderer is
|
|
5
|
+
designed to keep the original source reachable, especially for visual blocks
|
|
6
|
+
such as Mermaid diagrams and LaTeX math.
|
|
7
|
+
|
|
8
|
+
## Render and Raw Modes
|
|
9
|
+
|
|
10
|
+
By default, Markdown is shown in `render` mode. Supported blocks render as
|
|
11
|
+
visual previews where possible:
|
|
12
|
+
|
|
13
|
+
- Mermaid fenced code blocks
|
|
14
|
+
- Markdown tables
|
|
15
|
+
- task lists
|
|
16
|
+
- blockquotes
|
|
17
|
+
- inline and block LaTeX math
|
|
18
|
+
- fenced code blocks with syntax highlighting
|
|
19
|
+
|
|
20
|
+
Press `Alt/Option+M` to toggle the current session between modes. On macOS,
|
|
21
|
+
the terminal must send Option as Meta for this shortcut; otherwise Option+M is
|
|
22
|
+
treated as normal text input.
|
|
23
|
+
|
|
24
|
+
- `render`: show rich terminal previews for supported Markdown.
|
|
25
|
+
- `raw`: show source-oriented Markdown for visual blocks such as Mermaid,
|
|
26
|
+
tables, and LaTeX.
|
|
27
|
+
|
|
28
|
+
To start Qwen Code in raw mode by default, set `ui.renderMode`:
|
|
29
|
+
|
|
30
|
+
```json
|
|
31
|
+
{
|
|
32
|
+
"ui": {
|
|
33
|
+
"renderMode": "raw"
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Accepted values are `"render"` and `"raw"`. The shortcut only changes the
|
|
39
|
+
current session view; it does not rewrite your settings file.
|
|
40
|
+
|
|
41
|
+
## Mermaid
|
|
42
|
+
|
|
43
|
+
Fenced `mermaid` code blocks render visually in `render` mode. The TUI uses a
|
|
44
|
+
layered strategy:
|
|
45
|
+
|
|
46
|
+
1. If enabled and supported, Qwen Code asks Mermaid CLI (`mmdc`) to render the
|
|
47
|
+
diagram to a PNG and sends it to the terminal image protocol.
|
|
48
|
+
2. If terminal images are unavailable but `chafa` is installed, the same PNG can
|
|
49
|
+
be converted to ANSI block graphics.
|
|
50
|
+
3. Otherwise, Qwen Code falls back to a terminal wireframe or compact text
|
|
51
|
+
preview.
|
|
52
|
+
4. If a Mermaid diagram type cannot be previewed, Qwen Code shows the original
|
|
53
|
+
fenced source instead of hiding it behind a placeholder.
|
|
54
|
+
|
|
55
|
+
Mermaid image rendering is disabled by default because it requires external
|
|
56
|
+
renderers and terminal image support. Enable it with:
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
QWEN_CODE_MERMAID_IMAGE_RENDERING=1 qwen
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Optional environment variables:
|
|
63
|
+
|
|
64
|
+
| Variable | Description |
|
|
65
|
+
| ------------------------------------------- | ----------------------------------------------------------------------------------- |
|
|
66
|
+
| `QWEN_CODE_MERMAID_IMAGE_RENDERING=1` | Enables external Mermaid image rendering. |
|
|
67
|
+
| `QWEN_CODE_DISABLE_MERMAID_IMAGES=1` | Disables Mermaid image rendering even when enabled elsewhere. |
|
|
68
|
+
| `QWEN_CODE_MERMAID_IMAGE_PROTOCOL=kitty` | Forces Kitty protocol output. Useful for terminals such as Kitty and Ghostty. |
|
|
69
|
+
| `QWEN_CODE_MERMAID_IMAGE_PROTOCOL=iterm2` | Requests iTerm2 inline images. Interactive TUI rendering falls back to text/ANSI. |
|
|
70
|
+
| `QWEN_CODE_MERMAID_IMAGE_PROTOCOL=off` | Disables terminal image protocols and allows text or `chafa` fallback. |
|
|
71
|
+
| `QWEN_CODE_MERMAID_MMD_CLI=/path/to/mmdc` | Uses a specific Mermaid CLI executable. |
|
|
72
|
+
| `QWEN_CODE_MERMAID_ALLOW_NPX=1` | Allows Qwen Code to run `npx @mermaid-js/mermaid-cli` when `mmdc` is not installed. |
|
|
73
|
+
| `QWEN_CODE_MERMAID_ALLOW_LOCAL_RENDERERS=1` | Allows project-local renderer binaries under `node_modules/.bin`. |
|
|
74
|
+
| `QWEN_CODE_MERMAID_RENDER_WIDTH=1200` | Overrides the PNG render width. |
|
|
75
|
+
| `QWEN_CODE_MERMAID_RENDER_TIMEOUT_MS=10000` | Overrides the external render timeout, capped at 60000 ms. |
|
|
76
|
+
| `QWEN_CODE_MERMAID_CELL_ASPECT_RATIO=0.5` | Adjusts image row fitting for terminal font cell geometry. |
|
|
77
|
+
|
|
78
|
+
The first image render can be slow, especially when `npx` needs to resolve or
|
|
79
|
+
download Mermaid CLI. During streaming, Qwen Code shows a bounded text preview
|
|
80
|
+
and attempts image rendering only after the model response is complete.
|
|
81
|
+
|
|
82
|
+
### Mermaid Source Copy
|
|
83
|
+
|
|
84
|
+
Every rendered Mermaid block includes a source hint such as:
|
|
85
|
+
|
|
86
|
+
```text
|
|
87
|
+
Mermaid flowchart (TD) · source: /copy mermaid 1
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
Use these commands to copy Mermaid source from the last AI response:
|
|
91
|
+
|
|
92
|
+
| Command | Behavior |
|
|
93
|
+
| ---------------------- | --------------------------------------------- |
|
|
94
|
+
| `/copy mermaid` | Copies the last Mermaid block. |
|
|
95
|
+
| `/copy mermaid 1` | Copies the first Mermaid block. |
|
|
96
|
+
| `/copy code mermaid` | Copies the last fenced `mermaid` code block. |
|
|
97
|
+
| `/copy code mermaid 1` | Copies the first fenced `mermaid` code block. |
|
|
98
|
+
|
|
99
|
+
`/copy code 1` counts all fenced code blocks, not only Mermaid blocks. Use
|
|
100
|
+
`/copy mermaid N` when you want the Mermaid-specific sequence shown in the
|
|
101
|
+
rendered title.
|
|
102
|
+
|
|
103
|
+
## LaTeX Math
|
|
104
|
+
|
|
105
|
+
Qwen Code supports basic inline and block LaTeX rendering in the terminal:
|
|
106
|
+
|
|
107
|
+
```markdown
|
|
108
|
+
Inline math: $x = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a}$
|
|
109
|
+
|
|
110
|
+
$$
|
|
111
|
+
\sum_{n=1}^{\infty} 1/n^2 = \pi^2/6
|
|
112
|
+
$$
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
The renderer focuses on common symbols and readable terminal output. It is not
|
|
116
|
+
a full TeX engine; complex layouts such as matrices, aligned equations, and
|
|
117
|
+
large nested expressions may be simplified.
|
|
118
|
+
|
|
119
|
+
Inline `$...$` expressions are intentionally bounded to 1024 characters per
|
|
120
|
+
line so malformed or very large generated Markdown cannot stall terminal
|
|
121
|
+
rendering. Longer formulas remain visible as source text and can still be
|
|
122
|
+
copied from raw mode or the original response.
|
|
123
|
+
|
|
124
|
+
### LaTeX Source Copy
|
|
125
|
+
|
|
126
|
+
Use these commands to copy LaTeX source from the last AI response:
|
|
127
|
+
|
|
128
|
+
| Command | Behavior |
|
|
129
|
+
| ---------------------- | --------------------------------------- |
|
|
130
|
+
| `/copy latex` | Copies the last block LaTeX expression. |
|
|
131
|
+
| `/copy latex 2` | Copies the second block expression. |
|
|
132
|
+
| `/copy latex inline` | Copies the last inline expression. |
|
|
133
|
+
| `/copy latex inline 2` | Copies the second inline expression. |
|
|
134
|
+
| `/copy inline-latex 2` | Alias for `/copy latex inline 2`. |
|
|
135
|
+
|
|
136
|
+
Inline LaTeX does not show a per-expression copy hint in rendered text to avoid
|
|
137
|
+
making prose noisy. Switch to raw mode with `Alt/Option+M` when you want to
|
|
138
|
+
inspect inline source in place; on macOS this requires Option-as-Meta terminal
|
|
139
|
+
input.
|
|
140
|
+
|
|
141
|
+
## General Code Copy
|
|
142
|
+
|
|
143
|
+
The `/copy code` command reads fenced code blocks from the last AI Markdown
|
|
144
|
+
response:
|
|
145
|
+
|
|
146
|
+
| Command | Behavior |
|
|
147
|
+
| ----------------------- | ---------------------------------------- |
|
|
148
|
+
| `/copy code` | Copies the last fenced code block. |
|
|
149
|
+
| `/copy code 2` | Copies the second fenced code block. |
|
|
150
|
+
| `/copy code typescript` | Copies the last `typescript` code block. |
|
|
151
|
+
| `/copy code mermaid 1` | Copies the first `mermaid` code block. |
|
|
152
|
+
|
|
153
|
+
## Current Limits
|
|
154
|
+
|
|
155
|
+
- Mermaid image rendering depends on Mermaid CLI plus terminal image support.
|
|
156
|
+
- Async iTerm2 inline image placement is disabled in the TUI because the
|
|
157
|
+
protocol is cursor-position bound; use Kitty/Ghostty or ANSI fallback for
|
|
158
|
+
interactive image previews.
|
|
159
|
+
- Wireframe Mermaid rendering is a readable terminal preview, not a full
|
|
160
|
+
Mermaid layout engine.
|
|
161
|
+
- Raw mode is global for rendered Markdown blocks; it is not a per-block toggle.
|
|
162
|
+
- LaTeX rendering covers common symbols and expressions, not full TeX layout.
|
|
163
|
+
- Source copy commands operate on the last AI response.
|
|
@@ -4,16 +4,17 @@ This document lists the available keyboard shortcuts in Qwen Code.
|
|
|
4
4
|
|
|
5
5
|
## General
|
|
6
6
|
|
|
7
|
-
| Shortcut | Description
|
|
8
|
-
| ------------------------------ |
|
|
9
|
-
| `Esc` | Close dialogs and suggestions.
|
|
10
|
-
| `Ctrl+C` | Cancel the ongoing request and clear the input. Press twice to exit the application.
|
|
11
|
-
| `Ctrl+D` | Exit the application if the input is empty. Press twice to confirm.
|
|
12
|
-
| `Ctrl+L` | Clear the screen.
|
|
13
|
-
| `Ctrl+O` | Toggle compact mode (hide/show tool output and thinking).
|
|
14
|
-
| `Ctrl+S` | Allows long responses to print fully, disabling truncation. Use your terminal's scrollback to view the entire output.
|
|
15
|
-
| `Ctrl+T` | Toggle the display of tool descriptions.
|
|
16
|
-
| `
|
|
7
|
+
| Shortcut | Description |
|
|
8
|
+
| ------------------------------ | --------------------------------------------------------------------------------------------------------------------------- |
|
|
9
|
+
| `Esc` | Close dialogs and suggestions. |
|
|
10
|
+
| `Ctrl+C` | Cancel the ongoing request and clear the input. Press twice to exit the application. |
|
|
11
|
+
| `Ctrl+D` | Exit the application if the input is empty. Press twice to confirm. |
|
|
12
|
+
| `Ctrl+L` | Clear the screen. |
|
|
13
|
+
| `Ctrl+O` | Toggle compact mode (hide/show tool output and thinking). |
|
|
14
|
+
| `Ctrl+S` | Allows long responses to print fully, disabling truncation. Use your terminal's scrollback to view the entire output. |
|
|
15
|
+
| `Ctrl+T` | Toggle the display of tool descriptions. |
|
|
16
|
+
| `Alt/Option+M` | Toggle Markdown output between rich rendered previews and raw/source mode. On macOS, the terminal must send Option as Meta. |
|
|
17
|
+
| `Shift+Tab` (`Tab` on Windows) | Cycle approval modes (`plan` → `default` → `auto-edit` → `yolo`) |
|
|
17
18
|
|
|
18
19
|
## Input Prompt
|
|
19
20
|
|