Improve edge-docked window behavior (#2779)

* Make edge-docked windows resizable

Add draggable resize seams for left and right docked windows.

Keep the main chat area from getting too narrow and remember each window's dock width.

* Show emoji shortcodes as icons by default

Keep text-only emoji mode opt-in so model output like 😊 goes through the normal emoji renderer.

* Fix dock resize seams and left dock layout

Hide the resize seam when another floating modal is open, and keep the left-docked window from covering the chat area.

* Keep narrow modal tabs usable

* Fix split layout with both edge docks

* Fix left snap after right dock

* Enable left edge snap for all windows

* Tighten dock resize handle observers

* Use edge docking for settings window
This commit is contained in:
Enes Öz
2026-06-05 18:07:08 +03:00
committed by GitHub
parent 8ce945d338
commit 977daf0643
5 changed files with 434 additions and 43 deletions
+5 -5
View File
@@ -93,11 +93,11 @@ export function makeWindowDraggable(modal, options = {}) {
}
const rightDock = enableDock ? makeEdgeDockController(modal, 'right') : null;
// Left dock is opt-in (enableLeftDock). For most windows it's off — the
// sidebar lives on the left, so a left dock collides with it. The email
// window enables it so you can park the message on the left and read it
// while replying in the document on the right.
const leftDock = (enableDock && options.enableLeftDock) ? makeEdgeDockController(modal, 'left') : null;
// Left dock is enabled by default too. modalSnap collapses the wide sidebar
// and anchors the panel beside the icon rail, so it no longer collides with
// the navigation. Callers can still pass enableLeftDock:false for a special
// modal that should only dock right.
const leftDock = (enableDock && options.enableLeftDock !== false) ? makeEdgeDockController(modal, 'left') : null;
// Per-drag state, reset on mousedown.
let dragging = false;