Skip to content

feat(desktop, web): surface Claude Code custom endpoint as a clickable badge - #7486

Open
chopll wants to merge 2 commits into
nexu-io:mainfrom
chopll:feat/web-claude-custom-endpoint-badge
Open

feat(desktop, web): surface Claude Code custom endpoint as a clickable badge#7486
chopll wants to merge 2 commits into
nexu-io:mainfrom
chopll:feat/web-claude-custom-endpoint-badge

Conversation

@chopll

@chopll chopll commented Aug 27, 2026

Copy link
Copy Markdown

Add a 'Custom endpoint' pill to the active Claude Code card in Settings → Execution → Local CLI when ANTHROPIC_BASE_URL or ANTHROPIC_API_KEY is configured. Clicking the badge expands the existing 'Advanced: proxy & custom paths' disclosure and scrolls it into view, making third-party proxy / BYOK setup discoverable.

  • Add agentCliEnvDetailsRef and badge click handler in SettingsDialog
  • Add .agent-card-benefit--clickable hover style
  • Add settings.claudeCustomEndpointBadge i18n key (19 locales)
  • Add 5 unit tests covering visibility, agent scoping, and expand/scroll

Fixes #

Why

What users will see

Surface area

  • UI — new page / dialog / panel / menu item / setting / empty state in apps/web or apps/desktop (including Electron menu bar)
  • Keyboard shortcut — new or changed
  • CLI / env var — new od subcommand or flag, new tools-dev / tools-pack flag, or new OD_* env var
  • API / contract — new /api/* endpoint, new SSE event, or changed shape in packages/contracts
  • Extension point — new entry under skills/, design-systems/, design-templates/, or craft/, or change to the skills protocol
  • i18n keys — added new translation keys (see TRANSLATIONS.md for the locale workflow)
  • New top-level dependency — adding any new entry to the root package.json (dependencies or devDependencies); workspace-package package.json files are out of scope. Include a paragraph on what we get vs. what bytes we ship (see CONTRIBUTING.md → Code style)
  • Default behavior change — changes what existing users experience without opting in (default model, default setting, file/SQLite schema, auto-network on startup, auto-install)
  • None — internal refactor, docs, tests, or translation update only

Screenshots

Bug fix verification

Validation

Add a 'Custom endpoint' pill to the active Claude Code card in
Settings → Execution → Local CLI when ANTHROPIC_BASE_URL or
ANTHROPIC_API_KEY is configured. Clicking the badge expands the
existing 'Advanced: proxy & custom paths' disclosure and scrolls it
into view, making third-party proxy / BYOK setup discoverable.

- Add agentCliEnvDetailsRef and badge click handler in SettingsDialog
- Add .agent-card-benefit--clickable hover style
- Add settings.claudeCustomEndpointBadge i18n key (19 locales)
- Add 5 unit tests covering visibility, agent scoping, and expand/scroll
@chopll chopll changed the title feat: surface Claude Code custom endpoint as a clickable badge feat(desktop, web): surface Claude Code custom endpoint as a clickable badge Aug 27, 2026
@lefarcen
lefarcen requested a review from PerishCode August 27, 2026 07:09
@lefarcen lefarcen added size/M PR changes 100-300 lines risk/medium Medium risk: regular code changes type/feature New feature needs-design-review Awaiting design review (external UI change); cleared by the Odcrew App applying design-approved needs-validation Runtime change detected; needs human or /explore agent validation. labels Aug 27, 2026
@lefarcen

Copy link
Copy Markdown
Contributor

🧪 This PR has changes that need a manual QA pass before merge — please hold off self-merging for now; we'll loop QA in once it's merge-ready (and design/product have signed off, where applicable).

Nothing else is needed from you on the QA side yet. Thanks for the contribution!

@lefarcen

Copy link
Copy Markdown
Contributor

Hey @chopll, the badge → disclosure flow is easy to understand from your summary, and the focused test coverage helps. Before we route the UI/product pass, could you fill in Why, What users will see, and Validation, and attach an entry-point screenshot for Settings → Execution → Local CLI so reviewers can judge the user-facing change quickly?

@PerishCode PerishCode left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The new badge introduces a nested interactive control in the Claude provider card. Please move it outside the card-selection button so the disclosure shortcut has valid, reliable keyboard and assistive-technology behavior.

🔁 Powered by Looper · runner=reviewer · agent=codex · An autonomous AI dev team for your GitHub repos.

Comment on lines +4838 to +4842
<span
className="agent-card-benefit agent-card-benefit--clickable"
data-testid={`settings-agent-card-${a.id}-custom-endpoint-badge`}
role="button"
tabIndex={0}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Move this disclosure control outside settings-agent-select-${a.id} and render it as a native shared Button (or restructure the card so the two actions are sibling buttons). This focusable role="button" span is currently a descendant of the card's existing <button className="agent-card-select">, which creates nested interactive content. That is invalid button markup and assistive technologies can flatten or misannounce the inner action; keyboard users can therefore reach a control whose semantics and activation are unreliable even though the synthetic click test passes. Keep the badge visually associated with the card, but make selection and “open Advanced settings” separate sibling controls, then cover Enter/Space activation in the focused test.

🔁 Powered by Looper · runner=reviewer · agent=codex · An autonomous AI dev team for your GitHub repos.

Reviewer feedback: the badge was a nested interactive control inside the
card-selection <button>, which is invalid markup and unreliable for
keyboard/assistive-technology users.

- Move the badge out of .agent-card-select and render it as a sibling
  <Button> from @open-design/components.
- Rename CSS class to .agent-card-advanced-btn and keep pill styling.
- Add Enter and Space keyboard activation tests.
@lefarcen lefarcen added the needs-product-review Feature PR awaiting product sign-off before merge (see roadmap) label Aug 27, 2026
@lefarcen

Copy link
Copy Markdown
Contributor

Hey @chopll@PerishCode's blocking review on the current head is the one to address first: the custom-endpoint shortcut needs to move out of the existing card button so selection and “open Advanced settings” are separate controls with reliable keyboard and assistive-technology behavior. Once that's updated, the remaining non-code item from our side is still the PR body/screenshot follow-up above.

💡 To drive this PR to merge hands-free, paste this to your AI coding agent (Claude Code / Codex / opencode / Cursor …):
Take over nexu-io/open-design#7486 until it merges — read https://raw.githubusercontent.com/nexu-io/looper/main/skills/pr-takeover/SKILL.md and follow it.

@PerishCode PerishCode left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@chopll I reviewed the full changed range for the Claude custom-endpoint shortcut, including the follow-up that moves it outside the provider-selection button. The current implementation uses the shared native Button as a sibling action, preserves active-Claude scoping, opens and scrolls the existing CLI environment disclosure, and adds focused visibility plus keyboard-activation coverage. The prior accessibility blocker is resolved cleanly—thanks for turning that feedback around thoughtfully.

🔁 Powered by Looper · runner=reviewer · agent=codex · An autonomous AI dev team for your GitHub repos.

@github-actions

Copy link
Copy Markdown
Contributor

Visual regression review

Head: 1e78c6a · Base: 75e231e

9 changed · 44 unchanged · 0 new without baseline · 0 failed

Changed cases

Case Main PR Diff
visual-critical-settings
2,670 px (0.21%)
main pr diff
visual-integrations-use-everywhere
2,670 px (0.21%)
main pr diff
visual-settings-byok
2,658 px (0.21%)
main pr diff
visual-settings-byok-model-dropdown
2,670 px (0.21%)
main pr diff
visual-settings-byok-openai
2,670 px (0.21%)
main pr diff
visual-settings-execution
2,670 px (0.21%)
main pr diff
visual-settings-local-cli
2,670 px (0.21%)
main pr diff
visual-settings-local-cli-model-dropdown
2,388 px (0.18%)
main pr diff
visual-settings-open-design-account
2,389 px (0.18%)
main pr diff
Unchanged cases
Case Main PR Diff
visual-avatar-local-agent-list
0 px (0.00%)
main pr diff
visual-avatar-local-agent-list-panel
0 px (0.00%)
main pr diff
visual-avatar-menu
0 px (0.00%)
main pr diff
visual-avatar-menu-panel
0 px (0.00%)
main pr diff
visual-avatar-open-design-model-picker
0 px (0.00%)
main pr diff
visual-critical-workspace
0 px (0.00%)
main pr diff
visual-critical-workspace-preview
0 px (0.00%)
main pr diff
visual-deepseek-unpaid-campaign-600
0 px (0.00%)
main pr diff
visual-deepseek-unpaid-campaign-short-height
0 px (0.00%)
main pr diff
visual-design-system-detail
0 px (0.00%)
main pr diff
visual-design-systems
0 px (0.00%)
main pr diff
visual-home
0 px (0.00%)
main pr diff
visual-home-catalog
0 px (0.00%)
main pr diff
visual-home-context-picker
0 px (0.00%)
main pr diff
visual-home-context-picker-popover
0 px (0.00%)
main pr diff
visual-home-plugin-filter
0 px (0.00%)
main pr diff
visual-home-plugin-use-staged
0 px (0.00%)
main pr diff
visual-home-plugin-use-with-query
0 px (0.00%)
main pr diff
visual-home-staged-attachment
0 px (0.00%)
main pr diff
visual-integrations
0 px (0.00%)
main pr diff

Visual diff is advisory only and does not block merging.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

needs-design-review Awaiting design review (external UI change); cleared by the Odcrew App applying design-approved needs-product-review Feature PR awaiting product sign-off before merge (see roadmap) needs-validation Runtime change detected; needs human or /explore agent validation. risk/medium Medium risk: regular code changes size/M PR changes 100-300 lines type/feature New feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants