Repository navigation
v0.28.0
What's Changed
- docs: reorganize documentation by @hsuchifeng in #1009
- feat(wiki): collect and extract Scala files in the code graph (#981) by @yudongyouqing in #996
- fix: delivery and local-state bugs (#993) by @SaulMoro in #995
- fix(hooks): keep one owner for main-checkout team hooks across worktrees by @SaulMoro in #1003
- fix(update): make --dry-run a read-only version check (#900) by @ydflow in #951
- fix(github): propagate organization repo fallback errors by @ydflow in #959
- fix(session): serialize monthly log updates across processes by @ydflow in #961
- fix(github): keep the token out of the clone's remote URL by @Smilewithoutfalling in #994
- docs: split long paragraphs and fix repo naming examples by @jeff-r2026 in #1013
- feat: keep the resources teamai delivers in project scope out of git (#915) by @SaulMoro in #1000
- feat(agents): first-class Trae and Trae CN support (for #904) by @jimpablo in #1002
- fix(toolRoots): accept roots nested below ~/.config/ by @Smilewithoutfalling in #1017
- fix(recall): rebuild the search index however much smaller it gets (#1006) by @SaulMoro in #1019
- fix(uninstall): keep initialized projects when uninstalling the user scope (#1025) by @SaulMoro in #1032
- fix(hooks): render dsh's Windows hook commands in PowerShell syntax (#1005) by @Jay0130-a in #1034
- fix(lock): report filesystem failures instead of contention by @ydflow in #1035
- feat(pull): let a member opt out of usage reporting with usageReportEnabled by @SaulMoro in #1037
- fix(hooks): install Copilot built-ins in user scope by @SaulMoro in #1038
- fix: deliver the ZCode SessionStart hook through a Node launcher by @Smilewithoutfalling in #1047
- feat(recall): show source freshness for codebase results by @wsjwu58-cmd in #1033
- docs: use the renamed zcode SessionStart check in both guides by @Smilewithoutfalling in #1048
- perf: 45% faster init, 31% faster pull, 32% shorter e2e suite by @SaulMoro in #1039
- fix(rules): give ZCode, DeepSeek Harness and JoyCode the instruction blocks in their user rules file by @SaulMoro in #1031
- feat: add teamai.yaml language for English agent texts (#1014) by @Frank-zhu2000 in #1042
- test(hooks): make the detached-spawn mock settle on win32 (no more mass hangs) by @STiFLeR7 in #1051
- fix(push): send kept skill edits back and place new resources by active projects (#1020, #1021) by @SaulMoro in #1022
- docs: split the guide into one page per task by @jeff-r2026 in #1016
- docs: explain merged MR hint when recall is off by @jeff-r2026 in #1060
- fix(env): reconcile MCP after env set and hint undeclared secrets by @jeff-r2026 in #1053
- fix(local-agent): never treat HOME as a workspace by @momothemage in #1052
- feat(review): add read-only health checks for pushed branches by @Jay0130-a in #1058
- fix(votes): ground the upvote judge from the recall log on the subagent path (#723) by @m0Nst3r873 in #1063
- fix: resolve the main checkout of submodules and separate git dirs (#1041) by @SaulMoro in #1043
- feat(scripts): run team scripts at init, pull, and new checkouts by @jeff-r2026 in #1061
- fix(doctor): check that the zcode SessionStart hook actually answers by @Smilewithoutfalling in #1064
- fix(lock): clean up zombie locks left by dead processes (#1027) by @jimpablo in #1068
- fix(init): do not pull team resources during init (#1065) by @jeff-r2026 in #1069
- fix(votes): keep local deltas until the reports push lands (#1027) by @jimpablo in #1066
- fix(hooks): write the declared timeout into Codex's built-in hook entries (#1070) by @STiFLeR7 in #1071
- feat(muse): support Muse Code across skills, rules, hooks, MCP, agents, models and sessions by @SaulMoro in #1067
- fix(zcode): preserve documented hooks settings during reconcile by @kittimzhe in #1054
- fix(git-exclude): a path the member's own rule ignores in another checkout is not foreign by @SaulMoro in #1091
- fix(recommend): recommend only skills pull delivers to this scope by @SaulMoro in #1089
- fix(env): give each directory its own team env (#1018) by @SaulMoro in #1023
- fix(votes): prove vote delivery by identity, not counter equality (#1027) by @jimpablo in #1098
- fix(push): scope skills like pull when no project is active, and say why a skill is left out by @SaulMoro in #1094
- fix(hooks): stop leaving an empty Copilot hooks file by @SaulMoro in #1092
- fix(import): write every import into one teamwiki and drop codebase --extract by @m0Nst3r873 in #1100
- fix(git-exclude): judge the member's rules without teamai's blocks by @SaulMoro in #1095
- feat(scope): rename the project install scope to workspace by @SaulMoro in #1106
- fix(skills): name the link that keeps a skill out of a tool by @SaulMoro in #1108
- fix(mcp): stop reporting an unchanged Codex server as updated by @SaulMoro in #1111
- test(dashboard): wait for a timed-out report-scope test before its home goes by @SaulMoro in #1112
- fix(skills): remove a file the team deleted from a delivered skill by @jayhemnani9910 in #1109
- feat(workflow): add command-only runtime by @hsuchifeng in #1097
- fix(recall): keep maintenance --dry-run from creating the learnings checkout by @Dev-next-gen in #1114
- feat(dashboard): list rule delivery state on a Resources page (#1028) by @WLH55 in #1113
- fix(hooks): render codex built-in hooks in PowerShell on Windows (#1074) by @kittimzhe in #1075
- fix(mcp): delete a project MCP config the team's last server leaves empty by @jayhemnani9910 in #1110
- feat(session): cross-platform session migration and team session archive by @lurkacai0831 in #593
- fix(mcp): keep a config's tracked record when git cannot answer by @SaulMoro in #1118
- feat: a workspace delivers what the repos inside it select by @SaulMoro in #1107
- feat(workflow): run prompt and agent steps with the local driver by @hsuchifeng in #1120
- docs(distribution): recipe for restricting skills to some members (role gating pitfall + enforced-rule adoption) by @pcm1991 in #1096
- fix(hooks): keep the Codex project hooks.json identical on every platform (#1074 follow-up) by @scpia in #1127
- feat(workflow): DAG conditions and composable sub-workflows by @SaulMoro in #1129
- fix(usage): do not count paths as slash skills by @ydflow in #1136
- fix(session): Codex counts as installed before its first session; session pull leaves _index.json unchanged by @SaulMoro in #1141
- feat(hooks): config switch for the SessionStart MR hint by @Smilewithoutfalling in #1117
- perf: 30% faster e2e, 2x faster pull, 6x faster typecheck by @SaulMoro in #1134
- feat(session): safe session reads and copies for workflows, drivers, scorers, and benchmarks (#593 follow-up) by @SaulMoro in #1135
- fix(env): stop the shell env loader from recursing through a script git by @SaulMoro in #1147
- fix(session): keep the patch of a Codex apply_patch edit by @jayhemnani9910 in #1146
- test: make the source-freshness and gitlab real-spawn tests pass on macOS by @SaulMoro in #1144
- fix(workflow): detect changes inside untracked directories by @ydflow in #1149
- feat(import): accept several MR URLs in one --from-mr run by @qwist1233-cpu in #1122
- perf: prefer Set.has over array membership in perf-category cleanups (#836) by @potoior in #1073
- test(session): pass a session ref to CodexAdapter.readSession by @SaulMoro in #1152
- fix(import): reject HTTP errors in GitHub PR REST fallback by @ydflow in #1150
- fix(gitlab): preserve instance subpath when importing MRs by @ydflow in #1151
- fix(home): resolve ~ through getUserHome everywhere by @Jay0130-a in #1046
- test: keep git's repository variables out of the test environment by @SaulMoro in #1155
- fix(env): keep an array PROMPT_COMMAND entry whole when it holds a
;by @jeff-r2026 in #1158 - test(e2e): keep the Stop hook's update check off the registry in #993 uninstall tests by @SaulMoro in #1159
- fix(session): merge a diverged session index on pull and retry push once (#1133) by @SaulMoro in #1139
- feat(workflow): publish privacy-preserving run records to teamai-reports (#1083) by @kittimzhe in #1126
- fix(uninstall): keep a hook running across uninstall from recreating ~/.teamai by @SaulMoro in #1160
- fix(workflow): honor the usage report opt-out for run records and credit totals to their member by @SaulMoro in #1161
- feat(dashboard): distribution read, preview, and selection APIs (#1124) by @MertensMing in #1154
- fix(hooks): map Cursor skill-usage hook matcher to Read by @max950509 in #1157
- fix(init): push reviewer config via MR and time out hung init pushes by @damenjs in #1062
- feat(workflow): bounded loops, parallel for_each and list expressions by @SaulMoro in #1148
- fix(session): honor Cursor CLI's two recorded tool roots by @Smilewithoutfalling in #1165
- fix(push): publish only team-shared skill names in stats by @kittimzhe in #1056
- feat(workflow): report unread driver payload fields as ignored by @hongchuwudi in #1167
- fix(dashboard): attribute cwd-less Copilot events by dataHomeKey (#1121) by @kittimzhe in #1166
- fix(dashboard): find Muse session logs under $XDG_DATA_HOME (#1138 item 2) by @kittimzhe in #1168
- fix(session): keep Claude Code turns in order when the chain runs through system lines by @jayhemnani9910 in #1145
- feat(dashboard): Distribution page for role and project selections (#1028) by @kittimzhe in #1171
- fix(stats): keep workflow totals through an ordinary usage report by @SaulMoro in #1172
- fix(pid-monitor): query the Windows process table once per process (#1173) by @scpia in #1174
- refactor(session): replace MigrationEngine and isolate migrate command by @ousamabenyounes in #1195
- feat(import): expose --max-files and warn on truncated code collection by @hongchuwudi in #1196
- fix(import): reject interrupted GitHub PR responses by @ydflow in #1189
- fix(git): preserve clone URLs without appending .git by @Yong-yuan-X in #1188
- feat(dashboard): skills inventory, detail, and workspace exclusions on the Resources page (#1123) by @kittimzhe in #1143
- feat(workflow): record the agent each step pass ran as by @SaulMoro in #1184
- fix(cursor): deliver user-scope rules to workspaces outside the home directory (#1197) by @SaulMoro in #1198
- fix(home): expand native Windows home-relative paths by @ydflow in #1199
- feat(workflow): let a prompt step choose its model (#1177) by @SaulMoro in #1192
- feat(import): read the MR's review threads into the --from-mr extraction (#1187) by @scpia in #1190
- fix(session): read Codex reasoning from its summary and content by @jayhemnani9910 in #1203
- feat(workflow): record team revision by @ousamabenyounes in #1201
- fix(session): keep the text of a Codex tool output given as a list by @jayhemnani9910 in #1202
- feat(workflow): add HITL steps and manual run controls by @SaulMoro in #1205
- fix: clean 'not initialized' error from status, list and push by @laalaalaee in #1229
- feat(dashboard): add a Workflow Runs page with HITL answers (#1088) by @SaulMoro in #1225
- fix(local-agent): write agent hooks where each tool reads them by @SaulMoro in #1224
- fix(dsh): mount hooks from the default home patch by @SaulMoro in #1223
- fix(cursor): use direct recall for user-scope CLI sessions by @SaulMoro in #1222
- fix(git): keep the leading slash of an absolute scp-style repo path by @jayhemnani9910 in #1217
- fix(workflow): keep the team revision of unchanged workflow bytes by @SaulMoro in #1214
- fix(wiki): cite each call-chain step's own line in dependency paths by @hobostay in #1212
- fix(pkg): route npm package installs through pnpm in pnpm workspaces by @STiFLeR7 in #1211
- feat(pull): pin a workspace to a team ref with --team-ref by @SaulMoro in #1207
- perf: 27% faster CLI, 21-29% faster hooks, 14% faster pull by @SaulMoro in #1226
- perf(hooks): run post-tool-use side effects detached, emptying the inline pass (#1216) by @kittimzhe in #1232
- fix(session): keep user images when reading and writing Codex sessions by @jayhemnani9910 in #1230
- feat(local-agent): report machine_id in report and sync payloads by @ShubinZheng in #1235
- feat(workflow): add workspace branches by @jeff-r2026 in #1175
- fix(config): merge custom toolPaths tool by tool over defaults (#1185) by @legend91019 in #1204
- feat(tools): per-tool descriptor and skill-use tracking for every tool (#1221) by @SaulMoro in #1245
- fix(import): time out stalled GitLab MR requests by @ydflow in #1243
- fix(workflow): preserve UTF-8 across tool output chunks by @ydflow in #1242
- perf(search-index): read source files concurrently and write the index compact by @SaulMoro in #1240
- perf(e2e): run the fork-safe E2E suite in three parallel shards (-52% E2E wall time) by @SaulMoro in #1237
- fix(cli): report NotInitializedError without a stack trace by @jay23606 in #1228
- fix(hooks): give the Codex team-hook dispatcher a Windows command (#1209) by @kittimzhe in #1210
- fix(mcp): publish complete ownership migration before cleanup by @ydflow in #1241
- fix(git): sweep untracked leftovers in resetToCleanMaster by @hobostay in #1253
- fix(session): keep images returned by tools in Claude Code and Codex sessions by @jayhemnani9910 in #1254
- fix(recall): cap the confidence feedback ratio by @ydflow in #1256
- fix(session): only end a Codex tool round on items that start a message by @jayhemnani9910 in #1260
- test(hooks): isolate reconcile scope fixture by @huong8373tt-beep in #1264
- fix(hooks): make Codex hook commands portable shell-free argv (#1215) by @kittimzhe in #1231
- fix(workflow): preserve UTF-8 in command outputs by @ydflow in #1275
- fix(cli): report an async command error as one line, not a stack trace by @Smilewithoutfalling in #1271
- fix(init): preserve member registration failure reasons by @ydflow in #1272
- fix(recall): include pending local votes in index builds by @MertensMing in #1276
- feat(review): fail review --branch on an invalid workflow by @SaulMoro in #1266
- fix(shell): count the reads in a shell command list by @SaulMoro in #1262
- fix(reports): kill stalled side-branch git with createGitWithBlockTimeout by @SaulMoro in #1268
- fix(workflow): close the #1080 workspace gaps (#1246) by @SaulMoro in #1251
- feat(locate): resolve where every tool takes skills, with a Windows job (#1221) by @SaulMoro in #1252
- fix: decode exec and clone output once per stream so split UTF-8 survives by @arnavsingh0418 in #1281
- fix(dashboard): show readable session previews by @MertensMing in #1287
- fix(recall): preserve confirmed votes in narrow clones by @MertensMing in #1282
- fix(recall): use upvote time for confidence recency (#1278) by @dbdefault in #1285
- feat(doctor): surface toolPaths keys a team entry drops (#1115) by @kittimzhe in #1274
- fix(reports): retry pushes with existing report content by @huong8373tt-beep in #1291
- feat(push): support all namespaced resource types by @legend91019 in #1234
- fix(import): validate AI learning draft metadata by @ydflow in #1305
- fix(ai): invoke OpenClaw through its agent command by @nateEc in #1308
- fix(cli): explain unavailable working directories before migration by @nateEc in #1309
- fix(openclaw): launch hooks through the installed Node entry by @nateEc in #1307
- fix(exec): decode captureTail streams with StringDecoder for split UTF-8 by @hobostay in #1313
- fix(dashboard): style all dropdown menus by @MertensMing in #1296
- fix(skills): isolate files blocking tool skill directories by @nateEc in #1310
- refactor(session): centralize migration results and archive ownership by @nateEc in #1302
- fix(hooks): render Cursor Windows hooks for PowerShell by @max950509 in #1294
- fix(session): preserve Buddy drive letters in project directories by @nateEc in #1315
- fix(git-exclude): classify internal Claude instruction files by @nateEc in #1318
- fix(hermes): quote managed hook script paths by @nateEc in #1311
- fix(mcp): retain Muse ownership after inferred stdio saves by @nateEc in #1319
- fix(reports): await the late usage report in session-start pull by @scpia in #1323
- fix(hooks): use the HOME ZCode config in self scope by @nateEc in #1330
- fix(doctor): report OpenClaw bootstrap file truncation by @nateEc in #1332
- fix(session): serialize archive publication and roll back failed saves by @nateEc in #1334
- fix(import): paginate GitHub PR commits in REST fallback by @ydflow in #1292
- fix(dashboard): unwrap question replies for every Codex id by @SaulMoro in #1289
- fix(redact): keep redaction linear on long tokens by @SaulMoro in #1299
- test(reports): cover rejected session-start pushes by @ydflow in #1348
- fix(ai): preserve stdout errors and exit diagnostics by @nateEc in #1342
- perf(ci): cut the E2E critical path by 51% and the macOS unit leg by 15% by @SaulMoro in #1283
- build(deps-dev): bump handlebars from 4.7.9 to 4.7.10 by @dependabot[bot] in #1312
- feat(locate): rules, blocks, agents, and MCP go through locate (#1221) by @SaulMoro in #1265
- fix(mcp): preserve Muse-saved entries during reconciliation by @nateEc in #1345
- fix(session): match CodeBuddy long project directory names by @nateEc in #1347
- test(isolation): reject temporary directories inside Git checkouts by @nateEc in #1349
- fix(rules): preserve rule bodies after empty frontmatter by @Yong-yuan-X in #1350
- fix(codex): keep member hook groups at their keys and trust with the newest build (#1244, #1250) by @SaulMoro in #1263
- feat(workflow): publish and resume workflow runs across machines (#1084) by @SaulMoro in #1280
- fix(import): paginate GitLab MR commits by @ydflow in #1354
- fix(recall): write promoted skills in discoverable layout by @NianJiuZst in #1352
- feat(scorers): judge workflow steps with team scorers by @SaulMoro in #1297
- feat(score): score a finished agent session with a team scorer by @SaulMoro in #1298
- fix(hooks): keep the Copilot skip guard text fixed across bundler ren… by @arnavsingh0418 in #1357
- fix(score): count a skill read that may not have run only when its output shows it by @SaulMoro in #1358
- fix(session): print the resume command each CLI accepts by @jayhemnani9910 in #1359
- fix(github): launch gh via ghExec without shell interpolation by @hobostay in #1361
- fix(codex): find ChatGPT desktop CLI under codex-cli/bin by @ydflow in #1360
- feat(website): add standalone TeamAI site and use-case contribution entry by @MertensMing in #1206
- fix(init): retire side worktrees before replacing repo by @XY-code1 in #1327
- fix(hooks): launch OpenCode through the installed Node entry by @nateEc in #1336
- fix(hooks): keep ZCode replies free of login shell output by @nateEc in #1316
- fix(hooks): run POSIX DSH hooks without login profiles by @nateEc in #1317
- feat(push): support explicitly shared-root resources by @nateEc in #1329
- fix(doctor): detect oversized ZCode hook rule replies by @nateEc in #1343
- fix(push): guard stale self-mode skill directories by @nateEc in #1333
- fix(doctor): check the complete Hermes SOUL read budget by @nateEc in #1331
- fix(init): anchor workspace onboarding to repository roots by @nateEc in #1344
- perf(search): reuse unchanged index source entries by @nateEc in #1301
- feat(workflow): enforce scoped requirements and execution limits by @nateEc in #1303
- feat(workflow): add durable pull request delivery by @nateEc in #1306
- fix(import): reject invalid batch concurrency by @ydflow in #1363
- fix(pi): launch hooks through the installed Node entry by @nateEc in #1365
- fix(models): follow the recorded Muse configuration home by @nateEc in #1366
- fix(models): follow the recorded CodeBuddy configuration home by @nateEc in #1373
- fix(omp): launch extension callbacks through the installed CLI by @nateEc in #1372
- refactor(session): simplify archive write locking by @XY-code1 in #1375
- feat(score): score finished sessions in the background by @SaulMoro in #1364
- fix(import): time out stalled GitLab organization requests by @ydflow in #1376
- feat(roles): assign roles in manifest/members.yaml instead of per member (#1186) by @scpia in #1191
- fix(workflow): serialize session archive publication by @XY-code1 in #1382
- fix(recall): judge native Stop replies from session recall evidence by @nateEc in #1374
- fix(scoring): mask shadowed environment secrets via knownSecrets by @aryansinha1908 in #1380
- fix(import): time out stalled GitHub organization requests (#1377) by @peremunoz in #1381
- feat(workflow): add session discovery and managed public leases by @nateEc in #1304
- feat(ci): support GitLab in ci extract-mr comments and rejection marks by @Walternater in #1321
- fix(pi): deliver user context to active override files by @nateEc in #1340
- fix(hooks): recover dispatch from a removed working directory by @nateEc in #1337
- fix(test): retry the session-pull temp cleanup that races git's gc by @Smilewithoutfalling in #1408
- fix(mcp): keep Muse ownership across JSON key reordering by @nateEc in #1346
- fix(doctor): accept live hook launchers from another CLI installation by @nateEc in #1409
- fix(ci): preserve the instance scheme, paginate the MR lookup, address the project by path by @Walternater in #1411
- refactor(report): drop the unreachable clone-reset path in reportUsageToTeam (#1259) by @gtref in #1293
- test: turn git background upkeep off in the isolated homes (#1413) by @kittimzhe in #1415
- fix(ci): read changes through the default branch and accept skin-tone rejections by @Walternater in #1421
- fix(ci): find recently updated GitLab marker comments first by @ydflow in #1420
- fix(doctor): report blocked skill directories and preserve them on uninstall by @nateEc in #1335
New Contributors
- @yudongyouqing made their first contribution in #996
- @wsjwu58-cmd made their first contribution in #1033
- @Frank-zhu2000 made their first contribution in #1042
- @momothemage made their first contribution in #1052
- @kittimzhe made their first contribution in #1054
- @jayhemnani9910 made their first contribution in #1109
- @WLH55 made their first contribution in #1113
- @lurkacai0831 made their first contribution in #593
- @pcm1991 made their first contribution in #1096
- @scpia made their first contribution in #1127
- @qwist1233-cpu made their first contribution in #1122
- @potoior made their first contribution in #1073
- @MertensMing made their first contribution in #1154
- @max950509 made their first contribution in #1157
- @hongchuwudi made their first contribution in #1167
- @laalaalaee made their first contribution in #1229
- @ShubinZheng made their first contribution in #1235
- @legend91019 made their first contribution in #1204
- @jay23606 made their first contribution in #1228
- @huong8373tt-beep made their first contribution in #1264
- @arnavsingh0418 made their first contribution in #1281
- @dbdefault made their first contribution in #1285
- @dependabot[bot] made their first contribution in #1312
- @XY-code1 made their first contribution in #1327
- @aryansinha1908 made their first contribution in #1380
- @peremunoz made their first contribution in #1381
- @gtref made their first contribution in #1293
Full Changelog: v0.27.0...v0.28.0