Skip to content

fix(git): exclude SSH ports from provider URLs - #12537

Merged
Yash-Singh1 merged 6 commits into
pingdotgg:mainfrom
GaMeRaM:fix/gitlab-ssh-port-detection
Sep 26, 2026
Merged

Yash-Singh1 merged 6 commits into
pingdotgg:mainfrom
GaMeRaM:fix/gitlab-ssh-port-detection

Conversation

@GaMeRaM

@GaMeRaM GaMeRaM commented Sep 19, 2026 •

Copy link
Copy Markdown
Contributor

What Changed

  • Use the hostname without its transport port when deriving provider information from ssh:// remotes.
  • Continue preserving explicitly configured ports for HTTP and HTTPS remotes.
  • Add regression coverage for recognized and unknown self-hosted providers.

Why

An SSH remote can use a non-default port that is unrelated to the provider's HTTPS API endpoint. Reusing that SSH port in the generated HTTPS base URL also prevents unknown self-hosted providers from matching hosts reported by their authenticated CLI.

As a result, a valid self-hosted provider could remain classified as unknown and its change requests would not be discovered.

Validation

  • Targeted source-control tests pass.
  • Shared package typecheck passes.
  • Targeted lint and formatting checks pass.

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • No UI changes
  • No animation or interaction changes

Summary by CodeRabbit

  • Bug Fixes
    • Fixed HTTPS provider URLs generated from SSH remotes with custom ports.
    • Self-hosted GitLab and other hosts now retain the correct hostname without incorrectly reusing the SSH port.
    • Improved remote URL handling so SSH-specific port information does not carry over when creating HTTPS provider links.

@github-actions github-actions Bot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:XS 0-9 changed lines (additions + deletions). labels Sep 19, 2026
@macroscopeapp

macroscopeapp Bot commented Sep 19, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at 357459c

Macroscope's review found this PR approvable — This is a narrowly scoped source-control bug fix that removes SSH transport ports from derived HTTPS provider URLs while preserving explicit HTTP/HTTPS ports. Regression tests cover recognized and unknown self-hosted providers, with no changes to defaults, schemas, security-sensitive code, or static-analysis configuration.

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

@coderabbitai

coderabbitai Bot commented Sep 19, 2026 •

Copy link
Copy Markdown

Review Change StackReview Change Stack

Important

Review skipped

Review was skipped as selected files did not have any reviewable changes.

⚙️ Run configuration

Configuration used: Repository: pingdotgg/t3code/.coderabbit.yaml

Review profile: CHILL

Plan: Advanced

Run ID: 38bb69c4-009a-461b-b82b-39a62f22001d

📥 Commits

Reviewing files that changed from the base of the PR and between e6d3258 and b58422b.

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

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository: pingdotgg/t3code/.coderabbit.yaml

Review profile: CHILL

Plan: Advanced

Run ID: f4bbc576-29c6-4388-ba71-dda5d078381d

📥 Commits

Reviewing files that changed from the base of the PR and between 4afa4b507b9c5c7e3d3f297c9fa4f339d427026c and 9b30bfe.

📒 Files selected for processing (1)
  • packages/shared/src/sourceControl.ts
🚧 Files skipped from review as they are similar to previous changes (1)
  • packages/shared/src/sourceControl.ts

Included review availability: Your plan provides up to 10 included reviews per hour; 8 remain after this review.


📝 Walkthrough

Walkthrough

The change excludes explicit SSH ports from parsed hostnames while preserving ports for HTTP(S) URLs. Tests cover self-hosted GitLab and unknown hosts when constructing HTTPS provider URLs.

Changes

SSH host parsing

Layer / File(s) Summary
Parse and validate SSH hosts
packages/shared/src/sourceControl.ts, packages/shared/src/sourceControl.test.ts
parseRemoteHost uses url.hostname for SSH URLs. Tests verify that SSH port 24 does not appear in HTTPS provider base URLs for self-hosted GitLab and unknown hosts.

Priority: ⬇️ Low

Estimated code review effort: 2 (Simple) | ~10 minutes

Change: Bug fix

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 50.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 2 functions across 2 files. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and concisely describes the main change: excluding SSH transport ports from provider URLs.
Description check ✅ Passed The description includes the required change summary, rationale, UI impact, and checklist. It also documents validation results and remains focused on the pull request objective.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create a new PR

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

@GaMeRaM GaMeRaM changed the title Fix SSH port handling in provider URL detection fix(shared): exclude SSH ports from provider URLs Sep 19, 2026
@GaMeRaM GaMeRaM changed the title fix(shared): exclude SSH ports from provider URLs fix(git): exclude SSH ports from provider URLs Sep 19, 2026
@GaMeRaM
GaMeRaM force-pushed the fix/gitlab-ssh-port-detection branch from 357459c to 4afa4b5 Compare September 19, 2026 03:33
@GaMeRaM
GaMeRaM force-pushed the fix/gitlab-ssh-port-detection branch from 4afa4b5 to 9b30bfe Compare September 19, 2026 03:42
@Yash-Singh1
Yash-Singh1 merged commit 29a3266 into pingdotgg:main Sep 26, 2026
19 checks passed
@GaMeRaM
GaMeRaM deleted the fix/gitlab-ssh-port-detection branch September 26, 2026 13:39
github-actions Bot added a commit to omarcresp/t3code-flake that referenced this pull request Sep 26, 2026
## What's Changed
* feat(observability): write a server heap snapshot on SIGUSR2 by @t3dotgg in pingdotgg/t3code#13694
* perf(server): shutdown no longer rewrites every stopped session row by @t3dotgg in pingdotgg/t3code#13688
* perf(server): build the thread list snapshot without decoding it twice by @t3dotgg in pingdotgg/t3code#13693
* fix(client): slow servers finish loading the thread list instead of loading it twice by @t3dotgg in pingdotgg/t3code#13683
* perf(web): hidden terminal drawers no longer keep full thread history in memory by @t3dotgg in pingdotgg/t3code#13686
* perf(server): per-thread settlement and PR checks no longer rebuild the whole thread list by @t3dotgg in pingdotgg/t3code#13691
* fix(mobile): running threads open at the latest message by @AKolenda in pingdotgg/t3code#13530
* feat(observability): record event loop stalls in the server trace by @t3dotgg in pingdotgg/t3code#13697
* perf(server): stop re-running git for every project each minute by @t3dotgg in pingdotgg/t3code#13689
* fix(usage): hide the Cursor keychain prompt when Cursor isn't set up by @Gigioxx in pingdotgg/t3code#13714
* feat(web): add chat width setting for wide screens by @otavio in pingdotgg/t3code#11594
* fix(opencode): accept v2 serve ready line when spawning server by @shirishpothi in pingdotgg/t3code#13651
* fix(editors): stop treating the agy CLI as the Antigravity IDE by @ishaanko in pingdotgg/t3code#7079
* fix(web): make the empty workspace draggable on desktop by @otavio in pingdotgg/t3code#13713
* fix(server): installed editors no longer vanish when discovery is slow by @bfowler in pingdotgg/t3code#13669
* fix(git): exclude SSH ports from provider URLs by @GaMeRaM in pingdotgg/t3code#12537
* fix(web): Mod+B bolds on non-Latin layouts by @ValeraZSD in pingdotgg/t3code#13409
* fix(server): prune expired replay-protection files from the secrets directory by @t3dotgg in pingdotgg/t3code#13695
* fix(web): terminal links drop a trailing colon by @ValeraZSD in pingdotgg/t3code#13408
* fix(server): bump node-pty to 1.2.0-beta.15 for linux-arm64 prebuild by @Ephraim-9 in pingdotgg/t3code#13748
* Show a focus ring on sidebar thread and draft rows by @ryanilano in pingdotgg/t3code#13344
* fix(mobile): keep composer within folded screen after resume by @PixPMusic in pingdotgg/t3code#13310
* fix(server): let OpenCode generate session titles by @macodev00 in pingdotgg/t3code#13368
* fix(server): let Antigravity inspect unsupported files by path by @Bil0000 in pingdotgg/t3code#13339
* fix(mobile): link URLs with ports and single-label hosts by @Yash-Singh1 in pingdotgg/t3code#13795
* feat(web): add keyboard navigation for usage by @tris203 in pingdotgg/t3code#10158
* perf(observability): stop writing empty spans on spawns, projected events, and idle polls by @t3dotgg in pingdotgg/t3code#13756
* perf(server): opening Diagnostics no longer loads the whole trace ring into memory by @t3dotgg in pingdotgg/t3code#13763
* perf(clients): sort projects and settled threads without re-parsing dates per comparison by @t3dotgg in pingdotgg/t3code#13759
* fix(observability): the renderer trace proxy stops tracing itself by @t3dotgg in pingdotgg/t3code#13761
* perf(server): background sweeps only read threads that can still settle by @t3dotgg in pingdotgg/t3code#13765
* perf(clients): saving the thread list cache no longer freezes the UI by @t3dotgg in pingdotgg/t3code#13767
* perf(server): cut idle wakeups from the Connect relay and session reaper by @t3dotgg in pingdotgg/t3code#13774
* fix(mobile): keep trailing underscores and tildes in autolinked URLs by @Yash-Singh1 in pingdotgg/t3code#13807
* fix(web): queued messages send while their thread is not open by @t3dotgg in pingdotgg/t3code#13764
* fix(server): background git status fetches no longer fill the disk with failed repacks by @t3dotgg in pingdotgg/t3code#13812
* fix(mobile): thread list shows the pull request icon instead of # by @flamboh in pingdotgg/t3code#13742
* fix(accessibility): correct control announcements and sidebar traversal by @blinding-pixels in pingdotgg/t3code#13491
* fix(usage): tolerate newer provider variants by @tris203 in pingdotgg/t3code#10076
* fix(usage): omit Cursor warning when no login is saved by @tris203 in pingdotgg/t3code#13820
* fix(usage): identify client version mismatches by @tris203 in pingdotgg/t3code#8208
* fix(web): stop mistaking offline servers for updates by @tris203 in pingdotgg/t3code#13083
* test(usage): assert contract mismatch details by @Yash-Singh1 in pingdotgg/t3code#13861
* fix(build): validate Linux node-pty prebuilds in Windows artifacts by @Yash-Singh1 in pingdotgg/t3code#13867

## New Contributors
* @otavio made their first contribution in pingdotgg/t3code#11594
* @shirishpothi made their first contribution in pingdotgg/t3code#13651
* @bfowler made their first contribution in pingdotgg/t3code#13669
* @GaMeRaM made their first contribution in pingdotgg/t3code#12537
* @ValeraZSD made their first contribution in pingdotgg/t3code#13409
* @Ephraim-9 made their first contribution in pingdotgg/t3code#13748
* @ryanilano made their first contribution in pingdotgg/t3code#13344
* @macodev00 made their first contribution in pingdotgg/t3code#13368
* @blinding-pixels made their first contribution in pingdotgg/t3code#13491

**Full Changelog**: pingdotgg/t3code@v0.0.43-nightly.20260926.2282...v0.0.43-nightly.20260926.2318

Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.43-nightly.20260926.2318
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XS 0-9 changed lines (additions + deletions). vouch:unvouched PR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants