fix(web): align composer notices and stash - #8890

Merged
juliusmarminge merged 20 commits into
pingdotgg:mainfrom
Bil0000:fix/composer-banner-alignment
Sep 2, 2026
Merged

fix(web): align composer notices and stash#8890
juliusmarminge merged 20 commits into
pingdotgg:mainfrom
Bil0000:fix/composer-banner-alignment

Conversation

@Bil0000

@Bil0000Bil0000 commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Fixes composer notice spacing and alignment without changing unrelated composer surfaces.

  • keeps height, padding, icon position, and one-row text in ComposerBanner and ComposerBannerStack
  • keeps single actions inline on narrow composers and left-aligns multi-action rows beneath the title
  • replaces narrow truncated descriptions with an info tooltip containing the complete copy
  • removes per-banner layout overrides so new notices inherit the same safe layout
  • shortens copy for connection, update, resume, woke, snoozed, and settled notices
  • applies the shared layout to connection, update, background activity, resume, thread-state, branch, task, and activity notices
  • keeps notice actions ghosted and aligns notice icons with stash/task tabs

Verified with focused lint, web typecheck, 6 test files (213 tests), and real-browser passes at 768 px and 375 px. No horizontal overflow.

Before / after

Each row uses the same six fixed-height case slots in the same order, with every composer pinned to the slot bottom. Before is merge-base main at d937e30. After is the current PR head.

Each fixture uses copy checked against its ChatView call sites, the production composer wrapper hierarchy, the production stash shoulder, and that checkout's ComposerBanner and ComposerBannerStack components.

Wide composer, 768px

Before, merge-base mainAfter, PR head
Before, merge-base main, wide composerAfter, PR head, wide composer

Narrow composer, 375px

Before, merge-base mainAfter, current PR head
Before, merge-base main, narrow composerAfter, current PR head, responsive composer

Expanded three-banner stack, wide

BeforeAfter
Before, expanded stack, wide composerAfter, expanded stack, wide composer

Expanded three-banner stack, narrow

BeforeAfter
Before, expanded stack, narrow composerAfter, expanded stack, narrow composer

Cases cover environment offline with and without stash, compaction, settled thread with stash, connecting with no actions, and an expanded woke, offline, and compaction stack with stash count 99.

Built with GPT-5.6 in Codex.

Note

Align composer notices and stash with comfortable density and ghost button variants

  • Adds a comfortable density option to ComposerBanner.Root with smaller block padding; applies it to stack alerts, ComposerStashBadge, and tab-placement ComposerTasksBadge
  • Reworks ComposerBannerStackAlert to use fixed-height icon columns, single-line titles, and an info-icon popover that reveals hidden descriptions on screens up to 400px
  • Simplifies serverUpdateGuidance to two fixed results: desktop-managed returns desktop-app guidance, all other self-update capabilities return generic "Update to stay in sync" guidance; the server-label parameter is removed
  • Shortens connection-status banner copy and switches banner action controls (reconnect, Connections, ServerUpdateAction) to the ghost button variant; ServerUpdateAction gains a configurable variant prop defaulting to outline
  • Behavioral Change: serverUpdateGuidance signature drops the server-label argument; callers in ChatView.tsx and tests in versionSkew.test.ts are updated, but any out-of-tree consumers will break

Macroscope summarized e77029f.

@coderabbitai

coderabbitaiBot commented Aug 31, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: d5d13c3a-df29-452d-9b83-06df4a0d70cd

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Warning

Your free Security trial is over. An organization admin can activate Security or dismiss this notice.


Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Aug 31, 2026

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Two alignment regressions from the shared ComposerBanner geometry change and the description move. Details inline.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
Comment threadapps/web/src/components/chat/ComposerBanner.tsx Outdated
@macroscopeapp

macroscopeappBot commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Not approved

Macroscope's review found this PR not approvable — This PR changes the shipped presentation of existing composer notices, stash/task badges, and server-update actions, including spacing, button styling, responsive behavior, and narrow-screen detail access. Because these are customer-facing default changes across shared composer components, the changes should receive human review.

You can add or adjust custom eligibility rules. Learn more.

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Two alignment issues remain in the reworked ComposerBannerStackAlert row.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One new alignment regression from the reworked header row; the previously reported dismiss/action alignment for notices with a description is still open.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
macroscopeapp[bot]
macroscopeappBot previously approved these changes Aug 31, 2026
@macroscopeapp
macroscopeappBot dismissed their stale reviewAugust 31, 2026 15:49

Dismissing prior approval to re-evaluate a03ab91

@github-actionsgithub-actionsBot added size:M 30-99 changed lines (additions + deletions). and removed size:S 10-29 changed lines (additions + deletions). labels Aug 31, 2026

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One finding on the description layout: the alert call site now overrides ComposerBanner.Root's vertical padding with hardcoded 3px values that re-derive the primitive's attachment-overlap calc. Details inline.

Note also that the icon/actions alignment concern raised on the previous commits is unchanged: with a description, ComposerBanner.Icon is pinned to the first line (h-lh self-start) while ComposerBanner.Actions stays items-center against the whole title+description block, so the buttons and dismiss control still drift below the title line. Not re-commenting inline, but it is still worth resolving with the same fix discussed earlier.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
@github-actionsgithub-actionsBot added size:S 10-29 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). labels Sep 1, 2026
macroscopeapp[bot]
macroscopeappBot previously approved these changes Sep 1, 2026
@Bil0000Bil0000 changed the title fix(web): align composer notice controlsfix(web): align composer notices without resizing stashSep 1, 2026
Comment threadapps/web/src/components/chat/ComposerBanner.tsx Outdated
Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
@macroscopeapp
macroscopeappBot dismissed their stale reviewSeptember 1, 2026 22:47

Dismissing prior approval to re-evaluate 73e2cbe

@github-actionsgithub-actionsBot added size:M 30-99 changed lines (additions + deletions). and removed size:S 10-29 changed lines (additions + deletions). labels Sep 1, 2026
@Bil0000Bil0000 changed the title fix(web): align composer notices without resizing stashfix(web): align composer notices and stashSep 1, 2026

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Both findings are the same ownership rule: --composer-banner-padding-block is ComposerBanner.Root's variable, and it is now being set from two call sites with a magic --spacing(1.25).

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/ChatView.tsx Outdated
Comment threadapps/web/src/components/chat/ComposerStashBadge.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also still open from the previous commit and unchanged here: the call-site --composer-banner-padding-block overrides in ChatView.tsx (settled-thread notice) and ComposerStashBadge.tsx. Not re-commenting inline — see the existing threads.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). labels Sep 2, 2026

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Four findings on the reworked single-line notice row and its call sites. The earlier icon/action alignment threads look settled by the now always-single-line row; these are new.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
Comment threadapps/web/src/components/ChatView.tsx Outdated
Comment threadapps/web/src/components/chat/ComposerBanner.tsx Outdated
Comment threadapps/web/src/components/ChatView.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The four findings from the previous commit are addressed. One new issue in the reworked single-line row, inline.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
@juliusmarminge
juliusmarmingeforce-pushed the fix/composer-banner-alignment branch from 35a1598 to 5f2019bCompareSeptember 2, 2026 02:26
@macroscopeapp
macroscopeappBot dismissed their stale reviewSeptember 2, 2026 02:27

Dismissing prior approval to re-evaluate 5f2019b

macroscopeapp[bot]
macroscopeappBot previously approved these changes Sep 2, 2026
@juliusmarminge
juliusmarmingeforce-pushed the fix/composer-banner-alignment branch 2 times, most recently from cd1100d to 7e08502CompareSeptember 2, 2026 03:22
@macroscopeapp
macroscopeappBot dismissed their stale reviewSeptember 2, 2026 03:22

Dismissing prior approval to re-evaluate 7e08502

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Two findings on the narrow-width rework in this commit; the ServerUpdateAction variant default from the previous commit is addressed.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
Comment threadapps/web/src/components/chat/ComposerBanner.tsx Outdated
@juliusmarminge
juliusmarmingeforce-pushed the fix/composer-banner-alignment branch from d244ca6 to e77029fCompareSeptember 2, 2026 03:53
@juliusmarminge
juliusmarminge merged commit e9db39c into pingdotgg:mainSep 2, 2026
26 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@Bil0000@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

fix(web): align composer notices and stash - #8890

Merged
juliusmarminge merged 20 commits into
pingdotgg:mainfrom
Bil0000:fix/composer-banner-alignment
Sep 2, 2026
Merged

fix(web): align composer notices and stash#8890
juliusmarminge merged 20 commits into
pingdotgg:mainfrom
Bil0000:fix/composer-banner-alignment

Conversation

@Bil0000

@Bil0000Bil0000 commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Fixes composer notice spacing and alignment without changing unrelated composer surfaces.

  • keeps height, padding, icon position, and one-row text in ComposerBanner and ComposerBannerStack
  • keeps single actions inline on narrow composers and left-aligns multi-action rows beneath the title
  • replaces narrow truncated descriptions with an info tooltip containing the complete copy
  • removes per-banner layout overrides so new notices inherit the same safe layout
  • shortens copy for connection, update, resume, woke, snoozed, and settled notices
  • applies the shared layout to connection, update, background activity, resume, thread-state, branch, task, and activity notices
  • keeps notice actions ghosted and aligns notice icons with stash/task tabs

Verified with focused lint, web typecheck, 6 test files (213 tests), and real-browser passes at 768 px and 375 px. No horizontal overflow.

Before / after

Each row uses the same six fixed-height case slots in the same order, with every composer pinned to the slot bottom. Before is merge-base main at d937e30. After is the current PR head.

Each fixture uses copy checked against its ChatView call sites, the production composer wrapper hierarchy, the production stash shoulder, and that checkout's ComposerBanner and ComposerBannerStack components.

Wide composer, 768px

Before, merge-base mainAfter, PR head
Before, merge-base main, wide composerAfter, PR head, wide composer

Narrow composer, 375px

Before, merge-base mainAfter, current PR head
Before, merge-base main, narrow composerAfter, current PR head, responsive composer

Expanded three-banner stack, wide

BeforeAfter
Before, expanded stack, wide composerAfter, expanded stack, wide composer

Expanded three-banner stack, narrow

BeforeAfter
Before, expanded stack, narrow composerAfter, expanded stack, narrow composer

Cases cover environment offline with and without stash, compaction, settled thread with stash, connecting with no actions, and an expanded woke, offline, and compaction stack with stash count 99.

Built with GPT-5.6 in Codex.

Note

Align composer notices and stash with comfortable density and ghost button variants

  • Adds a comfortable density option to ComposerBanner.Root with smaller block padding; applies it to stack alerts, ComposerStashBadge, and tab-placement ComposerTasksBadge
  • Reworks ComposerBannerStackAlert to use fixed-height icon columns, single-line titles, and an info-icon popover that reveals hidden descriptions on screens up to 400px
  • Simplifies serverUpdateGuidance to two fixed results: desktop-managed returns desktop-app guidance, all other self-update capabilities return generic "Update to stay in sync" guidance; the server-label parameter is removed
  • Shortens connection-status banner copy and switches banner action controls (reconnect, Connections, ServerUpdateAction) to the ghost button variant; ServerUpdateAction gains a configurable variant prop defaulting to outline
  • Behavioral Change: serverUpdateGuidance signature drops the server-label argument; callers in ChatView.tsx and tests in versionSkew.test.ts are updated, but any out-of-tree consumers will break

Macroscope summarized e77029f.

@coderabbitai

coderabbitaiBot commented Aug 31, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: d5d13c3a-df29-452d-9b83-06df4a0d70cd

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Warning

Your free Security trial is over. An organization admin can activate Security or dismiss this notice.


Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Aug 31, 2026

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Two alignment regressions from the shared ComposerBanner geometry change and the description move. Details inline.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
Comment threadapps/web/src/components/chat/ComposerBanner.tsx Outdated
@macroscopeapp

macroscopeappBot commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Not approved

Macroscope's review found this PR not approvable — This PR changes the shipped presentation of existing composer notices, stash/task badges, and server-update actions, including spacing, button styling, responsive behavior, and narrow-screen detail access. Because these are customer-facing default changes across shared composer components, the changes should receive human review.

You can add or adjust custom eligibility rules. Learn more.

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Two alignment issues remain in the reworked ComposerBannerStackAlert row.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One new alignment regression from the reworked header row; the previously reported dismiss/action alignment for notices with a description is still open.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
macroscopeapp[bot]
macroscopeappBot previously approved these changes Aug 31, 2026
@macroscopeapp
macroscopeappBot dismissed their stale reviewAugust 31, 2026 15:49

Dismissing prior approval to re-evaluate a03ab91

@github-actionsgithub-actionsBot added size:M 30-99 changed lines (additions + deletions). and removed size:S 10-29 changed lines (additions + deletions). labels Aug 31, 2026

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One finding on the description layout: the alert call site now overrides ComposerBanner.Root's vertical padding with hardcoded 3px values that re-derive the primitive's attachment-overlap calc. Details inline.

Note also that the icon/actions alignment concern raised on the previous commits is unchanged: with a description, ComposerBanner.Icon is pinned to the first line (h-lh self-start) while ComposerBanner.Actions stays items-center against the whole title+description block, so the buttons and dismiss control still drift below the title line. Not re-commenting inline, but it is still worth resolving with the same fix discussed earlier.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
@github-actionsgithub-actionsBot added size:S 10-29 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). labels Sep 1, 2026
macroscopeapp[bot]
macroscopeappBot previously approved these changes Sep 1, 2026
@Bil0000Bil0000 changed the title fix(web): align composer notice controlsfix(web): align composer notices without resizing stashSep 1, 2026
Comment threadapps/web/src/components/chat/ComposerBanner.tsx Outdated
Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
@macroscopeapp
macroscopeappBot dismissed their stale reviewSeptember 1, 2026 22:47

Dismissing prior approval to re-evaluate 73e2cbe

@github-actionsgithub-actionsBot added size:M 30-99 changed lines (additions + deletions). and removed size:S 10-29 changed lines (additions + deletions). labels Sep 1, 2026
@Bil0000Bil0000 changed the title fix(web): align composer notices without resizing stashfix(web): align composer notices and stashSep 1, 2026

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Both findings are the same ownership rule: --composer-banner-padding-block is ComposerBanner.Root's variable, and it is now being set from two call sites with a magic --spacing(1.25).

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/ChatView.tsx Outdated
Comment threadapps/web/src/components/chat/ComposerStashBadge.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also still open from the previous commit and unchanged here: the call-site --composer-banner-padding-block overrides in ChatView.tsx (settled-thread notice) and ComposerStashBadge.tsx. Not re-commenting inline — see the existing threads.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). labels Sep 2, 2026

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Four findings on the reworked single-line notice row and its call sites. The earlier icon/action alignment threads look settled by the now always-single-line row; these are new.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
Comment threadapps/web/src/components/ChatView.tsx Outdated
Comment threadapps/web/src/components/chat/ComposerBanner.tsx Outdated
Comment threadapps/web/src/components/ChatView.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The four findings from the previous commit are addressed. One new issue in the reworked single-line row, inline.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
@juliusmarminge
juliusmarmingeforce-pushed the fix/composer-banner-alignment branch from 35a1598 to 5f2019bCompareSeptember 2, 2026 02:26
@macroscopeapp
macroscopeappBot dismissed their stale reviewSeptember 2, 2026 02:27

Dismissing prior approval to re-evaluate 5f2019b

macroscopeapp[bot]
macroscopeappBot previously approved these changes Sep 2, 2026
@juliusmarminge
juliusmarmingeforce-pushed the fix/composer-banner-alignment branch 2 times, most recently from cd1100d to 7e08502CompareSeptember 2, 2026 03:22
@macroscopeapp
macroscopeappBot dismissed their stale reviewSeptember 2, 2026 03:22

Dismissing prior approval to re-evaluate 7e08502

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Two findings on the narrow-width rework in this commit; the ServerUpdateAction variant default from the previous commit is addressed.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
Comment threadapps/web/src/components/chat/ComposerBanner.tsx Outdated
@juliusmarminge
juliusmarmingeforce-pushed the fix/composer-banner-alignment branch from d244ca6 to e77029fCompareSeptember 2, 2026 03:53
@juliusmarminge
juliusmarminge merged commit e9db39c into pingdotgg:mainSep 2, 2026
26 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@Bil0000@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(web): align composer notices and stash - #8890

Merged
juliusmarminge merged 20 commits into
pingdotgg:mainfrom
Bil0000:fix/composer-banner-alignment
Sep 2, 2026
Merged

fix(web): align composer notices and stash#8890
juliusmarminge merged 20 commits into
pingdotgg:mainfrom
Bil0000:fix/composer-banner-alignment

Conversation

@Bil0000

@Bil0000Bil0000 commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Fixes composer notice spacing and alignment without changing unrelated composer surfaces.

  • keeps height, padding, icon position, and one-row text in ComposerBanner and ComposerBannerStack
  • keeps single actions inline on narrow composers and left-aligns multi-action rows beneath the title
  • replaces narrow truncated descriptions with an info tooltip containing the complete copy
  • removes per-banner layout overrides so new notices inherit the same safe layout
  • shortens copy for connection, update, resume, woke, snoozed, and settled notices
  • applies the shared layout to connection, update, background activity, resume, thread-state, branch, task, and activity notices
  • keeps notice actions ghosted and aligns notice icons with stash/task tabs

Verified with focused lint, web typecheck, 6 test files (213 tests), and real-browser passes at 768 px and 375 px. No horizontal overflow.

Before / after

Each row uses the same six fixed-height case slots in the same order, with every composer pinned to the slot bottom. Before is merge-base main at d937e30. After is the current PR head.

Each fixture uses copy checked against its ChatView call sites, the production composer wrapper hierarchy, the production stash shoulder, and that checkout's ComposerBanner and ComposerBannerStack components.

Wide composer, 768px

Before, merge-base mainAfter, PR head
Before, merge-base main, wide composerAfter, PR head, wide composer

Narrow composer, 375px

Before, merge-base mainAfter, current PR head
Before, merge-base main, narrow composerAfter, current PR head, responsive composer

Expanded three-banner stack, wide

BeforeAfter
Before, expanded stack, wide composerAfter, expanded stack, wide composer

Expanded three-banner stack, narrow

BeforeAfter
Before, expanded stack, narrow composerAfter, expanded stack, narrow composer

Cases cover environment offline with and without stash, compaction, settled thread with stash, connecting with no actions, and an expanded woke, offline, and compaction stack with stash count 99.

Built with GPT-5.6 in Codex.

Note

Align composer notices and stash with comfortable density and ghost button variants

  • Adds a comfortable density option to ComposerBanner.Root with smaller block padding; applies it to stack alerts, ComposerStashBadge, and tab-placement ComposerTasksBadge
  • Reworks ComposerBannerStackAlert to use fixed-height icon columns, single-line titles, and an info-icon popover that reveals hidden descriptions on screens up to 400px
  • Simplifies serverUpdateGuidance to two fixed results: desktop-managed returns desktop-app guidance, all other self-update capabilities return generic "Update to stay in sync" guidance; the server-label parameter is removed
  • Shortens connection-status banner copy and switches banner action controls (reconnect, Connections, ServerUpdateAction) to the ghost button variant; ServerUpdateAction gains a configurable variant prop defaulting to outline
  • Behavioral Change: serverUpdateGuidance signature drops the server-label argument; callers in ChatView.tsx and tests in versionSkew.test.ts are updated, but any out-of-tree consumers will break

Macroscope summarized e77029f.

@coderabbitai

coderabbitaiBot commented Aug 31, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: d5d13c3a-df29-452d-9b83-06df4a0d70cd

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Warning

Your free Security trial is over. An organization admin can activate Security or dismiss this notice.


Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Aug 31, 2026

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Two alignment regressions from the shared ComposerBanner geometry change and the description move. Details inline.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
Comment threadapps/web/src/components/chat/ComposerBanner.tsx Outdated
@macroscopeapp

macroscopeappBot commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Not approved

Macroscope's review found this PR not approvable — This PR changes the shipped presentation of existing composer notices, stash/task badges, and server-update actions, including spacing, button styling, responsive behavior, and narrow-screen detail access. Because these are customer-facing default changes across shared composer components, the changes should receive human review.

You can add or adjust custom eligibility rules. Learn more.

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Two alignment issues remain in the reworked ComposerBannerStackAlert row.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One new alignment regression from the reworked header row; the previously reported dismiss/action alignment for notices with a description is still open.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
macroscopeapp[bot]
macroscopeappBot previously approved these changes Aug 31, 2026
@macroscopeapp
macroscopeappBot dismissed their stale reviewAugust 31, 2026 15:49

Dismissing prior approval to re-evaluate a03ab91

@github-actionsgithub-actionsBot added size:M 30-99 changed lines (additions + deletions). and removed size:S 10-29 changed lines (additions + deletions). labels Aug 31, 2026

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One finding on the description layout: the alert call site now overrides ComposerBanner.Root's vertical padding with hardcoded 3px values that re-derive the primitive's attachment-overlap calc. Details inline.

Note also that the icon/actions alignment concern raised on the previous commits is unchanged: with a description, ComposerBanner.Icon is pinned to the first line (h-lh self-start) while ComposerBanner.Actions stays items-center against the whole title+description block, so the buttons and dismiss control still drift below the title line. Not re-commenting inline, but it is still worth resolving with the same fix discussed earlier.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
@github-actionsgithub-actionsBot added size:S 10-29 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). labels Sep 1, 2026
macroscopeapp[bot]
macroscopeappBot previously approved these changes Sep 1, 2026
@Bil0000Bil0000 changed the title fix(web): align composer notice controlsfix(web): align composer notices without resizing stashSep 1, 2026
Comment threadapps/web/src/components/chat/ComposerBanner.tsx Outdated
Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
@macroscopeapp
macroscopeappBot dismissed their stale reviewSeptember 1, 2026 22:47

Dismissing prior approval to re-evaluate 73e2cbe

@github-actionsgithub-actionsBot added size:M 30-99 changed lines (additions + deletions). and removed size:S 10-29 changed lines (additions + deletions). labels Sep 1, 2026
@Bil0000Bil0000 changed the title fix(web): align composer notices without resizing stashfix(web): align composer notices and stashSep 1, 2026

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Both findings are the same ownership rule: --composer-banner-padding-block is ComposerBanner.Root's variable, and it is now being set from two call sites with a magic --spacing(1.25).

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/ChatView.tsx Outdated
Comment threadapps/web/src/components/chat/ComposerStashBadge.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also still open from the previous commit and unchanged here: the call-site --composer-banner-padding-block overrides in ChatView.tsx (settled-thread notice) and ComposerStashBadge.tsx. Not re-commenting inline — see the existing threads.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). labels Sep 2, 2026

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Four findings on the reworked single-line notice row and its call sites. The earlier icon/action alignment threads look settled by the now always-single-line row; these are new.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
Comment threadapps/web/src/components/ChatView.tsx Outdated
Comment threadapps/web/src/components/chat/ComposerBanner.tsx Outdated
Comment threadapps/web/src/components/ChatView.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The four findings from the previous commit are addressed. One new issue in the reworked single-line row, inline.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
@juliusmarminge
juliusmarmingeforce-pushed the fix/composer-banner-alignment branch from 35a1598 to 5f2019bCompareSeptember 2, 2026 02:26
@macroscopeapp
macroscopeappBot dismissed their stale reviewSeptember 2, 2026 02:27

Dismissing prior approval to re-evaluate 5f2019b

macroscopeapp[bot]
macroscopeappBot previously approved these changes Sep 2, 2026
@juliusmarminge
juliusmarmingeforce-pushed the fix/composer-banner-alignment branch 2 times, most recently from cd1100d to 7e08502CompareSeptember 2, 2026 03:22
@macroscopeapp
macroscopeappBot dismissed their stale reviewSeptember 2, 2026 03:22

Dismissing prior approval to re-evaluate 7e08502

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Two findings on the narrow-width rework in this commit; the ServerUpdateAction variant default from the previous commit is addressed.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
Comment threadapps/web/src/components/chat/ComposerBanner.tsx Outdated
@juliusmarminge
juliusmarmingeforce-pushed the fix/composer-banner-alignment branch from d244ca6 to e77029fCompareSeptember 2, 2026 03:53
@juliusmarminge
juliusmarminge merged commit e9db39c into pingdotgg:mainSep 2, 2026
26 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@Bil0000@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(web): align composer notices and stash - #8890

Merged
juliusmarminge merged 20 commits into
pingdotgg:mainfrom
Bil0000:fix/composer-banner-alignment
Sep 2, 2026
Merged

fix(web): align composer notices and stash#8890
juliusmarminge merged 20 commits into
pingdotgg:mainfrom
Bil0000:fix/composer-banner-alignment

Conversation

@Bil0000

@Bil0000Bil0000 commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Fixes composer notice spacing and alignment without changing unrelated composer surfaces.

  • keeps height, padding, icon position, and one-row text in ComposerBanner and ComposerBannerStack
  • keeps single actions inline on narrow composers and left-aligns multi-action rows beneath the title
  • replaces narrow truncated descriptions with an info tooltip containing the complete copy
  • removes per-banner layout overrides so new notices inherit the same safe layout
  • shortens copy for connection, update, resume, woke, snoozed, and settled notices
  • applies the shared layout to connection, update, background activity, resume, thread-state, branch, task, and activity notices
  • keeps notice actions ghosted and aligns notice icons with stash/task tabs

Verified with focused lint, web typecheck, 6 test files (213 tests), and real-browser passes at 768 px and 375 px. No horizontal overflow.

Before / after

Each row uses the same six fixed-height case slots in the same order, with every composer pinned to the slot bottom. Before is merge-base main at d937e30. After is the current PR head.

Each fixture uses copy checked against its ChatView call sites, the production composer wrapper hierarchy, the production stash shoulder, and that checkout's ComposerBanner and ComposerBannerStack components.

Wide composer, 768px

Before, merge-base mainAfter, PR head
Before, merge-base main, wide composerAfter, PR head, wide composer

Narrow composer, 375px

Before, merge-base mainAfter, current PR head
Before, merge-base main, narrow composerAfter, current PR head, responsive composer

Expanded three-banner stack, wide

BeforeAfter
Before, expanded stack, wide composerAfter, expanded stack, wide composer

Expanded three-banner stack, narrow

BeforeAfter
Before, expanded stack, narrow composerAfter, expanded stack, narrow composer

Cases cover environment offline with and without stash, compaction, settled thread with stash, connecting with no actions, and an expanded woke, offline, and compaction stack with stash count 99.

Built with GPT-5.6 in Codex.

Note

Align composer notices and stash with comfortable density and ghost button variants

  • Adds a comfortable density option to ComposerBanner.Root with smaller block padding; applies it to stack alerts, ComposerStashBadge, and tab-placement ComposerTasksBadge
  • Reworks ComposerBannerStackAlert to use fixed-height icon columns, single-line titles, and an info-icon popover that reveals hidden descriptions on screens up to 400px
  • Simplifies serverUpdateGuidance to two fixed results: desktop-managed returns desktop-app guidance, all other self-update capabilities return generic "Update to stay in sync" guidance; the server-label parameter is removed
  • Shortens connection-status banner copy and switches banner action controls (reconnect, Connections, ServerUpdateAction) to the ghost button variant; ServerUpdateAction gains a configurable variant prop defaulting to outline
  • Behavioral Change: serverUpdateGuidance signature drops the server-label argument; callers in ChatView.tsx and tests in versionSkew.test.ts are updated, but any out-of-tree consumers will break

Macroscope summarized e77029f.

@coderabbitai

coderabbitaiBot commented Aug 31, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: d5d13c3a-df29-452d-9b83-06df4a0d70cd

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Warning

Your free Security trial is over. An organization admin can activate Security or dismiss this notice.


Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Aug 31, 2026

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Two alignment regressions from the shared ComposerBanner geometry change and the description move. Details inline.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
Comment threadapps/web/src/components/chat/ComposerBanner.tsx Outdated
@macroscopeapp

macroscopeappBot commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Not approved

Macroscope's review found this PR not approvable — This PR changes the shipped presentation of existing composer notices, stash/task badges, and server-update actions, including spacing, button styling, responsive behavior, and narrow-screen detail access. Because these are customer-facing default changes across shared composer components, the changes should receive human review.

You can add or adjust custom eligibility rules. Learn more.

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Two alignment issues remain in the reworked ComposerBannerStackAlert row.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One new alignment regression from the reworked header row; the previously reported dismiss/action alignment for notices with a description is still open.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
macroscopeapp[bot]
macroscopeappBot previously approved these changes Aug 31, 2026
@macroscopeapp
macroscopeappBot dismissed their stale reviewAugust 31, 2026 15:49

Dismissing prior approval to re-evaluate a03ab91

@github-actionsgithub-actionsBot added size:M 30-99 changed lines (additions + deletions). and removed size:S 10-29 changed lines (additions + deletions). labels Aug 31, 2026

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One finding on the description layout: the alert call site now overrides ComposerBanner.Root's vertical padding with hardcoded 3px values that re-derive the primitive's attachment-overlap calc. Details inline.

Note also that the icon/actions alignment concern raised on the previous commits is unchanged: with a description, ComposerBanner.Icon is pinned to the first line (h-lh self-start) while ComposerBanner.Actions stays items-center against the whole title+description block, so the buttons and dismiss control still drift below the title line. Not re-commenting inline, but it is still worth resolving with the same fix discussed earlier.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
@github-actionsgithub-actionsBot added size:S 10-29 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). labels Sep 1, 2026
macroscopeapp[bot]
macroscopeappBot previously approved these changes Sep 1, 2026
@Bil0000Bil0000 changed the title fix(web): align composer notice controlsfix(web): align composer notices without resizing stashSep 1, 2026
Comment threadapps/web/src/components/chat/ComposerBanner.tsx Outdated
Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
@macroscopeapp
macroscopeappBot dismissed their stale reviewSeptember 1, 2026 22:47

Dismissing prior approval to re-evaluate 73e2cbe

@github-actionsgithub-actionsBot added size:M 30-99 changed lines (additions + deletions). and removed size:S 10-29 changed lines (additions + deletions). labels Sep 1, 2026
@Bil0000Bil0000 changed the title fix(web): align composer notices without resizing stashfix(web): align composer notices and stashSep 1, 2026

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Both findings are the same ownership rule: --composer-banner-padding-block is ComposerBanner.Root's variable, and it is now being set from two call sites with a magic --spacing(1.25).

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/ChatView.tsx Outdated
Comment threadapps/web/src/components/chat/ComposerStashBadge.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also still open from the previous commit and unchanged here: the call-site --composer-banner-padding-block overrides in ChatView.tsx (settled-thread notice) and ComposerStashBadge.tsx. Not re-commenting inline — see the existing threads.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). labels Sep 2, 2026

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Four findings on the reworked single-line notice row and its call sites. The earlier icon/action alignment threads look settled by the now always-single-line row; these are new.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
Comment threadapps/web/src/components/ChatView.tsx Outdated
Comment threadapps/web/src/components/chat/ComposerBanner.tsx Outdated
Comment threadapps/web/src/components/ChatView.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The four findings from the previous commit are addressed. One new issue in the reworked single-line row, inline.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
@juliusmarminge
juliusmarmingeforce-pushed the fix/composer-banner-alignment branch from 35a1598 to 5f2019bCompareSeptember 2, 2026 02:26
@macroscopeapp
macroscopeappBot dismissed their stale reviewSeptember 2, 2026 02:27

Dismissing prior approval to re-evaluate 5f2019b

macroscopeapp[bot]
macroscopeappBot previously approved these changes Sep 2, 2026
@juliusmarminge
juliusmarmingeforce-pushed the fix/composer-banner-alignment branch 2 times, most recently from cd1100d to 7e08502CompareSeptember 2, 2026 03:22
@macroscopeapp
macroscopeappBot dismissed their stale reviewSeptember 2, 2026 03:22

Dismissing prior approval to re-evaluate 7e08502

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Two findings on the narrow-width rework in this commit; the ServerUpdateAction variant default from the previous commit is addressed.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
Comment threadapps/web/src/components/chat/ComposerBanner.tsx Outdated
@juliusmarminge
juliusmarmingeforce-pushed the fix/composer-banner-alignment branch from d244ca6 to e77029fCompareSeptember 2, 2026 03:53
@juliusmarminge
juliusmarminge merged commit e9db39c into pingdotgg:mainSep 2, 2026
26 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@Bil0000@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

fix(web): align composer notices and stash - #8890

Merged
juliusmarminge merged 20 commits into
pingdotgg:mainfrom
Bil0000:fix/composer-banner-alignment
Sep 2, 2026
Merged

fix(web): align composer notices and stash#8890
juliusmarminge merged 20 commits into
pingdotgg:mainfrom
Bil0000:fix/composer-banner-alignment

Conversation

@Bil0000

@Bil0000Bil0000 commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Fixes composer notice spacing and alignment without changing unrelated composer surfaces.

  • keeps height, padding, icon position, and one-row text in ComposerBanner and ComposerBannerStack
  • keeps single actions inline on narrow composers and left-aligns multi-action rows beneath the title
  • replaces narrow truncated descriptions with an info tooltip containing the complete copy
  • removes per-banner layout overrides so new notices inherit the same safe layout
  • shortens copy for connection, update, resume, woke, snoozed, and settled notices
  • applies the shared layout to connection, update, background activity, resume, thread-state, branch, task, and activity notices
  • keeps notice actions ghosted and aligns notice icons with stash/task tabs

Verified with focused lint, web typecheck, 6 test files (213 tests), and real-browser passes at 768 px and 375 px. No horizontal overflow.

Before / after

Each row uses the same six fixed-height case slots in the same order, with every composer pinned to the slot bottom. Before is merge-base main at d937e30. After is the current PR head.

Each fixture uses copy checked against its ChatView call sites, the production composer wrapper hierarchy, the production stash shoulder, and that checkout's ComposerBanner and ComposerBannerStack components.

Wide composer, 768px

Before, merge-base mainAfter, PR head
Before, merge-base main, wide composerAfter, PR head, wide composer

Narrow composer, 375px

Before, merge-base mainAfter, current PR head
Before, merge-base main, narrow composerAfter, current PR head, responsive composer

Expanded three-banner stack, wide

BeforeAfter
Before, expanded stack, wide composerAfter, expanded stack, wide composer

Expanded three-banner stack, narrow

BeforeAfter
Before, expanded stack, narrow composerAfter, expanded stack, narrow composer

Cases cover environment offline with and without stash, compaction, settled thread with stash, connecting with no actions, and an expanded woke, offline, and compaction stack with stash count 99.

Built with GPT-5.6 in Codex.

Note

Align composer notices and stash with comfortable density and ghost button variants

  • Adds a comfortable density option to ComposerBanner.Root with smaller block padding; applies it to stack alerts, ComposerStashBadge, and tab-placement ComposerTasksBadge
  • Reworks ComposerBannerStackAlert to use fixed-height icon columns, single-line titles, and an info-icon popover that reveals hidden descriptions on screens up to 400px
  • Simplifies serverUpdateGuidance to two fixed results: desktop-managed returns desktop-app guidance, all other self-update capabilities return generic "Update to stay in sync" guidance; the server-label parameter is removed
  • Shortens connection-status banner copy and switches banner action controls (reconnect, Connections, ServerUpdateAction) to the ghost button variant; ServerUpdateAction gains a configurable variant prop defaulting to outline
  • Behavioral Change: serverUpdateGuidance signature drops the server-label argument; callers in ChatView.tsx and tests in versionSkew.test.ts are updated, but any out-of-tree consumers will break

Macroscope summarized e77029f.

@coderabbitai

coderabbitaiBot commented Aug 31, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: d5d13c3a-df29-452d-9b83-06df4a0d70cd

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Warning

Your free Security trial is over. An organization admin can activate Security or dismiss this notice.


Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Aug 31, 2026

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Two alignment regressions from the shared ComposerBanner geometry change and the description move. Details inline.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
Comment threadapps/web/src/components/chat/ComposerBanner.tsx Outdated
@macroscopeapp

macroscopeappBot commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Not approved

Macroscope's review found this PR not approvable — This PR changes the shipped presentation of existing composer notices, stash/task badges, and server-update actions, including spacing, button styling, responsive behavior, and narrow-screen detail access. Because these are customer-facing default changes across shared composer components, the changes should receive human review.

You can add or adjust custom eligibility rules. Learn more.

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Two alignment issues remain in the reworked ComposerBannerStackAlert row.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One new alignment regression from the reworked header row; the previously reported dismiss/action alignment for notices with a description is still open.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
macroscopeapp[bot]
macroscopeappBot previously approved these changes Aug 31, 2026
@macroscopeapp
macroscopeappBot dismissed their stale reviewAugust 31, 2026 15:49

Dismissing prior approval to re-evaluate a03ab91

@github-actionsgithub-actionsBot added size:M 30-99 changed lines (additions + deletions). and removed size:S 10-29 changed lines (additions + deletions). labels Aug 31, 2026

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One finding on the description layout: the alert call site now overrides ComposerBanner.Root's vertical padding with hardcoded 3px values that re-derive the primitive's attachment-overlap calc. Details inline.

Note also that the icon/actions alignment concern raised on the previous commits is unchanged: with a description, ComposerBanner.Icon is pinned to the first line (h-lh self-start) while ComposerBanner.Actions stays items-center against the whole title+description block, so the buttons and dismiss control still drift below the title line. Not re-commenting inline, but it is still worth resolving with the same fix discussed earlier.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
@github-actionsgithub-actionsBot added size:S 10-29 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). labels Sep 1, 2026
macroscopeapp[bot]
macroscopeappBot previously approved these changes Sep 1, 2026
@Bil0000Bil0000 changed the title fix(web): align composer notice controlsfix(web): align composer notices without resizing stashSep 1, 2026
Comment threadapps/web/src/components/chat/ComposerBanner.tsx Outdated
Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
@macroscopeapp
macroscopeappBot dismissed their stale reviewSeptember 1, 2026 22:47

Dismissing prior approval to re-evaluate 73e2cbe

@github-actionsgithub-actionsBot added size:M 30-99 changed lines (additions + deletions). and removed size:S 10-29 changed lines (additions + deletions). labels Sep 1, 2026
@Bil0000Bil0000 changed the title fix(web): align composer notices without resizing stashfix(web): align composer notices and stashSep 1, 2026

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Both findings are the same ownership rule: --composer-banner-padding-block is ComposerBanner.Root's variable, and it is now being set from two call sites with a magic --spacing(1.25).

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/ChatView.tsx Outdated
Comment threadapps/web/src/components/chat/ComposerStashBadge.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also still open from the previous commit and unchanged here: the call-site --composer-banner-padding-block overrides in ChatView.tsx (settled-thread notice) and ComposerStashBadge.tsx. Not re-commenting inline — see the existing threads.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). labels Sep 2, 2026

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Four findings on the reworked single-line notice row and its call sites. The earlier icon/action alignment threads look settled by the now always-single-line row; these are new.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
Comment threadapps/web/src/components/ChatView.tsx Outdated
Comment threadapps/web/src/components/chat/ComposerBanner.tsx Outdated
Comment threadapps/web/src/components/ChatView.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The four findings from the previous commit are addressed. One new issue in the reworked single-line row, inline.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
@juliusmarminge
juliusmarmingeforce-pushed the fix/composer-banner-alignment branch from 35a1598 to 5f2019bCompareSeptember 2, 2026 02:26
@macroscopeapp
macroscopeappBot dismissed their stale reviewSeptember 2, 2026 02:27

Dismissing prior approval to re-evaluate 5f2019b

macroscopeapp[bot]
macroscopeappBot previously approved these changes Sep 2, 2026
@juliusmarminge
juliusmarmingeforce-pushed the fix/composer-banner-alignment branch 2 times, most recently from cd1100d to 7e08502CompareSeptember 2, 2026 03:22
@macroscopeapp
macroscopeappBot dismissed their stale reviewSeptember 2, 2026 03:22

Dismissing prior approval to re-evaluate 7e08502

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Two findings on the narrow-width rework in this commit; the ServerUpdateAction variant default from the previous commit is addressed.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
Comment threadapps/web/src/components/chat/ComposerBanner.tsx Outdated
@juliusmarminge
juliusmarmingeforce-pushed the fix/composer-banner-alignment branch from d244ca6 to e77029fCompareSeptember 2, 2026 03:53
@juliusmarminge
juliusmarminge merged commit e9db39c into pingdotgg:mainSep 2, 2026
26 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@Bil0000@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(web): align composer notices and stash - #8890

Merged
juliusmarminge merged 20 commits into
pingdotgg:mainfrom
Bil0000:fix/composer-banner-alignment
Sep 2, 2026
Merged

fix(web): align composer notices and stash#8890
juliusmarminge merged 20 commits into
pingdotgg:mainfrom
Bil0000:fix/composer-banner-alignment

Conversation

@Bil0000

@Bil0000Bil0000 commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Fixes composer notice spacing and alignment without changing unrelated composer surfaces.

  • keeps height, padding, icon position, and one-row text in ComposerBanner and ComposerBannerStack
  • keeps single actions inline on narrow composers and left-aligns multi-action rows beneath the title
  • replaces narrow truncated descriptions with an info tooltip containing the complete copy
  • removes per-banner layout overrides so new notices inherit the same safe layout
  • shortens copy for connection, update, resume, woke, snoozed, and settled notices
  • applies the shared layout to connection, update, background activity, resume, thread-state, branch, task, and activity notices
  • keeps notice actions ghosted and aligns notice icons with stash/task tabs

Verified with focused lint, web typecheck, 6 test files (213 tests), and real-browser passes at 768 px and 375 px. No horizontal overflow.

Before / after

Each row uses the same six fixed-height case slots in the same order, with every composer pinned to the slot bottom. Before is merge-base main at d937e30. After is the current PR head.

Each fixture uses copy checked against its ChatView call sites, the production composer wrapper hierarchy, the production stash shoulder, and that checkout's ComposerBanner and ComposerBannerStack components.

Wide composer, 768px

Before, merge-base mainAfter, PR head
Before, merge-base main, wide composerAfter, PR head, wide composer

Narrow composer, 375px

Before, merge-base mainAfter, current PR head
Before, merge-base main, narrow composerAfter, current PR head, responsive composer

Expanded three-banner stack, wide

BeforeAfter
Before, expanded stack, wide composerAfter, expanded stack, wide composer

Expanded three-banner stack, narrow

BeforeAfter
Before, expanded stack, narrow composerAfter, expanded stack, narrow composer

Cases cover environment offline with and without stash, compaction, settled thread with stash, connecting with no actions, and an expanded woke, offline, and compaction stack with stash count 99.

Built with GPT-5.6 in Codex.

Note

Align composer notices and stash with comfortable density and ghost button variants

  • Adds a comfortable density option to ComposerBanner.Root with smaller block padding; applies it to stack alerts, ComposerStashBadge, and tab-placement ComposerTasksBadge
  • Reworks ComposerBannerStackAlert to use fixed-height icon columns, single-line titles, and an info-icon popover that reveals hidden descriptions on screens up to 400px
  • Simplifies serverUpdateGuidance to two fixed results: desktop-managed returns desktop-app guidance, all other self-update capabilities return generic "Update to stay in sync" guidance; the server-label parameter is removed
  • Shortens connection-status banner copy and switches banner action controls (reconnect, Connections, ServerUpdateAction) to the ghost button variant; ServerUpdateAction gains a configurable variant prop defaulting to outline
  • Behavioral Change: serverUpdateGuidance signature drops the server-label argument; callers in ChatView.tsx and tests in versionSkew.test.ts are updated, but any out-of-tree consumers will break

Macroscope summarized e77029f.

@coderabbitai

coderabbitaiBot commented Aug 31, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: d5d13c3a-df29-452d-9b83-06df4a0d70cd

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Warning

Your free Security trial is over. An organization admin can activate Security or dismiss this notice.


Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Aug 31, 2026

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Two alignment regressions from the shared ComposerBanner geometry change and the description move. Details inline.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
Comment threadapps/web/src/components/chat/ComposerBanner.tsx Outdated
@macroscopeapp

macroscopeappBot commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Not approved

Macroscope's review found this PR not approvable — This PR changes the shipped presentation of existing composer notices, stash/task badges, and server-update actions, including spacing, button styling, responsive behavior, and narrow-screen detail access. Because these are customer-facing default changes across shared composer components, the changes should receive human review.

You can add or adjust custom eligibility rules. Learn more.

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Two alignment issues remain in the reworked ComposerBannerStackAlert row.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One new alignment regression from the reworked header row; the previously reported dismiss/action alignment for notices with a description is still open.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
macroscopeapp[bot]
macroscopeappBot previously approved these changes Aug 31, 2026
@macroscopeapp
macroscopeappBot dismissed their stale reviewAugust 31, 2026 15:49

Dismissing prior approval to re-evaluate a03ab91

@github-actionsgithub-actionsBot added size:M 30-99 changed lines (additions + deletions). and removed size:S 10-29 changed lines (additions + deletions). labels Aug 31, 2026

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One finding on the description layout: the alert call site now overrides ComposerBanner.Root's vertical padding with hardcoded 3px values that re-derive the primitive's attachment-overlap calc. Details inline.

Note also that the icon/actions alignment concern raised on the previous commits is unchanged: with a description, ComposerBanner.Icon is pinned to the first line (h-lh self-start) while ComposerBanner.Actions stays items-center against the whole title+description block, so the buttons and dismiss control still drift below the title line. Not re-commenting inline, but it is still worth resolving with the same fix discussed earlier.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
@github-actionsgithub-actionsBot added size:S 10-29 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). labels Sep 1, 2026
macroscopeapp[bot]
macroscopeappBot previously approved these changes Sep 1, 2026
@Bil0000Bil0000 changed the title fix(web): align composer notice controlsfix(web): align composer notices without resizing stashSep 1, 2026
Comment threadapps/web/src/components/chat/ComposerBanner.tsx Outdated
Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
@macroscopeapp
macroscopeappBot dismissed their stale reviewSeptember 1, 2026 22:47

Dismissing prior approval to re-evaluate 73e2cbe

@github-actionsgithub-actionsBot added size:M 30-99 changed lines (additions + deletions). and removed size:S 10-29 changed lines (additions + deletions). labels Sep 1, 2026
@Bil0000Bil0000 changed the title fix(web): align composer notices without resizing stashfix(web): align composer notices and stashSep 1, 2026

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Both findings are the same ownership rule: --composer-banner-padding-block is ComposerBanner.Root's variable, and it is now being set from two call sites with a magic --spacing(1.25).

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/ChatView.tsx Outdated
Comment threadapps/web/src/components/chat/ComposerStashBadge.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also still open from the previous commit and unchanged here: the call-site --composer-banner-padding-block overrides in ChatView.tsx (settled-thread notice) and ComposerStashBadge.tsx. Not re-commenting inline — see the existing threads.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). labels Sep 2, 2026

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Four findings on the reworked single-line notice row and its call sites. The earlier icon/action alignment threads look settled by the now always-single-line row; these are new.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
Comment threadapps/web/src/components/ChatView.tsx Outdated
Comment threadapps/web/src/components/chat/ComposerBanner.tsx Outdated
Comment threadapps/web/src/components/ChatView.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The four findings from the previous commit are addressed. One new issue in the reworked single-line row, inline.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
@juliusmarminge
juliusmarmingeforce-pushed the fix/composer-banner-alignment branch from 35a1598 to 5f2019bCompareSeptember 2, 2026 02:26
@macroscopeapp
macroscopeappBot dismissed their stale reviewSeptember 2, 2026 02:27

Dismissing prior approval to re-evaluate 5f2019b

macroscopeapp[bot]
macroscopeappBot previously approved these changes Sep 2, 2026
@juliusmarminge
juliusmarmingeforce-pushed the fix/composer-banner-alignment branch 2 times, most recently from cd1100d to 7e08502CompareSeptember 2, 2026 03:22
@macroscopeapp
macroscopeappBot dismissed their stale reviewSeptember 2, 2026 03:22

Dismissing prior approval to re-evaluate 7e08502

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Two findings on the narrow-width rework in this commit; the ServerUpdateAction variant default from the previous commit is addressed.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
Comment threadapps/web/src/components/chat/ComposerBanner.tsx Outdated
@juliusmarminge
juliusmarmingeforce-pushed the fix/composer-banner-alignment branch from d244ca6 to e77029fCompareSeptember 2, 2026 03:53
@juliusmarminge
juliusmarminge merged commit e9db39c into pingdotgg:mainSep 2, 2026
26 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@Bil0000@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(web): align composer notices and stash - #8890

Merged
juliusmarminge merged 20 commits into
pingdotgg:mainfrom
Bil0000:fix/composer-banner-alignment
Sep 2, 2026
Merged

fix(web): align composer notices and stash#8890
juliusmarminge merged 20 commits into
pingdotgg:mainfrom
Bil0000:fix/composer-banner-alignment

Conversation

@Bil0000

@Bil0000Bil0000 commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Fixes composer notice spacing and alignment without changing unrelated composer surfaces.

  • keeps height, padding, icon position, and one-row text in ComposerBanner and ComposerBannerStack
  • keeps single actions inline on narrow composers and left-aligns multi-action rows beneath the title
  • replaces narrow truncated descriptions with an info tooltip containing the complete copy
  • removes per-banner layout overrides so new notices inherit the same safe layout
  • shortens copy for connection, update, resume, woke, snoozed, and settled notices
  • applies the shared layout to connection, update, background activity, resume, thread-state, branch, task, and activity notices
  • keeps notice actions ghosted and aligns notice icons with stash/task tabs

Verified with focused lint, web typecheck, 6 test files (213 tests), and real-browser passes at 768 px and 375 px. No horizontal overflow.

Before / after

Each row uses the same six fixed-height case slots in the same order, with every composer pinned to the slot bottom. Before is merge-base main at d937e30. After is the current PR head.

Each fixture uses copy checked against its ChatView call sites, the production composer wrapper hierarchy, the production stash shoulder, and that checkout's ComposerBanner and ComposerBannerStack components.

Wide composer, 768px

Before, merge-base mainAfter, PR head
Before, merge-base main, wide composerAfter, PR head, wide composer

Narrow composer, 375px

Before, merge-base mainAfter, current PR head
Before, merge-base main, narrow composerAfter, current PR head, responsive composer

Expanded three-banner stack, wide

BeforeAfter
Before, expanded stack, wide composerAfter, expanded stack, wide composer

Expanded three-banner stack, narrow

BeforeAfter
Before, expanded stack, narrow composerAfter, expanded stack, narrow composer

Cases cover environment offline with and without stash, compaction, settled thread with stash, connecting with no actions, and an expanded woke, offline, and compaction stack with stash count 99.

Built with GPT-5.6 in Codex.

Note

Align composer notices and stash with comfortable density and ghost button variants

  • Adds a comfortable density option to ComposerBanner.Root with smaller block padding; applies it to stack alerts, ComposerStashBadge, and tab-placement ComposerTasksBadge
  • Reworks ComposerBannerStackAlert to use fixed-height icon columns, single-line titles, and an info-icon popover that reveals hidden descriptions on screens up to 400px
  • Simplifies serverUpdateGuidance to two fixed results: desktop-managed returns desktop-app guidance, all other self-update capabilities return generic "Update to stay in sync" guidance; the server-label parameter is removed
  • Shortens connection-status banner copy and switches banner action controls (reconnect, Connections, ServerUpdateAction) to the ghost button variant; ServerUpdateAction gains a configurable variant prop defaulting to outline
  • Behavioral Change: serverUpdateGuidance signature drops the server-label argument; callers in ChatView.tsx and tests in versionSkew.test.ts are updated, but any out-of-tree consumers will break

Macroscope summarized e77029f.

@coderabbitai

coderabbitaiBot commented Aug 31, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: d5d13c3a-df29-452d-9b83-06df4a0d70cd

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Warning

Your free Security trial is over. An organization admin can activate Security or dismiss this notice.


Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Aug 31, 2026

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Two alignment regressions from the shared ComposerBanner geometry change and the description move. Details inline.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
Comment threadapps/web/src/components/chat/ComposerBanner.tsx Outdated
@macroscopeapp

macroscopeappBot commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Not approved

Macroscope's review found this PR not approvable — This PR changes the shipped presentation of existing composer notices, stash/task badges, and server-update actions, including spacing, button styling, responsive behavior, and narrow-screen detail access. Because these are customer-facing default changes across shared composer components, the changes should receive human review.

You can add or adjust custom eligibility rules. Learn more.

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Two alignment issues remain in the reworked ComposerBannerStackAlert row.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One new alignment regression from the reworked header row; the previously reported dismiss/action alignment for notices with a description is still open.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
macroscopeapp[bot]
macroscopeappBot previously approved these changes Aug 31, 2026
@macroscopeapp
macroscopeappBot dismissed their stale reviewAugust 31, 2026 15:49

Dismissing prior approval to re-evaluate a03ab91

@github-actionsgithub-actionsBot added size:M 30-99 changed lines (additions + deletions). and removed size:S 10-29 changed lines (additions + deletions). labels Aug 31, 2026

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One finding on the description layout: the alert call site now overrides ComposerBanner.Root's vertical padding with hardcoded 3px values that re-derive the primitive's attachment-overlap calc. Details inline.

Note also that the icon/actions alignment concern raised on the previous commits is unchanged: with a description, ComposerBanner.Icon is pinned to the first line (h-lh self-start) while ComposerBanner.Actions stays items-center against the whole title+description block, so the buttons and dismiss control still drift below the title line. Not re-commenting inline, but it is still worth resolving with the same fix discussed earlier.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
@github-actionsgithub-actionsBot added size:S 10-29 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). labels Sep 1, 2026
macroscopeapp[bot]
macroscopeappBot previously approved these changes Sep 1, 2026
@Bil0000Bil0000 changed the title fix(web): align composer notice controlsfix(web): align composer notices without resizing stashSep 1, 2026
Comment threadapps/web/src/components/chat/ComposerBanner.tsx Outdated
Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
@macroscopeapp
macroscopeappBot dismissed their stale reviewSeptember 1, 2026 22:47

Dismissing prior approval to re-evaluate 73e2cbe

@github-actionsgithub-actionsBot added size:M 30-99 changed lines (additions + deletions). and removed size:S 10-29 changed lines (additions + deletions). labels Sep 1, 2026
@Bil0000Bil0000 changed the title fix(web): align composer notices without resizing stashfix(web): align composer notices and stashSep 1, 2026

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Both findings are the same ownership rule: --composer-banner-padding-block is ComposerBanner.Root's variable, and it is now being set from two call sites with a magic --spacing(1.25).

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/ChatView.tsx Outdated
Comment threadapps/web/src/components/chat/ComposerStashBadge.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also still open from the previous commit and unchanged here: the call-site --composer-banner-padding-block overrides in ChatView.tsx (settled-thread notice) and ComposerStashBadge.tsx. Not re-commenting inline — see the existing threads.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). labels Sep 2, 2026

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Four findings on the reworked single-line notice row and its call sites. The earlier icon/action alignment threads look settled by the now always-single-line row; these are new.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
Comment threadapps/web/src/components/ChatView.tsx Outdated
Comment threadapps/web/src/components/chat/ComposerBanner.tsx Outdated
Comment threadapps/web/src/components/ChatView.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The four findings from the previous commit are addressed. One new issue in the reworked single-line row, inline.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
@juliusmarminge
juliusmarmingeforce-pushed the fix/composer-banner-alignment branch from 35a1598 to 5f2019bCompareSeptember 2, 2026 02:26
@macroscopeapp
macroscopeappBot dismissed their stale reviewSeptember 2, 2026 02:27

Dismissing prior approval to re-evaluate 5f2019b

macroscopeapp[bot]
macroscopeappBot previously approved these changes Sep 2, 2026
@juliusmarminge
juliusmarmingeforce-pushed the fix/composer-banner-alignment branch 2 times, most recently from cd1100d to 7e08502CompareSeptember 2, 2026 03:22
@macroscopeapp
macroscopeappBot dismissed their stale reviewSeptember 2, 2026 03:22

Dismissing prior approval to re-evaluate 7e08502

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Two findings on the narrow-width rework in this commit; the ServerUpdateAction variant default from the previous commit is addressed.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
Comment threadapps/web/src/components/chat/ComposerBanner.tsx Outdated
@juliusmarminge
juliusmarmingeforce-pushed the fix/composer-banner-alignment branch from d244ca6 to e77029fCompareSeptember 2, 2026 03:53
@juliusmarminge
juliusmarminge merged commit e9db39c into pingdotgg:mainSep 2, 2026
26 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@Bil0000@juliusmarminge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

fix(web): align composer notices and stash - #8890

Merged
juliusmarminge merged 20 commits into
pingdotgg:mainfrom
Bil0000:fix/composer-banner-alignment
Sep 2, 2026
Merged

fix(web): align composer notices and stash#8890
juliusmarminge merged 20 commits into
pingdotgg:mainfrom
Bil0000:fix/composer-banner-alignment

Conversation

@Bil0000

@Bil0000Bil0000 commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Fixes composer notice spacing and alignment without changing unrelated composer surfaces.

  • keeps height, padding, icon position, and one-row text in ComposerBanner and ComposerBannerStack
  • keeps single actions inline on narrow composers and left-aligns multi-action rows beneath the title
  • replaces narrow truncated descriptions with an info tooltip containing the complete copy
  • removes per-banner layout overrides so new notices inherit the same safe layout
  • shortens copy for connection, update, resume, woke, snoozed, and settled notices
  • applies the shared layout to connection, update, background activity, resume, thread-state, branch, task, and activity notices
  • keeps notice actions ghosted and aligns notice icons with stash/task tabs

Verified with focused lint, web typecheck, 6 test files (213 tests), and real-browser passes at 768 px and 375 px. No horizontal overflow.

Before / after

Each row uses the same six fixed-height case slots in the same order, with every composer pinned to the slot bottom. Before is merge-base main at d937e30. After is the current PR head.

Each fixture uses copy checked against its ChatView call sites, the production composer wrapper hierarchy, the production stash shoulder, and that checkout's ComposerBanner and ComposerBannerStack components.

Wide composer, 768px

Before, merge-base mainAfter, PR head
Before, merge-base main, wide composerAfter, PR head, wide composer

Narrow composer, 375px

Before, merge-base mainAfter, current PR head
Before, merge-base main, narrow composerAfter, current PR head, responsive composer

Expanded three-banner stack, wide

BeforeAfter
Before, expanded stack, wide composerAfter, expanded stack, wide composer

Expanded three-banner stack, narrow

BeforeAfter
Before, expanded stack, narrow composerAfter, expanded stack, narrow composer

Cases cover environment offline with and without stash, compaction, settled thread with stash, connecting with no actions, and an expanded woke, offline, and compaction stack with stash count 99.

Built with GPT-5.6 in Codex.

Note

Align composer notices and stash with comfortable density and ghost button variants

  • Adds a comfortable density option to ComposerBanner.Root with smaller block padding; applies it to stack alerts, ComposerStashBadge, and tab-placement ComposerTasksBadge
  • Reworks ComposerBannerStackAlert to use fixed-height icon columns, single-line titles, and an info-icon popover that reveals hidden descriptions on screens up to 400px
  • Simplifies serverUpdateGuidance to two fixed results: desktop-managed returns desktop-app guidance, all other self-update capabilities return generic "Update to stay in sync" guidance; the server-label parameter is removed
  • Shortens connection-status banner copy and switches banner action controls (reconnect, Connections, ServerUpdateAction) to the ghost button variant; ServerUpdateAction gains a configurable variant prop defaulting to outline
  • Behavioral Change: serverUpdateGuidance signature drops the server-label argument; callers in ChatView.tsx and tests in versionSkew.test.ts are updated, but any out-of-tree consumers will break

Macroscope summarized e77029f.

@coderabbitai

coderabbitaiBot commented Aug 31, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: d5d13c3a-df29-452d-9b83-06df4a0d70cd

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Warning

Your free Security trial is over. An organization admin can activate Security or dismiss this notice.


Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Aug 31, 2026

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Two alignment regressions from the shared ComposerBanner geometry change and the description move. Details inline.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
Comment threadapps/web/src/components/chat/ComposerBanner.tsx Outdated
@macroscopeapp

macroscopeappBot commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Not approved

Macroscope's review found this PR not approvable — This PR changes the shipped presentation of existing composer notices, stash/task badges, and server-update actions, including spacing, button styling, responsive behavior, and narrow-screen detail access. Because these are customer-facing default changes across shared composer components, the changes should receive human review.

You can add or adjust custom eligibility rules. Learn more.

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Two alignment issues remain in the reworked ComposerBannerStackAlert row.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One new alignment regression from the reworked header row; the previously reported dismiss/action alignment for notices with a description is still open.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
macroscopeapp[bot]
macroscopeappBot previously approved these changes Aug 31, 2026
@macroscopeapp
macroscopeappBot dismissed their stale reviewAugust 31, 2026 15:49

Dismissing prior approval to re-evaluate a03ab91

@github-actionsgithub-actionsBot added size:M 30-99 changed lines (additions + deletions). and removed size:S 10-29 changed lines (additions + deletions). labels Aug 31, 2026

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One finding on the description layout: the alert call site now overrides ComposerBanner.Root's vertical padding with hardcoded 3px values that re-derive the primitive's attachment-overlap calc. Details inline.

Note also that the icon/actions alignment concern raised on the previous commits is unchanged: with a description, ComposerBanner.Icon is pinned to the first line (h-lh self-start) while ComposerBanner.Actions stays items-center against the whole title+description block, so the buttons and dismiss control still drift below the title line. Not re-commenting inline, but it is still worth resolving with the same fix discussed earlier.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
@github-actionsgithub-actionsBot added size:S 10-29 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). labels Sep 1, 2026
macroscopeapp[bot]
macroscopeappBot previously approved these changes Sep 1, 2026
@Bil0000Bil0000 changed the title fix(web): align composer notice controlsfix(web): align composer notices without resizing stashSep 1, 2026
Comment threadapps/web/src/components/chat/ComposerBanner.tsx Outdated
Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
@macroscopeapp
macroscopeappBot dismissed their stale reviewSeptember 1, 2026 22:47

Dismissing prior approval to re-evaluate 73e2cbe

@github-actionsgithub-actionsBot added size:M 30-99 changed lines (additions + deletions). and removed size:S 10-29 changed lines (additions + deletions). labels Sep 1, 2026
@Bil0000Bil0000 changed the title fix(web): align composer notices without resizing stashfix(web): align composer notices and stashSep 1, 2026

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Both findings are the same ownership rule: --composer-banner-padding-block is ComposerBanner.Root's variable, and it is now being set from two call sites with a magic --spacing(1.25).

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/ChatView.tsx Outdated
Comment threadapps/web/src/components/chat/ComposerStashBadge.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also still open from the previous commit and unchanged here: the call-site --composer-banner-padding-block overrides in ChatView.tsx (settled-thread notice) and ComposerStashBadge.tsx. Not re-commenting inline — see the existing threads.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
@github-actionsgithub-actionsBot added size:L 100-499 changed lines (additions + deletions). and removed size:M 30-99 changed lines (additions + deletions). labels Sep 2, 2026

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Four findings on the reworked single-line notice row and its call sites. The earlier icon/action alignment threads look settled by the now always-single-line row; these are new.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
Comment threadapps/web/src/components/ChatView.tsx Outdated
Comment threadapps/web/src/components/chat/ComposerBanner.tsx Outdated
Comment threadapps/web/src/components/ChatView.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The four findings from the previous commit are addressed. One new issue in the reworked single-line row, inline.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
@juliusmarminge
juliusmarmingeforce-pushed the fix/composer-banner-alignment branch from 35a1598 to 5f2019bCompareSeptember 2, 2026 02:26
@macroscopeapp
macroscopeappBot dismissed their stale reviewSeptember 2, 2026 02:27

Dismissing prior approval to re-evaluate 5f2019b

macroscopeapp[bot]
macroscopeappBot previously approved these changes Sep 2, 2026
@juliusmarminge
juliusmarmingeforce-pushed the fix/composer-banner-alignment branch 2 times, most recently from cd1100d to 7e08502CompareSeptember 2, 2026 03:22
@macroscopeapp
macroscopeappBot dismissed their stale reviewSeptember 2, 2026 03:22

Dismissing prior approval to re-evaluate 7e08502

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Two findings on the narrow-width rework in this commit; the ServerUpdateAction variant default from the previous commit is addressed.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/chat/ComposerBannerStack.tsx Outdated
Comment threadapps/web/src/components/chat/ComposerBanner.tsx Outdated
@juliusmarminge
juliusmarmingeforce-pushed the fix/composer-banner-alignment branch from d244ca6 to e77029fCompareSeptember 2, 2026 03:53
@juliusmarminge
juliusmarminge merged commit e9db39c into pingdotgg:mainSep 2, 2026
26 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@Bil0000@juliusmarminge