Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1775 commits
Select commit Hold shift + click to select a range
4df79ba
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Jan 12, 2026
4c2d1f0
feat: display edit_file errors in UI after consecutive failures (#10581)
daniel-lxs Jan 12, 2026
d2d17fa
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Jan 12, 2026
ee5e2aa
feat(chat): enhance reasoning block with animated thinking indicator …
mini2s Jan 12, 2026
55b7324
perf: optimize message block cloning in presentAssistantMessage (#10616)
ArchimedesCrypto Jan 12, 2026
c046496
feat(chat): add random loading messages with localization
mini2s Jan 12, 2026
0d1ebcb
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Jan 12, 2026
f439496
fix: correct Gemini 3 thought signature injection format via OpenRout…
daniel-lxs Jan 12, 2026
a682908
fix: encode hyphens in MCP tool names before sanitization (#10644)
pdecat Jan 12, 2026
621d950
fix: sanitize tool_use IDs to match API validation pattern (#10649)
daniel-lxs Jan 12, 2026
b514996
fix(path): return empty string from getReadablePath when path is empt…
daniel-lxs Jan 12, 2026
ae6a6d0
Merge branch 'main' of github.com:zgsm-ai/costrict into roo-to-main
mini2s Jan 13, 2026
a12163d
ux: Standard stop button πŸŸ₯ (#10639)
brunobergher Jan 13, 2026
2d4dba0
fix: omit parallel_tool_calls when not explicitly enabled (COM-406) (…
daniel-lxs Jan 13, 2026
78821a3
fix: use placeholder for empty tool result content to fix Gemini API …
daniel-lxs Jan 13, 2026
8c723c0
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Jan 13, 2026
749026a
ux: Further improve error display (#10692)
brunobergher Jan 13, 2026
a3d4d86
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Jan 13, 2026
7c8dfcb
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Jan 13, 2026
8303710
ux: improve stop button visibility and streamline error handling (#10…
brunobergher Jan 13, 2026
784c0c7
Merge branch 'main' of github.com:zgsm-ai/costrict into roo-to-main
mini2s Jan 13, 2026
440924a
fix: clear approval buttons when API request starts (ROO-526) (#10702)
daniel-lxs Jan 13, 2026
fdc6104
chore: add changeset for v3.40.0 (#10705)
mrubens Jan 13, 2026
d74bad9
Changeset version bump (#10706)
github-actions[bot] Jan 13, 2026
0197329
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Jan 14, 2026
9b1c850
feat(gemini): add allowedFunctionNames support to prevent mode switch…
hannesrudolph Jan 14, 2026
8fdd96b
Release v3.40.1 (#10713)
mrubens Jan 14, 2026
d689de3
Changeset version bump (#10714)
github-actions[bot] Jan 14, 2026
4b17f98
Release: v1.105.0 (#10722)
mrubens Jan 14, 2026
ed98e72
Merge branch 'main' of github.com:zgsm-ai/costrict into roo-to-main
mini2s Jan 14, 2026
c1e2c26
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Jan 14, 2026
b04597f
feat(providers): add gpt-5.2-codex model to openai-native provider (#…
hannesrudolph Jan 14, 2026
dbf206f
feat(e2e): Enable E2E tests - 39 passing tests (#10720)
ArchimedesCrypto Jan 14, 2026
2979693
Merge branch 'main' of github.com:zgsm-ai/costrict into roo-to-main
mini2s Jan 15, 2026
739b91e
Clear terminal output buffers to prevent memory leaks (#7666)
hannesrudolph Jan 15, 2026
4ebbca0
feat: add OpenAI Codex provider with OAuth subscription authenticatio…
hannesrudolph Jan 15, 2026
d7b7e17
fix(litellm): inject dummy thought signatures on ALL tool calls for G…
daniel-lxs Jan 15, 2026
dba76f5
fix(e2e): add alwaysAllow config for MCP time server tools (#10733)
ArchimedesCrypto Jan 15, 2026
afc588b
Release v3.41.0 (#10746)
mrubens Jan 15, 2026
5183be2
Changeset version bump (#10747)
github-actions[bot] Jan 15, 2026
72b1aed
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Jan 15, 2026
724571c
feat: clarify Slack and Linear are Cloud Team only features (#10748)
roomote-v0[bot] Jan 15, 2026
4ee494b
Release: v1.106.0 (#10749)
mrubens Jan 15, 2026
cb8f0a2
Merge branch 'main' of github.com:zgsm-ai/costrict into roo-to-main
mini2s Jan 15, 2026
adac2f3
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Jan 15, 2026
5b182fe
Merge branch 'main' of github.com:zgsm-ai/costrict into roo-to-main
mini2s Jan 15, 2026
6b02321
refactor(chat): replace current task display with last user feedback
mini2s Jan 15, 2026
b135ed2
style(chat): adjust feedback text width calculation
mini2s Jan 15, 2026
f2b16d4
fix: handle missing tool identity in OpenAI Native streams (#10719)
hannesrudolph Jan 15, 2026
f48ea38
Feat/issue 5376 aggregate subtask costs (#10757)
taltas Jan 15, 2026
c1a027a
Merge branch 'main' of github.com:zgsm-ai/costrict into roo-to-main
mini2s Jan 16, 2026
fa1d151
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Jan 16, 2026
f2374eb
feat(chat): add streaming state to task header interaction
mini2s Jan 16, 2026
245e0f6
feat: add settings tab titles to search index (#10761)
roomote-v0[bot] Jan 16, 2026
bbf3196
fix: filter Ollama models without native tool support (#10735)
daniel-lxs Jan 16, 2026
3a884ee
fix: filter out empty text blocks from user messages for Gemini compa…
daniel-lxs Jan 16, 2026
df42655
fix: flatten top-level anyOf/oneOf/allOf in MCP tool schemas (#10726)
daniel-lxs Jan 16, 2026
bbb6a6e
fix: prevent duplicate tool_use IDs causing API 400 errors (#10760)
daniel-lxs Jan 16, 2026
e34d93e
fix: truncate call_id to 64 chars for OpenAI Responses API (#10763)
daniel-lxs Jan 16, 2026
1271236
Merge branch 'main' of github.com:zgsm-ai/costrict into roo-to-main
mini2s Jan 16, 2026
019400c
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Jan 16, 2026
ddac338
fix: Gemini thought signature validation errors (#10694)
daniel-lxs Jan 16, 2026
7e3fcd7
Release v3.41.1 (#10767)
mrubens Jan 16, 2026
8b9f02a
Changeset version bump (#10768)
github-actions[bot] Jan 16, 2026
1d12116
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Jan 16, 2026
9bf7173
feat: add button to open markdown in VSCode preview (#10773)
brunobergher Jan 16, 2026
9533f0b
fix(openai-codex): reset invalid model selection (#10777)
hannesrudolph Jan 16, 2026
c40c882
fix: add openai-codex to providers that don't require API key (#10786)
roomote-v0[bot] Jan 16, 2026
95be704
fix(litellm): detect Gemini models with space-separated names for tho…
daniel-lxs Jan 16, 2026
cad0320
Release v3.41.2 (#10788)
mrubens Jan 16, 2026
c1f7099
Changeset version bump (#10790)
github-actions[bot] Jan 16, 2026
f58b908
Roo Code Router fixes for the cli (#10789)
cte Jan 17, 2026
87a5afa
Revert "feat(e2e): Enable E2E tests - 39 passing tests" (#10794)
cte Jan 17, 2026
8fa2c1d
Claude-like cli flags, auth fixes (#10797)
cte Jan 17, 2026
f6c77c1
Release cli v0.0.47 (#10798)
cte Jan 17, 2026
98d35f7
Use a redirect instead of a fetch for cli auth (#10799)
cte Jan 17, 2026
1608369
Merge branch 'main' of github.com:zgsm-ai/costrict into roo-to-main
mini2s Jan 17, 2026
6608ed6
chore(cli): prepare release v0.0.48 (#10800)
cte Jan 17, 2026
2eb579c
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Jan 17, 2026
802b40a
Fix thinking block word-breaking to prevent horizontal scroll (#10806)
roomote-v0[bot] Jan 17, 2026
b1c1ce9
Merge branch 'main' of github.com:zgsm-ai/costrict into roo-to-main
mini2s Jan 18, 2026
e25103e
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Jan 18, 2026
695ba46
chore: add changeset for v3.41.3 (#10822)
mrubens Jan 18, 2026
1e104e1
Removal of glm4 6 (#10815)
sebastiand-cerebras Jan 18, 2026
719e6cb
Changeset version bump (#10823)
github-actions[bot] Jan 18, 2026
a148862
feat: warn users when too many MCP tools are enabled (#10772)
roomote-v0[bot] Jan 18, 2026
8770445
Merge branch 'main' of github.com:zgsm-ai/costrict into roo-to-main
mini2s Jan 18, 2026
65ed357
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Jan 18, 2026
6cc2a4c
Support different cli output formats: text, json, streaming json (#10…
cte Jan 18, 2026
fdf32bd
chore(cli): prepare release v0.0.49 (#10825)
cte Jan 18, 2026
4093bff
fix(cli): set integrationTest to true in ExtensionHost constructor (#…
cte Jan 18, 2026
ea62173
fix(cli): fix quiet mode tests by capturing console before host creat…
cte Jan 18, 2026
04131d4
Merge branch 'main' of github.com:zgsm-ai/costrict into roo-to-main
mini2s Jan 19, 2026
26fb339
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Jan 19, 2026
0f08867
refactor: unify user content tags to <user_message> (#10723)
roomote-v0[bot] Jan 19, 2026
72a0ca6
Merge branch 'main' of github.com:zgsm-ai/costrict into roo-to-main
mini2s Jan 19, 2026
7fbcb1b
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Jan 19, 2026
005ddd9
Merge branch 'main' of github.com:zgsm-ai/costrict into roo-to-main
mini2s Jan 19, 2026
1a1827d
feat(openai-codex): add ChatGPT subscription usage limits dashboard (…
hannesrudolph Jan 19, 2026
e3b8234
Merge branch 'main' of github.com:zgsm-ai/costrict into roo-to-main
mini2s Jan 19, 2026
12bf418
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Jan 19, 2026
0603940
perf(webview): avoid resending taskHistory in state updates (#10842)
hannesrudolph Jan 20, 2026
9b26e7b
Merge branch 'main' of github.com:zgsm-ai/costrict into roo-to-main
mini2s Jan 20, 2026
9c9fe9f
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Jan 20, 2026
ead1658
Fix broken link on pricing page (#10847)
roomote-v0[bot] Jan 20, 2026
04256be
Git worktree management (#10458)
cte Jan 20, 2026
c7ce8aa
feat: enable prompt caching for Cerebras zai-glm-4.7 model (#10670)
roomote-v0[bot] Jan 20, 2026
a060915
feat: add Kimi K2 thinking model to VertexAI provider (#9269)
roomote-v0[bot] Jan 20, 2026
e356d05
feat: standardize model selectors across all providers (#10294)
hannesrudolph Jan 20, 2026
8de9337
chore: remove XML tool calling support (#10841)
hannesrudolph Jan 21, 2026
b7d64b1
Fix broken link on pricing page (#10847)
roomote-v0[bot] Jan 20, 2026
9ab279a
Pr 10853 (#10854)
mp-roocode Jan 21, 2026
bd2af32
Git worktree management (#10458)
cte Jan 20, 2026
616a5c7
feat: enable prompt caching for Cerebras zai-glm-4.7 model (#10670)
roomote-v0[bot] Jan 20, 2026
d09679d
feat: add Kimi K2 thinking model to VertexAI provider (#9269)
roomote-v0[bot] Jan 20, 2026
8f6151d
feat: standardize model selectors across all providers (#10294)
mini2s Jan 21, 2026
08f1c91
Merge branch 'main' of github.com:zgsm-ai/costrict into roo-to-main
mini2s Jan 21, 2026
63a004d
Merge branch 'main' of github.com:zgsm-ai/costrict into roo-to-main
mini2s Jan 21, 2026
1a2d87a
Merge branch 'main' of github.com:zgsm-ai/costrict into roo-to-main
mini2s Jan 21, 2026
fa92ec4
fix: resolve race condition in context condensing prompt input (#10876)
hannesrudolph Jan 21, 2026
bef796d
Copy: update /slack page messaging (#10869)
mp-roocode Jan 21, 2026
5bd26eb
fix: Handle mode selector empty state on workspace switch (#9674)
roomote-v0[bot] Jan 22, 2026
ad520a8
Merge branch 'main' of github.com:zgsm-ai/costrict into roo-to-main
mini2s Jan 22, 2026
ded38c0
Roo to main remove xml (#936)
mini2s Jan 22, 2026
7f854c0
feat: remove Claude Code provider (#10883)
daniel-lxs Jan 22, 2026
3f332d8
refactor: migrate context condensing prompt to customSupportPrompts a…
hannesrudolph Jan 22, 2026
5e0bb5a
refactor: unify export path logic and default to Downloads (#10882)
hannesrudolph Jan 22, 2026
2305888
Fix marketing site preview logic (#10886)
mrubens Jan 22, 2026
d87abe8
feat(web): redesign Slack page Featured Workflow section with YouTube…
mp-roocode Jan 22, 2026
971885d
feat: add size-based progress tracking for worktree file copying (#10…
daniel-lxs Jan 22, 2026
21bd760
feat: add HubSpot tracking with consent-based loading (#10885)
roomote-v0[bot] Jan 22, 2026
1feefb6
fix(openai): prevent double emission of text/reasoning in native and …
hannesrudolph Jan 22, 2026
73b1b38
Fix padding on Roo Code Cloud upsell (#10889)
roomote-v0[bot] Jan 22, 2026
94459ad
Open the worktreeinclude file after creating it (#10891)
mrubens Jan 22, 2026
13e090e
fix: prevent task abortion when resuming via IPC/bridge (#10892)
cte Jan 22, 2026
e028304
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Jan 22, 2026
2f9656c
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Jan 22, 2026
5c1c16c
fix: rename bot to 'Roomote' and fix spacing in Slack demo (#10898)
mp-roocode Jan 22, 2026
f6006c9
Fix: Enforce file restrictions for all editing tools (#10896)
roomote-v0[bot] Jan 22, 2026
be0e8c2
chore: clean up XML legacy code and native-only comments (#10900)
hannesrudolph Jan 22, 2026
f98dc13
feat: hide worktree feature from menus (#10899)
daniel-lxs Jan 22, 2026
9d65772
fix(condense): remove custom condensing model option (#10901)
hannesrudolph Jan 23, 2026
51d2fd0
Merge branch 'main' of github.com:zgsm-ai/costrict into roo-to-main
mini2s Jan 23, 2026
3eabdd8
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Jan 23, 2026
3ff7f63
test(prompts): update snapshots to fix indentation
mini2s Jan 23, 2026
3ab1d08
Fix EXT-553: Remove percentage-based progress tracking for worktree f…
daniel-lxs Jan 23, 2026
6eb3d5d
chore(prompts): clarify linked SKILL.md file handling (#10907)
hannesrudolph Jan 23, 2026
9eaf6de
Merge branch 'main' of github.com:zgsm-ai/costrict into roo-to-main
mini2s Jan 23, 2026
c3664cc
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Jan 23, 2026
f38bac9
Release v3.42.0 (#10910)
mrubens Jan 23, 2026
f7bf7a4
Changeset version bump (#10911)
github-actions[bot] Jan 23, 2026
1f7be76
feat: Move condense prompt editor to Context Management tab (#10909)
hannesrudolph Jan 23, 2026
a65d487
Merge branch 'main' of github.com:zgsm-ai/costrict into roo-to-main
mini2s Jan 23, 2026
204ac21
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Jan 23, 2026
6e00997
feat: Update Z.AI models with new variants and pricing (#10860)
ErdemGKSL Jan 23, 2026
d320cca
Merge branch 'main' of github.com:zgsm-ai/costrict into roo-to-main
mini2s Jan 23, 2026
3d8bf93
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Jan 23, 2026
763734a
fix: correct Gemini 3 pricing for Flash and Pro models (#10487)
roomote-v0[bot] Jan 23, 2026
d1e74cb
feat: add pnpm install:vsix:nightly command (#10912)
hannesrudolph Jan 23, 2026
cf5d42e
Intelligent Context Condensation v2 (#10873)
hannesrudolph Jan 23, 2026
419990c
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Jan 23, 2026
b1a0f2e
feat(gemini): add tool call support for Gemini CLI
mini2s Jan 23, 2026
0ff826d
feat(condense): improve condensation with environment details, accura…
hannesrudolph Jan 23, 2026
b8d320f
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Jan 23, 2026
1daac83
docs: fix CLI README to use correct command syntax (#10923)
roomote-v0[bot] Jan 23, 2026
85f42dc
chore: remove diffEnabled and fuzzyMatchThreshold settings (#10298)
hannesrudolph Jan 23, 2026
2d2ed15
Remove Merge button from worktrees (#10924)
daniel-lxs Jan 23, 2026
f7434de
chore: remove POWER_STEERING experimental feature (#10926)
hannesrudolph Jan 23, 2026
526488e
chore: remove MULTI_FILE_APPLY_DIFF experiment (#10925)
hannesrudolph Jan 23, 2026
339f5aa
fix: convert orphaned tool_results to text blocks after condensing (#…
daniel-lxs Jan 24, 2026
a08bd76
refactor: remove legacy XML tool calling code (getToolDescription) (#…
hannesrudolph Jan 24, 2026
f09718c
Fix duplicate model display for OpenAI Codex provider (#10930)
roomote-v0[bot] Jan 24, 2026
dd56114
Skip thoughtSignature blocks during markdown export #10199 (#10932)
rossdonald Jan 24, 2026
4e67357
fix: use json-stream-stringify for pretty-printing MCP config files (…
Michaelzag Jan 24, 2026
b042866
fix: auto-migrate v1 condensing prompt and handle invalid providers o…
hannesrudolph Jan 24, 2026
4bff2ab
chore: add changeset for v3.43.0 (#10933)
mrubens Jan 24, 2026
83f123f
Changeset version bump (#10934)
github-actions[bot] Jan 24, 2026
3877d02
Replace hyphen encoding with fuzzy matching for MCP tool names (#10775)
daniel-lxs Jan 24, 2026
f9a3a17
fix: truncate AWS Bedrock toolUseId to 64 characters (#10902)
daniel-lxs Jan 24, 2026
84f7409
feat: remove MCP SERVERS section from system prompt (#10895)
daniel-lxs Jan 24, 2026
560081d
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Jan 24, 2026
d5a1f70
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Jan 24, 2026
f815312
feat(tools): enhance Gemini CLI with new tool descriptions and format…
mini2s Jan 24, 2026
98f0d7a
feat(task): improve smart mistake detector with error source tracking…
mini2s Jan 24, 2026
3b703b8
feat: update Fireworks provider with new models (#10679)
ThanhNguyxn Jan 24, 2026
5848db6
ux: Improve subtask visibility and navigation in history and chat vie…
brunobergher Jan 24, 2026
c7910a9
fix(types): remove unsupported Fireworks model tool fields (#10937)
roomote-v0[bot] Jan 24, 2026
2888a77
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Jan 24, 2026
c56f0f4
ux: improve worktree selector and creation UX (#10940)
brunobergher Jan 24, 2026
b76d2f6
Merge branch 'main' of github.com:zgsm-ai/costrict into roo-to-main
mini2s Jan 25, 2026
c28478e
feat: add wildcard support for MCP alwaysAllow configuration (#10948)
roomote-v0[bot] Jan 25, 2026
aa67562
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Jan 25, 2026
e041a95
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Jan 25, 2026
b472c15
fix: restore opaque background to settings section headers (#10951)
roomote-v0[bot] Jan 25, 2026
953c777
Update and improve zh-TW Traditional Chinese locale and docs (#10953)
PeterDaveHello Jan 25, 2026
74d29da
Merge branch 'main' of github.com:zgsm-ai/costrict into roo-to-main
mini2s Jan 25, 2026
b2d63dd
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Jan 25, 2026
7534e19
chore: remove POWER_STEERING experiment remnants (#10980)
hannesrudolph Jan 26, 2026
bd29766
fix: record truncation event when condensation fails but truncation s…
hannesrudolph Jan 27, 2026
27708f3
feat: new_task tool creates checkpoint the same way write_to_file doe…
daniel-lxs Jan 27, 2026
dd245cc
fix: VS Code LM token counting returns 0 outside requests, breaking c…
daniel-lxs Jan 27, 2026
923f7cd
Merge branch 'main' of github.com:zgsm-ai/costrict into roo-to-main
mini2s Jan 27, 2026
00f35fe
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Jan 27, 2026
2f92cb7
fix: prevent nested condensing from including previously-condensed co…
hannesrudolph Jan 27, 2026
2391a0f
fix: use --force by default when deleting worktrees (#10986)
roomote-v0[bot] Jan 27, 2026
826e6da
chore: add changeset for v3.44.0 (#10987)
mrubens Jan 27, 2026
3edf71e
Changeset version bump (#10989)
github-actions[bot] Jan 27, 2026
f5d32e7
Fix LiteLLM tool ID validation errors for Bedrock proxy (#10990)
daniel-lxs Jan 27, 2026
2584504
Enable parallel tool calling with new_task isolation safeguards (#10979)
daniel-lxs Jan 27, 2026
5100d15
Add quality checks to marketing site deployment workflows (#10959)
mp-roocode Jan 27, 2026
f1d7a73
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Jan 27, 2026
6e08ae4
Add temperature=0.9 and top_p=0.95 to zai-glm-4.7 model (#10945)
sebastiand-cerebras Jan 27, 2026
5b3626f
Revert "Enable parallel tool calling with new_task isolation safeguar…
mrubens Jan 27, 2026
7b54a73
Release v3.44.1 (#11003)
mrubens Jan 27, 2026
2078537
Changeset version bump (#11005)
github-actions[bot] Jan 27, 2026
dc5e765
Revert "Revert "Enable parallel tool calling with new_task isolation …
mrubens Jan 27, 2026
d6d00de
Fix local model validation error for Ollama models (#10893)
roomote-v0[bot] Jan 27, 2026
ddfec92
feat: enhance tool call parsing and enable smart mistake detection
mini2s Jan 27, 2026
b9cf163
fix: use relative paths in isPathInIgnoredDirectory to fix worktree i…
daniel-lxs Jan 27, 2026
d5e3cb0
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Jan 27, 2026
0839e27
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Jan 27, 2026
3226ca8
Merge branch 'main' of github.com:zgsm-ai/costrict into roo-to-main
mini2s Jan 27, 2026
17d3456
fix: remove duplicate tool_call emission from Responses API providers…
daniel-lxs Jan 27, 2026
e904372
Release v3.44.2 (#11025)
mrubens Jan 27, 2026
7607c68
Changeset version bump (#11027)
github-actions[bot] Jan 27, 2026
d748de6
feat(condense v2.1): add smart code folding (#10942)
hannesrudolph Jan 27, 2026
7632807
Release v3.45.0 (#11036)
mrubens Jan 28, 2026
c6d0306
Changeset version bump (#11037)
github-actions[bot] Jan 28, 2026
a44842f
fix: include reserved output tokens in task header percentage calcula…
roomote-v0[bot] Jan 28, 2026
e7965d9
feat: lossless terminal output with on-demand retrieval (#10944)
hannesrudolph Jan 28, 2026
35ea661
refactor(core): optimize mistake detection and model switching logic
mini2s Jan 28, 2026
f013d09
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Jan 28, 2026
2990cb1
Merge branch 'main' of github.com:zgsm-ai/costrict into roo-to-main
mini2s Jan 28, 2026
f5004ac
fix: prevent time-travel bug in parallel tool calling (#11046)
daniel-lxs Jan 28, 2026
fe722da
feat: add AI SDK dependencies and message conversion utilities (#11047)
daniel-lxs Jan 28, 2026
8640fd1
fix: calculate header percentage based on available input space (#11054)
roomote-v0[bot] Jan 28, 2026
d7fa963
docs: clarify read_command_output search param should be omitted when…
hannesrudolph Jan 28, 2026
c983e26
feat(marketing): add Linear integration page (#11028)
roomote-v0[bot] Jan 29, 2026
c06c8f9
Merge branch 'main' of github.com:zgsm-ai/costrict into roo-to-main
mini2s Jan 29, 2026
bdc5695
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Jan 29, 2026
11986d4
Merge branch 'main' of github.com:zgsm-ai/costrict into roo-to-main
mini2s Jan 29, 2026
c3da7ba
refactor(tools): restructure lite-descriptions and add read_command_o…
mini2s Jan 29, 2026
010aba2
feat: add skills management UI to settings panel (#10513) (#10844)
SannidhyaSah Jan 29, 2026
ed35b09
Enable parallel tool calls by default (#11031)
daniel-lxs Jan 29, 2026
8d38e60
feat: Add OpenAI-compatible base provider and migrate Moonshot to AI …
daniel-lxs Jan 29, 2026
31bed9c
Add React Compiler integration to webview-ui (#9565)
In-line Jan 29, 2026
49aac7e
feat(vscode-lm): add image support for VS Code LM API provider (#11065)
roomote-v0[bot] Jan 29, 2026
40b2bdc
Revert "feat(vscode-lm): add image support for VS Code LM API provide…
mrubens Jan 29, 2026
a460aab
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Jan 29, 2026
1197c82
Merge remote-tracking branch 'upstream/main' into roo-to-main
mini2s Jan 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
144 changes: 144 additions & 0 deletions packages/types/src/__tests__/skills.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,144 @@
import {
validateSkillName,
SkillNameValidationError,
SKILL_NAME_MIN_LENGTH,
SKILL_NAME_MAX_LENGTH,
SKILL_NAME_REGEX,
} from "../skills.js"

describe("validateSkillName", () => {
describe("valid names", () => {
it("accepts single lowercase word", () => {
expect(validateSkillName("myskill")).toEqual({ valid: true })
})

it("accepts lowercase letters and numbers", () => {
expect(validateSkillName("skill123")).toEqual({ valid: true })
})

it("accepts hyphenated words", () => {
expect(validateSkillName("my-skill")).toEqual({ valid: true })
})

it("accepts multiple hyphenated words", () => {
expect(validateSkillName("my-awesome-skill")).toEqual({ valid: true })
})

it("accepts single character", () => {
expect(validateSkillName("a")).toEqual({ valid: true })
})

it("accepts single digit", () => {
expect(validateSkillName("1")).toEqual({ valid: true })
})

it("accepts maximum length name (64 characters)", () => {
const maxLengthName = "a".repeat(SKILL_NAME_MAX_LENGTH)
expect(validateSkillName(maxLengthName)).toEqual({ valid: true })
})
})

describe("empty or missing names", () => {
it("rejects empty string", () => {
expect(validateSkillName("")).toEqual({
valid: false,
error: SkillNameValidationError.Empty,
})
})
})

describe("names that are too long", () => {
it("rejects names longer than 64 characters", () => {
const tooLongName = "a".repeat(SKILL_NAME_MAX_LENGTH + 1)
expect(validateSkillName(tooLongName)).toEqual({
valid: false,
error: SkillNameValidationError.TooLong,
})
})
})

describe("invalid format", () => {
it("rejects uppercase letters", () => {
expect(validateSkillName("MySkill")).toEqual({
valid: false,
error: SkillNameValidationError.InvalidFormat,
})
})

it("rejects leading hyphen", () => {
expect(validateSkillName("-myskill")).toEqual({
valid: false,
error: SkillNameValidationError.InvalidFormat,
})
})

it("rejects trailing hyphen", () => {
expect(validateSkillName("myskill-")).toEqual({
valid: false,
error: SkillNameValidationError.InvalidFormat,
})
})

it("rejects consecutive hyphens", () => {
expect(validateSkillName("my--skill")).toEqual({
valid: false,
error: SkillNameValidationError.InvalidFormat,
})
})

it("rejects spaces", () => {
expect(validateSkillName("my skill")).toEqual({
valid: false,
error: SkillNameValidationError.InvalidFormat,
})
})

it("rejects underscores", () => {
expect(validateSkillName("my_skill")).toEqual({
valid: false,
error: SkillNameValidationError.InvalidFormat,
})
})

it("rejects special characters", () => {
expect(validateSkillName("my@skill")).toEqual({
valid: false,
error: SkillNameValidationError.InvalidFormat,
})
})

it("rejects dots", () => {
expect(validateSkillName("my.skill")).toEqual({
valid: false,
error: SkillNameValidationError.InvalidFormat,
})
})
})
})

describe("SKILL_NAME_REGEX", () => {
it("matches valid names", () => {
expect(SKILL_NAME_REGEX.test("myskill")).toBe(true)
expect(SKILL_NAME_REGEX.test("my-skill")).toBe(true)
expect(SKILL_NAME_REGEX.test("skill123")).toBe(true)
expect(SKILL_NAME_REGEX.test("a1-b2-c3")).toBe(true)
})

it("does not match invalid names", () => {
expect(SKILL_NAME_REGEX.test("-start")).toBe(false)
expect(SKILL_NAME_REGEX.test("end-")).toBe(false)
expect(SKILL_NAME_REGEX.test("double--hyphen")).toBe(false)
expect(SKILL_NAME_REGEX.test("UPPER")).toBe(false)
expect(SKILL_NAME_REGEX.test("")).toBe(false)
})
})

describe("constants", () => {
it("has correct min length", () => {
expect(SKILL_NAME_MIN_LENGTH).toBe(1)
})

it("has correct max length", () => {
expect(SKILL_NAME_MAX_LENGTH).toBe(64)
})
})
10 changes: 4 additions & 6 deletions packages/types/src/experiment.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,14 @@ import type { Keys, Equals, AssertEqual } from "./type-fu.js"
*/

export const experimentIds = [
"chatSearch",
"commitReview",
"alwaysIncludeFileDetails",
"useLitePrompts",
"preventFocusDisruption",
"imageGeneration",
"runSlashCommand",
"multipleNativeToolCalls",
"customTools",
"chatSearch",
"commitReview",
"alwaysIncludeFileDetails",
"useLitePrompts",
"smartMistakeDetection",
] as const

Expand Down Expand Up @@ -45,7 +44,6 @@ export const experimentsSchema = z.object({
preventFocusDisruption: z.boolean().optional(),
imageGeneration: z.boolean().optional(),
runSlashCommand: z.boolean().optional(),
multipleNativeToolCalls: z.boolean().optional(),
customTools: z.boolean().optional(),
smartMistakeDetection: z.boolean().optional(),
})
Expand Down
1 change: 1 addition & 0 deletions packages/types/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ export * from "./message.js"
export * from "./mode.js"
export * from "./model.js"
export * from "./provider-settings.js"
export * from "./skills.js"
export * from "./task.js"
export * from "./todo.js"
export * from "./telemetry.js"
Expand Down
13 changes: 13 additions & 0 deletions packages/types/src/providers/moonshot.ts
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,19 @@ export const moonshotModels = {
defaultTemperature: 1.0,
description: `The kimi-k2-thinking model is a general-purpose agentic reasoning model developed by Moonshot AI. Thanks to its strength in deep reasoning and multi-turn tool use, it can solve even the hardest problems.`,
},
"kimi-k2.5": {
maxTokens: 16_384,
contextWindow: 262_144,
supportsImages: false,
supportsPromptCache: true,
inputPrice: 0.6, // $0.60 per million tokens (cache miss)
outputPrice: 3.0, // $3.00 per million tokens
cacheReadsPrice: 0.1, // $0.10 per million tokens (cache hit)
supportsTemperature: true,
defaultTemperature: 1.0,
description:
"Kimi K2.5 is the latest generation of Moonshot AI's Kimi series, featuring improved reasoning capabilities and enhanced performance across diverse tasks.",
},
} as const satisfies Record<string, ModelInfo>

export const MOONSHOT_DEFAULT_TEMPERATURE = 0.6
71 changes: 71 additions & 0 deletions packages/types/src/skills.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
/**
* Skill metadata for discovery (loaded at startup)
* Only name and description are required for now
*/
export interface SkillMetadata {
name: string // Required: skill identifier
description: string // Required: when to use this skill
path: string // Absolute path to SKILL.md
source: "global" | "project" // Where the skill was discovered
mode?: string // If set, skill is only available in this mode
}

/**
* Skill name validation constants per agentskills.io specification:
* https://agentskills.io/specification
*
* Name constraints:
* - 1-64 characters
* - Lowercase letters, numbers, and hyphens only
* - Must not start or end with a hyphen
* - Must not contain consecutive hyphens
*/
export const SKILL_NAME_MIN_LENGTH = 1
export const SKILL_NAME_MAX_LENGTH = 64

/**
* Regex pattern for valid skill names.
* Matches: lowercase letters/numbers, optionally followed by groups of hyphen + lowercase letters/numbers.
* This ensures no leading/trailing hyphens and no consecutive hyphens.
*/
export const SKILL_NAME_REGEX = /^[a-z0-9]+(?:-[a-z0-9]+)*$/

/**
* Error codes for skill name validation.
* These can be mapped to translation keys in the frontend or error messages in the backend.
*/
export enum SkillNameValidationError {
Empty = "empty",
TooLong = "too_long",
InvalidFormat = "invalid_format",
}

/**
* Result of skill name validation.
*/
export interface SkillNameValidationResult {
valid: boolean
error?: SkillNameValidationError
}

/**
* Validate a skill name according to agentskills.io specification.
*
* @param name - The skill name to validate
* @returns Validation result with error code if invalid
*/
export function validateSkillName(name: string): SkillNameValidationResult {
if (!name || name.length < SKILL_NAME_MIN_LENGTH) {
return { valid: false, error: SkillNameValidationError.Empty }
}

if (name.length > SKILL_NAME_MAX_LENGTH) {
return { valid: false, error: SkillNameValidationError.TooLong }
}

if (!SKILL_NAME_REGEX.test(name)) {
return { valid: false, error: SkillNameValidationError.InvalidFormat }
}

return { valid: true }
}
11 changes: 11 additions & 0 deletions packages/types/src/vscode-extension-host.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import type { GitCommit } from "./git.js"
import type { McpServer } from "./mcp.js"
import type { IZgsmModelResponseData, ModelRecord, RouterModels } from "./model.js"
import type { INotice } from "./notification.js"
import type { SkillMetadata } from "./skills.js"
import type { OpenAiCodexRateLimitInfo } from "./providers/openai-codex-rate-limits.js"
import type { WorktreeIncludeStatus } from "./worktree.js"

Expand Down Expand Up @@ -132,6 +133,7 @@ export interface ExtensionMessage {
| "worktreeIncludeStatus"
| "branchWorktreeIncludeResult"
| "folderSelected"
| "skills"
text?: string
payload?: any // eslint-disable-line @typescript-eslint/no-explicit-any
checkpointWarning?: {
Expand Down Expand Up @@ -234,6 +236,7 @@ export interface ExtensionMessage {
stepIndex?: number // For browserSessionNavigate: the target step index to display
tools?: SerializedCustomToolDefinition[] // For customToolsResult
modes?: { slug: string; name: string }[] // For modes response
skills?: SkillMetadata[] // For skills response
aggregatedCosts?: {
// For taskWithAggregatedCosts response
totalCost: number
Expand Down Expand Up @@ -683,6 +686,11 @@ export interface WebviewMessage {
| "createWorktreeInclude"
| "checkoutBranch"
| "browseForWorktreePath"
// Skills messages
| "requestSkills"
| "createSkill"
| "deleteSkill"
| "openSkillFile"
text?: string
// costrict-start
issueId?: string
Expand Down Expand Up @@ -723,6 +731,9 @@ export interface WebviewMessage {
timeout?: number
payload?: WebViewMessagePayload
source?: "global" | "project"
skillName?: string // For skill operations (createSkill, deleteSkill, openSkillFile)
skillMode?: string // For skill operations (mode restriction)
skillDescription?: string // For createSkill (skill description)
requestId?: string
ids?: string[]
hasSystemPromptOverride?: boolean
Expand Down
Loading