Commit graph

3388 commits

Author SHA1 Message Date
Hannes Rudolph
30f2aa2546 fix: address roomote review concerns
- Improve calculateTaskStorageSize() logging to show actual error message
  instead of generic 'directory not found'
- Serialize task deletions when using provider-backed deleteTaskById to
  avoid taskHistory state race conditions (parallel deletion kept for
  filesystem-only operations)
2026-01-28 17:51:12 -07:00
Hannes Rudolph
9c92200cf2 chore: remove unused formatBytes.ts file
The file was left over after size calculation was removed from
task-storage-size.ts for performance reasons. Knip correctly detected
it as unused.
2026-01-26 18:55:56 -07:00
Hannes Rudolph
739f6c1989 feat(history): move retention settings to history view with gear icon popover
- Add Settings gear icon in HistoryView header with popover for retention settings
- Retention dropdown allows configuring auto-delete task history (never, 3-90 days)
- Settings are saved immediately via vscode.postMessage updateSettings
- Remove retention settings from About.tsx (Settings View)
- Update About.tsx props and tests to remove taskHistoryRetention
2026-01-26 17:12:49 -07:00
Hannes Rudolph
69b6ba5712 feat: add progress logging to checkpoint culling
- Log number of tasks being scanned
- Log how many tasks have checkpoints
- Log how many need culling (older than 30 days)
- Log progress every 100 deletions during large culls
2026-01-26 16:42:12 -07:00
Hannes Rudolph
0540d2711b fix: simplify retention purge notification - remove non-working View Settings button 2026-01-26 16:26:23 -07:00
Hannes Rudolph
19efb33e4d feat: add automatic checkpoint culling for inactive tasks
- Add purgeOldCheckpoints() function with hardcoded 30-day threshold
- Add startBackgroundCheckpointPurge() for fire-and-forget activation
- Culls only checkpoints/ subdirectory, preserves task history
- Runs silently on extension activation (no user notification)
- Coexists with existing taskHistoryRetention setting
- Add 6 new tests for checkpoint culling functionality
2026-01-26 16:17:48 -07:00
Hannes Rudolph
b5e3a3d898 perf: optimize task history retention purge with parallel processing
- Add parallel metadata reads with 50 concurrent operations
- Add parallel deletions with 10 concurrent operations
- Batch read all metadata first, then filter, then delete
- Reduce retry attempts from 3 to 1 (remove aggressive retries with sleeps)
- Extract helper functions for cleaner code (readTaskMetadata, pathExists, removeDir)

This significantly improves purge performance for users with many tasks (~9000+).
2026-01-26 15:32:36 -07:00
Hannes Rudolph
c9cb00eb4b chore: remove unrelated formatBytes tests from task-storage-size
The formatBytes tests are not relevant since we no longer calculate size.
2026-01-26 14:27:53 -07:00
Hannes Rudolph
1ee2ac9733 chore: remove unnecessary backwards compat re-export
This PR was never merged, so no need for backwards compatibility.
Import formatBytes directly from its source file.
2026-01-26 14:13:50 -07:00
Hannes Rudolph
b19ab45ba8 perf: replace storage size calculation with fast task count
- Remove expensive recursive getDirectorySize() that caused UI freeze with ~9000 tasks
- Now only counts top-level task directories via single fs.readdir() call
- Make task count on-demand (user must click refresh) instead of auto-trigger on settings load
- Update types, i18n strings, and tests accordingly
2026-01-26 14:01:12 -07:00
Hannes Rudolph
18894daad2 fix: address mrubens review on retention types and settings navigation 2026-01-26 12:21:12 -07:00
Hannes Rudolph
7083b1a720 fix: add missing task history retention translations 2026-01-26 12:21:12 -07:00
Hannes Rudolph
bf483c9276 fix: address mrubens review feedback for task history retention 2026-01-26 12:21:11 -07:00
Hannes Rudolph
0ba7cdac58 chore: move task history retention to app state 2026-01-26 12:21:10 -07:00
daniel-lxs
7c0ce3ef66 fix: handle non-existent workspace repo in checkpoint cleanup
- Check if workspace repo directory exists before git operations in deleteTask()
- Reduce log verbosity - only log actual errors, not expected cases
- Add test case for non-existent directory handling
2026-01-26 12:21:10 -07:00
daniel-lxs
523abdb25d fix: resolve merge conflict, use startBackgroundRetentionPurge() for cleaner code
- Resolved merge conflict in extension.ts, keeping extracted function approach
- startBackgroundRetentionPurge() encapsulates all purge logic in task-history-retention.ts
- Added getStorageBasePath mock to task-storage-size tests (addresses roomote review)
2026-01-26 12:19:49 -07:00
Hannes Rudolph
33b58beed0 fix: add background purgeOldTasks call and remove duplicate NLS keys
- Add non-blocking background task history purge on extension activation
- Fire-and-forget pattern prevents blocking startup
- Skip purge entirely when retention is 'never' (default)
- Remove duplicate 'settings.taskHistoryRetention.description' keys from all 18 package.nls.*.json files
- Keep consistent 'extension reload' terminology (vs 'plugin reload')
2026-01-26 12:19:49 -07:00
daniel-lxs
b6f662f852 feat: add task storage size display to settings
- Add storage usage display showing total size and task count
- Add calculateTaskStorageSize utility to compute global storage folder sizes
- Add getTaskStorageSize message handler to communicate storage info to webview
- Update About settings section to display storage usage with refresh button
- Add taskHistoryStorage translations for all 18 supported languages
2026-01-26 12:19:49 -07:00
Hannes Rudolph
64b08fb107 Update src/__tests__/task-history-retention.spec.ts
Co-authored-by: Seth Miller <sethmillerp@gmail.com>
2026-01-26 12:19:48 -07:00
Hannes Rudolph
06df1ca068 Update src/extension.ts
Co-authored-by: Seth Miller <sethmillerp@gmail.com>
2026-01-26 12:19:48 -07:00
Hannes Rudolph
d1bdbd56b8 test: stabilize checkpoint service temp dir cleanup 2026-01-26 12:19:48 -07:00
Hannes Rudolph
dbf47c259e refactor(retention): narrow RetentionSetting type and optimize deletion flow
- Replace generic 'number' with explicit RetentionDays union type to prevent accidental misconfiguration
- Skip aggressive fs cleanup when deleteTaskById callback successfully removes the directory
- This avoids redundant filesystem work and log noise on stubborn paths
2026-01-26 12:19:47 -07:00
Hannes Rudolph
8b30590665 fix: remove 'as any' type casts in retention feature
- Import and use RetentionSetting type instead of 'as any' in extension.ts
- Use proper type narrowing for metadata parsing instead of 'as any'
2026-01-26 12:19:47 -07:00
Hannes Rudolph
be916cab7d fix: remove unused import and fix translation issues
- Remove unused fs/promises import in extension.ts
- Fix Turkish translation: replace Cyrillic 'д' with Turkish 'd' in süreden
- Fix Catalan translation: use consistent 'extensió' terminology
2026-01-26 12:19:47 -07:00
Hannes Rudolph
f7298a0fae fix: update task history retention descriptions for multiple languages 2026-01-26 12:19:47 -07:00
Hannes Rudolph
7b8555dd3e fix: update translations for task history retention settings 2026-01-26 12:19:46 -07:00
Hannes Rudolph
e6395f2af8 fix: address race condition in task purge by processing deletions sequentially 2026-01-26 12:19:45 -07:00
Hannes Rudolph
8ffeaed6f2 feat: task history retention purge uses provider delete path; checkpoint-only cleanup; quieter logging 2026-01-26 12:19:44 -07:00
roomote[bot]
c28478eda7
feat: add wildcard support for MCP alwaysAllow configuration (#10948)
Co-authored-by: Roo Code <roomote@roocode.com>
2026-01-24 22:42:47 -05:00
Bruno Bergher
c56f0f43c7
ux: improve worktree selector and creation UX (#10940)
* Delete modal

* Restructured

* Much more prominent

* UI

* i18n

* Fixes i18n

* Remove mergeresultmodel

* i18n

* tests

* knip

* code review
2026-01-24 22:06:37 +00:00
Bruno Bergher
5848db66be
ux: Improve subtask visibility and navigation in history and chat views (#10864)
* Taskheader

* Subtask messages

* View subtask

* subtasks in history items

* i18n

* Table

* Lighter visuals

* bug

* fix: Align tests with implementation behavior

* refactor: extract CircularProgress component from TaskHeader

- Created reusable CircularProgress component for displaying percentage as a ring
- Moved inline SVG calculation from TaskHeader.tsx to dedicated component
- Added comprehensive tests for CircularProgress component (14 tests)
- Component supports customizable size, strokeWidth, and className
- Includes proper accessibility attributes (progressbar role, aria-valuenow)

* chore: update StandardTooltip default delay to 600ms

As mentioned in the PR description, increased the tooltip delay to 600ms
for less intrusive tooltips. The delay is still configurable via the
delay prop for components that need a different value.

---------

Co-authored-by: Roo Code <roomote@roocode.com>
2026-01-24 07:21:25 -05:00
Daniel
84f7409f3c
feat: remove MCP SERVERS section from system prompt (#10895)
Co-authored-by: Roo Code <roomote@roocode.com>
2026-01-24 01:16:26 -05:00
Daniel
f9a3a178db
fix: truncate AWS Bedrock toolUseId to 64 characters (#10902) 2026-01-24 00:49:33 -05:00
Daniel
3877d02498
Replace hyphen encoding with fuzzy matching for MCP tool names (#10775) 2026-01-24 00:49:13 -05:00
github-actions[bot]
83f123f270
Changeset version bump (#10934)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2026-01-23 23:57:16 -05:00
Matt Rubens
4bff2ab191
chore: add changeset for v3.43.0 (#10933) 2026-01-23 23:47:44 -05:00
Hannes Rudolph
b042866ee1
fix: auto-migrate v1 condensing prompt and handle invalid providers on import (#10931) 2026-01-23 22:32:04 -05:00
Michaelzag
4e67357ab5
fix: use json-stream-stringify for pretty-printing MCP config files (#9864)
Co-authored-by: Roo Code <roomote@roocode.com>
2026-01-23 19:19:35 -08:00
rossdonald
dd561142e9
Skip thoughtSignature blocks during markdown export #10199 (#10932) 2026-01-23 19:18:58 -08:00
Hannes Rudolph
a08bd766ff
refactor: remove legacy XML tool calling code (getToolDescription) (#10929)
- Remove getToolDescription() method from MultiSearchReplaceDiffStrategy
- Remove getToolDescription() from DiffStrategy interface
- Remove unused ToolDescription type from shared/tools.ts
- Remove unused eslint-disable directive
- Update test mocks to remove getToolDescription references
- Remove getToolDescription tests from multi-search-replace.spec.ts

Native tools are now defined in src/core/prompts/tools/native-tools/ using
the OpenAI function format. The removed code was dead since XML-style tool
calling was replaced with native tool calling.
2026-01-23 19:13:55 -05:00
Daniel
339f5aad48
fix: convert orphaned tool_results to text blocks after condensing (#10927)
* fix: convert orphaned tool_results to text blocks after condensing

When condensing occurs after assistant sends tool_uses but before user responds,
the tool_use blocks get condensed away. User messages containing tool_results that
reference condensed tool_use_ids become orphaned and get filtered out by
getEffectiveApiHistory, causing user feedback to be lost.

This fix enhances the existing check in addToApiConversationHistory to detect when
the previous effective message is not an assistant and converts any tool_result
blocks to text blocks, preventing them from being filtered as orphans.

The conversion happens at the latest possible moment (message insertion) because:
- Tool results are created before we know if condensing will occur
- We need actual effective history state to make the decision
- This is the last checkpoint before orphan filtering happens

* Only include environment details in summary for automatic condensing

For automatic condensing (during attemptApiRequest), environment details
are included in the summary because the API request is already in progress
and the next user message won't have fresh environment details injected.

For manual condensing (via condenseContext button), environment details
are NOT included because fresh details will be injected on the very next
turn via getEnvironmentDetails() in recursivelyMakeClineRequests().

This uses the existing isAutomaticTrigger flag to differentiate behavior.

---------

Co-authored-by: Hannes Rudolph <hrudolph@gmail.com>
2026-01-23 19:04:36 -05:00
Hannes Rudolph
526488e5b6
chore: remove MULTI_FILE_APPLY_DIFF experiment (#10925)
* chore: remove MULTI_FILE_APPLY_DIFF experiment

Remove the 'Enable concurrent file edits' experimental feature that
allowed editing multiple files in a single apply_diff call.

- Remove multiFileApplyDiff from experiment types and config
- Delete MultiFileSearchReplaceDiffStrategy class and tests
- Delete MultiApplyDiffTool wrapper and tests
- Remove experiment-specific code paths in Task.ts, generateSystemPrompt.ts, and presentAssistantMessage.ts
- Remove special handling in ExperimentalSettings.tsx
- Remove translations from all 18 locale files

The existing MultiSearchReplaceDiffStrategy continues to handle
multiple SEARCH/REPLACE blocks within a single file.

* fix: remove unused EXPERIMENT_IDS/experiments import from Task.ts

Addresses review feedback: removes the unused imports from
src/core/task/Task.ts that were left over after removing the
MULTI_FILE_APPLY_DIFF experiment routing code.
2026-01-23 18:39:24 -05:00
Hannes Rudolph
f7434dec72
chore: remove POWER_STEERING experimental feature (#10926)
- Remove powerSteering from experimentIds array and schema in packages/types
- Remove POWER_STEERING from EXPERIMENT_IDS and experimentConfigsMap
- Remove power steering conditional block from getEnvironmentDetails
- Remove POWER_STEERING entry from all 18 locale settings.json files
- Update related test files to remove power steering references
2026-01-23 18:07:58 -05:00
Daniel
2d2ed15bfb
Remove Merge button from worktrees (#10924)
Co-authored-by: Roo Code <roomote@roocode.com>
2026-01-23 16:55:46 -05:00
Hannes Rudolph
85f42dca83
chore: remove diffEnabled and fuzzyMatchThreshold settings (#10298) 2026-01-23 16:39:08 -05:00
Hannes Rudolph
0ff826d21d
feat(condense): improve condensation with environment details, accurate token counts, and lazy evaluation (#10920) 2026-01-23 13:52:47 -07:00
Hannes Rudolph
cf5d42e1e1
Intelligent Context Condensation v2 (#10873) 2026-01-23 12:33:35 -07:00
github-actions[bot]
f7bf7a4840
Changeset version bump (#10911)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2026-01-22 23:56:42 -05:00
Matt Rubens
f38bac9fe6
Release v3.42.0 (#10910) 2026-01-22 23:52:33 -05:00
Hannes Rudolph
6eb3d5dd0a
chore(prompts): clarify linked SKILL.md file handling (#10907) 2026-01-22 22:32:25 -05:00