Commit graph

2008 commits

Author SHA1 Message Date
Toray Altas
8ed81bcfa8 feat: add event-specific matchers for hooks
Introduce hook event categories and event-specific matcher semantics.

- Add helper APIs to validate matchers per event
- Warn/clear invalid matchers when loading or updating config
- Update Hooks settings UI with searchable event selector and
  matcher controls that adapt to the selected event
- Add tests for matcher validation and parsing
2026-01-18 20:47:46 -05:00
Toray Altas
c0d8507be2 i18n: add translations for hook triggered message 2026-01-18 03:34:51 -05:00
Toray Altas
6e443bf8d4 feat: show hook execution output in chat
Stream hook stdout/stderr into chat with terminal-style HookExecution blocks.\n\nAdds hookExecutionOutputStatus protocol and persisted hook_execution rows with truncated summaries.
2026-01-18 02:37:21 -05:00
Toray Altas
caa9fd509c fix: dedupe multi-event hooks in settings UI
Send hook-centric enabledHooks state to webview (one entry per id) and expose aggregated events[] for UI rendering. Adds regression test for ClineProvider hooks state shaping.
2026-01-18 00:31:20 -05:00
Toray Altas
7d0d714258 fix: preserve multi-event hooks and multi-group matchers
- Keep multiple events for same hook id when definitions match\n- Expand matcher groups when combined with | (e.g. read|edit)\n- Add regression tests for both cases
2026-01-17 23:46:20 -05:00
Toray Altas
d9509c639a feat(hooks): restructure yaml schema and enhance ui configuration (phase 2)
- Refactor YAML structure to be hook-centric (array-based) instead of event-keyed

- Remove version key from schema and code

- Add "Copy Hook" functionality to duplicate hooks

- Enhance Settings UI:

  - Add event tooltips with descriptions

  - Add editable hook ID field with validation

  - Add multi-line command editing

  - Add "Copy" button

- Update config loader to support both new and legacy formats (read-only compatibility)

- Update config writer to always emit new format

- Add comprehensive tests for migration, copy logic, and new UI components
2026-01-17 21:04:39 -05:00
Toray Altas
609ff88969 feat(hooks): enhance configuration UI with event checkboxes and tool group matchers
- Replace raw config display with interactive controls for Events, Matchers, and Timeout

- Add backend support for updating hook configurations via hooksUpdateHook message

- Implement atomic YAML/JSON writing with event migration logic (moving hooks between keys)

- Add multi-select checkboxes for lifecycle events (PreToolUse, PostToolUse, etc.)

- Add tool group matchers (read, edit, etc.) with custom pattern fallback

- Add timeout preset dropdown (15s - 60m)

- Add comprehensive tests for config writing and UI interaction
2026-01-17 19:34:44 -05:00
Toray Altas
fe0e61f232 feat: promote hooks from experimental to permanent feature
Remove hooks from experimental flags and make it a core feature:
- Remove HOOKS from ExperimentId enum and experimentsSchema
- Initialize HookManager unconditionally in ClineProvider
- Remove experiment checks from webviewMessageHandler
- Always show Hooks tab in SettingsView
- Add dynamic initialization with file watchers (no restart required)
- Update translations to remove restart requirement text
- Add comprehensive tests for dynamic hook initialization

The master 'Enable Hooks' toggle in HooksSettings controls execution.
2026-01-17 16:10:24 -05:00
Toray Altas
2cac5639dc style: update hooks icon to FishingHook
Replace Pickaxe with FishingHook icon from lucide-react.
Upgrade lucide-react from 0.518.0 to 0.562.0 for FishingHook support.
2026-01-17 12:54:57 -05:00
Toray Altas
cd3ef8e4bf chore: add translations for hooks settings
Add hook-related UI strings to all 17 supported locales:
- de, es, fr, ca, hi, id, it, ja, ko, nl, pl, pt-BR, ru, tr, vi, zh-CN, zh-TW

Includes translations for:
- hooks section (~50 keys)
- experimental.HOOKS feature toggle
2026-01-17 12:22:31 -05:00
Toray Altas
fe8f6ce718 feat: display hook ID in activity log
Add hook ID to each activity log entry for easier identification of which
hook was triggered. Styled with monospace font and link color.
2026-01-17 11:48:03 -05:00
Toray Altas
5f1237f212 fix: enforce master toggle for hooks execution
- Add hooksEnabled check to all ToolExecutionHooks methods
- Hooks do not execute when master toggle is off
- Update Task.ts to inject hooksEnabled getter
- Add hooksEnabled to GlobalSettings schema and ExtensionState
- UI hides hook list when master toggle is disabled
- Add comprehensive tests for toggle enforcement (15 tests)
2026-01-17 11:42:28 -05:00
Toray Altas
36ca0ccc27 feat: add Create New Hook button and fix UI styling
- Add 'Create New Hook' button above 'Open Global Folder' button
- Remove borders from hook items to match flat MCP styling
- Implement hooksCreateNew message handler to create example.yaml
- Fix YAML template indentation to use standard 2-space format
- Add translation strings for new UI elements
2026-01-17 11:13:08 -05:00
Toray Altas
f8bd3ba870 feat: enable continuous hooks configuration reload
Move the periodic hooks configuration reload from the HooksSettings component to the main App component. This ensures that hooks are reloaded every 5 seconds whenever the feature is enabled, regardless of which settings tab is currently active.
2026-01-17 10:43:22 -05:00
Toray Altas
6ebe2dad0a feat: gate hooks behind experimental flag
Implement hooks experimental flag with conditional UI rendering and backend functionality gating.
Fix missing experimental settings translations for hooks feature.
Fix hook discovery issue by initializing HookManager when experiment is toggled on.
2026-01-17 10:22:46 -05:00
Toray Altas
08b41f2b9e feat: display hook execution in chat 2026-01-17 00:09:32 -05:00
Toray Altas
8bb5b61555 fix: improve hooks settings layout and UI 2026-01-16 23:20:23 -05:00
Toray Altas
a13fba4c88 feat: open hook config file from UI 2026-01-16 21:11:49 -05:00
Toray Altas
ff4d057f1e feat: enhance hooks UI with delete support and status indicators
- Add switch, status dot, and delete button to HooksSettings UI
- Implement backend support for hook deletion
- Add safeWriteText utility
- Update translation strings
- Add UI and backend tests for new functionality
2026-01-16 19:46:42 -05:00
Toray Altas
e079e6c7aa feat: improve hooks settings UI
Add open project/global folder buttons at bottom
Move reload to bottom
Add enable-all toggle (with new message type)
Convert hooks list to accordion + per-hook logs
2026-01-16 18:27:13 -05:00
Toray Altas
85f2bd64dc fix: clarify tool names for hooks matchers
Update Hooks UI to explicitly document that matchers use Roo Code internal tool IDs (e.g. write_to_file, execute_command) rather than display labels.
Add regression test ensuring display labels do not unintentionally match internal IDs.
2026-01-16 17:10:13 -05:00
Toray Altas
22eda99812 feat: implement Claude Code-style hooks system
Add lifecycle hooks for tool execution with 12 event types:
- PreToolUse, PostToolUse, PostToolUseFailure, PermissionRequest
- SessionStart, SessionEnd, Stop, SubagentStart, SubagentStop
- UserPromptSubmit, Notification, PreCompact

Core implementation:
- HookManager service with config loading, validation, and execution
- HookExecutor for shell command execution with timeout, stdin JSON, env vars
- HookConfigLoader with project/global/mode-specific precedence
- HookMatcher for pattern matching (exact, regex, glob)
- ToolExecutionHooks adapter for pipeline interception

Tool pipeline integration:
- PreToolUse hooks can block or modify tool input
- PostToolUse/PostToolUseFailure for non-blocking notifications
- PermissionRequest hooks before approval prompts

Webview UI:
- Hooks tab in Settings with enable/disable toggles
- Hook Activity log with real-time status updates
- Reload config and open folder actions

Includes comprehensive tests for all components.

Relates to: Claude Code hooks feature parity
2026-01-16 14:49:38 -05:00
T
f48ea389df
Feat/issue 5376 aggregate subtask costs (#10757) 2026-01-15 16:44:55 -05:00
Matt Rubens
afc588b8d3
Release v3.41.0 (#10746) 2026-01-15 00:39:13 -05:00
Hannes Rudolph
4ebbca08b0
feat: add OpenAI Codex provider with OAuth subscription authentication (#10736)
Co-authored-by: Roo Code <roomote@roocode.com>
2026-01-14 23:48:51 -05:00
Matt Rubens
fdc6104031
chore: add changeset for v3.40.0 (#10705) 2026-01-13 18:24:15 -05:00
Daniel
440924ad62
fix: clear approval buttons when API request starts (ROO-526) (#10702) 2026-01-13 18:15:04 -05:00
Bruno Bergher
83037104c6
ux: improve stop button visibility and streamline error handling (#10696)
* Restores the send button in the message edit mode

* Makes the stop button more prominent
2026-01-13 18:14:08 +00:00
Bruno Bergher
749026a44b
ux: Further improve error display (#10692)
* Ensures error details are shown for all errors (except diff, which has its own case)

* More details

* litellm is a proxy
2026-01-13 15:43:51 +00:00
Bruno Bergher
a12163d762
ux: Standard stop button 🟥 (#10639)
Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>
2026-01-13 01:25:17 -05:00
Bruno Bergher
e23e1ecc94
ux: UI improvements to search settings (#10633)
* UI changs

* Update webview-ui/src/components/marketplace/MarketplaceView.tsx

Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>

* i18n

---------

Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>
2026-01-12 06:59:49 -05:00
Matt Rubens
632b86cfbe
Basic settings search (#10619)
* Prototype of a simpler searchable settings

* Fix tests

* UI improvements

* Input tweaks

* Update webview-ui/src/components/settings/SettingsSearch.tsx

Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>

* fix: remove duplicate Escape key handler dead code

* Cleanup

* Fix tests

---------

Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>
Co-authored-by: Roo Code <roomote@roocode.com>
2026-01-11 14:57:41 -05:00
Matt Rubens
352616a6de
Update Roo Code Router service name (#10607) 2026-01-10 13:14:42 -05:00
roomote[bot]
75d895845e
Rename Roo Code Cloud Provider to Roo Code Router (#10560)
Co-authored-by: Roo Code <roomote@roocode.com>
2026-01-10 11:32:21 -05:00
Hannes Rudolph
108f78db6c
feat: add debug setting to settings page (#10580)
* feat: add debug mode toggle to settings

* Update About component with debug mode description

* i18n: add debug mode strings to settings locales

* Update debug mode description in all locales

* fix: post state to webview after debugSetting update

This addresses the review feedback that the debugSetting handler was not
posting updated state back to the webview, which could cause the UI to
stay stale until another state refresh occurred.

* fix: clarify debug mode description to specify task header location

Updated debugMode.description across all 18 locales to clarify that
debug buttons appear in the task header, per review feedback.

* fix: remove redundant postStateToWebview call after debug setting update

* Update src/core/webview/webviewMessageHandler.ts

Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>

---------

Co-authored-by: roomote[bot] <219738659+roomote[bot]@users.noreply.github.com>
2026-01-09 18:06:02 -05:00
Chris Estreich
a4eb15b5a8
Add some functionality to @roo-code/core for the cli (#10584) 2026-01-09 13:05:15 -08:00
Chris Estreich
3171ffc809
Move more types to @roo-code/types (for the cli) (#10583) 2026-01-09 11:59:06 -08:00
Daniel
907b94bc40
fix(openai): remove convertToSimpleMessages to fix tool calling for OpenAI-compatible providers (#10575) 2026-01-09 12:03:46 -05:00
roomote[bot]
a10b450380
feat: Change "Get Started" button label to "Create Roo Account" (#10543)
Co-authored-by: Roo Code <roomote@roocode.com>
2026-01-08 09:29:44 -05:00
Matt Rubens
f84beade7a
Release v3.39.0 (#10537) 2026-01-08 01:52:53 -05:00
Danny Ricciotti
b2941d54df
🐛 Fix glitchy kangaroo bounce animation on welcome screen (#10035)
The kangaroo logo on the welcome screen had a visual glitch where it would instantly jump to the top position when hovering, instead of smoothly starting the bounce from its resting position.

Changes:
- Added custom smooth-bounce keyframe animation in index.css that explicitly starts from translateY(0)
- Updated RooHero component to use hover state tracking with the new animation
- Removed Tailwind's animate-bounce class which was causing the glitch

The animation now smoothly bounces from the resting position without any jarring visual jumps.
2026-01-07 22:34:17 -05:00
roomote[bot]
e3b90fb182
feat: add xhigh reasoning effort to OpenAI compatible endpoints (#10061)
Co-authored-by: Roo Code <roomote@roocode.com>
2026-01-07 14:32:30 -07:00
roomote[bot]
7bbdcdf5d0
feat: rename YOLO to BRRR (#10507)
Co-authored-by: Roo Code <roomote@roocode.com>
2026-01-07 10:03:37 -05:00
Matt Rubens
2d22804d4a
Tweak the style of the follow up suggestion modes (#9260) 2026-01-07 00:35:28 -05:00
Matt Rubens
08c3431fc5
feat: recursively load .roo/rules and AGENTS.md from subdirectories (#10446)
Co-authored-by: Roo Code <roomote@roocode.com>
2026-01-03 15:05:48 -05:00
roomote[bot]
586cf47fb2
fix: add type check for lastMessage.text in TTS useEffect (#10431)
fix: add type check for lastMessage.text before calling startsWith

Fixes #10430

The TTS useEffect was calling .startsWith() on lastMessage.text after only
checking if it was truthy. If text was a non-string truthy value (array,
object, or number), this would crash with "Q.text.startsWith is not a function".

Changed the truthy check to an explicit type check: typeof lastMessage.text === "string"

Co-authored-by: Roo Code <roomote@roocode.com>
2026-01-01 15:11:15 -08:00
Hannes Rudolph
ca1bc18a21
Fix rate limit wait display (#10389)
Co-authored-by: Roo Code <roomote@roocode.com>
Co-authored-by: Matt Rubens <mrubens@users.noreply.github.com>
2025-12-30 21:56:32 -08:00
Hannes Rudolph
c37aa02b21
chore: remove human-relay provider (#10388)
Co-authored-by: Roo Code <roomote@roocode.com>
2025-12-30 15:38:46 -07:00
Matt Rubens
5c5ddd37e8
Release v3.38.0 (#10361) 2025-12-27 12:19:48 -08:00
roomote[bot]
a07d28c7e6
feat: remove OpenRouter Transforms feature (#10341)
- Remove openRouterUseMiddleOutTransform checkbox from settings UI
- Remove openRouterUseMiddleOutTransform from TypeScript types
- Remove transforms parameter logic from OpenRouter handler
- Remove setting from EVALS_SETTINGS
- Remove translation keys from all locale files (18 locales)

Co-authored-by: Roo Code <roomote@roocode.com>
2025-12-25 09:53:48 -08:00