Skip to content

Commit 0e104e1

Browse files
committed
fix(ci): normalize dev launcher path assertions
2 parents 55f4a43 + 1190ef3 commit 0e104e1

70 files changed

Lines changed: 9856 additions & 963 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/desktop-release.yml

Lines changed: 545 additions & 0 deletions
Large diffs are not rendered by default.

.github/workflows/qwen-code-pr-review.yml

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,75 @@ concurrency:
4444
cancel-in-progress: "${{ github.event_name == 'pull_request_target' && github.event.action == 'synchronize' }}"
4545

4646
jobs:
47+
ack-review-request:
48+
# KEEP IN SYNC with review-pr.if (explicit-trigger branches).
49+
if: |-
50+
(github.event_name == 'issue_comment' &&
51+
github.event.issue.pull_request &&
52+
github.event.issue.state == 'open' &&
53+
(github.event.comment.body == '@qwen-code /review' ||
54+
startsWith(github.event.comment.body, '@qwen-code /review ') ||
55+
startsWith(github.event.comment.body, format('@qwen-code /review{0}', '\n'))) &&
56+
(github.event.comment.author_association == 'OWNER' ||
57+
github.event.comment.author_association == 'MEMBER' ||
58+
github.event.comment.author_association == 'COLLABORATOR')) ||
59+
(github.event_name == 'pull_request_review_comment' &&
60+
github.event.pull_request.state == 'open' &&
61+
(github.event.comment.body == '@qwen-code /review' ||
62+
startsWith(github.event.comment.body, '@qwen-code /review ') ||
63+
startsWith(github.event.comment.body, format('@qwen-code /review{0}', '\n'))) &&
64+
(github.event.comment.author_association == 'OWNER' ||
65+
github.event.comment.author_association == 'MEMBER' ||
66+
github.event.comment.author_association == 'COLLABORATOR')) ||
67+
(github.event_name == 'pull_request_review' &&
68+
github.event.pull_request.state == 'open' &&
69+
(github.event.review.body == '@qwen-code /review' ||
70+
startsWith(github.event.review.body, '@qwen-code /review ') ||
71+
startsWith(github.event.review.body, format('@qwen-code /review{0}', '\n'))) &&
72+
(github.event.review.author_association == 'OWNER' ||
73+
github.event.review.author_association == 'MEMBER' ||
74+
github.event.review.author_association == 'COLLABORATOR'))
75+
concurrency:
76+
group: 'qwen-pr-ack-${{ github.event.issue.number || github.event.pull_request.number }}'
77+
cancel-in-progress: false
78+
runs-on: 'ubuntu-latest'
79+
timeout-minutes: 5
80+
permissions:
81+
pull-requests: 'write'
82+
issues: 'write'
83+
steps:
84+
- name: 'Post queued acknowledgement'
85+
env:
86+
GH_TOKEN: '${{ secrets.GITHUB_TOKEN }}'
87+
PR_NUMBER: '${{ github.event.issue.number || github.event.pull_request.number }}'
88+
RUN_URL: '${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}'
89+
run: |-
90+
set -euo pipefail
91+
PR_STATE="$(gh pr view "$PR_NUMBER" --repo "$GITHUB_REPOSITORY" --json state --jq '.state')"
92+
if [ "$PR_STATE" != "OPEN" ]; then
93+
echo "PR #${PR_NUMBER} is ${PR_STATE}; skipping acknowledgement." >> "$GITHUB_STEP_SUMMARY"
94+
exit 0
95+
fi
96+
ACK_BODY="<!-- qwen-review-ack -->_Qwen Code review request accepted. Review is queued in [workflow run](${RUN_URL})._"
97+
EXISTING_ACK_ID="$(
98+
gh api "repos/${GITHUB_REPOSITORY}/issues/${PR_NUMBER}/comments" \
99+
--paginate \
100+
-F per_page=100 \
101+
| jq -sr '[.[][] | select(.body | contains("<!-- qwen-review-ack -->")) | select(.user.login == "github-actions[bot]")] | last | .id // empty'
102+
)" || EXISTING_ACK_ID=""
103+
if [ -n "$EXISTING_ACK_ID" ]; then
104+
gh api \
105+
--method PATCH \
106+
"repos/${GITHUB_REPOSITORY}/issues/comments/${EXISTING_ACK_ID}" \
107+
-f body="$ACK_BODY" > /dev/null
108+
echo "Queued acknowledgement updated on PR #${PR_NUMBER}." >> "$GITHUB_STEP_SUMMARY"
109+
else
110+
gh pr comment "$PR_NUMBER" \
111+
--repo "$GITHUB_REPOSITORY" \
112+
--body "$ACK_BODY"
113+
echo "Queued acknowledgement posted on PR #${PR_NUMBER}." >> "$GITHUB_STEP_SUMMARY"
114+
fi
115+
47116
review-config:
48117
if: |-
49118
github.event_name == 'pull_request_target' &&
@@ -145,6 +214,7 @@ jobs:
145214
# - review_requested uses authorize-review-request and skips delay
146215
# - opened/synchronize uses delay-automatic-review
147216
# - reopened/ready_for_review runs immediately for trusted PR authors
217+
# KEEP IN SYNC with ack-review-request.if (explicit-trigger branches).
148218
if: |-
149219
always() &&
150220
(github.event_name == 'workflow_dispatch' ||

.qwen/skills/docs-update-from-diff/references/docs-surface.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ Use this file to choose the correct destination page under `docs/`.
77
- `docs/users/overview.md`, `quickstart.md`, `common-workflow.md` Good for
88
entry points, first-run guidance, and broad user workflows.
99
- `docs/users/features/*.md` Good for user-visible features such as skills,
10-
MCP, sandbox, sub-agents, commands, checkpointing, and approval modes.
10+
MCP, sandbox, sub-agents, commands, and approval modes.
1111
- `docs/users/configuration/*.md` Good for settings, auth, model providers,
1212
themes, trusted folders, `.qwen` files, and similar configuration topics.
1313
- `docs/users/integration-*.md` and `docs/users/ide-integration/*.md` Good for
Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
---
2+
name: openwork-desktop-sync
3+
description: Sync qwen-code packages/desktop with modelstudioai/openwork using commit-by-commit path migration, not subtree split or tree overwrite. Use when exporting qwen-code desktop changes to OpenWork, importing OpenWork desktop changes into qwen-code, preserving target-owned overlay files such as README.md, resolving sync conflicts, or preparing sync PR branches between the two repositories.
4+
---
5+
6+
# OpenWork Desktop Sync
7+
8+
Use this skill to sync desktop changes between this qwen-code repo and an
9+
OpenWork checkout. The repository script owns the Git mechanics:
10+
11+
```bash
12+
OPENWORK_DIR=/path/to/openwork bun run desktop-openwork-sync --mode export
13+
```
14+
15+
Default overlay is `README.md`. Overlay paths are excluded from migrated
16+
commits and stay target-owned.
17+
18+
```bash
19+
OPENWORK_OVERLAY_PATHS='README.md'
20+
```
21+
22+
## Contract
23+
24+
This is commit-by-commit path migration, not snapshot replacement. The script
25+
walks source commits from `source-base..source-head`, rewrites paths between
26+
qwen-code `packages/desktop` and the OpenWork repository root, then applies each
27+
commit with `git apply -3`.
28+
29+
Commits that already came from the receiving repository are skipped by their
30+
sync trailers. During import, qwen-code-origin export commits are skipped;
31+
during export, OpenWork-origin import commits are skipped.
32+
33+
Merge commits are not migrated as merge commits. The script migrates the regular
34+
commits inside the merged branch; when it later sees the merge wrapper, it
35+
checks that the regular commits were already handled and that the merge tree
36+
matches Git's automatic merge result. If the merge wrapper contains manual
37+
resolution changes, the sync stops so the agent can convert that resolution into
38+
a normal follow-up commit.
39+
40+
Target-side changes are preserved unless a migrated source commit touches the
41+
same hunk. If that happens, Git leaves a normal conflict for the agent to
42+
resolve. Do not use `git subtree split` or full tree replacement for normal
43+
sync.
44+
45+
Successful sync commits include trailers such as `Qwen-Code-Commit` or
46+
`OpenWork-Commit`. Later syncs can use the latest trailer as the next source
47+
base. The first sync needs an explicit source base when no previous sync trailer
48+
exists:
49+
50+
```bash
51+
bun run desktop-openwork-sync --mode export --source-base <qwen-code-ref>
52+
bun run desktop-openwork-sync --mode import --source-base <openwork-ref>
53+
```
54+
55+
## Modes
56+
57+
- `--mode export`: qwen-code `packages/desktop` commits -> OpenWork.
58+
- `--mode import`: OpenWork commits -> qwen-code `packages/desktop`.
59+
- `--mode auto`: guardrail only; use explicit directions for real sync.
60+
61+
## Workflow
62+
63+
1. Confirm repo paths and clean worktrees:
64+
65+
```bash
66+
git rev-parse --show-toplevel
67+
git -C /path/to/openwork rev-parse --show-toplevel
68+
git status --short
69+
git -C /path/to/openwork status --short
70+
```
71+
72+
2. Run the requested direction:
73+
74+
```bash
75+
OPENWORK_DIR=/path/to/openwork \
76+
OPENWORK_OVERLAY_PATHS='README.md' \
77+
bun run desktop-openwork-sync --mode export --source-base <qwen-code-ref>
78+
```
79+
80+
3. If Git reports conflicts, resolve only the conflicted hunks, preserving
81+
target-owned repository metadata unless the source change intentionally
82+
updates that same behavior.
83+
84+
4. After sync, verify:
85+
86+
```bash
87+
git status --short
88+
git diff --check HEAD
89+
git diff --name-status <target-base>..HEAD
90+
```
91+
92+
5. If the user asked to publish, push the branch and create a PR after the
93+
branch is clean.
94+
95+
## Rules
96+
97+
- Keep only `README.md` as the default overlay unless the user adds paths to
98+
`OPENWORK_OVERLAY_PATHS`.
99+
- OpenWork-specific files not touched by source commits must remain unchanged.
100+
- Prefer PR branches. The script prints the push command for export branches.
101+
- Do not manually import PR merge commits. Let the script migrate regular
102+
commits and treat merge commits as wrappers.

docs/users/configuration/settings.md

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,6 @@ Settings are organized into categories. Most settings should be placed within th
8686
| `general.sessionRecapAwayThresholdMinutes` | number | Minutes the terminal must be blurred before an auto-recap fires on focus-in. Only used when `showSessionRecap` is enabled. | `5` |
8787
| `general.gitCoAuthor.commit` | boolean | Add a Co-authored-by trailer to git commit messages AND attach a per-file AI-attribution git note (`refs/notes/ai-attribution`) for commits made through Qwen Code. Disabling skips both. | `true` |
8888
| `general.gitCoAuthor.pr` | boolean | Append a Qwen Code attribution line to pull request descriptions when running `gh pr create`. | `true` |
89-
| `general.checkpointing.enabled` | boolean | Enable session checkpointing for recovery. | `false` |
9089
| `general.defaultFileEncoding` | string | Default encoding for new files. Use `"utf-8"` (default) for UTF-8 without BOM, or `"utf-8-bom"` for UTF-8 with BOM. Only change this if your project specifically requires BOM. | `"utf-8"` |
9190
| `general.cleanupPeriodDays` | number | Days to retain `~/.qwen/file-history/` session backups used by `/rewind`. Backups older than this are removed by a background pass that runs at most once per day. `0` = minimum retention (~1 hour): keeps sessions touched in the last hour plus the currently active one. Changes take effect after restart. | `30` |
9291

@@ -638,7 +637,6 @@ For sandbox image selection, precedence is:
638637
| `--telemetry-otlp-endpoint` | | Sets the OTLP endpoint for telemetry. | | See [telemetry](../../developers/development/telemetry) for more information. |
639638
| `--telemetry-otlp-protocol` | | Sets the OTLP protocol for telemetry (`grpc` or `http`). | | Defaults to `grpc`. See [telemetry](../../developers/development/telemetry) for more information. |
640639
| `--telemetry-log-prompts` | | Enables logging of prompts for telemetry. | | See [telemetry](../../developers/development/telemetry) for more information. |
641-
| `--checkpointing` | | Enables [checkpointing](../features/checkpointing). | | |
642640
| `--acp` | | Enables ACP mode (Agent Client Protocol). Useful for IDE/editor integrations like [Zed](../integration-zed). | | Stable. Replaces the deprecated `--experimental-acp` flag. |
643641
| `--experimental-lsp` | | Enables experimental [LSP (Language Server Protocol)](../features/lsp) feature for code intelligence (go-to-definition, find references, diagnostics, etc.). | | Experimental. Requires language servers to be installed. |
644642
| `--extensions` | `-e` | Specifies a list of extensions to use for the session. | Extension names | If not provided, all available extensions are used. Use the special term `qwen -e none` to disable all extensions. Example: `qwen -e my-extension -e my-other-extension` |

docs/users/features/_meta.ts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,6 @@ export default {
1111
headless: 'Headless Mode',
1212
'structured-output': 'Structured Output',
1313
'dual-output': 'Dual Output',
14-
checkpointing: {
15-
display: 'hidden',
16-
},
1714
'approval-mode': 'Approval Mode',
1815
'auto-mode': 'Auto Mode',
1916
worktree: 'Worktrees',

0 commit comments

Comments
 (0)