From ab65fe164837c4379ba40d4af44c3b500b45a4ac Mon Sep 17 00:00:00 2001 From: Brian Love Date: Wed, 13 May 2026 17:43:46 -0700 Subject: [PATCH 1/3] docs: spec for chat-debug toggle to bottom-left + missing sidebar launcher Two bugs found via browser smoke against demo.cacheplane.ai: - popup launcher occluded by debug toggle at same bottom-right position - chat-sidebar composition is missing the launcher button entirely Fix: move debug pill to bottom-left, add launcher to chat-sidebar. Co-Authored-By: Claude Opus 4.7 (1M context) --- ...6-05-13-chat-debug-launcher-left-design.md | 111 ++++++++++++++++++ 1 file changed, 111 insertions(+) create mode 100644 docs/superpowers/specs/2026-05-13-chat-debug-launcher-left-design.md diff --git a/docs/superpowers/specs/2026-05-13-chat-debug-launcher-left-design.md b/docs/superpowers/specs/2026-05-13-chat-debug-launcher-left-design.md new file mode 100644 index 00000000..873dcb1d --- /dev/null +++ b/docs/superpowers/specs/2026-05-13-chat-debug-launcher-left-design.md @@ -0,0 +1,111 @@ +# UI Polish — Chat Debug to Bottom-Left + Missing Sidebar Launcher — Design + +**Status:** Approved +**Date:** 2026-05-13 +**Goal:** Fix two UI bugs found in the live `demo.cacheplane.ai` smoke run: (1) the `chat-debug` toggle pill occludes the popup-mode chat launcher at the bottom-right corner; (2) the sidebar-mode composition is missing its chat launcher button entirely. + +## Background + +`demo.cacheplane.ai` (Phase 2 of the canonical-demo deployment) shipped successfully and the proxy / streaming / state pipeline works end-to-end. A browser-based smoke run surfaced two bugs not catchable via API smoke: + +1. **Popup launcher occluded by debug toggle.** Both `chat-popup`'s launcher (white circle with chat icon, 56×56) and `chat-debug`'s status pill (36×36, green dot) anchor to `position: fixed; bottom: 20px; right: 20px`. The debug pill has `z-index: 990` and renders later in the DOM, so click events at that corner reach the debug pill, not the chat launcher. The popup never opens via its intended button. Verified by DOM inspection at the click point — `elementsFromPoint` returns `[