feat: center tabs, docked settings, centralized API keys#13
Merged
Conversation
…ctionality - Added support for center tabs in the workspace, including dynamic tab creation and management. - Introduced `CenterTab` and `CenterTabKind` structures to represent different types of tabs. - Implemented functions to handle opening, closing, and switching between center tabs. - Enhanced the workspace layout to accommodate center tabs and their respective content panels. - Added a file preview feature that allows users to view file contents directly within the workspace. - Updated styles for the new center tab interface and file preview components. - Refactored existing workspace and terminal management code to integrate with the new tab system.
- Added a new plan for the centralized management of API keys under Settings → API Keys. - Outlined decisions regarding the UI structure, backend catalog, and key management processes. - Included tasks for implementation across various modules, ensuring a streamlined approach to API key handling.
- Revised the summary to clarify the centralized API key management under Settings → API Keys, emphasizing a unified save button and backend improvements. - Adjusted decisions and tasks to reflect changes in UI design, batch processing, and the removal of individual save actions. - Enhanced task descriptions for better clarity on implementation across various modules.
… and backend specifications
- Added a new module `api_keys` to handle API key management. - Introduced `ApiKeyEntry`, `ApiKeysStatus`, and related enums for API key actions. - Created commands `api_keys_status` and `api_keys_apply` for fetching and applying API keys. - Developed a new UI component `ApiKeysPane` for displaying and managing API keys. - Implemented CSS styles for the API keys pane layout. - Removed legacy API key handling code from the agent provider pane. - Updated the main application structure to include the new API keys pane.
…ences - Introduced new localization keys for API keys management, including subheadings, status messages, and hints in multiple languages. - Updated UI components to utilize the new localization keys for better internationalization support in the API keys management pane.
…variable handling - Updated the status message in the API keys pane to ensure it is explicitly converted to a string. - Refactored the environment variable handling in the API key row to improve readability and maintainability.
- Introduced a new `WorkspaceSettingsPane` component for managing workspace settings, including project directory and sandbox root configurations. - Added localization keys for workspace settings in multiple languages to enhance internationalization support. - Updated the main application structure to include the new workspace settings pane and corresponding CSS styles for consistent UI design.
- Restructured the Workspace settings layout to mirror the API Keys pane, enhancing consistency in UI design. - Implemented a shared footer for Save/Discard actions and updated localization keys for the new layout. - Improved the organization of workspace settings, including project directory and sandbox root configurations.
- Enhanced layout consistency between the Workspace settings and API Keys panes by adjusting spacing and padding. - Improved visual hierarchy with updated margins and gaps for better user experience. - Removed redundant CSS rules to streamline styles across both panes.
- Updated CSS for the Workspace settings pane to reuse styles from the API Keys pane, enhancing visual consistency. - Refactored HTML structure to align with the API Keys layout, improving the user interface and experience. - Removed redundant CSS rules to streamline styling across both panes.
- Added a margin-bottom to the API keys row to enhance visual separation between elements. - This change contributes to a more consistent layout in the API keys pane.
- Added CSS styles for brand icons in the API keys row to improve visual representation. - Implemented functions to retrieve brand SVG paths and fallback icons based on API key type. - Updated the API key row structure to include brand icons alongside labels, enhancing the user interface.
…tributes - Added new styles for disabled mini buttons to enhance visual feedback and user experience. - Updated button attributes in the API Keys and Workspace Settings panes to use the standard `disabled` property for better accessibility and consistency.
- Introduced SVG icons for Brave, Google, Groq, Mistral, and Tavily to enhance visual representation in the API keys pane. - Updated the API key brand icon retrieval function to include new icons, improving the user interface and experience.
- Added a new SVG icon for Grok and removed the old Groq icon to enhance brand representation. - Updated the API key brand icon retrieval function to reflect the new icon name. - Improved layout styles in the harness hooks section for better alignment and spacing. - Enhanced the display of agent names and statuses with a new title row structure.
…ization support - Introduced a new `AgentProviderPane` component for managing agent provider settings, including model selection and thinking levels. - Added localization keys for the agent provider pane in multiple languages to enhance internationalization support. - Updated the main application structure to include the new agent provider pane and corresponding CSS styles for consistent UI design. - Enhanced the layout and styling of the agent provider settings for improved user experience.
…uctures and UI components - Added `PartialEq` derive to `ProviderModelEntry` and `ModelPricing` structs for improved equality checks. - Introduced a new function `hook_brand_icon` in `harness_ui.rs` to map agent names to their corresponding brand icons. - Updated `AgentModelPicker` to use `Signal::derive` for selected entry, improving reactivity in the agent provider pane.
…icker - Removed the unused `select_str` function to clean up the codebase. - Updated event handling in `AgentModelPicker` to use cloned identifiers for improved clarity and maintainability. - Enhanced the reactivity of the component by ensuring consistent usage of cloned variables for event actions.
…delPicker - Replaced multiple cloned identifiers with a single `entry_id` variable for improved clarity. - Enhanced event handling by ensuring consistent usage of cloned variables for button actions and keyboard events. - Simplified the code structure to improve maintainability and readability.
…odelPicker - Consolidated cloned identifiers for improved clarity and reduced redundancy. - Enhanced event handling by ensuring consistent usage of identifiers for button actions and keyboard events. - Streamlined the code structure to improve maintainability and readability.
- Introduced new keys for AgColumnText, AgColumnImage, AgColumnVoice, and AgColumnVoiceSoon in multiple languages to enhance internationalization support. - Updated the I18nKey enum and corresponding localization files for German, English, Spanish, French, Hungarian, Italian, Japanese, Korean, Polish, Portuguese, Russian, Chinese (Simplified and Traditional) to include these new keys. - Improved the user experience by providing localized text for new agent provider settings in the UI.
…lection - Introduced a new `AgentModelPicker` component to facilitate model selection with a dropdown interface, enhancing user experience in the agent settings. - Integrated the `AgentModelPicker` into the `AgentProviderPane` and `AgentImageColumn` components, replacing the previous model picker implementation. - Improved reactivity and event handling for model selection, ensuring a seamless interaction for users. - Updated relevant imports and removed deprecated code related to the old model picker.
… functionality - Removed outdated CSS styles related to the image settings tab, streamlining the stylesheet for better maintainability. - Updated the Rust module to include new functions for managing image providers, enhancing the user interface with improved dropdown functionality. - Introduced a new `ImageProviderPicker` component for selecting image providers, improving user interaction and accessibility. - Enhanced localization support by integrating internationalization keys for image provider labels and statuses.
…ization support - Added a new `ImageQualityLevel` enum to define various quality tiers for image generation, with a default set to Medium. - Updated `ImageSettings` to include a quality field, enhancing the configuration options for image generation. - Integrated localization keys for image quality levels in multiple languages, improving internationalization support across the application. - Enhanced image generation functions to utilize the new quality settings, ensuring better control over output resolution and quality.
- Introduced new SVG icons for fal.ai and AWS Polly, enhancing brand representation in the application. - Updated the API key management system to include a new category for ImageVideo, allowing users to manage keys for image and voice media providers. - Enhanced localization support by adding new keys for fal.ai and ImageVideo in multiple languages, improving internationalization across the application. - Updated image generation functionality to support fal.ai, integrating it into the existing image provider framework for seamless user experience.
…ontrols - Added new `VoiceSttLanguageControls` and `VoicePttControls` components for managing speech-to-text language settings and push-to-talk functionality within the app settings. - Updated the `AppSettingsPane` to include these new components, enhancing user interaction for voice settings. - Introduced responsive CSS styles for the new controls, ensuring a consistent layout across different screen sizes. - Refactored existing voice settings code to streamline functionality and improve maintainability.
- Implemented `from_iso639_1` function to map ISO-639-1 codes to built-in UI locales, enhancing localization support. - Added `SttManualLocalePicker` component for selecting STT languages, improving user interaction in voice settings. - Introduced helper functions for navigating locale options and focusing on selected elements, streamlining the user experience. - Enhanced unit tests to verify the new locale mapping functionality.
- Updated CSS for the agent provider pane to improve grid layout, allowing for better responsiveness and visual organization. - Replaced the placeholder column with the new `AgentVoiceColumn` component, integrating voice settings directly into the agent provider pane. - Introduced a new inner grid for voice settings, ensuring a structured layout for STT and TTS sections. - Refactored the `VoicePane` component to accommodate the new structure and improve maintainability.
…r quality level pickers - Added CSS styles for the harness-level-picker, enhancing the visual design and interaction of quality level selection components. - Updated the `agent_provider_pane` and `harness_image_pane` modules to include the new `harness-level-picker` class, improving consistency across the UI. - Introduced hover and focus styles for better user feedback during interaction with quality level options.
- Deleted the `select_str` function from the `harness_ui` module as it was no longer needed, simplifying the codebase and improving maintainability.
- Introduced a new CSS class for voice provider layout in the agent provider pane, enhancing visual organization. - Implemented a `VoiceProviderPicker` component for selecting between OpenAI and OpenRouter voice providers, improving user interaction. - Updated the `AgentVoiceColumn` to integrate voice provider selection, ensuring a cohesive experience for managing voice settings. - Refactored related components to accommodate the new voice provider functionality, enhancing maintainability and responsiveness.
- Updated the `AgentVoiceColumn` to set the voice provider when saving voice settings, ensuring the correct provider is applied. - Enhanced the save functionality to reflect changes in the voice provider after settings are saved, improving user experience and consistency.
- Updated the `AgentVoiceColumn` to improve handling of STT and TTS model IDs, ensuring they are correctly set and saved. - Refactored the speech section to separate STT and TTS model selection, enhancing clarity and user interaction. - Introduced loading states for model fetching, improving user feedback during asynchronous operations. - Adjusted CSS for the agent provider pane to refine layout and spacing, enhancing overall visual organization.
- Introduced AWS as a new voice provider in the `VoiceProviderKind` enum, enhancing the application's voice capabilities. - Updated localization files to include AWS provider keys in multiple languages, improving internationalization support. - Enhanced the `AgentVoiceColumn` and related components to handle AWS-specific voice settings and model management. - Refactored voice provider functions to accommodate AWS, ensuring proper integration and user experience.
- Deleted the `model_picker` module and its associated CSS, streamlining the codebase and improving maintainability. - Updated the `AgentVoiceColumn` and `VoicePicksGrid` components to integrate a custom field for voice selection, enhancing user interaction. - Added localization support for AWS voice selection hints across multiple languages, improving user experience for international users. - Refactored CSS for voice selection components to improve layout and responsiveness, ensuring a cohesive design.
… unused variables - Replaced the `openai_voice_ids` function with `is_openai_voice_id` for improved clarity in voice ID validation. - Introduced `fixed_aws_polly_voices` function to centralize AWS Polly voice entries, enhancing maintainability. - Removed unused `voices` signals from the `AgentVoiceColumn` and related components, simplifying the state management. - Updated `VoicePicksGrid` to utilize the new voice catalog, improving the voice selection UI.
… model picker - Removed unnecessary lines and conditions for building the display lines for agent model details. - Streamlined the pricing information retrieval and display, enhancing code clarity and maintainability. - Updated the UI to directly show pricing information without intermediate variables, improving performance and readability.
…catalog functionality - Updated localization files across multiple languages to reflect the inclusion of OpenAI as a voice provider alongside AWS. - Enhanced the voice selection logic to accommodate both OpenAI and AWS, improving user experience and flexibility in voice options. - Refactored voice catalog functions to streamline voice entry management for different providers, ensuring maintainability and clarity in the codebase.
…mline voice commands - Deleted the `voice_provider_voices` function and associated structures, simplifying the voice command interface. - Updated documentation to reflect the removal of the `voice_provider_voices` command, ensuring clarity for developers. - Cleaned up related files by removing references to the deleted voice provider functionality, enhancing maintainability.
…e agent provider pane - Removed the voice category button from the settings dock, streamlining the UI. - Replaced the voice pane with the agent provider pane in the settings view, enhancing consistency. - Updated CSS styles for the agent provider pane to improve visual clarity and maintainability. - Cleaned up redundant classes in the agent provider pane across multiple components.
…tings - Introduced a new section for managing category color presets in the workspace settings pane. - Added localization support for category color features across multiple languages. - Implemented functionality to add, update, and delete category color presets, enhancing user customization options. - Refactored the workspace settings pane to integrate the new category colors section, improving overall UI organization.
Document docked center-tab settings, centralized API Keys, BLXCode Agent grid (text/image/voice), Workspace category colors, and removed Image/Voice/ Memory nav entries. Mark api-keys-centralized plan done; refresh PR-facing docs and Unreleased CHANGELOG from branch work. Co-authored-by: Cursor <cursoragent@cursor.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
read_workspace_text_file, 512 KiB cap, backend tests).Image,Voice,Memory) route to the correct pane.api_keys_status/api_keys_apply); LLM, Tavily, Brave, fal.ai, AWS Polly; keyring-first withBLX_*env fallback. Agent/image/voice panes show muted status hints only.AgentModelPicker), Image (provider, quality, models, auto-save), Voice (OpenAI/OpenRouter/AWS, STT/TTS models, fixed voice catalog, behavior). Web Tools footer with text provider. STT language + PTT live under App.Test plan
cargo check -p blxcode-ui --target wasm32-unknown-unknowncargo test --workspace