fix(web): keep composer stable during quick search - #4298
Conversation
|
Hi @Diyoncrz18! 👋 Thanks for jumping on the quick-search/composer interaction here — keeping the overlay focus isolated from the fixed composer is the right direction. I’ve routed this through the normal review queue now, and I’ll keep the PR state tidy on our side while reviewers take a pass. ❤️ |
lefarcen
left a comment
There was a problem hiding this comment.
Hey @Diyoncrz18, the bug itself is clear from your write-up, and the repro path is easy to follow. Before pool review picks this up, could you reshape the description into the current PR template with Why, What users will see, Surface area, and Validation sections? That makes the user-facing impact and rollout surface faster to scan.
|
🧪 This PR changes a visible quick-search/composer interaction, so it needs a manual QA pass before merge — please hold off self-merging for now; we’ll loop QA in once it’s merge-ready (and design has signed off). |
PerishCode
left a comment
There was a problem hiding this comment.
@Diyoncrz18 I reviewed the quick-search/composer focus fix across FileWorkspace, QuickSwitcher, the fixed-composer CSS, and the added regression coverage. The document marker is cleaned up on close/unmount, the palette input takes focus when mounted, and the CSS suppression stays scoped to the fixed composer while quick search is open. Nice focused fix; thanks for keeping the behavior and coverage tight.
|
Thanks! I reshaped the PR description into the requested Why / What users will see / Surface area / Validation sections. |
|
Hey @Diyoncrz18 — thanks for tightening that up. The rewrite is much easier to scan now. There are just two template bits still missing before the body is fully aligned:
After that, the PR body side should be in good shape from my end. |
|
Thanks! I added the Surface area checkboxes and a Bug fix verification note covering the red→green seam. |
|
Hey @Diyoncrz18 — perfect, thank you. The PR body reads cleanly now and the template side looks complete from my end. At this point I’m just leaving the existing design → QA handoff sequence in place. |
| body.od-quick-switcher-open .chat-composer-fixed-layer .composer-shell:focus-within { | ||
| border-color: var(--border); | ||
| box-shadow: none; | ||
| } |
There was a problem hiding this comment.
This still leaves the reported visual state partially unfixed. Once QuickSwitcher focuses .qs-input, the fixed composer no longer matches :focus-within, so these rules stop applying while the composer layer and its child controls remain fully visible/interactive in the lower-left corner. The quick-search-open state should neutralize the fixed composer layer more broadly (for example inactive/pointer/hover/active chrome, depending on the intended design), and the regression test should assert the real composer visual state rather than only the body marker and input focus.

|
Hey @Diyoncrz18 — @AmyShang-alt has left some QA notes above (on 💡 To drive this PR to merge hands-free, paste this into your AI coding agent (Claude Code / Codex / opencode / Cursor …): |
|
Updated the QuickSwitcher open-state handling so the fixed composer layer is neutralized more broadly while the command palette is open. Changes:
Validation:
|
|
Hey @Diyoncrz18! @chaoxiaoche is asking for a quick visual before signing off on the design side — a screenshot or short GIF showing the QuickSwitcher/composer interaction in three states:
Nothing elaborate — even a screen-recorded GIF of the actual interaction works. Once she can see the before/after, she can give the design approval. |
|
@Diyoncrz18 Re-tested the latest build ( Repro:
Actual: Expected: The latest update fixes pointer interaction and hover/focus/drag chrome, but it does not address the bright I can add a screenshot showing the remaining light-mode state shortly.
|
|
Thanks for the follow-up push, @Diyoncrz18! The light-mode composer input surface iteration looks like the right direction. The diff has grown quite a bit with this round so we've bumped the label to |
Updated the fix and pushed commit The QuickSwitcher open state now also de-emphasizes the inner composer input surface in light mode, so the lower-left composer no longer appears as a bright active input while QuickSwitcher is focused. The composer still restores normally after dismissal. Validation:
I also verified the light-mode interaction visually and attached the screenshot/GIF for review. |
|
@Diyoncrz18 Design has signed off on the visual changes on this head — the composer de-emphasis across both dark and light mode looks good. 🎉 Next up is a code reviewer pass (to clear the merge gate) and then QA validation. Nothing needed from you right now — I'll update here once we're at the QA stage. |
|
@Diyoncrz18 friendly reminder: this PR has been waiting on an author response for more than 3 days after reviewer or maintainer feedback. When you have a chance, please reply here or push an update. To keep the queue manageable, PRs with no author activity for more than 5 days after feedback may be closed automatically, but they can be reopened when work resumes. |
|
Closing this PR for now because it has been waiting on an author response for more than 5 days after reviewer or maintainer feedback. This is only a queue-management step, not a rejection of the work. If you would like to continue, please leave a comment or push an update and reopen the PR when ready. |
|
Closing this PR for now because it has been waiting on an author response for more than 5 days after reviewer or maintainer feedback. This is only a queue-management step, not a rejection of the work. If you would like to continue, please leave a comment or push an update and reopen the PR when ready. |
AmyShang-alt
left a comment
There was a problem hiding this comment.
QA 验收通过。\n\n处理冲突时将 PR #4298 合并到最新 main,保留 quick search 打开时给 body 添加 od-quick-switcher-open 的逻辑,同时保留 main 新增的 sketch autosave 常量。\n\n本地验证:\n- pnpm --dir apps/web exec vitest run -c vitest.config.ts --maxWorkers=2 tests/components/FileWorkspace.test.tsx tests/components/QuickSwitcher.test.tsx tests/styles/workspace-tabs-chrome.test.ts:90 passed\n- pnpm --filter @open-design/web typecheck:通过\n- git diff --check / git diff --cached --check:通过
|
All gates look green here, so this is ready for maintainer merge. Thanks @Diyoncrz18, @PerishCode, and @AmyShang-alt! |
* fix(web): keep composer stable during quick search * Fix quick switcher composer visual state * Fix quick switcher composer dim state --------- Co-authored-by: Amy <1184569493@qq.com>
* fix(web): keep composer stable during quick search * Fix quick switcher composer visual state * Fix quick switcher composer dim state --------- Co-authored-by: Amy <1184569493@qq.com>

















































Fixes #4148
Why
Opening quick file search with Command+P / Ctrl+P could leave the lower-left fixed composer visually affected while the user was interacting with the search overlay.
The composer could keep focus/highlight/layout styling even though quick search was the active interaction surface. This made the workspace look broken and distracted from file search.
What users will see
Surface area
Changed files:
apps/web/src/components/QuickSwitcher.tsxapps/web/src/components/FileWorkspace.tsxapps/web/src/styles/viewer/routines.cssapps/web/tests/components/FileWorkspace.test.tsxapps/web/tests/styles/workspace-tabs-chrome.test.tsBug fix verification
Regression path validated:
Validation
pnpm --filter @open-design/web test -- tests/components/FileWorkspace.test.tsx tests/components/QuickSwitcher.test.tsx tests/styles/workspace-tabs-chrome.test.ts pnpm --filter @open-design/web typecheck pnpm --filter @open-design/web build git diff --checkNot run locally: