- Fix mode name input field to check currentEditingField === "modeName" instead of just currentEditingModeSlug
- Add currentEditingField: "modeName" to onFocus handler to properly track field editing state
- This prevents the mode name from showing empty local state when other fields are being edited
Fixes the issue where mode name would disappear when editing description, role definition, or other fields in custom modes.
- Consolidate 7 separate state variables into a single editingState object
- Add useEffect cleanup to prevent memory leaks on component unmount
- Maintain same functionality while simplifying state management
- Addresses UI state management complexity and potential memory leak issues
- Add extractEventValue helper function to reduce code duplication
- Replace 5 occurrences of repeated pattern with helper function call
- Improves code readability and maintainability
Addresses ellipsi-bot feedback about repeated pattern:
(e as unknown as CustomEvent)?.detail?.target?.value || ((e as any).target as HTMLTextAreaElement).value
The ModesView component now checks for rules directory on mount,
which was causing the test to fail. Updated the test to clear
mock calls after mount and properly simulate the focus/change/blur
sequence for field editing.
- Enhanced CustomModesManager.ts with comprehensive validation for all fields
- Added validation for required fields (name, roleDefinition, slug) and optional fields (description, whenToUse, customInstructions)
- Implemented checks to prevent empty strings from being saved (should be undefined instead)
- Extended local state management pattern from PR #5794 to ALL editable fields in ModesView.tsx
- Added local state variables for all fields: localModeName, localModeDescription, localModeRoleDefinition, localModeWhenToUse, localModeCustomInstructions
- Implemented onFocus/onChange/onBlur pattern for all editable fields to prevent empty field saves
- Users can now visually clear fields during editing but empty values are prevented from being saved
- This prevents custom modes from disappearing due to empty field validation issues
Fixes custom modes disappearing and creation issues by extending validation pattern from PR #5794
- Fix race condition in updateCustomMode method by reordering state refresh and cache clearing
- Improve error handling and state recovery in refreshMergedState method
- Add defensive checks for state consistency in getCustomModes method
- Add comprehensive logging for debugging state issues
- Ensure proper cache invalidation timing to prevent stale data
- Add fallback recovery from global state when file operations fail
- Validate merged modes before updating state to filter out invalid entries
Fixes#5855
* fix: detect Claude models by name for API protocol selection
- Modified getApiProtocol to accept modelId parameter
- Added check for 'claude' in model name (case-insensitive)
- Updated Task.ts to pass model ID to getApiProtocol
- Added comprehensive tests for the new logic
Fixes#5830
* fix: limit Claude model detection to vertex and bedrock providers only
- Modified getApiProtocol to only detect Claude models by name when provider is vertex or bedrock
- Added comprehensive unit tests for getApiProtocol function as requested in PR review
- This ensures Claude models are only auto-detected for providers that need it
* improved chat row first pass
* big UI improvements
* working functionality
* tests working
* ok finally tests working for real!
* translations
* add back hidden flag
* remove option to skip notif
* fixed image issue
* ui fix
* put back edit flag
* oops test fix
* reduce margins
* code review
fix: remove invalid skip-checkout parameter from GitHub Actions workflows
- Removed skip-checkout parameter from nightly-publish.yml
- Removed skip-checkout parameter from marketplace-publish.yml
- Removed skip-checkout parameter from changeset-release.yml
The setup-node-pnpm action only accepts: node-version, pnpm-version, skip-install, and install-args.
The skip-checkout parameter was causing warnings in workflow runs.
Fixes#5674
* feat: add Cmd+Shift+. keyboard shortcut for previous mode switching
- Add switchToPreviousMode function that cycles backwards through modes array
- Update handleKeyDown to detect Cmd+Shift+. keyboard combination
- Update modeShortcutText to display both next and previous mode shortcuts
- Add forPreviousMode translation key to all 18 language files
- Implements backwards mode cycling using modulo arithmetic for proper array wrapping
Fixes#5692
* fix: correct keyboard shortcut detection for Cmd+Shift+. (previous mode)
When Shift is pressed with the period key, event.key becomes ">" instead of ".".
Fixed line 1576 to check for event.key === ">" for proper Cmd+Shift+. detection.
Fixes keyboard shortcut issue reported in PR comment.
* fix: use event.code for cross-platform keyboard shortcut compatibility
- Replace event.key checks with event.code === "Period" for both shortcuts
- Fixes keyboard layout compatibility issue where Shift+Period produces different characters on non-US layouts
- Consolidates both shortcuts into a single conditional block for better maintainability
- Addresses feedback from @daniel-lxs in PR #5695