Add custom Open with clients to project Code dropdown

What does this MR do and why?

Adds an instance-level admin setting that lets self-managed administrators extend the project Code dropdown's "Open with" list with custom Git GUI clients (Sourcetree, Tower, VSCodium, Fork, and others) alongside the built-in VS Code and IntelliJ entries.

Each entry has a display name plus optional SSH and HTTPS URL templates that contain a {url} placeholder. The placeholder is substituted server-side with the percent-encoded clone URL of the project being viewed. Entries are configured under Admin > Settings > Repository > Code dropdown clients and behind the feature flag custom_code_dropdown_clients (beta, default off).

Per #604390 (comment 3613329908)

  • !233416 (merged) — the underlying setting (in review now; the others build on it) 👈
  • !244658 (merged) — the admin screen for adding and editing entries
  • !244659 — showing the configured entries in the Code dropdown
  • !244660 — documentation

References

Related to Add "Open with Coder" button (or generic custom... (#604390)

Screenshots or screen recordings

Initial MR

State Screen
Admin form (empty state) Screenshot_2026-04-26_at_17.20.52.png
Admin form (after adding a VSCodium entry) Screenshot_2026-04-26_at_17.21.21.png
Project Code dropdown (user-facing) showing the custom VSCodium entry alongside the built-in clients Screenshot_2026-04-26_at_17.21.34.png

Updated design proposal

See !233416 (comment 3636865507)

State Screen
Empty state

1.1 empty state.jpg

Add new client

1.2 add new client.jpg

Client added

1.3 added client.jpg

Edit client

1.4 edit client.jpg

Add new client with pre-existing client

1.5 add new client with preexisting.jpg

How to set up and validate locally

  1. Run the new migration:

    bin/rails db:migrate
  2. Enable the feature flag:

    Feature.enable(:custom_code_dropdown_clients)
  3. Visit Admin > Settings > Repository and expand Code dropdown clients.

  4. Add an entry — for example, name VSCodium, both URL templates set to vscodium://vscode.git/clone?url={url} — and save.

  5. Open any project page, click Code, and confirm the new client appears in the Open with group with SSH and HTTPS buttons.

MR acceptance checklist

Evaluate this MR against the MR acceptance checklist.

Edited by Alyssa Trinh

Merge request reports

Loading
Loading