Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
447 commits
Select commit Hold shift + click to select a range
85f9c17
feat(cli): improve export format completion navigation (#3701)
shenyankm May 5, 2026
0243084
feat(cli): Add ability to switch models non-interactively from the cl…
alex-musick May 5, 2026
7ae2c79
feat(weixin): add image sending support via CDN upload (#3781)
Mr-Maidong May 5, 2026
d12f2c9
fix(core): activate skills from discovered result paths (#3852)
qiuqiuwen25 May 5, 2026
01630ec
fix(core): use per-model settings for fast model side queries (#3815)
B-A-M-N May 5, 2026
d20e9f3
fix(core): prevent auto-memory recall from blocking main request (#3814)
B-A-M-N May 5, 2026
f427023
feat(core,cli): surface and cancel auto-memory dream tasks (#3836)
wenshao May 6, 2026
b41e284
fix(sdk-python): standardize TAG_PREFIX to include `v` suffix (#3832)
doudouOUC May 6, 2026
1937cba
fix(cli): prevent file paths from being treated as slash commands (#3…
yiliang114 May 6, 2026
e5e868b
feat(cli): route foreground subagents through pill+dialog while runni…
tanzhenxin May 6, 2026
4f08361
fix(core): auto-compact subagent context to prevent overflow (#3735)
tanzhenxin May 6, 2026
1890d1e
feat(core): enforce prior read before Edit / WriteFile mutates a file…
wenshao May 6, 2026
61a27aa
fix(core): shrink file diff session records (#3872)
doudouOUC May 6, 2026
cd57ab4
feat(cli): customize banner area (logo, title, hide) (#3710)
chiga0 May 7, 2026
559dc75
feat(core): add signal.reason convention for ShellExecutionService (#…
wenshao May 7, 2026
ef4230b
fix(core): rebuild tool registry on subagent Config overrides so boun…
wenshao May 7, 2026
46e2852
Create project temp dir before saving truncated output (#3875)
kkhomej33-netizen May 7, 2026
06cd392
fix(core): improve stream rate-limit retry handling (#3790)
yiliang114 May 7, 2026
7174a27
docs(cli): document new banner customization settings (#3885)
wenshao May 7, 2026
9950a2f
fix(core): address @tanzhenxin's PR-1 review notes (post-merge follow…
wenshao May 7, 2026
73a7194
fix(core): stop per-subagent ToolRegistry on the foreground-fork path…
wenshao May 7, 2026
cd00a5c
ci: add Qwen Code issue follow-up bot workflow (#3854)
yiliang114 May 7, 2026
e83bc10
fix(cli): warn on ignored provider generation config (#3883)
doudouOUC May 7, 2026
99c057c
feat(cli): expand TUI markdown rendering (#3680)
chiga0 May 7, 2026
bf83d4d
chore(release): v0.15.7 (#3907)
qwen-code-ci-bot May 7, 2026
8ba8997
test(sdk): align tool-control E2E with prior-read enforcement (#3898)
wenshao May 7, 2026
c5f55f9
fix(skills): allow symlinks pointing outside the skills directory (#3…
yiliang114 May 7, 2026
f6af7c4
feat(web-templates): add light theme and toggle to /export HTML (#3908)
dreamWB May 7, 2026
56dd1f2
feat(cli): replace inline AgentExecutionDisplay with always-on LiveAg…
wenshao May 7, 2026
d069e91
ci(issue-followup-bot): render bot comment newlines correctly (#3918)
yiliang114 May 7, 2026
c2b7dd1
ci(release): skip CI on the version-bump squash commit on main (#3912)
yiliang114 May 7, 2026
dc9969f
fix(core): foreground agent entry lingering in status bar after compl…
huww98 May 7, 2026
f57887d
fix(cli): prevent ESC in background tasks dialog from cancelling runn…
huww98 May 7, 2026
c61ae67
fix(memory): address code review feedback for auto-memory recall (#3866)
B-A-M-N May 7, 2026
c104ad1
fix(cli): use tmux-safe dots spinner to reduce redraw pressure (#3903)
chiga0 May 7, 2026
6f91ad4
feat(telemetry): add sensitive span attribute opt-in (#3893)
doudouOUC May 7, 2026
92963b7
chore(release): v0.15.8 (#3928) [skip ci]
qwen-code-ci-bot May 7, 2026
f0f30ba
feat: add commit attribution with per-file AI contribution tracking (…
wenshao May 8, 2026
488e232
fix(core): per-agent ContentGenerator view via AsyncLocalStorage (#3707)
tanzhenxin May 8, 2026
32bdcd8
refactor(cli): provider-first auth registry with unified install pipe…
pomelo-nwu May 8, 2026
496c16c
fix(core): split prior-read enforcement: partial-OK for Edit, full-re…
wenshao May 8, 2026
ec92224
fix(cli,core): live-phase panel-ownership filter + post-delete status…
wenshao May 8, 2026
a8c4479
fix(core): close bound-tool gap on runForkedAgent's YOLO wrapper (#3892)
wenshao May 8, 2026
99cc212
feat(sdk-python): replace verbatim release notes inheritance with --g…
doudouOUC May 8, 2026
db2911e
ci(release): keep skip-ci out of release PR titles (#3950)
yiliang114 May 8, 2026
ac741da
fix(desktop): render commentary like assistant responses
DragonnZhang May 8, 2026
ec232b5
Merge commit 'ac741da660fc771629831fdc9e3a93f8be6015ca' into dragon/f…
DragonnZhang May 8, 2026
f89e9b6
Merge remote-tracking branch 'origin/main' into dragon/feat-unstable-…
DragonnZhang May 8, 2026
e8c7577
fix(desktop): preserve assistant timeline ordering
DragonnZhang May 9, 2026
f2e3e2c
fix(desktop): preserve new session draft
DragonnZhang May 9, 2026
29e005e
fix(desktop): simplify app shell chrome
DragonnZhang May 9, 2026
518c008
fix(desktop): use workspace terminology in project UI
DragonnZhang May 9, 2026
e73ac20
chore(desktop): rename Craft Agents copy to Qwen Code
DragonnZhang May 9, 2026
5409c0b
fix(desktop): keep top bar controls clickable
DragonnZhang May 9, 2026
565598a
chore(desktop): simplify desktop UI controls
DragonnZhang May 9, 2026
b419b65
feat(desktop): collapse completed turn details
DragonnZhang May 9, 2026
48323a5
fix(desktop): align project session unread indicator
DragonnZhang May 9, 2026
dff6227
fix(desktop): align new chat sidebar button
DragonnZhang May 9, 2026
eec0556
Merge branch 'main' into dragon/feat-unstable-desktop-app
DragonnZhang May 9, 2026
1ddf152
feat(desktop): queue mid-turn qwen messages
DragonnZhang May 9, 2026
a9c1a1e
merge: desktop mid-turn qwen queue
DragonnZhang May 9, 2026
ee9b65e
feat(desktop): rerun edited Qwen messages
DragonnZhang May 9, 2026
4823d85
fix(desktop): expose qwen skill instructions
DragonnZhang May 9, 2026
3ce07e0
feat(desktop): reuse qwen acp by workspace
DragonnZhang May 9, 2026
1ece7f4
merge: workspace qwen acp reuse
DragonnZhang May 9, 2026
2508763
fix(desktop): refresh qwen default model from ACP
DragonnZhang May 9, 2026
8ed5609
merge: qwen ACP default model refresh
DragonnZhang May 9, 2026
54794e0
fix(desktop): vendor local qwen cli for packaging
DragonnZhang May 9, 2026
c0d6474
merge: vendor local qwen cli for desktop packaging
DragonnZhang May 9, 2026
3af5201
feat(desktop): use source qwen cli in dev
DragonnZhang May 9, 2026
13c4eb9
fix(desktop): serialize qwen acp startup
DragonnZhang May 9, 2026
e7e4edb
feat(desktop): use desktop ACP channel
DragonnZhang May 9, 2026
007554f
feat(desktop): add structured tool call UI
DragonnZhang May 9, 2026
597adc4
fix(desktop): make panel headers draggable
DragonnZhang May 9, 2026
ae9fb06
fix(desktop): package Qwen app runtime
DragonnZhang May 9, 2026
24be382
fix(desktop): preserve qwen subagent parent metadata
DragonnZhang May 9, 2026
ff55960
fix(desktop): avoid blocking session list on provider refresh
DragonnZhang May 9, 2026
debfbd9
fix(desktop): restore qwen subagent history
DragonnZhang May 9, 2026
d7212f6
fix(desktop): align permission settings with qwen policy
DragonnZhang May 9, 2026
fde9b04
Merge branch 'codex/desktop-midturn-queue' into dragon/feat-unstable-…
DragonnZhang May 9, 2026
2d1e743
feat(desktop): align memory settings with qwen memory
DragonnZhang May 9, 2026
7269465
Merge memory settings alignment
DragonnZhang May 9, 2026
520cfe6
fix(desktop): stabilize qwen subagent history rendering
DragonnZhang May 10, 2026
c19eb60
fix(desktop): sync qwen model defaults
DragonnZhang May 10, 2026
7239418
fix(desktop): dedupe qwen session metadata
DragonnZhang May 10, 2026
ae48a0d
feat(desktop): add Qwen settings management
DragonnZhang May 14, 2026
1d94321
fix(desktop): load qwen cli history via acp
DragonnZhang May 14, 2026
686827e
Merge commit '1d9432104' into dragon/feat-unstable-desktop-app
DragonnZhang May 14, 2026
36ea92f
fix(desktop): localize Qwen settings pages
DragonnZhang May 14, 2026
e6efab9
fix(desktop): show qwen runtime settings
DragonnZhang May 14, 2026
e88e0fd
feat(settings): enhance MCP and hooks configuration UI
DragonnZhang May 14, 2026
8b5d5fc
fix(desktop): gate qwen history on acp metadata
DragonnZhang May 15, 2026
9daf736
merge: sync qwen desktop history fixes
DragonnZhang May 15, 2026
1cfbe45
fix(desktop): refresh workspace snapshots through acp
DragonnZhang May 15, 2026
fe2c6e2
chore(desktop): always report electron log path
DragonnZhang May 15, 2026
6df83d4
fix(desktop): keep draft composer placeholder visible
DragonnZhang May 17, 2026
41c8636
chore(desktop): refresh Qwen Code app icons
DragonnZhang May 17, 2026
3891304
merge: bring desktop icon refresh into unstable desktop
DragonnZhang May 17, 2026
0b9e4bd
feat(desktop): add session search modal
DragonnZhang May 17, 2026
f1cc980
fix(desktop): localize inline status menu
DragonnZhang May 17, 2026
139d2dd
fix(desktop): localize slash command menu title
DragonnZhang May 17, 2026
1437877
fix(desktop): surface flagged sessions
DragonnZhang May 17, 2026
60f76e8
Merge remote-tracking branch 'origin/main' into dragon/feat-unstable-…
DragonnZhang May 18, 2026
7c2109d
fix(desktop): refresh skills badge before tab open
DragonnZhang May 18, 2026
225b72b
fix(desktop): hide unavailable skill actions
DragonnZhang May 18, 2026
476460a
fix(cli): remove filePath from skillDetail to avoid leaking user dire…
DragonnZhang May 25, 2026
8fe4f4d
fix(cli): log malformed hook entries instead of silently swallowing them
DragonnZhang May 25, 2026
938f4c0
fix(cli): add error handling for malformed MCP server configs in read…
DragonnZhang May 25, 2026
85f6fb9
fix(cli): improve error handling in #drainMidTurnUserMessages
DragonnZhang May 25, 2026
3090d33
fix(cli): prevent buildCoreSettings extension loading failure from ca…
DragonnZhang May 25, 2026
64a5f43
fix(cli): add error boundary to HistoryReplayer.replay() in loadUpdates
DragonnZhang May 25, 2026
ab326d2
fix(cli): validate scope in settings handlers instead of silently coe…
DragonnZhang May 25, 2026
488c023
feat(desktop): add multi-brand support and build-for-distribution gui…
pomelo-nwu May 28, 2026
a81b07a
Merge remote-tracking branch 'origin/main' into dragon/feat-unstable-…
DragonnZhang May 28, 2026
782e0ed
feat(desktop): support configurable qwen cli runtime
DragonnZhang May 28, 2026
68de0ff
chore: delete desktop-reproduce skill
DragonnZhang May 28, 2026
cc32852
feat(desktop): add provider connection setup
DragonnZhang May 28, 2026
ca369b1
fix(desktop): remove AI performance settings
DragonnZhang May 28, 2026
6fc2a8d
fix(desktop): stabilize recent session timestamps
DragonnZhang May 28, 2026
a4d71ce
chore(desktop): reorder settings tabs
DragonnZhang May 28, 2026
92cbe36
feat(desktop): update provider and skill settings flows
DragonnZhang May 28, 2026
06b78d3
fix(desktop): open fresh chat on startup
DragonnZhang May 28, 2026
05ce100
feat(desktop): open chat links in built-in browser
DragonnZhang May 28, 2026
4fe346a
fix(desktop): persist approval mode through qwen settings
DragonnZhang May 28, 2026
e044b21
feat(desktop): dock built-in browser in app shell
DragonnZhang May 28, 2026
491455f
feat(desktop): add skill marketplace
DragonnZhang May 28, 2026
751e45c
fix(cli): avoid GitHub API for skill installs
DragonnZhang May 28, 2026
3937912
fix(desktop): prevent recent chat time wrapping
DragonnZhang May 29, 2026
efd5f48
fix(desktop): repair new session titlebar controls
DragonnZhang May 29, 2026
c4bb9ab
fix(desktop): show session minutes after one minute
DragonnZhang May 29, 2026
afe5452
fix(desktop): stabilize edit popover placeholder
DragonnZhang May 29, 2026
b6bf1ff
fix(desktop): render marketplace skill examples as mentions
DragonnZhang May 29, 2026
ccee491
fix(desktop): avoid processed 0s duration
DragonnZhang May 29, 2026
c1023d9
fix(desktop): harden startup ACP discovery
DragonnZhang May 29, 2026
b652350
fix(desktop): stabilize docked browser panel
DragonnZhang May 29, 2026
659039f
fix(desktop): keep settings navigation state in sync
DragonnZhang May 29, 2026
388874f
fix(cli): sync output language rule via ACP
DragonnZhang May 29, 2026
f02dbda
fix(desktop): prevent duplicate settings history entries
DragonnZhang May 29, 2026
1fbfe63
fix(desktop): localize settings text
DragonnZhang May 29, 2026
386a241
fix(desktop): scroll to hook editor
DragonnZhang May 29, 2026
7bdbef2
fix(desktop): reuse workspace ACP for settings
DragonnZhang May 29, 2026
bcfdb0d
chore(desktop): remove legacy feature entrypoints
DragonnZhang May 29, 2026
6979ff4
fix(desktop): avoid persisting approval mode fanout
DragonnZhang May 29, 2026
822e0a5
fix(desktop): avoid qwen session refresh persistence
DragonnZhang May 29, 2026
f6c02dd
fix(desktop): polish settings error handling
DragonnZhang May 29, 2026
4b2fd72
fix(desktop): show qwen acp error details
DragonnZhang May 29, 2026
7c0c664
fix(desktop): avoid transient missing session flash
qqqys May 29, 2026
dc92f89
fix(desktop): rename packaged app to Qwen Code Desktop
DragonnZhang May 30, 2026
f6bb3ce
fix(desktop): disable upstream auto-updates
DragonnZhang May 30, 2026
5a9e426
chore(desktop): reset prototype version
DragonnZhang May 30, 2026
df131dc
fix(desktop): confirm manual session deletion
DragonnZhang May 30, 2026
390fd27
fix(desktop): hide session metadata menu entries
DragonnZhang May 30, 2026
500d809
fix(desktop): wait for startup session sync
DragonnZhang May 30, 2026
d05e648
fix(desktop): preserve provider session titles
DragonnZhang May 30, 2026
3249889
fix(desktop): default collapse automations sidebar
DragonnZhang May 30, 2026
0ecead5
fix(desktop): make splash screen draggable
DragonnZhang May 30, 2026
040e751
fix(core): disable pty under bun runtime
DragonnZhang May 31, 2026
bc3543c
fix(desktop): drag splash screen manually
DragonnZhang May 31, 2026
bc5cb35
fix(desktop): hide source chooser prompt
DragonnZhang May 31, 2026
5f3ea97
docs(desktop): add desktop development harness skill
DragonnZhang Jun 1, 2026
28b806c
fix(desktop): scope skills loading by workspace
DragonnZhang Jun 1, 2026
3e4eb22
fix(desktop): avoid repeated pending plan checks
DragonnZhang Jun 1, 2026
f26d06b
fix(desktop): preserve active session events across workspace switches
DragonnZhang Jun 1, 2026
4599cd7
fix(desktop): preserve packaged mac dock icon
DragonnZhang Jun 1, 2026
5448b86
feat(desktop): cache Qwen capabilities in renderer
DragonnZhang Jun 1, 2026
058af20
fix(desktop): extend startup request timeouts
DragonnZhang Jun 1, 2026
92c11e8
fix(desktop): show draft message optimistically
DragonnZhang Jun 1, 2026
59baa1e
fix(desktop): exclude disabled Qwen skills from cache
DragonnZhang Jun 1, 2026
172bb3a
fix(desktop): respect empty Qwen skill cache
DragonnZhang Jun 1, 2026
d0da44d
perf(desktop): cache streaming turn grouping
DragonnZhang Jun 1, 2026
c88614f
fix(desktop): use Qwen cache for draft sessions
DragonnZhang Jun 1, 2026
d490e72
fix(desktop): hide disabled skills in mention menu
DragonnZhang Jun 1, 2026
c1c86fe
fix(desktop): hide source selector button
DragonnZhang Jun 1, 2026
41b80c9
fix(desktop): remove legacy brand paths from visible copy
DragonnZhang Jun 1, 2026
f7dc701
fix(desktop): hide remote server workspace option
DragonnZhang Jun 1, 2026
6b280ae
fix(desktop): keep Qwen skill mentions in sync
DragonnZhang Jun 1, 2026
c0af314
fix(cli): toggle project skills from ACP cwd
DragonnZhang Jun 1, 2026
606fd16
fix(desktop): stabilize browser dock navigation
DragonnZhang Jun 1, 2026
4b35470
fix(desktop): auto-hide browser dock on navigation
DragonnZhang Jun 1, 2026
ba6ccdc
fix(desktop): canonicalize session id in place to keep active chat alive
qqqys Jun 1, 2026
90b3592
fix(desktop): merge processing session refreshes
DragonnZhang Jun 2, 2026
2c8068b
fix(desktop): update ModelStudio icon assets
DragonnZhang Jun 2, 2026
c0d67cf
fix(desktop): hide memory command hint
DragonnZhang Jun 2, 2026
9e3bb3b
fix(desktop): use working directory for qwen memory root
DragonnZhang Jun 2, 2026
78a469b
fix(desktop): preserve qwen image attachments
DragonnZhang Jun 2, 2026
d728924
fix(desktop): localize shift-tab placeholder
DragonnZhang Jun 2, 2026
664e040
fix(desktop): improve qwen session state handling
DragonnZhang Jun 2, 2026
1041997
Merge branch 'main' into dragon/feat-unstable-desktop-app
DragonnZhang Jun 2, 2026
4da3da2
feat(desktop): update skill marketplace
DragonnZhang Jun 2, 2026
053cf45
fix(desktop): persist marketplace install status
DragonnZhang Jun 2, 2026
7295a1b
feat(desktop): floating Qwen capybara pet with live notification cards
qqqys Jun 4, 2026
076d6b5
chore(desktop): centralize brand configuration
DragonnZhang Jun 4, 2026
d39b6b9
fix(desktop): align dev dock icons with brand assets
DragonnZhang Jun 4, 2026
37e8a6e
fix(desktop): keep Dock icon when pet window enables visible-on-all-w…
DragonnZhang Jun 4, 2026
2419040
fix(desktop): rename ModelStudio brand to OpenWork
DragonnZhang Jun 5, 2026
3a99bb3
feat(desktop): improve floating pet controls
DragonnZhang Jun 5, 2026
3968e6d
feat(desktop): add permanent worktree projects
DragonnZhang Jun 5, 2026
fbb5d46
feat(desktop): add desktop brand builder skill
DragonnZhang Jun 6, 2026
ebb3a18
fix(desktop): pin brand builder source branch
DragonnZhang Jun 6, 2026
e5f9ba4
fix(desktop): build brand packages in cwd
DragonnZhang Jun 6, 2026
473c9dc
chore(desktop): add openwork sync workflow
DragonnZhang Jun 8, 2026
4fada0b
chore(desktop): move desktop develop skill
DragonnZhang Jun 8, 2026
b2e07ac
chore: update openwork branding
DragonnZhang Jun 8, 2026
dfc9034
chore: update openwork contribution docs
DragonnZhang Jun 8, 2026
e28c321
docs: update openwork branding metadata
DragonnZhang Jun 8, 2026
f011644
chore: restore repository policy docs
DragonnZhang Jun 8, 2026
44f324a
docs: update openwork repository policies
DragonnZhang Jun 8, 2026
6eb10ea
chore: clean up openwork root files
DragonnZhang Jun 8, 2026
b64592c
docs: update notice attribution
DragonnZhang Jun 8, 2026
1f05c45
feat(skill): add desktop-pet built-in skill for pixel-art companions
DragonnZhang Jun 8, 2026
27f86ff
fix(desktop): harden openwork sync provenance
DragonnZhang Jun 8, 2026
e136e9c
fix(vscode): add companion packaging dependency
DragonnZhang Jun 8, 2026
4c8946e
fix(vscode): sync lockfile for npm ci
DragonnZhang Jun 8, 2026
7124b47
ci: add desktop release workflow
DragonnZhang Jun 8, 2026
238c8d3
ci: validate desktop release version
DragonnZhang Jun 8, 2026
1e3725d
chore: add desktop version bump script
DragonnZhang Jun 8, 2026
c3da09a
ci: automate desktop release version sync
DragonnZhang Jun 8, 2026
a1e9f9f
ci: fix desktop release workflow
DragonnZhang Jun 8, 2026
c1826a2
ci: preserve Windows shell for desktop release builds
DragonnZhang Jun 8, 2026
1a8c8e7
ci: add qwen runtime source options
DragonnZhang Jun 8, 2026
276111c
ci: package Qwen runtime as Windows extraResource
DragonnZhang Jun 8, 2026
3ee5790
ci: use nvmrc for desktop release node
DragonnZhang Jun 8, 2026
de24b11
ci: isolate qwen source checkout
DragonnZhang Jun 8, 2026
f46e78e
ci: set repo context for release publishing
DragonnZhang Jun 8, 2026
31e55b7
chore(release): desktop v0.0.2 [skip ci]
DragonnZhang Jun 8, 2026
f1e9de9
fix(desktop): harden openwork sync migration
DragonnZhang Jun 8, 2026
4336074
Add desktop auto updates (#15)
DragonnZhang Jun 8, 2026
9d522a8
Prevent desktop release build jobs from auto-publishing (#16)
DragonnZhang Jun 8, 2026
2216749
Remove duplicate app version setting (#17)
DragonnZhang Jun 8, 2026
1ad4b4b
chore(desktop): rename openwork sync entrypoint
DragonnZhang Jun 8, 2026
957b0f1
chore(desktop): move brand builder skill into desktop agents
DragonnZhang Jun 9, 2026
02f59d8
chore(release): desktop v0.0.3 [skip ci]
DragonnZhang Jun 9, 2026
8a5a5a3
ci(desktop): add qwen release workflow
DragonnZhang Jun 9, 2026
029416c
ci(desktop): satisfy workflow yamllint
DragonnZhang Jun 9, 2026
f42730a
Merge remote-tracking branch 'origin/main' into dragon/feat-unstable-…
DragonnZhang Jun 10, 2026
238c13c
chore(desktop): remove cli and core noise from PR
DragonnZhang Jun 10, 2026
26aa765
chore(desktop): restore core and cli files to PR base
DragonnZhang Jun 10, 2026
b298f2e
chore(docs): delete superpower doc
DragonnZhang Jun 10, 2026
d42c3d2
chore(desktop): delete duplicate skill
DragonnZhang Jun 10, 2026
c3546c7
fix(scripts): honor desktop workspace exclusion
DragonnZhang Jun 10, 2026
452c2ad
ci: assert desktop workspace isolation
DragonnZhang Jun 10, 2026
4b39081
[codex] Guard desktop release signing (#25)
DragonnZhang Jun 10, 2026
23e28a2
[codex] Skip desktop version sync for prereleases (#26)
DragonnZhang Jun 10, 2026
5b05423
[codex] Allow unsigned desktop draft releases (#27)
DragonnZhang Jun 10, 2026
03e0331
ci: sync desktop release signing guards
DragonnZhang Jun 10, 2026
26d873d
Anchor desktop release notes to previous stable tag (#28)
DragonnZhang Jun 10, 2026
a4f70bf
ci: sync desktop release notes start tag
DragonnZhang Jun 10, 2026
4af0071
ci(desktop): harden release workflow
DragonnZhang Jun 10, 2026
551a7ee
Merge remote-tracking branch 'origin/main' into dragon/feat-unstable-…
DragonnZhang Jun 10, 2026
9f2d508
fix(ci): address desktop CI failures
DragonnZhang Jun 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
3 changes: 3 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,9 @@ jobs:
- name: 'Check lockfile'
run: 'npm run check:lockfile'

- name: 'Check desktop workspace isolation'
run: 'npm run check:desktop-isolation'

- name: 'Install linters'
run: 'node scripts/lint.js --setup'

Expand Down
219 changes: 187 additions & 32 deletions .github/workflows/desktop-release.yml

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,4 @@ junit.xml
Thumbs.db
packages/vscode-ide-companion/schemas/settings.schema.json
packages/cli/src/services/insight/templates/insightTemplate.ts
packages/desktop/
2 changes: 2 additions & 0 deletions .yamllint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -88,3 +88,5 @@ ignore:
- 'vendor/'
- 'node_modules/'
- 'integration-tests/terminal-bench/'
- 'packages/desktop/.github/'
- 'packages/desktop/apps/electron/electron-builder.yml'
1 change: 1 addition & 0 deletions eslint.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ export default tseslint.config(
'docs-site/.next/**',
'docs-site/out/**',
'.qwen/**',
'packages/desktop/**',
],
},
eslint.configs.recommended,
Expand Down
26 changes: 3 additions & 23 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 3 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@
"packages/channels/weixin",
"packages/channels/dingtalk",
"packages/channels/feishu",
"packages/channels/plugin-example"
"packages/channels/plugin-example",
"!packages/desktop"
Comment thread
DragonnZhang marked this conversation as resolved.
Resolved
Comment thread
DragonnZhang marked this conversation as resolved.
Resolved
],
"repository": {
"type": "git",
Expand Down Expand Up @@ -74,6 +75,7 @@
"changelog": "node scripts/generate-changelog.js",
"telemetry": "node scripts/telemetry.js",
"check:lockfile": "node scripts/check-lockfile.js",
"check:desktop-isolation": "node scripts/check-desktop-isolation.js",
"desktop-openwork-sync": "bun run scripts/desktop-openwork-sync.ts",
"clean": "node scripts/clean.js",
"pre-commit": "node scripts/pre-commit.js"
Expand Down
151 changes: 151 additions & 0 deletions packages/desktop/.agents/skills/desktop-brand-builder/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,151 @@
---
name: desktop-brand-builder
description: Generate a branded qwen-code desktop package from a minimal brandId and logo. Use when the user wants a custom, white-label, rebranded, ModelStudio/OpenWork/Qwen Code desktop client, installer, DMG/EXE/AppImage, or one-click brand build.
---

# Desktop Brand Builder

## Goal

Create a branded desktop package with the least user input possible. The user
should usually provide only:

```text
brandId: acme-ai
logo: /absolute/path/to/logo.png
website: https://acme.ai
```

`website` is optional. Do not ask for app name, app id, artifact name,
copyright, dock icon, renderer symbol, signing, or local installation unless
the user explicitly asks to override them.

## Input Rules

Required fields:

- `brandId`: must match `^[a-z][a-z0-9-]*$`
- `logo`: local file path; must exist

Optional overrides:

- `website`
- `appName`
- `appId`
- `artifactPrefix`
- `target`: `mac`, `win`, `linux`, or `all`

If required input is missing, ask once:

```text
请提供:
brandId: 例如 acme-ai,只能小写字母、数字、短横线
logo: 本地 logo 文件路径
website: 可选
```

Once the required fields are present, proceed without a confirmation step.

## Derived Defaults

Infer missing values deterministically:

- `appName`: title-case the hyphen-separated `brandId`; `acme-ai` becomes
`Acme AI`
- `artifactPrefix`: title-case the hyphen-separated `brandId` and join with
hyphens; `acme-ai` becomes `Acme-AI`
- `appId`: if `website` has a valid host, reverse the host labels and append
`.desktop`; `https://acme.ai` becomes `ai.acme.desktop`
- fallback `appId`: `app.<brandId>.desktop`
- `copyright`: `Copyright © <current year> <appName>`
- all brand images: generate icon, dock icon, and renderer symbol from `logo`

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Critical] Documentation/code mismatch: SKILL.md states acme-ai becomes Acme-AI for artifactPrefix, but the code's titleWords() only uppercases the first letter of each segment (part[0].toUpperCase() + part.slice(1)), producing Acme-Ai. Either update the code to fully uppercase short segments (≤2 chars) or fix this example to Acme-Ai.

— claude-opus-4-6 via Qwen Code /review


Use explicit user-provided override values as-is after basic validation.

## Build Workflow

Use an isolated build directory under the current working directory so user
changes in the current worktree are not mutated. Default to the qwen-code desktop branch; do not clone from
`craft-agents-oss`, OpenWork, or another local checkout unless the user
explicitly asks for that source:

```bash
BUILD_ROOT="$PWD/brand-builds/<brandId>-<timestamp>"
mkdir -p "$BUILD_ROOT"
git clone --branch dragon/feat-unstable-desktop-app --single-branch \
https://github.com/QwenLM/qwen-code.git \
"$BUILD_ROOT/qwen-code"
cd "$BUILD_ROOT/qwen-code"
git checkout -B dragon/brand-<brandId> origin/dragon/feat-unstable-desktop-app
```

If the branch fetch or checkout fails, stop and report the failure. Do not
continue as if `dragon/brand-<brandId>` was created.

Create a temporary `brand.json` in the build directory:

```json
{
"brandId": "acme-ai",
"logo": "/absolute/path/to/logo.png",
"website": "https://acme.ai",
"appName": "Acme AI",
"appId": "ai.acme.desktop",
"artifactPrefix": "Acme-AI",
"copyright": "Copyright © 2026 Acme AI"
}
```

Install desktop dependencies if `packages/desktop/node_modules` is missing:

```bash
cd packages/desktop
bun install
```

Then run this skill's bundled brand creation script:

```bash
cd /absolute/path/to/qwen-code
bun run packages/desktop/.agents/skills/desktop-brand-builder/scripts/brand-create.ts \
--desktop-root /absolute/path/to/qwen-code/packages/desktop \
--config /absolute/path/to/brand.json
```

The agent should not hand-edit `branding.ts` or brand asset files when this
bundled script is available. The bundled script is the source of truth for
patching code and generating resources.

Package with the current host target unless the user requested a target:

```bash
CRAFT_BRAND=<brandId> bun run electron:dist:mac
CRAFT_BRAND=<brandId> bun run electron:dist:win
CRAFT_BRAND=<brandId> bun run electron:dist:linux
```

For `target: all`, run only targets supported by the current machine or CI
environment. Do not claim cross-platform artifacts were produced unless the
files exist.

## Validation

After packaging:

1. Confirm the expected artifact exists under
`packages/desktop/apps/electron/release/`.
2. Compute `sha256sum` or `shasum -a 256` for each artifact.
3. On macOS, run `hdiutil verify` for generated DMG files.
4. Report the artifact path, SHA-256, app name, app id, and build directory.

## Failure Handling

- Invalid `brandId`: show the regex and ask for a corrected value.
- Missing `logo`: ask for a valid local path.
- Missing bundled script: report that
`packages/desktop/.agents/skills/desktop-brand-builder/scripts/brand-create.ts`
is missing, and include the expected command.
- Build failure: preserve the build directory, return the last useful error
lines, and include the full log path or command that produced the failure.

Do not delete the build directory on failure.
Loading
Loading