Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
678 commits
Select commit Hold shift + click to select a range
bd9cdd7
fix(feishu): bridge reply failure events to Nexu fallback (#319)
PerishCode Mar 22, 2026
d5b017b
chore: update README screenshot with WeChat channel (#327)
qiongyu1999 Mar 22, 2026
051908c
feat: WeChat channel integration, model picker refactor, and desktop …
lefarcen Mar 22, 2026
65f71f3
fix: stabilize openclaw-weixin plugin entry config (#329)
lefarcen Mar 22, 2026
ebdc74a
chore: remove router workspace and align desktop runtime paths (#325)
mrcfps Mar 22, 2026
ed291c6
fix: preserve pnpm @img path before dereferencing sharp (#330)
mrcfps Mar 22, 2026
5dce650
chore: refresh runtime install metadata (#332)
mrcfps Mar 22, 2026
c8178cb
chore: update X account to @nexudotio and rewrite WeChat channel docs…
qiongyu1999 Mar 22, 2026
d45deda
chore: bump desktop version to 0.1.4-beta.1 (#333)
mrcfps Mar 22, 2026
a0a2775
fix(desktop): isolate sidecar patching and refresh model inventory (#…
lefarcen Mar 22, 2026
38bf178
chore: support desktop release v tags (#338)
mrcfps Mar 22, 2026
f647322
docs: add step-by-step WeChat OpenClaw tutorial with screenshots (#339)
qiongyu1999 Mar 22, 2026
adc9216
chore: rename desktop release artifacts (#337)
mrcfps Mar 22, 2026
ff3b2b5
fix(actions): quote desktop release PR body heredoc (#341)
mrcfps Mar 22, 2026
883b281
fix(web): polish wechat session titles and sidebar UX (#340)
lefarcen Mar 22, 2026
fe1da0d
chore(desktop): prepare v0.1.4 (#342)
mrcfps Mar 22, 2026
7cbca12
docs: highlight WeChat support in README and add demo screenshot (#343)
qiongyu1999 Mar 22, 2026
f685eb5
fix(actions): preserve manual GitHub release metadata (#344)
mrcfps Mar 22, 2026
b699c35
fix(desktop): kill zombie child processes on app quit (#346)
alchemistklk Mar 22, 2026
1decf95
fix(controller): skip redundant config writes to break Feishu restart…
alchemistklk Mar 22, 2026
4b24ce9
fix(controller): seed config writer cache from disk on cold start (#349)
alchemistklk Mar 22, 2026
701b0d9
feat(desktop): allocate runtime ports dynamically (#331)
PerishCode Mar 23, 2026
d32868c
chore: add GitHub issue and PR templates (#352)
mrcfps Mar 23, 2026
699859a
Render markdown in session chat bubbles (#348)
NickHood1984 Mar 23, 2026
4daa011
docs: launchd process architecture design for Desktop (#356)
lefarcen Mar 23, 2026
64215ab
feat(web): Import Skill modal + fix controller symlink crash (#355)
alchemistklk Mar 23, 2026
fbcfe37
fix(desktop): support channel-aware update checks (#345)
lefarcen Mar 23, 2026
bd2c676
fix(desktop): set webview src via JSX prop to prevent null-src crash …
nettee Mar 23, 2026
2462044
fix(web): prevent skill card drag from opening a second window (#361)
alchemistklk Mar 23, 2026
458c3dc
docs: add open-source governance files and RFC framework (#404)
qiongyu1999 Mar 23, 2026
04b63db
docs: align docs site with nexu design system (#418)
zoeforfun Mar 23, 2026
82a449d
feat(ci): add Feishu notification workflow for new GitHub issues (#426)
nettee Mar 23, 2026
b0a28e0
Add workspace and runtime analytics events (#411)
Siri-Ray Mar 23, 2026
894cc19
chore(desktop): prepare v0.1.5 (#435)
github-actions[bot] Mar 23, 2026
554f7c8
Improve session chat display and desktop workspace links (#420)
Mar 23, 2026
e2e33d8
refactor(desktop): add cloud profile management flow (#432)
mrcfps Mar 23, 2026
9c843a2
feat(skillhub): add install queue with rate-limit handling and file w…
alchemistklk Mar 24, 2026
ba3c74c
fix(desktop): allow display sleep while app stays active (#436)
Mar 24, 2026
d05a1ce
feat(ci): add nexu-pal bot for automatic issue processing (#458)
nettee Mar 24, 2026
9beeb87
feat(desktop): launchd-based process architecture (#405)
lefarcen Mar 24, 2026
08c6d8e
feat(analytics): track skill install and uninstall events (#476)
Siri-Ray Mar 24, 2026
1d85bde
fix: use GitHub App token in Nexu PAL workflow (#504)
nettee Mar 24, 2026
d30bd82
chore: add Feishu notification for GitHub discussions (#505)
nettee Mar 24, 2026
afdfa79
feat: rename Explore to ClawHub, swap tab order, add disclaimer (#477)
alchemistklk Mar 24, 2026
2fb384c
feat(web): UI polish — WeChat official logo, design system tokens & c…
zoeforfun Mar 24, 2026
8dd6fdd
fix(desktop): inject amplitude env into release builds (#514)
Siri-Ray Mar 24, 2026
89a1df2
docs: replace README screenshots with demo videos, add FAQ, rename Ov…
qiongyu1999 Mar 24, 2026
7f06028
fix: use absolute raw URLs for README demo videos (#517)
qiongyu1999 Mar 24, 2026
efef934
fix: use GitHub user-attachments URLs for README demo videos (#520)
qiongyu1999 Mar 24, 2026
1a1c6f6
feat(desktop): launchd attach, partial attach, dev isolation & hot re…
lefarcen Mar 24, 2026
262fc9b
chore(desktop): prepare v0.1.6 (#522)
github-actions[bot] Mar 24, 2026
977c75e
chore: add first-issue welcome, needs-triage label, and assignment ha…
nettee Mar 25, 2026
29e991a
chore: add required pr_message to first-interaction action (#530)
nettee Mar 25, 2026
6a41469
docs: update Discord setup screenshots and simplify permissions guide…
qiongyu1999 Mar 25, 2026
1ef1597
docs: remove specific model names from README, keep only Gemini (#531)
qiongyu1999 Mar 25, 2026
fdb0442
feat: add OpenAI Codex OAuth login and Z.AI Coding Plan quick-setup (…
alchemistklk Mar 25, 2026
7b769b8
fix(desktop): remove re-throw in refreshCloudStatus to prevent unhand…
nettee Mar 25, 2026
363be71
chore: notify Feishu when GitHub Project draft items change (#541)
qiongyu1999 Mar 25, 2026
c6f365e
chore: handle Project board reordered/converted for Feishu notify (#545)
qiongyu1999 Mar 25, 2026
45b77ae
chore: switch nexu-pal LLM backend from LiteLLM proxy to OpenRouter (…
nettee Mar 25, 2026
8129ff5
docs: add English WeChat channel setup guide (#548)
qiongyu1999 Mar 25, 2026
12d2153
fix(desktop): launchd startup reliability hotfix (#544)
lefarcen Mar 25, 2026
1c368ed
feat(models): add MiniMax OAuth provider flow (#549)
mrcfps Mar 25, 2026
fc31260
fix: OAuth model cleanup, skill nav, UI polish (#551)
alchemistklk Mar 25, 2026
d677733
fix(desktop): correct inherited mac entitlements (#553)
nettee Mar 26, 2026
d069d50
feat: add intel mac desktop packaging flow (#550)
mrcfps Mar 26, 2026
75b5353
chore: trim desktop CI dist artifacts (#556)
mrcfps Mar 26, 2026
ded8c86
docs: add Windows and macOS Intel platform support (#564)
qiongyu1999 Mar 26, 2026
cd19976
feat: add nexu-pal GitHub issue triage automation (#561)
nettee Mar 26, 2026
db86246
fix: retry curated skill installs on every startup, respect user unin…
alchemistklk Mar 26, 2026
7d449fb
feat: share translated issue content (#579)
nettee Mar 26, 2026
83463b7
feat(skills): show downloading state in Yours tab, remove toggle swit…
alchemistklk Mar 26, 2026
6c66f84
feat: add telegram and whatsapp channels (#554)
Siri-Ray Mar 26, 2026
658ba5b
fix(desktop): avoid unhandled launchd readiness rejection (#572)
nettee Mar 26, 2026
81b3c59
feat: add Ollama model provider support (#575)
mrcfps Mar 26, 2026
a92421a
docs: update Feishu download link & add star-us GIF (#585)
qiongyu1999 Mar 26, 2026
0ecf216
fix(desktop): robust lifecycle teardown for quit and update-install (…
lefarcen Mar 26, 2026
be8df76
docs: switch star-us GIF to GitHub CDN and remove 12MB local file (#588)
qiongyu1999 Mar 26, 2026
d67c73a
fix(controller): disable daily session auto-reset for desktop (#542)
lefarcen Mar 26, 2026
3981f31
chore: speed up CI installs and desktop packaging (#590)
mrcfps Mar 27, 2026
e7b58d9
fix(nexu-pal): skip internal-author issue triage (#599)
nettee Mar 27, 2026
f37b8ea
fix(desktop): harden startup/shutdown lifecycle + fix V8 JIT white-sc…
lefarcen Mar 27, 2026
b7c6c29
docs: update AGENTS.md with desktop lifecycle architecture (#587)
lefarcen Mar 27, 2026
2f6cda0
fix(desktop): prune OpenClaw clipboard natives for packaged builds (#…
mrcfps Mar 27, 2026
c52396c
fix(desktop): expand export diagnostics for startup failures (#600)
nettee Mar 27, 2026
d692b7e
feat: add GitHub Stats dashboard to README (#614)
ashleyashli Mar 27, 2026
dc5b2cf
chore: refine nexu-pal issue triage heuristics (#613)
nettee Mar 27, 2026
79c9566
fix: remove duplicate GitHub Stats title from SVG (#618)
ashleyashli Mar 27, 2026
9147693
fix(web): i18n skill card install/uninstall buttons (#619)
alchemistklk Mar 27, 2026
9bd5396
fix: backfill session channel types for messaging channels (#627)
Siri-Ray Mar 27, 2026
327deb7
fix(desktop): preserve signed nexu runner bundle (#615)
mrcfps Mar 27, 2026
1b13167
chore: reduce full desktop dist CI scope (#623)
mrcfps Mar 27, 2026
1667c20
feat(models): auto-refresh nexu official model inventory (#634)
mrcfps Mar 27, 2026
4a4820d
feat: add Feishu PR notifications (#625)
nettee Mar 27, 2026
a13f7d8
fix: treat app/sentry as internal-equivalent (#657)
nettee Mar 30, 2026
40605df
fix: reduce WeChat channel cold-start delay from ~2min to ~5s (#646)
lefarcen Mar 30, 2026
f33c509
feat: skill install config sync with workspace detection (#643)
alchemistklk Mar 30, 2026
b0e1a54
feat: add system proxy support for desktop runtime (#637)
mrcfps Mar 30, 2026
b267c37
fix(models): stabilize SiliconFlow official endpoint routing (#635)
mrcfps Mar 30, 2026
97843b1
chore(desktop): add structured bootstrap diagnostics for launchd serv…
lefarcen Mar 30, 2026
85557ae
chore: add standalone desktop E2E automation (#650)
lefarcen Mar 30, 2026
e854cc5
fix(web): close channel connect modal on request failure (#659)
Mar 30, 2026
b141c92
fix(desktop): localize update banner for Chinese users (#661)
Mar 30, 2026
5d410c4
fix: disable Cmd+R page reload in production desktop builds (#639)
lefarcen Mar 30, 2026
8e12ba1
fix: stabilize whatsapp runtime reconnect (#668)
Siri-Ray Mar 30, 2026
e88d95c
feat(controller): use group name for group chat session titles (#660)
Mar 30, 2026
db1761c
fix(desktop): window close hides to background instead of showing qui…
lefarcen Mar 30, 2026
dfa3c53
fix(home): keep pending channel live status polling (#589)
hkslover Mar 30, 2026
d6b76f0
feat(ci): nightly changelog with linked issues + LLM summary + Feishu…
lefarcen Mar 30, 2026
874339e
chore: add background launchd helper commands (#672)
nettee Mar 30, 2026
18bea78
fix: tighten BYOK model refresh and selection states (#665)
mrcfps Mar 30, 2026
8878098
fix: remove blocking readiness wait from connectWechat (#682)
lefarcen Mar 30, 2026
5e4299a
fix(web,weixin): surface real channel runtime status to UI (#679)
lefarcen Mar 30, 2026
333dac7
docs: add Telegram and WhatsApp channel guides (zh/en/ja) (#687)
qiongyu1999 Mar 30, 2026
7ea5c96
chore: split Feishu notify webhooks by GitHub event (#685)
nettee Mar 30, 2026
0f15479
docs: add community group QR codes to README (#684)
qiongyu1999 Mar 30, 2026
369aaec
🚀 release: v0.1.8 (#690)
lefarcen Mar 30, 2026
6cd0975
fix(ci): use PAT for auto-tag to trigger downstream release build (#692)
lefarcen Mar 30, 2026
ad6a10e
fix(desktop): prefer sips image backend on macOS for OpenClaw process…
Mar 30, 2026
23e636d
fix(ci): improve nightly changelog readability and fix null issue tit…
lefarcen Mar 30, 2026
c22ade5
fix(desktop): pass gateway token to OpenClaw launchd plist (#697)
lefarcen Mar 30, 2026
8fa3c27
fix: restore OpenClaw PDF and browser runtime dependencies (#689)
nettee Mar 31, 2026
92c8e26
docs: add update guide and troubleshooting pages (zh/en/ja) (#713)
qiongyu1999 Mar 31, 2026
3cd9c15
docs: WhatsApp proxy FAQ + remove usage page (#716)
qiongyu1999 Mar 31, 2026
b4cab33
fix: select matching mac artifacts for desktop e2e (#712)
nettee Mar 31, 2026
c4d45d1
feat(desktop): setup animation on first install and post-update (#596)
lefarcen Mar 31, 2026
92105f1
fix(desktop): pass --port to openclaw gateway and detect port conflic…
lefarcen Mar 31, 2026
479a2c7
fix(desktop): recreate window on second-instance relaunch (#701)
mrcfps Mar 31, 2026
65f8f8c
Merge remote-tracking branch 'origin/release/v0.1.8' into merge/relea…
lefarcen Mar 31, 2026
3b890b0
fix(desktop): reset needsControllerReady after port-theft recovery re…
lefarcen Mar 31, 2026
74e72b9
Merge pull request #726 from nexu-io/merge/release-v0.1.8-to-main
mrcfps Mar 31, 2026
ce87fa4
fix(ci): switch R2 upload from wrangler to AWS S3 CLI (#730)
lefarcen Apr 1, 2026
78150a7
chore(ci): add CDN cache purge to desktop release workflow (#735)
lefarcen Apr 1, 2026
04d0d3b
fix(controller): move account-scoped config into accounts to avoid op…
lefarcen Apr 1, 2026
025a8b6
fix(desktop): recover from stale openclaw launchd state (#734)
mrcfps Apr 1, 2026
39adf43
fix(desktop): register app:quit IPC handler to fix E2E quit hang (#737)
lefarcen Apr 1, 2026
543699c
fix(desktop): use consistent 1280×720 window size (#738)
lefarcen Apr 1, 2026
542dd5c
fix(desktop): improve update install feedback and teardown timing (#739)
lefarcen Apr 1, 2026
7ced43c
chore: harden desktop release cache purge (#745)
lefarcen Apr 1, 2026
6e36327
chore: bump version to 0.1.9 (#746)
lefarcen Apr 1, 2026
20356cb
fix: treat sentry automation as internal author (#744)
nettee Apr 1, 2026
58d485e
Draft: docs: add Seedance guide and validate docs pages (#748)
qiongyu1999 Apr 1, 2026
d055c1a
feat(web): add Seedance 2.0 promo banner and modal flow (#749)
lefarcen Apr 1, 2026
d837304
fix(desktop): retry controller startup after readiness failure (#750)
mrcfps Apr 1, 2026
0718e64
feat(skill): add Medeo Video as bundled static skill (#751)
alchemistklk Apr 2, 2026
8fc5a38
fix(web): move seedance promo banner below channels and adjust countd…
lefarcen Apr 2, 2026
fb41d0a
fix(web): use sessionStorage for banner dismiss so it reappears on ne…
lefarcen Apr 2, 2026
eb08689
fix(web): move promo banner between hero and channels (#757)
lefarcen Apr 2, 2026
fff878b
docs: Seedance 2.0 guide refinements and assets (#761)
qiongyu1999 Apr 2, 2026
24c8b45
fix(desktop): pass Amplitude API key to controller launchd service (#…
lefarcen Apr 2, 2026
b748e6f
chore(controller): rename session_start to nexu_first_conversation_st…
lefarcen Apr 2, 2026
8208734
feat(skill): add LibTV Video skill + fix NoneType crash (#764)
alchemistklk Apr 2, 2026
7c2265e
chore: bump version to 0.1.10 (#770)
lefarcen Apr 2, 2026
2f928a3
chore: update platform templates with Seedance 2.0 promo and search f…
lefarcen Apr 2, 2026
8c7b471
docs: add Windows Seedance and beta guides (#776)
qiongyu1999 Apr 2, 2026
e825ac7
feat: add dingtalk channel support (#775)
Siri-Ray Apr 2, 2026
cfa5e00
docs: add multilingual rewards guide (#781)
qiongyu1999 Apr 2, 2026
4aaef56
build(desktop): stabilize Windows dev and distribution workflows (#449)
PerishCode Apr 3, 2026
7802529
docs: add gateway timeout FAQ for Seedance libtv-video skill (#833)
Celina-create Apr 3, 2026
932506f
chore: add Bothub verification token (#839)
joeylee12629-star Apr 5, 2026
5d125d4
chore: add desktop e2e coverage collection and reporting (#698)
mrcfps Apr 6, 2026
28eb4bc
fix(desktop): auto-clear launchd disabled override on bootstrap (#836)
lefarcen Apr 6, 2026
d0a9b49
fix(desktop): make electronDist override opt-in to unbreak nightly co…
lefarcen Apr 7, 2026
626adb7
feat(controller): localised LLM error messages for channel users (#834)
lefarcen Apr 7, 2026
3e23b71
chore: migrate analytics from Amplitude to PostHog (#778)
mrcfps Apr 7, 2026
e11cdde
fix: restore packaged Nexu home and welcome redirect (#885)
Siri-Ray Apr 7, 2026
b2d565d
docs: add WeCom QQ and DingTalk channel guides (#895)
qiongyu1999 Apr 7, 2026
97593a6
fix: simplify channel connection setup actions (#894)
Siri-Ray Apr 8, 2026
8b3151e
docs: update rewards guides (#897)
qiongyu1999 Apr 8, 2026
f005223
feat(rewards): integrate desktop rewards center and harden packaged d…
Apr 8, 2026
7cd04b6
feat(controller): add nexu-credit-guard plugin for localised LLM erro…
lefarcen Apr 8, 2026
d04434d
fix(controller): recover from interrupted cloud login browser flow (#…
alchemistklk Apr 8, 2026
703ef7b
fix(dev): recover stale local listeners and align mac sidebar toggle …
lefarcen Apr 8, 2026
1062a09
fix: normalize rewards progress after filtering unknown tasks (#914)
Apr 8, 2026
f1e52ab
fix(runtime): three stability fixes for SIGUSR1 restart loop and BYOK…
lefarcen Apr 8, 2026
d0da4b1
feat(web): track reward task click and completion events (#913)
lefarcen Apr 8, 2026
34fd141
fix: clean up credits banner and rewards prompts (#918)
Apr 8, 2026
dcec31f
fix: update rewards social share templates (#921)
Apr 8, 2026
a5128d1
chore: reserve windows workflow lanes (#925)
PerishCode Apr 8, 2026
e02d923
feat: add model provider registry and config-driven provider settings…
mrcfps Apr 8, 2026
07bc795
chore: cancel stale Desktop E2E runs for closed PRs (#930)
nettee Apr 8, 2026
7e8e75e
fix: route minimax oauth browser launch through shell openExternal (#…
Siri-Ray Apr 8, 2026
29a4391
fix(web): make daily check-in readonly in rewards (#923)
Apr 8, 2026
f816c17
fix(desktop): warn on Rosetta + arch-stamp runner re-clone (#936)
lefarcen Apr 8, 2026
a359da0
fix(rewards): simplify GitHub star reward verification (#942)
lefarcen Apr 8, 2026
d6720ea
fix(desktop): handle packaged debug shortcut via before-input-event (…
lefarcen Apr 8, 2026
bb893a3
fix: add docs links to dingtalk wecom and qq setup dialogs (#943)
Siri-Ray Apr 8, 2026
0f25731
fix(web): prevent locale bootstrap from overriding user selection (#924)
lefarcen Apr 8, 2026
b1a3065
fix(rewards): refine mobile invite copy and WhatsApp proof flow (#945)
lefarcen Apr 8, 2026
5d5e465
fix(desktop): expose About and Check for Updates in Help menu on Wind…
lefarcen Apr 8, 2026
de31971
fix(desktop): refresh setup animation loop asset (#947)
lefarcen Apr 8, 2026
44c484d
fix: remove agent-browser from curated skills list (#948)
alchemistklk Apr 8, 2026
f8659ac
fix(rewards): prefill Reddit and LinkedIn share links (#952)
lefarcen Apr 8, 2026
c3e6498
chore: bump version to 0.1.11 (#956)
lefarcen Apr 8, 2026
140831c
fix(desktop): keep renderer running in background + faster balance po…
lefarcen Apr 8, 2026
64fb0fb
chore: align windows desktop delivery with mainline (#949)
PerishCode Apr 9, 2026
26ed773
docs: add model credit consumption guide (zh/en/ja) (#978)
qiongyu1999 Apr 9, 2026
8d80a0c
fix(controller): fix WeChat prewarm drain and raw ID session titles (…
lefarcen Apr 9, 2026
247589d
fix(dev): inject PLATFORM_TEMPLATES_DIR and harden controller startup…
lefarcen Apr 9, 2026
8e871b6
fix: Windows skillhub catalog extraction and skills UI polish (#986)
lefarcen Apr 9, 2026
0336e8d
feat: align desktop settings with workspace design (#984)
Siri-Ray Apr 9, 2026
f86f2a2
fix(web): render balance popup via portal to fix sidebar clipping (#990)
lefarcen Apr 9, 2026
6ff9fde
fix(desktop): improve Windows tray and local update UX (#988)
PerishCode Apr 9, 2026
883d3b7
fix: preserve full X share copy and repo url (#975)
Apr 9, 2026
68f4c84
fix: show gifted credits in sidebar balance popup (#985)
Apr 9, 2026
4f35981
docs: add Korean (한국어) localization for README and docs site (#998)
qiongyu1999 Apr 9, 2026
fb1bb13
fix(controller): never overwrite agent-edited platform docs (#999)
lefarcen Apr 9, 2026
2b66ad4
docs: update Feishu app permissions with expanded user scopes (#997)
qiongyu1999 Apr 9, 2026
157b50c
fix(web): fix Mac sidebar toggle position and platform detection (#1002)
lefarcen Apr 9, 2026
4c45ea5
chore: fix PostHog analytics identity and desktop metadata (#960)
mrcfps Apr 9, 2026
2632b3a
chore: add structured logging to all channel connect/disconnect flows…
lefarcen Apr 10, 2026
a655585
fix: repair plugin bundle dependency closure for qqbot (#1001)
Siri-Ray Apr 10, 2026
01ac8ea
feat(libtv-video): direct Feishu delivery via detached background wai…
alchemistklk Apr 10, 2026
cd6e293
chore: add Vaunt contributor achievement configuration (#1015)
qiongyu1999 Apr 10, 2026
5fecd34
fix: improve channel connect error diagnostics (#1018)
lefarcen Apr 10, 2026
6eeee7c
feat(desktop): background auto-download updates (#1020)
lefarcen Apr 10, 2026
ab3e3d7
fix(desktop): stabilize Windows user data migration (#1021)
PerishCode Apr 10, 2026
25b6a1a
fix: update settings account and desktop dock behavior (#1022)
Siri-Ray Apr 10, 2026
3f75fe0
fix(desktop): hide installer directory selection pages to prevent dat…
lefarcen Apr 10, 2026
64bb3d7
chore: add temporary langfuse tracing passthrough (#1019)
lefarcen Apr 10, 2026
fa1c6b1
fix: keep windows tray menu open on click (#1035)
Siri-Ray Apr 10, 2026
2bc9a8f
docs: improve contributor onboarding entry points (#1032)
Celina-create Apr 10, 2026
f60397b
fix: align settings model picker and analytics default (#1034)
Siri-Ray Apr 10, 2026
0d7603e
docs: restore chinese readme contributing section (#1036)
Celina-create Apr 10, 2026
559a813
docs: add i18n contributor recruitment & appreciation sections (#1038)
Celina-create Apr 10, 2026
45c2935
fix: preserve dingtalk bundled plugin dependencies (#1037)
Siri-Ray Apr 10, 2026
79a8b05
docs: add WeChat contributor group QR code to guide pages (#1042)
Celina-create Apr 10, 2026
856fd58
docs: add EN & JA translations for first-pr and contributor-rewards g…
Celina-create Apr 10, 2026
eba0226
fix(desktop): keep a single update banner (#1033)
lefarcen Apr 10, 2026
3a8c7b1
fix(desktop): restore version to 0.1.11 (#1044)
lefarcen Apr 10, 2026
a138514
docs: add Windows installation guide (zh/en/ja/ko) (#1039)
qiongyu1999 Apr 10, 2026
d12611a
docs: rewrite README (en/zh/ja/ko) and remove Windows beta guide (#1040)
qiongyu1999 Apr 10, 2026
4a02b2d
fix: add missing i18n translations for Home and Conversation pages (#…
thu-lyx Apr 13, 2026
b0070c1
chore: limit Feishu PR notifications to fork PRs (#1050)
nettee Apr 13, 2026
d26f4a3
fix: restore welcome locale switching and add channel setup diagnosti…
PerishCode Apr 13, 2026
3ab6c0d
docs: update contributor group & Discord links across ZH/EN/JA/KO (#1…
Celina-create Apr 13, 2026
9aa2b54
fix: improve desktop update failure recovery (#1056)
Siri-Ray Apr 13, 2026
ab9632d
chore: harden Feishu fork PR notification workflow (#1066)
nettee Apr 13, 2026
df0fa08
fix(desktop): retry when Windows installer finds running Nexu (#1073)
PerishCode Apr 13, 2026
240127c
fix: add logout confirmation dialogs in settings (#1069)
Siri-Ray Apr 13, 2026
7a03c2b
fix(controller): batch skillhub sync to prevent OpenClaw restart loop…
lefarcen Apr 13, 2026
c4a758c
chore: bump desktop version to 0.1.12 (#1045)
lefarcen Apr 13, 2026
475088b
fix: use runtime ports in packaged desktop checks (#1082)
lefarcen Apr 13, 2026
94a742d
docs: add registration email domain guide (#1092)
nettee Apr 14, 2026
3970389
fix: constrain channel status error copy (#1089)
Siri-Ray Apr 14, 2026
f4c99ce
docs: 在README中添加贡献指南提示
Apr 14, 2026
7468cf5
fix: 更新通知横幅遮挡侧边栏 #859
Apr 15, 2026
e91000e
fix: 欢迎页语言切换器无效 #448
Apr 15, 2026
29d5fb6
fix: 版本更新通知设计杂乱 #1005
Apr 15, 2026
38096b5
feat: 完成首次贡献指南及三项任务修复
Apr 16, 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
  •  
  •  
  •  
281 changes: 281 additions & 0 deletions .agents/skills/process-pr-reviews/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,281 @@
---
name: process-pr-reviews
description: Use when the user asks to process, triage, fetch, view, count, list, or resolve review feedback in a GitHub PR. Supports both CodeRabbit and Codex review workflows. In this workflow, “real review feedback” is strictly defined as actionable inline comments; for CodeRabbit, exclude review summaries and nitpicks, and for Codex, exclude review summary cards and use PR main-thread reactions only as status signals.
---

# Process PR Reviews

This workflow supports both CodeRabbit and Codex PR review signals.

## CodeRabbit Reviews

“Real review feedback” is strictly defined as:

- **inline review comments**
- **not** a review summary
- **not** a nitpick

Nitpick comments from CodeRabbit must always be ignored to avoid unnecessary noise.

There is no need to analyze the comment content itself.

### Data sources

The CodeRabbit workflow only needs these two sources:

1. **PR review comments**

```bash
gh api --paginate repos/<owner>/<repo>/pulls/<pr_number>/comments
```

This is the authoritative source for real inline comments.

2. **PR reviews**

```bash
gh api --paginate repos/<owner>/<repo>/pulls/<pr_number>/reviews
```

This is only used to identify and exclude review summaries / nitpick summaries. It is not used to extract the final result.

Do not treat these as primary sources:

- `gh pr view ...`
- `gh api repos/<owner>/<repo>/issues/<pr_number>/comments`

Reason: they are not the authoritative source for actionable inline comments.

### Workflow

#### 0. Optional: fetch review thread IDs early if resolve/dismiss may be needed

If the user may ask you to resolve review conversations after triaging them, fetch review thread IDs as soon as you know the PR number:

```bash
gh api graphql -f query='query { repository(owner: "<owner>", name: "<repo>") { pullRequest(number: <pr_number>) { reviewThreads(first: 100) { nodes { id isResolved comments(first: 20) { nodes { databaseId path line author { login } body } } } } } } }'
```

This is not a primary source for actionable review feedback. It is only for mapping inline comments to resolvable thread IDs.

Recommendation:

- If the user only wants to **view/list/count** review feedback, this step is optional.
- If the user may want to **resolve conversations**, doing this early is usually more convenient because you can map comment `databaseId` / `path` / `line` to thread IDs in one pass.

#### 1. Fetch inline comments

```bash
gh api --paginate repos/<owner>/<repo>/pulls/<pr_number>/comments
```

Only keep records that satisfy all of the following:

- `user.login` is `coderabbitai[bot]` or `coderabbitai`
- `in_reply_to_id == null` (only top-level inline comments, not replies)

This is the candidate set.

#### 2. Fetch reviews to exclude review summaries / nitpicks

```bash
gh api --paginate repos/<owner>/<repo>/pulls/<pr_number>/reviews
```

Identify CodeRabbit review summaries. Common characteristics include:

- `Actionable comments posted: N`
- `Nitpick comments`
- long summary text

These review-level contents are **not the final result**. They are only used to help determine:

- which items are summaries
- which nitpicks should not be counted as actionable inline comments

### Filtering rule

The final goal of the CodeRabbit workflow is always:

> **Top-level inline comments left by CodeRabbit in `pulls/<pr_number>/comments` that are neither nitpicks nor summaries**

Important:

- Treat CodeRabbit nitpicks as non-actionable by default.
- Do not include nitpicks in counts, summaries, or resolution queues unless the user explicitly asks for nitpicks.

In practice, do the following:

1. Get CodeRabbit top-level inline comments from `pulls/<pr_number>/comments`
2. Use `pulls/<pr_number>/reviews` to determine whether the PR contains nitpick summaries
3. In the output, keep only the inline comments you confirm are actionable

### Large output handling

If the output of `gh api --paginate ...` is too large and gets truncated:

1. Record the tool output file path
2. Do not manually read through the entire large JSON blob
3. Hand it off to `@explorer` to extract:
- CodeRabbit-authored comments
- the number of top-level inline comments
- each comment’s `path` / `line` / `body`

### Resolving review conversations

### Resolution policy

When triaging review feedback, apply this rule:

- If a comment will **not** be fixed, you may resolve the conversation after triage.
- If a comment **will** be fixed, do **not** resolve it first — make the code change first, then resolve the conversation afterward.

In short:

- **won't fix / no code change** → triage, then resolve
- **will fix / code change required** → fix first, then resolve

If the user asks to resolve a CodeRabbit review conversation:

1. Identify the target inline comment from the actionable comment list.
2. Map that comment to its review thread ID via `reviewThreads` GraphQL data.
- Match using `databaseId` when possible.
- If needed, fall back to `path` + `line` + author login.
3. Resolve the thread with GraphQL:

```bash
gh api graphql -f query='mutation { resolveReviewThread(input: {threadId: "<thread_id>"}) { thread { isResolved } } }'
```

Notes:

- Resolve the **thread**, not the individual comment.
- `pulls/<pr_number>/comments` remains the source of truth for identifying actionable inline comments.
- `reviewThreads` is only for thread-level operations such as resolving conversations.

## Codex Reviews

“Real review feedback” is strictly defined as:

- **inline review comments**
- **not** the review summary card

There is no need to analyze the comment content itself.

### Important behavior differences from CodeRabbit

- Codex review is **silent while running**.
- Unlike CodeRabbit, Codex does **not** expose an in-progress PR check for review status.
- While Codex is reviewing, the PR main conversation thread gets an `eyes` reaction from `chatgpt-codex-connector[bot]`.
- If Codex finds no issues, it may leave **no actionable inline comments** and instead react to the PR main conversation thread with `+1` (thumbs up).
- If Codex finds issues, it may create inline review comments in `pulls/<pr_number>/comments` and a review summary card in `pulls/<pr_number>/reviews`.

### Data sources

The Codex workflow uses these sources:

1. **PR review comments**

```bash
gh api --paginate repos/<owner>/<repo>/pulls/<pr_number>/comments
```

This is the authoritative source for actionable inline Codex comments.

2. **PR reviews**

```bash
gh api --paginate repos/<owner>/<repo>/pulls/<pr_number>/reviews
```

This is used to identify the Codex review summary card such as `### 💡 Codex Review`. It is not the primary source of actionable inline feedback.

3. **Issue comment reactions on the PR main thread**

First fetch the PR issue node / comments if needed:

```bash
gh api repos/<owner>/<repo>/issues/<pr_number>/comments
gh api repos/<owner>/<repo>/issues/<pr_number>/reactions
```

Use reactions on the PR main conversation thread only to detect Codex review state:

- `eyes` from `chatgpt-codex-connector[bot]` → Codex review appears to be in progress
- `+1` from `chatgpt-codex-connector[bot]` on the PR main thread → Codex reviewed and found no issues

These reactions are **status signals**, not actionable review feedback.

Do not treat these as primary sources for actionable comments:

- `gh pr view ...`
- `gh api repos/<owner>/<repo>/issues/<pr_number>/comments`
- `gh api repos/<owner>/<repo>/issues/<pr_number>/reactions`

Reason: actionable Codex review feedback still lives in PR review comments, not in the PR issue timeline.

### Workflow

#### 1. Fetch inline comments

```bash
gh api --paginate repos/<owner>/<repo>/pulls/<pr_number>/comments
```

Only keep records that satisfy all of the following:

- `user.login` is `chatgpt-codex-connector[bot]`
- `in_reply_to_id == null` (only top-level inline comments, not replies)

This is the candidate set of actionable Codex comments.

#### 2. Fetch reviews to identify the summary card

```bash
gh api --paginate repos/<owner>/<repo>/pulls/<pr_number>/reviews
```

Identify Codex review summaries. Common characteristics include:

- `### 💡 Codex Review`
- explanatory text such as `Here are some automated review suggestions for this pull request.`
- “About Codex in GitHub” help text

These review-level contents are **not the final result**. They are only used to understand whether Codex posted a review summary.

#### 3. Optionally inspect PR main-thread reactions for status

If the user asks whether Codex is still reviewing, or whether Codex finished with no findings, inspect reactions on the PR main thread.

Interpret them as follows:

- `eyes` by `chatgpt-codex-connector[bot]` → likely still reviewing / review in progress
- `+1` by `chatgpt-codex-connector[bot]` with no Codex inline comments → likely completed with no findings

Do not count these reactions as review comments.

### Filtering rule

The final goal of the Codex workflow is always:

> **Top-level inline comments left by Codex in `pulls/<pr_number>/comments`**

In practice, do the following:

1. Get Codex top-level inline comments from `pulls/<pr_number>/comments`
2. Use `pulls/<pr_number>/reviews` only to recognize the summary card
3. If there are no Codex inline comments, optionally inspect PR main-thread reactions to distinguish:
- still reviewing (`eyes`)
- reviewed with no findings (`+1`)
- no observable Codex activity

### Large output handling

If any `gh api --paginate ...` output is too large and gets truncated:

1. Record the tool output file path
2. Do not manually read through the entire large JSON blob
3. Hand it off to `@explorer` to extract:
- Codex-authored inline comments
- the number of top-level inline comments
- each comment’s `path` / `line` / `body`
16 changes: 16 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
node_modules
dist
.git
.github
.vscode
*.md
!README.md
docs
experiments
.env
.env.*
!.env.example
*.log
.DS_Store
coverage
.turbo
5 changes: 5 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
* text=auto eol=lf

*.bat text eol=crlf
*.cmd text eol=crlf
*.ps1 text eol=crlf
1 change: 1 addition & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/apps/api/migrations/** @mrcfps @PerishCode @nettee
Loading
Loading