Repository navigation
Conversation
|
Navigate logical layers of code changes, visualize relationships, and explore their blast radius. Warning Review limit reachedYou've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Next included review available in 1 minute. View limit detailsLimit details: You’ve used all 10 included reviews currently available. Review configuration: ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Advanced Run ID: 📥 CommitsReviewing files that changed from the base of the PR and between 3acae2440c5667ae6c7bd108544d9f1d55526183 and c71cd06. 📒 Files selected for processing (12)
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Advanced Run ID: 📥 CommitsReviewing files that changed from the base of the PR and between bf0e4638088abbf9cae541b66d32d3348cefa287 and 3acae2440c5667ae6c7bd108544d9f1d55526183. 📒 Files selected for processing (4)
Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 1 remain after this review. 📝 WalkthroughWalkthroughThe Git-username branch-prefix strategy now prefers a valid lowercase username. If that form is invalid and the original username is valid, the strategy retains the original casing. The settings preview uses the selected value. Custom prefixes retain their entered casing. Tests cover lowercase output, the invalid-lowercase fallback, and custom-prefix casing. Priority: ➖ Normal Severity of issue fixed: Medium Merge Risk: ⚪ Minimal · up to Git-username prefixes and settings previews now use consistent casing while preserving custom prefixes and valid original-case fallbacks. No actionable merge-blocking risk remains in the supplied evidence. Security Architecture ReviewSecurity architecture risk: ⚪ Minimal · up to The change adjusts branch naming without changing account identity, permissions, or branch-creation authority. Existing validation remains in place, and custom-prefix casing is preserved. No material security risk was identified in the changed behavior. Retained concerns Security review detailsSecurity Blast Radius
Trust Boundaries and Controls
🚥 Pre-merge checks | ✅ 3 | ❌ 2❌ Failed checks (2 warnings)
✅ Passed checks (3 passed)
Full details: Description checkExplanation The description explains the problem, scope, behavior changes, trade-offs, linked issue, and targeted test result. However, it does not follow the repository template and omits required sections such as ELI5, What Changed, Why, Visual Proof or N/A, AI Disclosure, Review, Agent skill upstream boundary, Notes, and the Checklist. Resolution Reformat the description using the repository template. Add the missing required sections, include Visual Proof or state N/A with a reason, complete the Testing and Checklist items, and document cross-platform, SSH, security, performance, and compatibility considerations.
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
There was a problem hiding this comment.
ℹ️ No critical issues — one minor suggestion inline.
Reviewed changes
- Lowercase the
git-usernameprefix —selectBranchPrefixInputnow returnsgitUsername.toLowerCase()for thegit-usernamestrategy, preservingnull. This is the funnel for local, WSL, SSH, and runtime worktree-create, so new branches land in the lowercase ref namespace and no longer disagree withHEADon case-insensitive filesystems. Custom andnonestrategies keep their behavior. - Tests — a mixed-case login lowercases, and a custom prefix keeps the user's typed case. The new assertion genuinely fails without the one-line change, so it is real coverage rather than theatre.
DeepSeek Flash (free via Pullfrog for OSS) | 𝕏
bf0e463 to
3acae24
Compare
Sync update (
|
There was a problem hiding this comment.
ℹ️ No critical issues — one minor suggestion inline.
Reviewed changes
- Settings-pane preview now matches the branch that gets created —
GitPanederives the previewed prefix fromselectBranchPrefixInputinstead of the raw repogitUsername, so a mixed-case login previews as the lowercased prefix worktree-create will use. This addresses the prior pullfrog review. - Added a mixed-case fallback for git usernames whose lowercase form is an invalid ref —
selectBranchPrefixInputreturns the original login (e.g.Alice.LOCK) instead of a lowercase ref git rejects, with covering unit and settings-pane tests. - Refreshed the helper's JSDoc to document the lowercasing and the fallback.
The preview/JSDoc fix is correct and consistent across the main-process builder and the renderer. The remaining comment is about whether the new fallback is worth its cost on the case-insensitive filesystems this PR targets.
DeepSeek Flash (free via Pullfrog for OSS) | 𝕏
Sync update (
|
Sync update (
|
There was a problem hiding this comment.
✅ No new issues found.
Reviewed changes
- Dropped the mixed-case fallback in
selectBranchPrefixInput: a login whose lowercase form git rejects (Alice.LOCK→alice.lock) now yieldsnullinstead of the original login, so norefs/heads/Alice.LOCK/prefix is created and the settings preview showsNo prefix will be applied. This addresses the prior pullfrog review's case-fold lockfile collision. - Refreshed the helper's JSDoc and added assertions that an already-lowercase invalid login (
alice.lock,team x) is still returned so settings can surface the rejection. - Added
GitPaneand worktree-builder coverage: the preview no longer showsAlice.LOCK, andcomputeBranchName/computeValidatedBranchNameboth return the unprefixed name.
DeepSeek Flash (free via Pullfrog for OSS) | 𝕏
GitHub preserves signup case and treats the login as case-insensitive. Using that case as a branch prefix collides with an existing lowercase ref directory on APFS, so HEAD and the ref database disagree. Custom prefixes stay as typed.
…lowercase form git rejects Co-authored-by: Cursor <cursoragent@cursor.com>
Alice.LOCK lowercases to alice.lock. Keeping the original login creates refs/heads/Alice.LOCK/, which collides with the alice.lock lockfile on a case-insensitive filesystem. That prefix is now omitted, and the settings preview no longer offers it.
A mixed-case login such as Alice.LOCK is left off new branches because its lowercase form ends in .lock. Settings now says that, instead of leaving the reason blank under the omitted prefix.
c9fe186 to
01496ca
Compare
Sync update (
|
There was a problem hiding this comment.
ℹ️ No critical issues — one minor documentation-placement nit inline.
Reviewed changes
- Explained an omitted username prefix — added
gitUsernamePrefixOmissionand theGitUsernamePrefixOmission = 'lowercase-lock'reason soBranchPrefixFeedbackcan say why the prefix is blank for a mixed-case login likeAlice.LOCK, replacing the generic "No prefix will be applied"; copy added across all six locales. - Shared the omission decision —
selectBranchPrefixInputnow delegates the.lockcase to that helper. The refactor is behavior-equivalent: an already-lowercase invalid login is still returned so the existing character warning explains it. - Coverage —
branch-prefix.test.tsasserts the omission-reason matrix, andGitPane.test.tsxasserts the detailed settings message plus that it is not shown for a plain invalid username (team x).
DeepSeek Flash (free via Pullfrog for OSS) | 𝕏
The selector description was sitting above the omission type, so the function itself had no note. The block now sits directly above selectBranchPrefixInput.
Sync update (
|

Description
git-usernamebranch prefixes kept the GitHub login's signup case. GitHub treats that login as case-insensitive, but a case-insensitive filesystem storesEurFelux/andeurfelux/as the same ref directory.HEADthen names a branchgit pushcannot resolve.Focused fix
selectBranchPrefixInputlowercases only thegit-usernamestrategy.nonestrategy, and the code that resolves which login to store.Preserves
A custom prefix stays in the case the user typed. An already-lowercase login is unchanged. An empty or missing username still produces no prefix.
Evidence
node node_modules/vitest/vitest.mjs run --config config/vitest.config.ts --cache false src/shared/branch-prefix.test.ts— 32 passed.The collision was not re-run on an APFS checkout.
User-regression-tradeoffs
New worktrees on a case-sensitive filesystem also use the lowercase prefix, so they no longer continue a mixed-case
git-usernamenamespace. Set Branch Prefix to Custom to keep a mixed-case namespace.Fixes #15857