Skip to content

v0.28.0

Choose a tag to compare

@github-actions github-actions released this 26 Oct 12:46
· 124 commits to main since this release

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

Full Changelog: v0.27.0...v0.28.0