Improvements based on reviewer bot feedback:
1. Enhanced safety check (HIGH priority):
- Now uses 'git ls-files -s --cached' to detect mode 160000 entries
- Catches newly added/removed gitlinks, not just pointer changes
- Added check for .gitmodules changes with warning log
2. Improved pathspec exclusion (MEDIUM priority):
- Added 'git rm --cached' to remove existing gitlinks before staging
- Prevents staging of gitlink entries already in the index
- Ensures complete exclusion of nested repo changes
3. Better error logging (LOW priority):
- Added warning logs for git command failures in findNestedRepos()
- Helps debugging while avoiding feature breakage
- Distinguishes expected errors (no .gitmodules) from real issues
All tests continue to pass with these enhancements.
Instead of blocking checkpoints when nested git repos are detected,
now excludes them from staging to prevent submodule-related errors.
Changes:
- Removed initialization-time nested repo check that blocked feature
- Added findNestedRepos() to detect repos from multiple sources:
* .gitmodules (declared submodules)
* git index (gitlinks with mode 160000)
* filesystem (.git directories and worktrees)
- Modified stageAll() to exclude nested repos using pathspec
- Added safety check to prevent submodule changes in staging
- Updated tests to verify nested repos are excluded from checkpoints
This allows checkpoints to work in monorepos and projects with
submodules while preventing git errors from nested repo changes.
* changeset version bump
* Update CHANGELOG for version 3.29.1 release
Updated version number and added release notes for 3.29.1.
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
- Add responsive breakpoint at 300px for compact view
- Icon correctly reflects state (X when off, ✓ when on) at all screen sizes
- Show abbreviated labels on very narrow screens (< 300px)
- Add triggerLabelOffShort translation key to all locales
Fixes issues from PR #8152:
- Icon always showing checkmark on narrow screens
- Breakpoint activating too early (was 400px)
- Incorrect Tailwind class ordering
* feat(zai): add GLM-4.5-X, AirX, Flash; sync with Z.ai docs; keep canonical api line keys
* feat(zai): add GLM-4.5V vision model (supportsImages, pricing, 16K max output); add tests
* feat(types,zai): sync Z.AI international model map and tests
- Update pricing, context window, and capabilities for:
glm-4.5-x, glm-4.5-airx, glm-4.5-flash, glm-4.5v, glm-4.6
- Add glm-4-32b-0414-128k
- Align tests with new model specs
* fix(zai): align handler generics with expanded model ids to satisfy CI compile step
* chore(zai): remove tier pricing blocks for Z.ai models
* fix(zai): simplify names in zaiApiLineConfigs for clarity
* chore(zai): set default temperature to 0.6
---------
Co-authored-by: Roo Code <roomote@roocode.com>
chore(gpt5): stop persisting instructions/reasoning_summary in UI message metadata
Problem: ui_messages.json was getting bloated with unused or duplicated content (system 'instructions' and 'reasoning_summary') that we do not read back. Root cause: earlier OpenAI Responses API implementation persisted these fields to per-message metadata; however, 'instructions' are already sent as top-level request instructions and 'reasoning_summary' is surfaced live via streaming events. Neither field is consumed from storage. Changes: (1) Task.persistGpt5Metadata now stores only previous_response_id; (2) removed instructions and reasoning_summary from types; (3) updated Zod schema; (4) persistence layer writes messages as-is (no sanitizer); (5) tests green. Impact: smaller ui_messages.json, no runtime behavior change for requests. Migration: old metadata fields will be ignored by schema.