You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[Mobile] The group-chat surfaces are unadapted below 640 px: message rows, composer, attachments and approval cards #1147
The in-repo half of the mobile decision in #647 (PWA first). #647 keeps the half this repository cannot do — the manifest and the icon pair live in the DSH web-frontend package — and stays needs-human; this issue is the part that is ours.
Why this is a real gap and not polish
plugins/social/client.js has exactly one@media block, line :258 (.fs-holdApprove/Reject at 40px). Every other surface this plugin draws — group message rows, the composer and its send button, attachment lines, approval cards — is laid out on desktop widths and simply shrinks below 640 px. core/src/client/mobile.js (MOBILE_MAX_WIDTH = 640, :8) covers core's own surfaces; it does not reach the plugin's.
Scope (one plugin, three paths)
At 375 px and at 640 px, without horizontal scrolling of the message column:
Group message rows — a long unbroken run (a URL, a code block, a Bot's tool output) wraps inside the bubble; the sender label and timestamp do not collide with the text.
Composer and send — the input keeps its usable width with the send button present, both touch targets at least 40 px, and the composer stays above the safe-area inset rather than behind it.
Attachments and approval cards — attachment lines truncate with the file name visible, the card's action row wraps instead of overflowing, and each action is a 40 px+ target (this is the one path :258 already does for held replies — keep it and extend the shape, do not restyle it away).
Acceptance
Each of the three paths gets at least one assertion, not only new CSS. A CSS string assertion in plugins/social/test/ is acceptable if that is what the surface allows — say so in the PR and point at the test. Deleting the new rule must turn exactly that assertion red.
plugins/social stays green with 0 skipped, and core/ is not touched.
No change to what any of these surfaces says or when it appears — layout only.
If a rule cannot be verified in this repo (see the safe-area note below), it does not go in.
Hard constraints
Do not touch the shell or the DSH package.rel=manifest, display, the icons and viewport-fit=cover are DSH's (AGENTS.md hard rule 1). Overriding the shell's <link rel=manifest> from a plugin is the same rule from the other side.
env(safe-area-inset-bottom) is 0 on this stack today. The shipped index.html has width=device-width, initial-scale=1 and no viewport-fit=cover, so core/src/client/mobile.js:19's inset is inert and any new inset-based rule for this plugin would be unverifiable. Write the composer rule so it is correct at inset 0 now and does not depend on the inset; the shell half is tracked in [Mobile] Android 客户端支持 #647.
Branch:dev3/feat/1147-group-phone, from main0978e62d. PR:#1150 @ 7d0e1542.
Scope as written: one phone block in plugins/social/client.js (extending #362's, not a second one), 40 px targets on the surfaces this panel draws, overflow-wrap:anywhere on a held reply's long run, and noenv(safe-area-inset-*) rule — the inset is 0 on this stack because the shipped shell has no viewport-fit=cover, and that half is #647 (needs-human). Each of the three paths has an assertion in plugins/social/test/group-phone.test.js; they are CSS-string assertions, which the issue allows for this package.
core/ untouched, so no ds-bot patch regeneration was involved.
done — merged as c1f2edc6 (squash of 20608864, 2026-10-25T10:39:02Z), which is the current main.
Four closing items, checked on main:
#1147 and #1149 both closed/completed by this merge (the PR carried Fixes #1147 and Fixes #1149 on their own lines).
changelog.d/1147-group-phone-tap-targets.changed.md is on main.
The social.md line is on main, narrowed to what the code does: 40 px buttons and inputs, row controls at least 32 px, the block is the last one in the stylesheet, and the dock's env(safe-area-inset-bottom,0px) reads as a plain 6 px until the shell gains viewport-fit=cover ([Mobile] Android 客户端支持 #647).
agent-working removed here. #647 stays needs-human for the DSH half (192/512 px icon pair, viewport-fit=cover) — nothing in this merge claims the notch is handled.
Activity
Birfy commentedon Oct 25, 2026
Taking it:
Owner: Dev3Branch:
dev3/feat/1147-group-phone, frommain0978e62d. PR: #1150 @7d0e1542.Scope as written: one phone block in
plugins/social/client.js(extending #362's, not a second one), 40 px targets on the surfaces this panel draws,overflow-wrap:anywhereon a held reply's long run, and noenv(safe-area-inset-*)rule — the inset is 0 on this stack because the shipped shell has noviewport-fit=cover, and that half is #647 (needs-human). Each of the three paths has an assertion inplugins/social/test/group-phone.test.js; they are CSS-string assertions, which the issue allows for this package.core/untouched, so nods-botpatch regeneration was involved.fix(social): cascade-safe phone block, and the footers it missed (#1147)
fix(social): one phone block for the panel and the dock (#1147, #1149)
fix(social): rebase the phone block onto 15d7e52 (#1147, #1149)
Birfy commentedon Oct 25, 2026
done— merged asc1f2edc6(squash of20608864, 2026-10-25T10:39:02Z), which is the current main.Four closing items, checked on main:
#1147and#1149bothclosed/completedby this merge (the PR carriedFixes #1147andFixes #1149on their own lines).changelog.d/1147-group-phone-tap-targets.changed.mdis on main.social.mdline is on main, narrowed to what the code does: 40 px buttons and inputs, row controls at least 32 px, the block is the last one in the stylesheet, and the dock'senv(safe-area-inset-bottom,0px)reads as a plain 6 px until the shell gainsviewport-fit=cover([Mobile] Android 客户端支持 #647).@media (max-width:640px)block, at the end of the stylesheet, extending Mobile: PWA first, then native — approvals and reminders on the phone #362's held-reply pair rather than replacing it.agent-workingremoved here.#647staysneeds-humanfor the DSH half (192/512 px icon pair,viewport-fit=cover) — nothing in this merge claims the notch is handled.fix(social): size the group surfaces for a phone (ThinkFlowLab#1147) (T…