Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
245 commits
Select commit Hold shift + click to select a range
fe77050
docs: design plugin platform kernel for 0.62
dyndynjyxa Jun 21, 2026
71ef3f0
docs: plan plugin platform kernel implementation
dyndynjyxa Jun 21, 2026
ec4d284
test: harden plugin api contract checker
dyndynjyxa Jun 21, 2026
395f69b
refactor(plugins): centralize rust plugin contract metadata
dyndynjyxa Jun 21, 2026
108e637
refactor(plugins): add internal hook registry
dyndynjyxa Jun 21, 2026
ff52064
refactor(plugins): enforce mutations through hook descriptors
dyndynjyxa Jun 21, 2026
61e0886
refactor(plugins): introduce runtime manager policy facade
dyndynjyxa Jun 21, 2026
05e685a
refactor(plugins): share runtime cache key helpers
dyndynjyxa Jun 21, 2026
773992b
refactor(gateway): add provider adapter capability facade
dyndynjyxa Jun 21, 2026
d7d54ed
refactor(gateway): route cx2cc count tokens through provider adapter
dyndynjyxa Jun 21, 2026
3188865
docs: document 0.62 plugin platform compatibility
dyndynjyxa Jun 21, 2026
cdb9d87
fix: address plugin platform review findings
dyndynjyxa Jun 22, 2026
b53075b
docs: define 0.62 gateway-first plugin kernel plan
dyndynjyxa Jun 22, 2026
34d25a8
docs: plan 0.62 gateway-first plugin kernel
dyndynjyxa Jun 22, 2026
3b8ed70
refactor(plugins): split official privacy filter runtime
dyndynjyxa Jun 22, 2026
5306827
test(plugins): guard hook contract metadata uniqueness
dyndynjyxa Jun 22, 2026
214d616
test(plugins): cover hook registry contract descriptors
dyndynjyxa Jun 22, 2026
0379147
test(plugins): align pipeline defaults with contract
dyndynjyxa Jun 22, 2026
0ef0919
test(plugins): reject duplicate hook contract metadata
dyndynjyxa Jun 22, 2026
0431be8
docs(plugins): guard 0.62 provider api boundary
dyndynjyxa Jun 22, 2026
84b5a35
test(plugins): strengthen hook registry contract mirror
dyndynjyxa Jun 22, 2026
022e599
Merge remote-tracking branch 'origin/main' into codex/plugin-platform…
dyndynjyxa Jun 22, 2026
7f4e332
fix(updater): open changelog links externally
dyndynjyxa Jun 22, 2026
5a105c0
fix(plugin-sdk): align permission dependencies with hook contract
dyndynjyxa Jun 22, 2026
adb9ced
docs(plugins): record 0.62 gateway-first verification
dyndynjyxa Jun 22, 2026
32edb7d
docs(plugins): record plugin performance smoke
dyndynjyxa Jun 22, 2026
59537f8
docs(plugins): complete 0.62 gateway-first audit
dyndynjyxa Jun 22, 2026
7d98024
docs(plugins): design 0.62.1 developer loop
dyndynjyxa Jun 22, 2026
a6785ac
docs(plugins): plan 0.62.1 developer loop
dyndynjyxa Jun 22, 2026
9354298
feat(plugin-devtools): add plugin doctor diagnostics
dyndynjyxa Jun 22, 2026
52bbb50
fix(plugin-devtools): return doctor diagnostics for invalid manifests
dyndynjyxa Jun 22, 2026
ffab898
fix(plugin-devtools): classify malformed doctor manifests
dyndynjyxa Jun 22, 2026
6478a86
fix(plugin-devtools): check runtime file presence by path
dyndynjyxa Jun 22, 2026
c082124
fix(plugin-devtools): diagnose malformed runtime shapes
dyndynjyxa Jun 22, 2026
d55164f
fix(plugin-devtools): validate declarative rule path entries
dyndynjyxa Jun 23, 2026
41dd845
fix(plugin-devtools): guard doctor manifest field shapes
dyndynjyxa Jun 23, 2026
94cf4c0
fix(plugin-devtools): harden doctor file and metadata checks
dyndynjyxa Jun 23, 2026
1c47926
fix(plugin-devtools): normalize malformed wasm entry checks
dyndynjyxa Jun 23, 2026
963e191
feat(plugin-devtools): add strict plugin validation
dyndynjyxa Jun 23, 2026
e7df3f4
fix(plugin-devtools): classify empty strict rule documents
dyndynjyxa Jun 23, 2026
d6e8f5d
fix(plugin-devtools): align strict rule permissions with hooks
dyndynjyxa Jun 23, 2026
8c59920
fix(plugin-devtools): validate strict rule structure
dyndynjyxa Jun 23, 2026
6ea9ed7
fix(plugin-devtools): refine strict action diagnostics
dyndynjyxa Jun 23, 2026
8381e66
fix(plugin-devtools): align strict rules with host runtime
dyndynjyxa Jun 23, 2026
39f58c9
fix(plugin-devtools): validate strict rule runtime limits
dyndynjyxa Jun 23, 2026
fb7494c
fix(plugin-devtools): validate merged strict rule shapes
dyndynjyxa Jun 23, 2026
6f5dc4e
fix(plugin-devtools): avoid js regex strict false positives
dyndynjyxa Jun 23, 2026
7cf4e5b
fix(plugin-devtools): catch malformed strict regex syntax
dyndynjyxa Jun 23, 2026
0ddc5f5
fix(plugin-devtools): reject alternation-leading repeaters
dyndynjyxa Jun 23, 2026
43c0eb7
fix(plugin-devtools): reject group-leading repeaters
dyndynjyxa Jun 23, 2026
e768f79
feat(plugin-devtools): explain declarative rule replay
dyndynjyxa Jun 23, 2026
213296e
fix(plugin-devtools): explain rust inline regex flags
dyndynjyxa Jun 23, 2026
5ee20eb
fix(plugin-devtools): explain extended regex flags
dyndynjyxa Jun 23, 2026
7283908
fix(plugin-devtools): warn on unsupported replay regex flags
dyndynjyxa Jun 23, 2026
43b8231
fix(plugin-devtools): replay unicode regex classes
dyndynjyxa Jun 23, 2026
7fbb4e7
feat(plugins): show runtime observability in plugin details
dyndynjyxa Jun 23, 2026
4030dac
test(plugins): guard devtools contract drift
dyndynjyxa Jun 23, 2026
ee4cc1d
fix(plugins): enforce full devtools contract drift checks
dyndynjyxa Jun 23, 2026
6c693ab
test(provider): add internal acceptance coverage
dyndynjyxa Jun 23, 2026
95015e9
docs(plugins): document 0.62.1 developer loop
dyndynjyxa Jun 23, 2026
1e1c7d8
fix(plugin-devtools): preserve legacy replay regex behavior
dyndynjyxa Jun 23, 2026
13bd28a
docs(plugins): design 0.62.2 lifecycle release
dyndynjyxa Jun 23, 2026
1b7384d
docs(plugins): plan 0.62.2 lifecycle implementation
dyndynjyxa Jun 23, 2026
d2117a5
feat(plugins): add lifecycle preview and update diff
dyndynjyxa Jun 23, 2026
c7fbefa
fix plugin lifecycle preview quality issues
dyndynjyxa Jun 23, 2026
41a1e45
fix(plugins): validate lifecycle rollback target
dyndynjyxa Jun 23, 2026
5f82075
feat: add plugin file preview ipc
dyndynjyxa Jun 23, 2026
5b5200b
feat: add plugin lifecycle previews
dyndynjyxa Jun 23, 2026
96e9241
fix(plugins): clarify lifecycle preview UI
dyndynjyxa Jun 23, 2026
5891e62
fix(plugins): align lifecycle rollback and trust state
dyndynjyxa Jun 24, 2026
0e99322
fix(plugins): align manifest api version contract
dyndynjyxa Jun 24, 2026
818a43d
feat(plugins): add runtime lifecycle registry
dyndynjyxa Jun 24, 2026
096ef7c
feat(plugins): add hook resource budgets
dyndynjyxa Jun 24, 2026
13141ca
fix(plugins): bound runtime artifact reads
dyndynjyxa Jun 24, 2026
65060d7
fix(plugins): make lifecycle state writes transactional
dyndynjyxa Jun 24, 2026
5fddef5
test(plugins): add hardening release guards
dyndynjyxa Jun 24, 2026
1c060ce
fix(plugins): harden runtime mutation boundaries
dyndynjyxa Jun 24, 2026
7608668
docs: plan plugin observability replay publishing
dyndynjyxa Jun 25, 2026
3edb3b9
docs: add plugin observability replay publishing plan
dyndynjyxa Jun 25, 2026
3a718fb
feat(plugins): add structured runtime reports
dyndynjyxa Jun 25, 2026
4038339
feat(plugins): export trace replay fixtures
dyndynjyxa Jun 25, 2026
0928613
feat(create-aio-plugin): add replay and publish parity
dyndynjyxa Jun 25, 2026
0552e4e
feat(plugins): productize observability and market UI
dyndynjyxa Jun 25, 2026
2f7a329
docs(plugins): sync observability and publishing workflow
dyndynjyxa Jun 25, 2026
4c43df7
refactor(plugins): extract runtime reports panel
dyndynjyxa Jun 25, 2026
26b8c8c
Merge remote-tracking branch 'origin/main' into codex/plugin-develope…
dyndynjyxa Jun 25, 2026
d49b64f
docs: design streaming lifecycle and route templates
dyndynjyxa Jun 25, 2026
0fbdd86
docs: refine streaming and route template specs
dyndynjyxa Jun 25, 2026
d83bff9
docs: align stream markers with request log status
dyndynjyxa Jun 25, 2026
35beb37
feat: monitor streaming request lifecycle
dyndynjyxa Jun 25, 2026
b8d5df0
fix: recognize claude message_stop stream marker
dyndynjyxa Jun 26, 2026
9bc4145
fix: move provider route action to card edge
dyndynjyxa Jun 26, 2026
83e8884
fix: isolate provider route action at card edge
dyndynjyxa Jun 26, 2026
4c74357
fix: keep provider route action width stable
dyndynjyxa Jun 26, 2026
a16b05e
docs: design plugin marketplace productization
dyndynjyxa Jun 26, 2026
98003ff
docs: plan plugin marketplace productization
dyndynjyxa Jun 26, 2026
3e5755f
feat(plugins): add market card view model
dyndynjyxa Jun 26, 2026
35a89bd
fix(plugins): block unroutable market cards
dyndynjyxa Jun 26, 2026
f27a9a9
feat(plugins): productize marketplace panel
dyndynjyxa Jun 26, 2026
56d39d7
fix(plugins): route advanced marketplace installs remotely
dyndynjyxa Jun 26, 2026
5da7508
fix(plugins): trim advanced market source inputs
dyndynjyxa Jun 26, 2026
9bf1ffa
docs(plugins): document marketplace product boundary
dyndynjyxa Jun 26, 2026
d68c07e
fix(plugins): derive installed market state from summaries
dyndynjyxa Jun 26, 2026
4be69e4
docs(plugins): design example developer loop phase 1
dyndynjyxa Jun 26, 2026
ba39d30
docs(plugins): plan example developer loop phase 1
dyndynjyxa Jun 26, 2026
14118c0
feat(plugins): add example developer loop templates
dyndynjyxa Jun 26, 2026
a7e7f38
docs(plugins): document example developer loop templates
dyndynjyxa Jun 26, 2026
59cb62e
test(plugins): lock example publishing doc boundaries
dyndynjyxa Jun 26, 2026
372ce6d
test(plugins): document example package commands
dyndynjyxa Jun 26, 2026
eb1260e
fix(plugins): preserve market source trust context
dyndynjyxa Jun 26, 2026
4fbbba3
fix(plugins): prefer exact market source trust
dyndynjyxa Jun 26, 2026
bdbd629
fix(plugins): block reserved official market listings
dyndynjyxa Jun 26, 2026
69a39ce
fix(plugins): reconcile rollback state
dyndynjyxa Jun 26, 2026
b88feb9
fix(plugins): prune runtime reports
dyndynjyxa Jun 26, 2026
4dfd5ab
fix(plugins): clean runtime report pruning
dyndynjyxa Jun 26, 2026
306b5b1
fix(plugins): reconcile selection after uninstall
dyndynjyxa Jun 26, 2026
10eadd9
fix(plugins): guard pending permission selection
dyndynjyxa Jun 26, 2026
3b70933
fix(plugins): simplify plugins page user layout
dyndynjyxa Jun 27, 2026
a693ac9
docs(plugins): specify runtime lifecycle registry
dyndynjyxa Jun 27, 2026
b3ba2cf
docs(plugins): define extension host platform target
dyndynjyxa Jun 27, 2026
b8895a1
docs(plugins): add extension host implementation plan
dyndynjyxa Jun 27, 2026
f63219e
feat(plugins): define extension host manifest contract
dyndynjyxa Jun 27, 2026
8dec73f
fix(plugins): sync extension manifest contract
dyndynjyxa Jun 27, 2026
718f93c
fix(plugins): validate extension contributions
dyndynjyxa Jun 27, 2026
517eb96
fix(plugins): align extension contract consumers
dyndynjyxa Jun 27, 2026
f961f66
fix(plugins): allow extension manifests in devtools validation
dyndynjyxa Jun 27, 2026
52c38fb
feat(plugins): expose active contribution registry
dyndynjyxa Jun 27, 2026
a762e28
feat(plugins): show extension contribution impact
dyndynjyxa Jun 27, 2026
330418c
fix(plugins): refine contribution impact diff
dyndynjyxa Jun 28, 2026
cd35a84
feat(providers): add plugin extension value storage
dyndynjyxa Jun 28, 2026
aa08ed9
fix(providers): tighten extension value storage semantics
dyndynjyxa Jun 28, 2026
c80ee91
feat(plugins): render host-owned UI contributions
dyndynjyxa Jun 28, 2026
6e753e6
fix(plugins): isolate provider UI contribution state
dyndynjyxa Jun 28, 2026
54bc811
feat(plugins): add managed extension host worker
dyndynjyxa Jun 29, 2026
3a7674d
feat(plugins): execute extension commands with reports
dyndynjyxa Jun 29, 2026
0cc7085
docs(plugins): specify extension host only architecture
dyndynjyxa Jun 29, 2026
93c706b
docs(plugins): plan extension host only migration
dyndynjyxa Jun 29, 2026
5936902
feat(plugins): make sdk contract extension host only
dyndynjyxa Jun 29, 2026
8ae8dbc
feat(plugins): enforce extension host manifest contract
dyndynjyxa Jun 29, 2026
70b089b
fix(plugins): stabilize unsupported gateway rules validation
dyndynjyxa Jun 29, 2026
b940985
fix(plugins): reject gateway rules by presence
dyndynjyxa Jun 29, 2026
50626d9
fix(plugins): detect null gateway rules marker
dyndynjyxa Jun 29, 2026
e5a1c5d
refactor(plugins): remove declarative rule runtime dispatch
dyndynjyxa Jun 29, 2026
eb4fceb
fix(plugins): align service permissions with extension host runtime
dyndynjyxa Jun 29, 2026
57c6363
feat(plugins): reject unsupported legacy plugin packages
dyndynjyxa Jun 29, 2026
c0e42f6
fix(plugins): make native runtime preview source aware
dyndynjyxa Jun 29, 2026
81a0bec
fix(plugins): normalize third party native privacy filter rows
dyndynjyxa Jun 29, 2026
08b5a9a
feat(plugins): enforce extension host capabilities
dyndynjyxa Jun 29, 2026
0036ba6
fix(plugins): enforce command capability at worker dispatch
dyndynjyxa Jun 29, 2026
2f2ba02
fix(plugins): reject command execution before activation without capa…
dyndynjyxa Jun 29, 2026
447bae6
test(plugins): cover worker command capability dispatch guard
dyndynjyxa Jun 29, 2026
4415158
feat(plugins): add extension host instance registry
dyndynjyxa Jun 29, 2026
a716901
fix(plugins): dispose extension hosts on plugin lifecycle changes
dyndynjyxa Jun 29, 2026
6265064
fix(plugins): avoid global registry lock during host execution
dyndynjyxa Jun 29, 2026
c5184ff
fix(plugins): serialize registry starts per plugin
dyndynjyxa Jun 29, 2026
8b2a37d
fix(plugins): guard registry dispose all against in flight starts
dyndynjyxa Jun 29, 2026
689f5bc
feat(plugins): execute commands through extension host registry
dyndynjyxa Jun 29, 2026
34c0314
feat(plugins): wire extension host gateway hooks
dyndynjyxa Jun 29, 2026
1df1091
fix(plugins): honor gateway hook timeout and fallback executor
dyndynjyxa Jun 29, 2026
2eab4ca
fix(plugins): clean up extension host gateway lifecycles
dyndynjyxa Jun 29, 2026
d9bcf1d
fix(plugins): drop failed warm extension hosts
dyndynjyxa Jun 29, 2026
ef294b7
feat(plugins): define extension protocol bridge skeleton
dyndynjyxa Jun 29, 2026
239d98e
fix(plugins): validate protocol bridge ids in host
dyndynjyxa Jun 29, 2026
be77b5f
feat(plugins): scaffold extension host plugins
dyndynjyxa Jun 29, 2026
89c2fbf
fix(plugins): align extension host scaffold checks
dyndynjyxa Jun 29, 2026
8463f4f
fix(plugins): validate extension host package shape
dyndynjyxa Jun 29, 2026
8b2e299
docs(plugins): document extension host only plugin api
dyndynjyxa Jun 29, 2026
c4c1855
docs(plugins): update readme extension host direction
dyndynjyxa Jun 29, 2026
480202f
docs(plugins): mark legacy plugin plans superseded
dyndynjyxa Jun 29, 2026
812910d
fix(plugins): align extension host docs with runtime contract
dyndynjyxa Jun 29, 2026
b5c2fc4
fix(plugins): make create plugin docs command executable
dyndynjyxa Jun 29, 2026
574b093
fix(plugins): clarify protocol bridge boundary
dyndynjyxa Jun 29, 2026
3662a5d
docs(plugins): align developer loop with replay boundary
dyndynjyxa Jun 29, 2026
cc149d9
fix(plugins): prevent stale replay developer paths
dyndynjyxa Jun 29, 2026
51263e9
fix(plugins): mark stale replay plans superseded
dyndynjyxa Jun 29, 2026
24799a8
fix(plugins): guard stale declarative rules plans
dyndynjyxa Jun 29, 2026
8062b5e
refactor(plugins): remove declarative rules runtime
dyndynjyxa Jun 30, 2026
066ddcc
docs(plugins): specify privacy filter extension host migration
dyndynjyxa Jun 30, 2026
54b3000
docs(plugins): plan privacy filter extension host migration
dyndynjyxa Jun 30, 2026
6cbd01b
refactor(plugins): migrate privacy filter to extension host
dyndynjyxa Jun 30, 2026
244069a
refactor plugin extension host permission model
dyndynjyxa Jun 30, 2026
1e2b542
fix plugin e2e after extension host layout
dyndynjyxa Jun 30, 2026
30cd3f3
fix settings test plugin command mock
dyndynjyxa Jun 30, 2026
9b325a0
fix provider editor plugin command mock
dyndynjyxa Jun 30, 2026
09e7b7f
chore sync generated bindings
dyndynjyxa Jun 30, 2026
3f5fe3f
fix migration tests for schema v35
dyndynjyxa Jun 30, 2026
32ebcf9
fix rust clippy warnings
dyndynjyxa Jun 30, 2026
27258af
refactor(providers): 移除排序模板相关代码并简化启用开关逻辑
Jun 30, 2026
31bafc1
refactor(plugins): 提取并复用更新插件详情和概要的逻辑函数
Jun 30, 2026
d6d93ba
fix(plugins): satisfy privacy filter clippy check
Jun 30, 2026
f14531f
Merge branch 'codex/plugin-developer-loop-0-62-1'
Jun 30, 2026
d89b228
chore(docs): remove superpowers docs
Jun 30, 2026
a28dc41
refactor: resolve react doctor diagnostics
dyndynjyxa Jul 1, 2026
b325aa4
fix: restore recharts component identity
dyndynjyxa Jul 1, 2026
7cda482
Fix extension host gateway hook timeout ownership
dyndynjyxa Jul 1, 2026
b10f33f
Fix CI gateway code check and cargo audit
dyndynjyxa Jul 1, 2026
125e01f
Fix frontend coverage CI scope
dyndynjyxa Jul 1, 2026
bd20bab
fix ci coverage and cargo audit
dyndynjyxa Jul 1, 2026
e922cf4
Harden extension host plugin runtime
dyndynjyxa Jul 1, 2026
d609d76
Split extension host startup and hook timeouts
dyndynjyxa Jul 1, 2026
5b4f102
Remove legacy plugin WASM SDK CI step
dyndynjyxa Jul 1, 2026
c1517a0
Stabilize extension host environment isolation test
dyndynjyxa Jul 1, 2026
88ef1b0
Limit CI Rust test build concurrency
dyndynjyxa Jul 1, 2026
f8936b4
chore(main): release aio-coding-hub 0.60.3 (#310)
dyndynjyxa Jul 2, 2026
e37e70d
docs: align plugin documentation with current runtime
dyndynjyxa Jul 2, 2026
beb1a24
Fix gateway hook timeout and failover retries
dyndynjyxa Jul 2, 2026
e25bf58
Fix plugin contract checks for hook timeout
dyndynjyxa Jul 2, 2026
08cf27f
ci: ignore blocked quick-xml audit advisories
dyndynjyxa Jul 2, 2026
be0d772
fix(gateway): derive in-progress request logs from active request reg…
dyndynjyxa Jul 2, 2026
0f1d8d8
refactor: single-source cross-layer contracts, hot-path DB offload, r…
dyndynjyxa Jul 3, 2026
e5247a3
test(settings): 增加多项输入校验及解析函数的测试覆盖
Jul 3, 2026
3a236b8
chore(main): release aio-coding-hub 0.60.4 (#324)
dyndynjyxa Jul 3, 2026
e873103
refactor: single-source check stages, add Homebrew cask release pipeline
dyndynjyxa Jul 3, 2026
faaa440
fix(home): unify in-progress request rendering as realtime cards
dyndynjyxa Jul 3, 2026
5d5f1ce
docs(readme): polish badges, section navigation and install matrix
dyndynjyxa Jul 3, 2026
edeb28e
fix(watchdog): 后台修复死亡 WebView,重构白屏恢复状态机
dyndynjyxa Jul 3, 2026
963ad2f
ci: 修复发版 PR 上 Cargo.lock 同步后 CI 不重跑的问题
dyndynjyxa Jul 3, 2026
c27b2ff
chore(main): release aio-coding-hub 0.60.5 (#326)
dyndynjyxa Jul 3, 2026
e75b677
ci(release): 修复 Homebrew tap 同步的 git 认证失败
dyndynjyxa Jul 3, 2026
b4378f1
fix(release): 以 0.60.6 重新发布 0.60.5 的全部内容
dyndynjyxa Jul 3, 2026
bcc3a5b
chore(main): release aio-coding-hub 0.60.6 (#327)
dyndynjyxa Jul 3, 2026
bbbdeaf
fix(gateway): 识别 compact 请求并放宽首字节超时至 300 秒
Jul 4, 2026
bdca955
feat(ui): 请求日志错误卡片展示失败尝试归因摘要
Jul 4, 2026
b5d1dce
feat(gateway): 熔断触发通知携带触发失败原因与首字节超时提示
Jul 4, 2026
72b5bb5
chore(main): release aio-coding-hub 0.60.7 (#328)
dyndynjyxa Jul 5, 2026
6197e81
fix(gateway): 流式空闲超时在流式转发路径真正生效
Jul 5, 2026
530e6d3
feat(gateway): 熔断跳过归因落库并在日志详情展示原因与冷却时间
Jul 5, 2026
5b5eae8
fix(ui): failover 徽章推导与落库语义收敛并清理状态死代码
Jul 5, 2026
a1f3a43
test(constants): 守护默认网关端口并抽取 skills.activeCli 共享常量
Jul 5, 2026
c23e4bd
feat(settings): 请求日志留存策略可见并提供数据库压缩入口
Jul 5, 2026
29c7647
test(constants): 设置下限边界补齐 Rust 校验消息锚定
Jul 5, 2026
5cd4915
refactor(gateway): 熔断通知文案迁移前端渲染并删除后端文本构造
Jul 5, 2026
85b4007
refactor(ui): 网关事件 payload 类型改由 Specta 生成派生
Jul 5, 2026
8590f3f
refactor(ui): 拆分 HomeLogShared 杂物间为三个单一职责模块
Jul 5, 2026
ddf131f
refactor(ui): 清理 review 发现的 P2 项并移除 traceRoute skipped 死分支
Jul 5, 2026
a633390
chore(main): release aio-coding-hub 0.60.8 (#329)
dyndynjyxa Jul 6, 2026
dc30559
fix(home): refresh stale request log activity
Jul 7, 2026
dc69783
chore(main): release aio-coding-hub 0.60.9 (#335)
dyndynjyxa Jul 7, 2026
46ce59e
fix(home): keep freshness watchdog alive while a recent log row lacks…
Jul 7, 2026
4ed3b4b
fix(home): keep signal-driven request log refresh alive while backgro…
Jul 7, 2026
49d590c
fix(gateway): arm request abort guard before active-request registration
Jul 7, 2026
ac939f6
Update README.md
dyndynjyxa Jul 9, 2026
424c861
Update README_EN.md
dyndynjyxa Jul 9, 2026
5b3d417
chore(main): release aio-coding-hub 0.60.10 (#337)
dyndynjyxa Jul 9, 2026
ea4001a
fix(plugins): stabilize extension host process CI
Jul 9, 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
  •  
  •  
  •  
25 changes: 20 additions & 5 deletions .githooks/pre-commit
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,7 @@ prettier_targets=()
rust_tauri_targets=()
has_src_changes=false
has_tauri_changes=false
has_support_matrix_changes=false

while IFS= read -r file; do
case "$file" in
Expand All @@ -105,10 +106,18 @@ while IFS= read -r file; do
esac
;;
esac

# These files are the inputs of CI's support-contract job
# (scripts/support-matrix.mjs check + homebrew-cask selftest).
case "$file" in
scripts/support-matrix*|README.md|README_EN.md|.github/workflows/ci.yml|.github/workflows/release.yml|package.json)
has_support_matrix_changes=true
;;
esac
done < <(git diff --cached --name-only --diff-filter=ACMR)

if [ "$has_src_changes" = false ] && [ "$has_tauri_changes" = false ]; then
echo "[pre-commit] No src/ or src-tauri/ changes, skipping checks."
if [ "$has_src_changes" = false ] && [ "$has_tauri_changes" = false ] && [ "$has_support_matrix_changes" = false ]; then
echo "[pre-commit] No src/, src-tauri/ or support-matrix changes, skipping checks."
exit 0
fi

Expand Down Expand Up @@ -158,7 +167,13 @@ fi

if [ "$has_src_changes" = true ]; then
echo "[pre-commit] Running frontend checks..."
pnpm run check:precommit:src
node scripts/run-checks.mjs precommit-src
fi

if [ "$has_support_matrix_changes" = true ]; then
echo "[pre-commit] Running support matrix checks..."
pnpm run check:support-matrix
pnpm run check:homebrew-cask
fi

if [ "$has_tauri_changes" = true ]; then
Expand All @@ -167,7 +182,7 @@ if [ "$has_tauri_changes" = true ]; then
# cargo --locked 会直接失败,问题常常被拖到 pre-push 才暴露。
# 这里在检测到典型报错后自动更新 Cargo.lock 并重新校验,减少反复踩坑。
tauri_log="$(mktemp -t aio-precommit-tauri.XXXXXX)"
if pnpm run check:precommit:tauri 2>&1 | tee "$tauri_log"; then
if node scripts/run-checks.mjs precommit-tauri 2>&1 | tee "$tauri_log"; then
rm -f "$tauri_log"
else
if grep -q "needs to be updated but --locked was passed" "$tauri_log"; then
Expand All @@ -188,7 +203,7 @@ if [ "$has_tauri_changes" = true ]; then
git add -- "src-tauri/Cargo.lock"

echo "[pre-commit] Re-running Rust fast checks with --locked..."
pnpm run check:precommit:tauri
node scripts/run-checks.mjs precommit-tauri
rm -f "$tauri_log"
else
rm -f "$tauri_log"
Expand Down
2 changes: 1 addition & 1 deletion .githooks/pre-push
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,5 @@ cd "$repo_root"
# tests accidentally execute ref names as commands.
exec </dev/null

echo "[pre-push] Running full pre-push checks (coverage + tauri test + clippy)..."
echo "[pre-push] Running full pre-push checks (CI mirror: static checks + sharded coverage gate + tauri test + clippy)..."
pnpm run check:prepush
27 changes: 19 additions & 8 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,13 @@ on:
permissions:
contents: read

# A new push to the same PR/branch supersedes the in-flight run. This also
# cancels the doomed pre-sync run on release-please PRs once
# sync-release-pr-cargo-lock pushes the updated Cargo.lock.
concurrency:
group: ci-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

jobs:
pr-title:
if: github.event_name == 'pull_request'
Expand Down Expand Up @@ -48,6 +55,9 @@ jobs:
- name: Validate support matrix contract
run: node scripts/support-matrix.mjs check

- name: Validate Homebrew Cask generator
run: node scripts/support-matrix.homebrew-cask.selftest.mjs

desktop-support-contract:
needs: support-contract
strategy:
Expand Down Expand Up @@ -124,10 +134,13 @@ jobs:
run: pnpm check:generated-bindings

- name: Plugin TypeScript SDK typecheck
run: pnpm plugin-sdk:typecheck
run: pnpm --filter @aio-coding-hub/plugin-sdk typecheck

- name: Plugin TypeScript SDK tests
run: pnpm --filter @aio-coding-hub/plugin-sdk test

- name: Plugin scaffolder tests
run: pnpm create-aio-plugin:test
run: pnpm --filter create-aio-plugin test

- name: Plugin GUI E2E smoke
run: pnpm test:e2e
Expand Down Expand Up @@ -200,18 +213,16 @@ jobs:
working-directory: src-tauri
run: cargo clippy --all-targets --locked -- -D warnings

- name: Plugin WASM SDK tests
run: |
cargo test --manifest-path packages/plugin-wasm-sdk/Cargo.toml
cargo test --manifest-path packages/plugin-wasm-sdk/examples/redactor/Cargo.toml

- name: Rust test
working-directory: src-tauri
env:
CARGO_BUILD_JOBS: "1"
run: cargo test --locked -- --test-threads=1

- name: Install cargo-audit
run: cargo install cargo-audit --locked

- name: Dependency audit (cargo)
working-directory: src-tauri
run: cargo audit
# quick-xml <0.41 is still pulled by current upstream Tauri/Wayland/notification deps.
run: cargo audit --ignore RUSTSEC-2026-0194 --ignore RUSTSEC-2026-0195
4 changes: 4 additions & 0 deletions .github/workflows/release-pr-sync-cargo-lock.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,10 @@ jobs:
with:
ref: ${{ github.head_ref }}
fetch-depth: 0
# Push with a PAT instead of GITHUB_TOKEN: runs re-triggered by a
# GITHUB_TOKEN push get stuck in action_required, leaving the
# release PR with its pre-sync red ci run forever.
token: ${{ secrets.RELEASE_PLEASE_TOKEN }}

- name: Install Rust 1.90.0
uses: dtolnay/rust-toolchain@3c5f7ea28cd621ae0bf5283f0e981fb97b8a7af9
Expand Down
105 changes: 102 additions & 3 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -196,7 +196,7 @@ jobs:
$label = "${{ matrix.stable_label }}"
$targetDir = "src-tauri/target/${{ matrix.target }}/release"

# Find the built application exe (not the NSIS/MSI installer)
# Find the built application exe, not the bundled setup package.
$exeName = "AIO Coding Hub.exe"
$exePath = Join-Path $targetDir $exeName

Expand Down Expand Up @@ -237,10 +237,14 @@ jobs:
run: |
set -euo pipefail

# Download pinned stable release of appimagetool (no FUSE required).
# Fetch pinned stable release of appimagetool (no FUSE required).
TOOL_URL="https://github.com/AppImage/appimagetool/releases/download/1.9.1/appimagetool-x86_64.AppImage"
TOOL_SHA256="ed4ce84f0d9caff66f50bcca6ff6f35aae54ce8135408b3fa33abfc3cb384eb0"
TOOL_BIN="$(mktemp)"
curl -fsSL "$TOOL_URL" -o "$TOOL_BIN"
node scripts/fetch-checked-file.mjs \
--url "$TOOL_URL" \
--sha256 "$TOOL_SHA256" \
--output "$TOOL_BIN"
chmod +x "$TOOL_BIN"

label="${{ matrix.stable_label }}"
Expand Down Expand Up @@ -388,3 +392,98 @@ jobs:
release_id: releaseId,
draft: false,
});

publish-homebrew-cask:
needs: [release-please, publish]
if: needs.release-please.outputs.release_created == 'true'
runs-on: ubuntu-latest
env:
HOMEBREW_TAP_REPOSITORY: ${{ vars.HOMEBREW_TAP_REPOSITORY || 'dyndynjyxa/homebrew-aio-coding-hub' }}
HOMEBREW_TAP_TOKEN: ${{ secrets.HOMEBREW_TAP_TOKEN }}
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2

- name: Setup Node
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: 22

- name: Generate Homebrew Cask
env:
GH_TOKEN: ${{ secrets.RELEASE_PLEASE_TOKEN }}
shell: bash
run: |
set -euo pipefail

release_assets_api="repos/${{ github.repository }}/releases/${{ needs.release-please.outputs.release_id }}/assets"

macos_arm_sha256="$(
gh api "$release_assets_api" --paginate \
--jq '.[] | select(.name == "aio-coding-hub-macos-arm.zip") | .digest' \
| sed 's/^sha256://'
)"
macos_intel_sha256="$(
gh api "$release_assets_api" --paginate \
--jq '.[] | select(.name == "aio-coding-hub-macos-intel.zip") | .digest' \
| sed 's/^sha256://'
)"

if [[ -z "$macos_arm_sha256" || -z "$macos_intel_sha256" ]]; then
echo "Missing macOS zip digests for Homebrew Cask generation." >&2
echo "macos_arm_sha256=${macos_arm_sha256:-<missing>}" >&2
echo "macos_intel_sha256=${macos_intel_sha256:-<missing>}" >&2
exit 1
fi

node scripts/support-matrix.mjs homebrew-cask \
--tag "${{ needs.release-please.outputs.tag_name }}" \
--repo "${{ github.repository }}" \
--macos-arm-sha256 "$macos_arm_sha256" \
--macos-intel-sha256 "$macos_intel_sha256" \
--output generated-homebrew/Casks/aio-coding-hub.rb

- name: Skip Homebrew tap sync when token is missing
if: env.HOMEBREW_TAP_TOKEN == ''
run: |
echo "HOMEBREW_TAP_TOKEN is not configured; generated Cask will not be pushed."

- name: Sync Homebrew tap
if: env.HOMEBREW_TAP_TOKEN != ''
shell: bash
run: |
set -euo pipefail

# Fail fast with an actionable message when the token cannot access
# the tap repo — git's own failure mode is a cryptic
# "could not read Username" prompt.
status=$(curl -s -o /dev/null -w "%{http_code}" \
-H "Authorization: Bearer ${HOMEBREW_TAP_TOKEN}" \
"https://api.github.com/repos/${HOMEBREW_TAP_REPOSITORY}")
if [[ "$status" != "200" ]]; then
echo "::error::HOMEBREW_TAP_TOKEN cannot access ${HOMEBREW_TAP_REPOSITORY} (HTTP ${status}). The PAT must be valid and have contents read/write on the tap repository."
exit 1
fi

git check-ref-format --normalize "refs/heads/main" >/dev/null
git config --global user.name "github-actions[bot]"
git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com"

# git-over-HTTPS expects Basic auth (this is what actions/checkout
# sends); a raw "bearer" header is rejected for some token types.
auth_header="AUTHORIZATION: basic $(printf 'x-access-token:%s' "${HOMEBREW_TAP_TOKEN}" | base64 -w0)"

git -c http.extraheader="$auth_header" \
clone "https://github.com/${HOMEBREW_TAP_REPOSITORY}.git" homebrew-tap

mkdir -p homebrew-tap/Casks
cp generated-homebrew/Casks/aio-coding-hub.rb homebrew-tap/Casks/aio-coding-hub.rb

cd homebrew-tap
if git diff --quiet -- Casks/aio-coding-hub.rb; then
echo "Homebrew Cask is already up to date."
exit 0
fi

git add Casks/aio-coding-hub.rb
git commit -m "chore: update aio-coding-hub ${{ needs.release-please.outputs.tag_name }}"
git -c http.extraheader="$auth_header" push origin HEAD
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ docs/*
!docs/plugin-system-development-plan.md
!docs/plugin-system-rfc.md
!docs/plugin-manifest-v1.md
!docs/release-homebrew.md
!docs/plugins/
!docs/plugins/**
docs/superpowers/
Expand All @@ -41,10 +42,12 @@ docs/superpowers/
check-doc/
AGENTS.md
coverage*/
.vitest-reports/
.cursor/
.trellis/
.agents/
.serena/
.superpowers/
src/templates/
.codex/
.codex-temp/
Expand Down
2 changes: 1 addition & 1 deletion .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
".": "0.60.2"
".": "0.60.10"
}
Loading