Skip to content

[3334 by GPT-6.1 Sol] Repository picker truncates short repository names despite free space - #3347

Merged
integry merged 1 commit into
mainfrom
3334/gpt-6.1-sol-repository-picker-truncat-20261024-2038-ijk
Oct 24, 2026
Merged

integry merged 1 commit into
mainfrom
3334/gpt-6.1-sol-repository-picker-truncat-20261024-2038-ijk

Conversation

@propr-dev

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

Copy link
Copy Markdown
Contributor

AI Implementation Summary

Closes #3334

Branch: 3334/gpt-6.1-sol-repository-picker-truncat-20261024-2038-ijk
Commits: ✅ Changes committed (9d56a79)


AI Processing Completed

Execution Details:

Summary:
Implemented the picker sizing adjustment: the chevron now participates in layout, leaving truncation to the label. Default triggers also show the full repository name in a tooltip.

Validated with 26 passing tests, a successful production build, and Chromium checks across six viewport widths. Captured previews of new-plan and draft views.

Detailed Logs:

  • Conversation: 55 messages
  • Session: 01a16fa9-74ef-7350-a0ab-d385b5cce685

Log files stored at:

  • conversation: /usr/src/app/logs/executions/issue-3334-2026-10-24T20-49-16-639Z-conversation.json
  • output: /usr/src/app/logs/executions/issue-3334-2026-10-24T20-49-16-639Z-output.txt
Latest Conversation Messages

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


💡 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

Draft plan repository picker

Draft plan repository picker

Existing draft at 1440px showing the full courier-app repository name next to its branch.

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

New plan repository picker

New plan repository picker

Planner Studio Define step at 1440px showing the full courier-app repository name.

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

…sitory names

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

This PR targets issue #3334, where the repository picker's breadcrumb trigger in Planner Studio truncated short names such as courier-app even with free space beside it. The change is localized to propr-ui/src/components/RepositorySelector.tsx:

  • The ChevronDown icon moves from an absolutely positioned sibling into the button's flex flow, with flex-shrink-0. The old pr-5 reservation is removed.
  • md:truncate is removed from the button itself. Truncation now applies only to the label <span>, which is the element that should shrink.
  • max-w-full is added to the breadcrumb container, so the trigger stays bounded by its scope pill.
  • The default trigger gains a title, so a truncated name has a tooltip in the NewPlanForm and Dashboard selectors too.

The approach fits the expected behaviour: the full name shows when it fits, and only the label ellipsizes when space is genuinely short. Both breadcrumb consumers (NewModeHeader and EditModeHeader) share BreadcrumbTrigger, so the Define step and the To-dos → Create plan draft are both covered. Current-head checks are green.

I could not render the layout during this review. The geometry claims below come from static reasoning over the classes, not from a browser run.

✅ Intrinsic sizing now includes the chevron — The chevron is an in-flow flex child of the button with flex-shrink-0. The button's max-content width therefore accounts for it, instead of relying on a fixed pr-5 gutter that an absolutely positioned icon covered.

✅ Truncation is scoped to the label — The button keeps min-w-0 max-w-full but no longer sets overflow:hidden. Only the label span carries md:truncate, so the icon and chevron are never clipped. The phone-wrapping behaviour (whitespace-normal [overflow-wrap:anywhere], MobileBranchSuffix) is unchanged.

✅ Accessible name and tooltip contracts preserved — Lucide icons render aria-hidden, so moving the chevron inside the button leaves the accessible name unchanged. SetupWizardHeaders.test.tsx still matches it with /^propr\/develop$/. The breadcrumb title logic is untouched.

Merge blockers

No merge blockers.

Suggestions

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

S1: 🟢 Add a layout regression for short names

No test exercises the reported failure: a short owner/courier-app name in the Define and plan-draft headers at 1440px, where the label's scrollWidth should not exceed its clientWidth. jsdom unit tests cannot catch this class of bug, which comes from CSS intrinsic sizing. A small Playwright assertion would guard it, paired with a narrow-width case confirming that the label still truncates and the chevron stays visible.

S2: 🟢 Default-trigger title diverges from visible text

The new default-trigger title reuses getBreadcrumbTitle, which produces different text from what the trigger shows in two states:

  • With no repositories, the label reads "No repositories configured" but the tooltip says "No repositories".
  • While loading, the label reads "Loading repositories..." but the tooltip shows the placeholder or the selected repo.

These are cosmetic mismatches rather than blockers. Consider suppressing the title while loading and aligning the empty-state string. Renaming the helper to something like getRepositoryTitle would also make its shared use clearer.

S3: 🟢 Cyclic 50% cap in the scope pill

In SetupWizardHeaders.tsx, SCOPE_PILL_CLASS caps the pill at md:max-w-[50%] of a content-sized flex-auto row. A long repository name can therefore still truncate when the branch chip is short, even though the row has room. This code is unchanged and outside the reported short-name case. It is worth checking during the browser verification suggested in S1.

Score

The change is small and well-targeted, with no regressions found in the breadcrumb or default-trigger consumers, and all checks pass. The main gap is that no layout regression test covers the reported behaviour.

Score: 8/10


🤖 Review Details

  • Model: Claude Opus 5.5
  • Time: 39s
  • Tokens: 31,905 (28,490 in / 3,415 out)
  • Cost: $0.21

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

🤖 Review by ProPR

@propr-dev propr-dev Bot removed the ultrafix label Oct 24, 2026
@integry
integry merged commit 112cdee into main Oct 24, 2026
70 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.

Repository picker truncates short repository names despite free space

1 participant