Polish composer activity layout and transitions - #3151
Conversation
6f1f6cd to
c58ac5d
Compare
tellaho
left a comment
There was a problem hiding this comment.
🤖 Requesting changes on four blocking seams; the overall dock/CSS-variable architecture looks sound.
-
Preserve
useComposerHeightPadding’s growth-only fallback contract. Thepadding > previousPadding→padding !== previousPaddingchange makes composer shrink force-scroll bothMessageThreadPanelandInboxDetailPaneto the absolute bottom (immediately and again on rAF), even though neither supplies the new semanticsettleAtBottomcallback. A reader within the 32px near-bottom threshold can therefore be pulled down when activity disappears. Blame/history confirms the growth-only condition was deliberately introduced in #806 and preserved through #941/#1698, and the hook documentation still says it follows when padding increases. Please either scope shrink settling to the channel consumer that explicitly suppliessettleAtBottom, or give the other consumers equivalent semantic anchoring plus shrink regression coverage and update the contract documentation. -
Do not use
toolbarExtraActionstruthiness as thread activity state. InMessageThreadPanel,Boolean(toolbarExtraActions)now controls whether the activity rail is reserved, while the prop’s name/type still describe a genericReactNode;MessageComposerPropsalso has a differenttoolbarExtraActionsthat genuinely renders in the toolbar. A future static action would permanently open the rail. Please represent activity explicitly and rename/separate the accessory content from its visibility signal. -
Make dock mode explicit instead of encoding it in
bottomAccessoryVisible === undefined.undefinedmeans legacy blur ownership/no quiet spacer, while bothtrueandfalseopt into dock blur ownership and spacer behavior. That is a hidden tri-state behind a boolean-shaped prop and is duplicated acrossMessageComposerandComposerDockToolbar. Please separate/rename the mode and visibility contracts sofalsecannot unexpectedly alter layout/blur ownership. -
Restore the contract documentation lost in the
MessageComposerPropsextraction. The newMessageComposer.types.tsdrops the existing documentation forautoSubmitDraftKey,editTarget.imetaMedia,onEditLastOwnMessage, andonCaptureSendContext. Those comments describe fire-once, NIP-92, return-value, and capture-before-await behavior that callers need to preserve.
Signed-off-by: morgmart <98432065+morgmart@users.noreply.github.com>
Signed-off-by: morgmart <98432065+morgmart@users.noreply.github.com>
Signed-off-by: morgmart <98432065+morgmart@users.noreply.github.com>
Signed-off-by: morgmart <98432065+morgmart@users.noreply.github.com>
c58ac5d to
fbc7f7d
Compare
|
🤖 Addressed all four requested seams in
Also rebased onto latest Verification on the final rebased tree:
The full integration pre-push command was blocked before tests by stale local Postgres migration state ( |
tellaho
left a comment
There was a problem hiding this comment.
🤖 Re-reviewed at fbc7f7d2ad5a44bf70a33a441098fd0c502a1804. All four requested changes are addressed:
- composer shrink now delegates only to an explicit semantic bottom owner; legacy thread/inbox fallback remains initial-measurement/growth-only, with regression coverage
- thread activity visibility and content are explicit, separate contracts
- dock vs. standalone layout/blur ownership is explicit rather than hidden in an optional boolean
- the extracted composer prop contracts are restored
I also reviewed the scroll-policy/viewport-resize extraction introduced to stay within the file limit; it preserves the existing behavior and keeps its policy tests. Exact-head CI is green. Approved.
…log-sharing * origin/main: Polish composer activity layout and transitions (#3151)
* origin/main: (70 commits) feat(relay): make Postgres pool size configurable, default 50 (#3191) Publish symbol-bearing debug relay images (#3250) feat(tracing): add datastore tracing plumbing (#2760) fix(buzz-acp): accept id-keyed config options when resolving model switch (#2795) fix(desktop): probe legacy Goose install dir on Windows (#3248) refactor(desktop): extract install command execution into install_exec (#3251) Polish composer activity layout and transitions (#3151) feat(invites): add use-limited invite links (#3141) fix(node): bump Buzz-supplied Node runtimes past OpenClaw's >=24.15.0 floor (#3218) fix(desktop): preserve thread anchor through layout reflow (#3212) feat(search): parse from:/in:/after:/before: and pass them in the filter (#2871) fix(desktop): fetch join policies through native networking (#2862) fix(desktop): republish agent identity records when a persona rename propagates (#2607) fix(desktop): keep project Inbox previews compact (#3193) Inbox refactor (#2045) Fix composer selection formatting and drop overlay (#3172) Refine pending message status (#3153) feat(admin): show reported message content in report detail (#3149) fix(desktop): recover full local storage on startup (#3182) Replace mobile reconnect banners with skeleton shimmer (#3143) ... Co-authored-by: Tyler Longwell <tlongwell@block.xyz> Signed-off-by: Tyler Longwell <tlongwell@block.xyz>
…y-to-env * origin/main: (22 commits) Polish mobile message and search layouts (block#3121) Add mobile message image galleries (block#3312) chore(release): release Buzz Desktop version 0.5.0 (block#3213) feat(relay): make Postgres pool size configurable, default 50 (block#3191) Publish symbol-bearing debug relay images (block#3250) feat(tracing): add datastore tracing plumbing (block#2760) fix(buzz-acp): accept id-keyed config options when resolving model switch (block#2795) fix(desktop): probe legacy Goose install dir on Windows (block#3248) refactor(desktop): extract install command execution into install_exec (block#3251) Polish composer activity layout and transitions (block#3151) feat(invites): add use-limited invite links (block#3141) fix(node): bump Buzz-supplied Node runtimes past OpenClaw's >=24.15.0 floor (block#3218) fix(desktop): preserve thread anchor through layout reflow (block#3212) feat(search): parse from:/in:/after:/before: and pass them in the filter (block#2871) fix(desktop): fetch join policies through native networking (block#2862) fix(desktop): republish agent identity records when a persona rename propagates (block#2607) fix(desktop): keep project Inbox previews compact (block#3193) Inbox refactor (block#2045) Fix composer selection formatting and drop overlay (block#3172) Refine pending message status (block#3153) ... Signed-off-by: npub1x4hk035p3p9q39a3fcrd2fe30lpkrhr5dwe0cqzzjphxyyh8m0gsq4vqap <356f67c681884a0897b14e06d527317fc361dc746bb2fc0042906e6212e7dbd1@buzz.block.builderlab.xyz> Co-authored-by: npub1x4hk035p3p9q39a3fcrd2fe30lpkrhr5dwe0cqzzjphxyyh8m0gsq4vqap <356f67c681884a0897b14e06d527317fc361dc746bb2fc0042906e6212e7dbd1@buzz.block.builderlab.xyz>
Summary
This takes a different, systemic route from the spacing reduction proposed in #2602 and supersedes that approach.
Related issue
Related PR: #2602
Testing
./scripts/check-branch-skew.shjust desktop-checkjust desktop-test— 3,638 passinguseAnchoredScroll.test.mjs— virtualized viewport resize follows the explicit bottom statemain; the exactactivity_page_test.dartcompiler failure reproduces on untouchedorigin/mainScreen.Recording.2026-07-26.at.6.31.44.PM.mov