Skip to content

v0.29.0

Latest

Choose a tag to compare

@github-actions github-actions released this 04 Nov 05:01
· 56 commits to main since this release

What's Changed

  • feat(tool-launch): one launcher for every AI call, from the tool descriptor (#1389) by @hz89Dev in #1444
  • fix(init): refuse --scope user in single-repo mode by @bfs2021 in #1455
  • fix(import): same-basename --dir checkouts no longer share one evidence slug (#1422) by @kittimzhe in #1448
  • fix(status): surface unconfirmed automatic reports by @ydflow in #1462
  • feat(score): lease a session, or a skill run, to the driver's own judge (#1386) by @hz89Dev in #1470
  • fix(update,pull): let one scope decide auto-update and auto-compact, the user scope when there is one by @hz89Dev in #1475
  • feat(dashboard): show scorer pass rates, what drives them, and whether a team change helped (#1182) by @hz89Dev in #1466
  • fix(init): keep the member's own settings on init --force by @hz89Dev in #1476
  • feat(reporting): record what sessions and workflow steps delivered, and count it per run mode by @hz89Dev in #1471
  • feat(workflow): sessions in hosts teamai cannot detect name their tool with --tools (#1479) by @hz89Dev in #1480
  • feat(session): publish and score sessions per run mode, and drain them before an unattended job ends by @hz89Dev in #1478
  • feat(config): overlay member settings across workspace scopes by @huong8373tt-beep in #1473
  • fix(recall): honour TEAMAI_RECALL_DISABLED in pull and recall status by @ColumbusLabs in #1464
  • test: wait for teamai's detached children before a teardown gives up on ENOTEMPTY (#1413) by @hz89Dev in #1467
  • fix(config): treat sessions as a member setting so a workspace sees the machine value by @hz89Dev in #1483
  • feat(reporting): count what unattended sessions delivered at the drain that ends their job by @hz89Dev in #1485
  • fix(init): stop user-scope init from trusting Codex hooks when the machine file turns trust off by @hz89Dev in #1487
  • fix(locate): every command finds a tool where pull wrote it, also when its home moved (#1221) by @hz89Dev in #1486
  • fix(gitlab): include reviewer lookups in MR creation deadline by @ydflow in #1488
  • fix(workflow): a session with no tool is asked for it, and a resume's --tools replaces the run's by @hz89Dev in #1481
  • fix(session): keep a tool call's arguments masked when masking leaves no JSON to parse by @hz89Dev in #1482
  • feat(config): show member setting provenance by @huong8373tt-beep in #1474
  • feat(score): label sessions by hand and see how often the judge agrees with members by @hz89Dev in #1489
  • test(doctor): use native temp paths in Copilot fixtures by @huong8373tt-beep in #1491
  • feat(config): AI calls, stop pricing, workflow policy and doctor follow every member setting level (#1459) by @hz89Dev in #1477
  • feat(worktree): one side-branch checkout per self-mode repo (#1443) by @Walternater in #1465
  • fix(update): skip self-update for a Volta-managed install by @max950509 in #1493
  • fix(hooks): make CodeBuddy IDE project gates work on Windows by @huong8373tt-beep in #1494
  • feat(workflow): a CI runner takes the runs members hand it, with resume --next (#1390) by @hz89Dev in #1490
  • fix(session): mask env secrets with quotes or backslashes in scrubbed tool arguments by @jayhemnani9910 in #1506
  • ci(lint): enable oxlint suspicious and perf categories by @STiFLeR7 in #1414
  • fix(workflow): resume --next leaves the runs it cannot finish here, and says what they need by @hz89Dev in #1508
  • feat(hooks): run project team hooks on OpenCode and OMP (#1492) by @Walternater in #1497
  • fix(init): refuse to initialize single-repo team URL as standalone team repo (#1500) by @hobostay in #1509
  • fix(pull): exit 1 when the team repo fetch fails in a pull a person ran by @pcbeingused333 in #1512
  • fix(init): keep the settings that validate when --force replaces an invalid config by @pcbeingused333 in #1510
  • fix(mcp): clarify parse failures in delivery reports by @huong8373tt-beep in #1507
  • fix(import): apply --incremental to a subdirectory and stop warning about another checkout's legacy name by @kittimzhe in #1511
  • fix(workflow): offer teamai env set only for keys the team declares by @bfs2021 in #1514
  • feat(instructions): deliver culture blocks to Qoder, Kiro and Trae by @huong8373tt-beep in #1499
  • test(workflow): give the eight flaky workflow cases a budget that fits their real work (#1504) by @Walternater in #1522
  • fix(codex-hooks): preserve split UTF-8 output by @huong8373tt-beep in #1525
  • feat(workflow): default workflows a team can override, starting with session-close (#1388) by @hz89Dev in #1520
  • test(workflow): expose failed parallel workspace steps (#1526) by @huong8373tt-beep in #1529
  • test(ci): forget a pid the runner cannot signal, and run the CodeBuddy gate on Windows (#1504) by @Walternater in #1521
  • fix(init): preserve unrelated staged changes by @Yong-yuan-X in #1528
  • test(workflow): keep skill harness runners parked while locks wait (#1523) by @huong8373tt-beep in #1527
  • feat(workflow): say why a local run failed, and how to retry it by @hz89Dev in #1532
  • fix(workflow): stop parallel workspace steps dying on a worktree entry git is still writing (#1526) by @hz89Dev in #1536
  • feat(hooks): every tool with a hooks tick runs the team's hooks by @SaulMoro in #1515
  • fix(workflow): give undeclared keys the env add advice in stepEnvironment too by @bfs2021 in #1531
  • fix(hooks): make Claude duplicate guards work in PowerShell (#1498) by @huong8373tt-beep in #1540
  • fix(recall): rank an explicit docs match above a saturated codebase hit by @Walternater in #1524
  • fix(workflow): a stop of an attempt reaches the setup's process group by @Walternater in #1542
  • fix(import): fail when the push to the team repo fails instead of reporting a publish by @pcbeingused333 in #1541
  • fix(import, init): exit 1 when deep enrich does not finish or init --http would replace another local agent by @hz89Dev in #1534
  • fix(pull): remove the old team's skills after a team switch, and keep a team's Codex skills in one directory by @hz89Dev in #1533
  • fix(import): serialise the shared source-manifest publish by @bfs2021 in #1550
  • fix(hooks): record what a CodeBuddy session does, and what it loads by @Walternater in #1547
  • feat(scoring, dashboard): let ~/.teamai/config.yaml limit session judging on a machine, and show which level set each member setting (#1459) by @hz89Dev in #1535
  • fix(codebase): publish the --reconcile graph in a team repo by @hz89Dev in #1551
  • fix(pull): support Windows long paths in team repo refresh by @ydflow in #1518
  • rank(recall): prefer the codebase page the query names, and keep the top 3 source-diverse by @Walternater in #1549
  • feat(local-agent): enroll workspaces individually and give each agent its own access credential by @JasonRUAN in #1495
  • feat(agy): support Antigravity in everything teamai delivers and reads by @hz89Dev in #1548
  • fix: publish teamwiki after codebase --deep-enrich in team repo by @Hstealth in #1560
  • fix(mcp): preserve invalid Codex TOML configs by @ydflow in #1554
  • fix(push): preserve delivered skill origins across CRLF by @huong8373tt-beep in #1556
  • fix(doctor): verify that tools read delivered agent directories by @hobostay in #1558
  • ci(lint): enable boolean literal comparison rule by @huong8373tt-beep in #1567
  • fix(deps): upgrade Git and TOML dependencies by @HengYangDS in #1450
  • fix(mcp): find a Codex server whose header has a comment, spaces or a quoted name by @jayhemnani9910 in #1574
  • feat(workflow): offer teamai-share-learnings only when share can run, and name workflows by their alias by @hz89Dev in #1568
  • fix(pull): remove the recall agent and rule when recall resolves to off by @pcbeingused333 in #1530
  • feat(session): read Qoder and Qoder CN sessions by @huong8373tt-beep in #1571
  • feat(deep-enrich): align graph documents with wiki method by @huong8373tt-beep in #1569
  • rank(search): ignore question words and normalize the title field by @Walternater in #1555
  • Update Zod, Vitest and esbuild to patched versions by @HengYangDS in #1575
  • feat(joycode): support lifecycle hooks and sessions by @Iapa in #1572
  • fix(session): name archive repo directories with ~XX so GitHub and GitLab can open them by @hz89Dev in #1576
  • fix(pull): give every machine the same copy of a same-name skill, and take deleted copies off the record by @hz89Dev in #1584
  • fix(mcp): preserve Codex instructions when removing servers by @ydflow in #1587
  • fix(codex): make Windows hook commands PowerShell-safe by @huong8373tt-beep in #1585
  • docs: document OpenCode config home overrides by @huong8373tt-beep in #1592
  • docs(setup): list internal Claude instruction files by @huong8373tt-beep in #1588
  • fix(mcp): keep a member comment that follows a Codex block by @bfs2021 in #1598
  • fix(local-agent): use English binding skip confirmation by @huong8373tt-beep in #1599
  • docs(pi): document relocated agent directory support by @huong8373tt-beep in #1594
  • fix(codex): accept BOM-prefixed configuration by @huong8373tt-beep in #1600
  • docs: clarify OpenCode home precedence by @huong8373tt-beep in #1603
  • docs(lint): mark merged type-aware rules as landed by @huong8373tt-beep in #1593
  • ci(lint): move learnings path guard out of Vitest by @huong8373tt-beep in #1601
  • ci(lint): guard direct HOME reads by @huong8373tt-beep in #1604
  • fix(session): keep published session paths machine-independent by @huong8373tt-beep in #1591
  • feat(scorers): show the session judge the team skills it had and used by @SaulMoro in #1606
  • ci(lint): enable non-mutating array reversal checks by @huong8373tt-beep in #1614
  • ci(lint): enable prefer-includes by @huong8373tt-beep in #1617
  • fix(joycode): follow configured home by @huong8373tt-beep in #1622
  • docs: refresh Pi instruction guidance by @huong8373tt-beep in #1623
  • fix(mcp): preserve indented Codex TOML tables by @ydflow in #1626
  • ci(lint): document prefer-array-some policy by @huong8373tt-beep in #1624
  • fix(workflow): publish a session on the pick the person made at the start by @SaulMoro in #1580
  • ci(lint): move static checks into lint, cut rule-harness time 75% by @hz89Dev in #1630
  • docs: clarify moved tool home paths by @huong8373tt-beep in #1632
  • fix(lint): guard dotted launch environment reads by @huong8373tt-beep in #1634
  • fix(lint): guard provider merge member calls by @huong8373tt-beep in #1635
  • fix(doctor): describe Pi and OMP default-home overlap by @huong8373tt-beep in #1638
  • feat(recall): record query text in the session recall-quality cache by @Walternater in #1628
  • feat(workflow): let a template keep {{ as written with {{ by @SaulMoro in #1640
  • ci(lint): enable remaining array and trim anti-slop checks by @huong8373tt-beep in #1639
  • feat(recall): declared asset relations on recall hits, checked by review --branch (#1552 first slice) by @Walternater in #1629
  • fix(pricing): price Claude Haiku 5.5, Opus 5.5 and Sonnet 5.5 at their own rates by @pcbeingused333 in #1643
  • fix(uninstall): clean replaced tool homes after re-init by @huong8373tt-beep in #1641
  • fix(joycode): maintain agent index by @huong8373tt-beep in #1642
  • docs(pi): clarify relocated legacy rule path by @huong8373tt-beep in #1646
  • feat(session): publish sessions without local paths, and record what they ran as by @hz89Dev in #1644
  • fix(uninstall): clean replaced OpenCode homes by @huong8373tt-beep in #1645
  • feat(dashboard): show what every AI tool's requests cost, priced from a bundled LiteLLM snapshot by @hz89Dev in #1647
  • ci(lint): reject duplicate webhook switch cases by @huong8373tt-beep in #1648
  • feat(dashboard): match the website look and add a team Improvement Center by @hsuchifeng in #1631
  • fix(mcp): preserve unindented examples in Codex TOML by @ydflow in #1651
  • feat(sessions): read Pi and Oh My Pi transcripts by @XY-code1 in #1586
  • fix(sessions): respect project cwd in readiness checks by @XY-code1 in #1652
  • fix(codebase): keep wiki lint output in English by @XY-code1 in #1653
  • fix(codebase): keep wiki upgrade output in English by @XY-code1 in #1654
  • fix(mcp): quote literal Codex environment keys by @ydflow in #1655
  • fix(iwiki): keep dual-import diagnostics in English by @XY-code1 in #1656
  • fix(clone): keep verbose authentication logs in English by @XY-code1 in #1657
  • feat(scorers): ask a routing question per team skill of a judged session by @kittimzhe in #1650
  • feat(relations): derived rule-path edges and reconcile candidates (#1563) by @Walternater in #1636
  • feat(doctor): fail until each tool trusts the project or approves its team MCP servers by @hz89Dev in #1660
  • feat(lint,viz,stats): see asset relations — lint counts, health view, opens via relation (#1562, stacked) by @Walternater in #1637
  • feat(doctor): catch OpenClaw plugins switched off, and warn while a tool has not asked yet by @hz89Dev in #1663
  • feat(dashboard): group Distribution under Execution in the sidebar by @hsuchifeng in #1662
  • feat(workflow): keep a session's finished work as a benchmark task (after #1379) by @hz89Dev in #1658
  • feat(scorers): label delivered pull requests from their check, CI or protected paths before any judge runs by @hz89Dev in #1665
  • ci(lint): enable the anti-slop lint rules, and fix the 23 bugs they found by @hz89Dev in #1664
  • fix(reports): stop retrying a push five times when origin is unreachable by @hz89Dev in #1667
  • fix(session): mask key=value secrets inside tool argument strings by @connabyss in #1669
  • fix(scoring): mask secrets inside tool arguments in the transcript a judge reads by @connabyss in #1671
  • feat(workflow): run a step as a team role, and link every result to the harness that produced it by @hz89Dev in #1668
  • fix(workflow): three role fixes from #1668's review: command-first clones, named workflows, members.yaml by @hz89Dev in #1672
  • feat(self-improvement): turn a scorer's repeated failures into one pull request, proven on every tool the team uses by @hz89Dev in #1666
  • perf(workflow): read queued run records from origin in one git process, not two per run by @hz89Dev in #1673
  • test: stop tests sourcing the developer's env loader through BASH_ENV by @hz89Dev in #1674
  • fix(gitlab): time out stalled identity requests by @ydflow in #1675
  • ci(pricing): refresh the model price catalog weekly through a pull request by @hz89Dev in #1649
  • feat(sessions): read Muse Code transcripts by @XY-code1 in #1680
  • test(sessions): cover reading Qoder and Qoder CN transcripts (#1418) by @Walternater in #1679
  • fix(update): bypass cached checks for explicit updates by @YogeLiu in #1678
  • fix(sync): 为会话启动刷新增加冷却和并发复用 by @YogeLiu in #1683
  • fix(workflow): tell a prompt step its output schema under every driver by @hz89Dev in #1690
  • fix(workflow): resume a run as printed, with the flags it was started with by @hz89Dev in #1693
  • feat(agents): let the team repo replace the built-in teamai-recall agent by @hz89Dev in #1691
  • fix(workflow): keep the commits loops and for_each items leave for the steps that start from them by @hz89Dev in #1692
  • fix(workflow): hold a workflow output's schema to the keys a bundle takes by @hz89Dev in #1696
  • test: cut CI time by running macOS once, splitting long files, and moving E2E repeats in process by @hz89Dev in #1694
  • Per-asset effect tables for tasks that cover a team asset (#1605) by @kittimzhe in #1684
  • perf(workflow): cut a handoff's origin round trips by 46% by reusing the reports fetch by @hz89Dev in #1697
  • fix(lock): stop handing one lock to two processes when its owner exits mid-check by @hz89Dev in #1699
  • perf(ci): stop Build waiting on the macOS unit shards by @hz89Dev in #1698
  • fix(lock): stop two processes sharing a lock after a reclaimer dies holding the sentinel by @hz89Dev in #1701
  • fix(update): persist self-update failures to debug.log by @Smilewithoutfalling in #1702
  • fix(update): exit non-zero when a manual update fails to install by @Smilewithoutfalling in #1703

New Contributors

Full Changelog: v0.28.1...v0.29.0