Repository navigation
Conversation
- Delete #sidebar-resize-handle CSS, DOM node, drag script, and the related test assertions - Harden the input resize drag: rAF throttling, window listeners, and cleanup on mouseleave/blur via body.is-resizing - Skip tooltip repositioning while a resize drag is in progress - Sync package-lock.json to version 0.6.0
The config panel was reachable through a gear button rendered inside the chat webview. Move it into the editor chrome instead: the sidebar view title bar now shows a small gear icon, and the webview no longer renders any settings button. - Contribute `brotherwhale.openConfig` with `"icon": "$(gear)"` and expose it through `menus["view/title"]` in the `navigation` group, scoped to `view == brotherwhale.chat`, so the action sits at the top of the CodeWhale sidebar panel - Register the command in `extension.ts` to open `ConfigPanel`, keeping the command id in sync with the manifest - Drop the redundant `brotherwhale.settings` tree view, its `SettingsViewProvider`, and the now-unused `views.settings.name` and `openConfigPanel` keys, so the gear becomes the single entry point - Remove the `#btn-config` button from the webview along with its CSS block and its click handler - Add `package-contributions.test.ts` to guard the gear contribution (command icon, menu placement, single view) and to keep `#btn-config` from creeping back into the webview sources The `/config` slash command keeps opening the same panel.
The composer was a plain row of attach button, textarea, and Send/Stop text buttons. Redesign it as a bordered input box whose bottom edge is a toolbar: the attachment button starts from the left, a compact icon-only send/stop button is pinned to the far right, and the textarea fills the box above the toolbar. - Wrap the textarea and an #input-toolbar in a bordered #input-box with a :focus-within highlight; the toolbar hosts #btn-attach on the left and #btn-send-stop on the right via margin-left: auto - Replace the Send/Stop text labels with inline SVG icons (paper plane / square) since the webview does not load the codicon font; titles and aria-labels switch with the streaming state - Keep the composer height under explicit user control: the textarea has a hard-coded 52px floor (about two rows above the 34px toolbar) and the resize handle drags the textarea itself between 52 and 340px, persisted as codewhale:inputHeight; overflowing text scrolls inside the box with the scrollbar hidden instead of resizing the composer - Remove the previous auto-grow logic and its height resets on send and history recall, which made the frame jump while typing - Size #input-box with flex: 1 0 auto so the frame always encloses the textarea plus the toolbar; the earlier flex: 1 + min-height: 0 collapsed the border to zero and let text and the toolbar spill outside it - Fix the stop state that never turned red in practice: the .streaming rule was outranked by the generic button background selector - Extend the webview tests, including runtime tests that execute the input script against a real DOM to cover height behavior, send/stop icon toggling, and toolbar placement
|
Thanks for consolidating everything here — the composer redesign (textarea above a bottom toolbar, icon-only send/stop, focus ring) looks clean and is well covered by the new tests. On the native-resizing argument for removing the sidebar handle, though, I have to push back with specifics, because I don't think it holds: 1. VS Code's native resize cannot widen the session list. 2. The "interference with native dragging" claim has no mechanism. Requested change (same as on #5): restore PS. |
|
Got it — I see now, there was a hidden menu there that I'd missed. I'll look into improving this. I might end up moving it somewhere else instead. |
- Restore #sidebar-resize-handle DOM node, CSS, and drag script so the threads panel can be resized inside the webview again - Harden the sidebar drag like the input handle: window-level listeners, mouseleave/blur cleanup, rAF-throttled width writes, is-resizing guard - Persist the sidebar width across sessions via codewhale:sidebarWidth - Hide the handle while #threads-panel is collapsed so a closed sidebar never shows a dead grip - Fix input handle cleanup so it removes the window listeners it registers - Restore and extend test coverage: handle selectors, hardened drag pattern, script count, and collapsed-panel hiding
|
I've added the sidebar-resize-handle back on #9. I also fixed a related bug: previously, the handle would still show up at the far left even when the session panel wasn't open, which got in the way when users tried to resize the chat area. |

This PR improves the CodeWhale VS Code sidebar and input experience.
Changes
Redesign the chat input as a bordered composer with a bottom toolbar.
Move the attachment button and send/stop button into the toolbar.
Replace text labels with inline SVG icons.
Add manual input resizing with persisted height.
Harden resize handling with rAF throttling, window-level listeners, and cleanup on mouseleave/blur.
Remove the previous auto-grow behavior to keep the input height stable while typing.
Move the configuration entry from the webview into the VS Code native sidebar title bar.
Add a native gear action to the view title.
Remove the redundant settings view and webview settings button.
Keep the existing /config command.
Remove the custom sidebar resize handle.
VS Code already provides native sidebar resizing.
The custom resize implementation could interfere with VS Code's native drag behavior, so the redundant handle and its associated code are removed.
Update and extend tests to cover the new input behavior, configuration contribution, and removed webview elements.
Sync package-lock.json to version 0.6.0.