-
Notifications
You must be signed in to change notification settings - Fork 3k
feat(web-shell): add mobile welcome composer slots #6584
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
23d6e76
6718aae
9440bf8
5e63fea
203ebdf
633da7f
044d451
c1f03fa
aa52da8
3b823ae
e21a816
5ac6446
f325d42
ea60fc1
543b37d
5b0e37b
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
@@ -701,6 +701,14 @@ | |||||||||||||
| padding: 0; | ||||||||||||||
| } | ||||||||||||||
|
|
||||||||||||||
| .composerHeader { | ||||||||||||||
| margin-bottom: 8px; | ||||||||||||||
| } | ||||||||||||||
|
|
||||||||||||||
| .customFooter { | ||||||||||||||
| flex-shrink: 0; | ||||||||||||||
| } | ||||||||||||||
|
|
||||||||||||||
| /* Esc-clear hint, shown in the composer's top status slot (where the streaming | ||||||||||||||
| loader sits) — the two never coexist, so it stays clear of the queue. */ | ||||||||||||||
| .escClearStatus { | ||||||||||||||
|
|
@@ -714,6 +722,76 @@ | |||||||||||||
| padding: 12px 0 0; | ||||||||||||||
| } | ||||||||||||||
|
|
||||||||||||||
| .mobileWelcomeFooterMiddle { | ||||||||||||||
| display: none; | ||||||||||||||
| } | ||||||||||||||
|
|
||||||||||||||
| .mobileWelcomeGroup { | ||||||||||||||
| display: contents; | ||||||||||||||
| } | ||||||||||||||
|
|
||||||||||||||
| @media (max-width: 760px) { | ||||||||||||||
| .appChatEmpty .chatPaneWithMobileComposerBottom { | ||||||||||||||
| position: relative; | ||||||||||||||
| overflow: hidden; | ||||||||||||||
| } | ||||||||||||||
|
|
||||||||||||||
| .appChatEmpty .chatViewWithMobileComposerBottom .footer { | ||||||||||||||
| position: absolute; | ||||||||||||||
| right: 0; | ||||||||||||||
| bottom: 0; | ||||||||||||||
| left: 0; | ||||||||||||||
| margin-top: 0; | ||||||||||||||
| } | ||||||||||||||
|
|
||||||||||||||
| .appChatEmpty .mobileWelcomeGroup { | ||||||||||||||
| display: flex; | ||||||||||||||
| flex-direction: column; | ||||||||||||||
| } | ||||||||||||||
|
|
||||||||||||||
| .appChatEmpty .chatViewWithWelcomeMiddle .footerWithCustomFooter { | ||||||||||||||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. [Critical] The mobile welcome-middle layout CSS rules ( This creates an undocumented coupling between
Suggested change
Or document the dependency in the — qwen3.7-max via Qwen Code /review |
||||||||||||||
| display: contents; | ||||||||||||||
| } | ||||||||||||||
|
|
||||||||||||||
| .appChatEmpty .chatViewWithWelcomeMiddle .footerWithCustomFooter .composer { | ||||||||||||||
| order: 2; | ||||||||||||||
| width: min(100%, var(--chat-shell-width)); | ||||||||||||||
| margin: 0 auto; | ||||||||||||||
| padding-right: 20px; | ||||||||||||||
| padding-left: 20px; | ||||||||||||||
| } | ||||||||||||||
|
|
||||||||||||||
| .appChatEmpty .chatViewWithWelcomeMiddle .mobileWelcomeFooterMiddle { | ||||||||||||||
| display: flex; | ||||||||||||||
| flex: 0 0 auto; | ||||||||||||||
| align-items: flex-start; | ||||||||||||||
| justify-content: center; | ||||||||||||||
| width: min(100%, var(--chat-shell-width)); | ||||||||||||||
| margin: 0 auto; | ||||||||||||||
| padding-right: 20px; | ||||||||||||||
| padding-left: 20px; | ||||||||||||||
| } | ||||||||||||||
|
|
||||||||||||||
| .appChatEmpty .chatViewWithWelcomeMiddle .customFooter { | ||||||||||||||
| order: 1; | ||||||||||||||
| display: flex; | ||||||||||||||
| flex: 0 0 auto; | ||||||||||||||
| align-items: flex-start; | ||||||||||||||
| justify-content: center; | ||||||||||||||
| width: min(100%, var(--chat-shell-width)); | ||||||||||||||
| margin: 0 auto; | ||||||||||||||
| padding-right: 20px; | ||||||||||||||
| padding-left: 20px; | ||||||||||||||
| } | ||||||||||||||
| .desktopWelcomeFooter { | ||||||||||||||
| display: none; | ||||||||||||||
| } | ||||||||||||||
|
|
||||||||||||||
| .emptyWelcomeFooter { | ||||||||||||||
| text-align: center; | ||||||||||||||
| } | ||||||||||||||
| } | ||||||||||||||
|
|
||||||||||||||
| .queuedPrompts { | ||||||||||||||
| display: flex; | ||||||||||||||
| flex-direction: column; | ||||||||||||||
|
|
||||||||||||||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[Critical] The footer div receives both
position: absolute(from.chatViewWithMobileComposerBottom .footerat line ~708) anddisplay: contents(from.chatViewWithWelcomeMiddle .footerWithCustomFooterhere) on the same code path when bothhasMobileComposerBottomandhasWelcomeMiddleare true.Per CSS Display Level 3 spec:
display: contentson an absolutely positioned element computes tonone— the footer and all its children (composer, customFooter, scroll-to-bottom button, queued prompts) are removed from the render tree on mobile (≤760px).Suggested fix: Don't combine
position: absoluteanddisplay: contentson the same element. Remove theposition: absoluterule for.footerwhen.footerWithCustomFooteris present, and rely solely ondisplay: contents+ flexorderfor positioning.— qwen3.7-max via Qwen Code /review