From 2eaad8b5aea2fbdd6637bb9f47256ef661a3d373 Mon Sep 17 00:00:00 2001 From: digital-garbage <133010426+digital-garbage@users.noreply.github.com> Date: Wed, 7 Oct 2026 14:38:38 +0300 Subject: [PATCH] =?UTF-8?q?fix:=20=F0=9F=92=A1=20Ideas=20sits=20inside=20i?= =?UTF-8?q?ts=20prompt=20box's=20bottom-right=20corner,=20not=20floating?= =?UTF-8?q?=20over=20the=20controls=20above=20it?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 --- app/ui/features/ideas/index.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/ui/features/ideas/index.js b/app/ui/features/ideas/index.js index b170761f..ef5df62b 100644 --- a/app/ui/features/ideas/index.js +++ b/app/ui/features/ideas/index.js @@ -75,7 +75,9 @@ export default { if (!box || !node) return; const r = box.isConnected ? box.getBoundingClientRect() : null; if (!r || !r.width) return closeBulb(); // gone, or hidden with its panel - Object.assign(node.style, { left: `${Math.max(4, r.right - 40)}px`, top: `${Math.max(4, r.top - 30)}px` }); + // Inside the box's own bottom-right corner (left of the resize grip): on the box it belongs to, never over a neighbour's controls. + const b = node.getBoundingClientRect(); + Object.assign(node.style, { left: `${Math.max(r.left + 4, r.right - b.width - 16)}px`, top: `${Math.max(r.top + 2, r.bottom - b.height - 4)}px` }); } const onFocus = (e) => { const t = e.target; if (t instanceof HTMLTextAreaElement && BOXES.has(t.getAttribute("aria-label"))) { clearTimeout(hold); show(t); } }; const settle = () => { clearTimeout(hold); hold = setTimeout(() => { if (node && box !== document.activeElement && !node.contains(document.activeElement) && !pop) closeBulb(); }, 400); };