Skip to content

[3337 by GPT-6.1 Sol] Settings rail: active Agent Extensions & Packages label touches the rail edge - #3344

Merged
integry merged 1 commit into
mainfrom
3337/gpt-6.1-sol-settings-rail-active-agen-20261024-2038-nr1
Oct 24, 2026
Merged

integry merged 1 commit into
mainfrom
3337/gpt-6.1-sol-settings-rail-active-agen-20261024-2038-nr1

Conversation

@propr-dev

@propr-dev propr-dev Bot commented Oct 24, 2026 •

Copy link
Copy Markdown
Contributor

AI Implementation Summary

Closes #3337

Branch: 3337/gpt-6.1-sol-settings-rail-active-agen-20261024-2038-nr1
Commits: ✅ Changes committed (9fbed23)


AI Processing Completed

Execution Details:

Summary:
Implemented label wrapping in the Settings rail. The active “Agent Extensions & Packages” label now spans two lines and preserves inner padding.

Verified desktop layouts at 768px, 1440px, and 1600px, plus mobile navigation. All 22 navigation tests and lint passed. Captured a focused visual preview.

Detailed Logs:

  • Conversation: 47 messages
  • Session: 01a16fa9-b11d-7f01-81a3-08c7890e5a63

Log files stored at:

  • conversation: /usr/src/app/logs/executions/issue-3337-2026-10-24T20-48-51-048Z-conversation.json
  • output: /usr/src/app/logs/executions/issue-3337-2026-10-24T20-48-51-048Z-output.txt
Latest Conversation Messages

This PR was created automatically by ProPR after processing issue #3337.


💡 Need changes?

Comment on this PR to request refinements — the AI agent monitors comments and will update the implementation based on your feedback. Keep iterating until you're satisfied!


Visual preview

Settings rail at 1440px

Settings rail at 1440px

The active Agent Extensions & Packages label wraps to two lines and preserves inner padding.

Original unavailable: managed storage is unavailable or the upload has expired.

… & Packages

Implemented by ProPR AI using gpt-6.1-sol model.

Implementation completed successfully.
@integry

integry commented Oct 24, 2026

Copy link
Copy Markdown
Owner

/ultrafix

@propr-dev propr-dev Bot added the ultrafix label Oct 24, 2026
@propr-dev

propr-dev Bot commented Oct 24, 2026

Copy link
Copy Markdown
Contributor Author

🔄 Ultrafix loop started (goal: 8/10, max cycles: 10)

First action: /review

💡 Tip: Remove the ultrafix label from this PR to stop further ultrafix cycles.

@propr-dev

propr-dev Bot commented Oct 24, 2026 •

Copy link
Copy Markdown
Contributor Author

✅ AI Code Review Complete requested by @integry

Posted 1 review:

View Task Details

@propr-dev

propr-dev Bot commented Oct 24, 2026

Copy link
Copy Markdown
Contributor Author

🔍 AI Code Review — claude:claude-opus-5-5

Overall Evaluation

The PR fixes issue #3337, where the bold active Agent Extensions & Packages label ran into the right edge of the Settings rail. It takes the "wrap to two lines" option from the issue, in propr-ui/src/pages/SettingsPage/SettingsNavigation.tsx:

  • It removes md:whitespace-nowrap from SettingsRailTab.
  • It wraps the label in a min-w-0 flex-1 span.

Why the fix works. The rail is a fixed md:w-56 (224px), so the available label width does not depend on viewport. Subtracting the button's md:px-2.5 padding (20px total), the 16px icon and the md:gap-2 gap (8px) leaves about 180px. A 13px semibold Inter rendering of that label is right at or above that width. With nowrap, it could only fill the button's padding area or overflow it. Now the text wraps inside the content box, so the 10px inner padding is kept on both sides.

No regressions found.

  • Unit and e2e assertions that read tab.textContent or toHaveText are unaffected, because the span preserves the text node.
  • Accessible names (getByRole('tab', { name })) are unaffected for the same reason.
  • The phone row is unaffected: the chevron still sits at the far right, since the flex-1 span already pushes it there, so ml-auto is now redundant but harmless.

I did not run any commands. All checks pass at the current head. The PR is ready to merge.

✅ Fix targets the root cause — Removing md:whitespace-nowrap lets long labels wrap inside the button's padding instead of crowding past it, which is the first remedy the issue asks for.

✅ Correct flex shrink setup — min-w-0 flex-1 on the label span lets it shrink below its intrinsic width so wrapping actually happens. The icon and chevron keep flex-shrink-0 and are not squeezed.

✅ Tested contracts preserved — The label stays a plain text child. The tab text lists in SettingsNavigation.test.tsx and e2e/settings-layout.pw.ts still match, and the phone check scrollWidth <= clientWidth gets easier to satisfy, not harder.

Merge blockers

No merge blockers.

Suggestions

These are optional follow-ups and are not sent to /fix.

S1: 🟢 Tighten line height for wrapped labels

md:text-[13px] sets only the font size, so the 20px line height from the base text-sm still applies at md. A two-line item will be about 52px tall (with py-1.5) next to roughly 32px single-line items. Adding md:leading-snug (or a similar class) to the button or span would keep the wrapped item compact. This is purely visual polish.

S2: 🟢 Consider top-aligning the icon on wrapped rows

The button keeps items-center, so on a two-line label the icon is centred between the lines rather than aligned with the first line. Many rail designs pin the icon to the first line, for example items-start with a small top offset on the icon. Either choice is acceptable; this is a design preference.

S3: 🟢 Add a layout regression check for the long label

None of the existing tests check that a rail label stays inside the button's padding. A small check in e2e/settings-layout.pw.ts at 1440px would lock in the fix. It could select the Agent Extensions tab and assert that the label span's right edge is no further right than the button's right edge minus its padding.

S4: 🟢 Drop the redundant ml-auto on the chevron

Now that the label span is flex-1, it already pushes the phone chevron to the right edge, so ml-auto on ChevronRight has no effect. Removing it is optional cleanup.

Score

This is a small, correct fix that matches the issue's requested behaviour without breaking any existing text, accessibility or phone-layout contracts, and all checks pass. The only gaps are optional visual polish and a missing regression check.

Score: 8/10


🤖 Review Details

  • Model: Claude Opus 5.5
  • Time: 26s
  • Tokens: 26,813 (24,887 in / 1,926 out)
  • Cost: $0.16

View Task


💡 Next step: Comment /fix to address every F# merge blocker, /fix all for every pending blocker and suggestion, or name records explicitly, as in /fix F3 S5.
F# and S# IDs increment across review comments and remain permanent, so selectors such as /fix F3 F5 stay unambiguous across cycles. S# suggestions stay optional: they are implemented only when you name them or request /fix all, and they never relax a merge blocker.

Copy and edit to choose records from this review:

/fix S1 S2 S3 S4

🤖 Review by ProPR

@propr-dev propr-dev Bot removed the ultrafix label Oct 24, 2026
@integry
integry merged commit d66fd2b into main Oct 24, 2026
60 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Settings rail: active Agent Extensions & Packages label touches the rail edge

1 participant