Refine the connect modal's API-key credential UX#1192
Conversation
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
executor-marketing | 2692f42 | Commit Preview URL Branch Preview URL |
Jun 28 2026, 11:19 PM |
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| ❌ Deployment failed View logs |
executor-cloud | 2692f42 | Jun 28 2026, 11:19 PM |
Cloudflare preview
Sign-in is Cloudflare Access (one-time PIN to an allowed email). The preview has its own database and encryption key; it is destroyed when this PR closes. |
@executor-js/cli
@executor-js/config
@executor-js/execution
@executor-js/sdk
@executor-js/codemode-core
@executor-js/runtime-quickjs
@executor-js/plugin-file-secrets
@executor-js/plugin-graphql
@executor-js/plugin-keychain
@executor-js/plugin-mcp
@executor-js/plugin-onepassword
@executor-js/plugin-openapi
executor
commit: |
Greptile SummaryThis PR refines the connect modal's API-key credential UX: the placement prefix is merged into the credential field as a non-editable affix, the auth-method tabs are visually attached to the panel card, and the placement editor gains preset buttons and an amber warning for bare prefixes (no trailing space).
Confidence Score: 4/5Mostly safe to merge; one code path silently hides a placement from the user when a single-credential method sends to more than one non-env carrier. The packages/react/src/components/add-account-modal.tsx — specifically the Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[method + singleInput + !isEnvMethod] --> B{singleCredentialAffix?}
B -- "non-null (1 non-env placement)" --> C[Show affix inside credential input\nHide separate placement preview]
B -- "null (0 or multi non-env placements)" --> D[Show placement preview lines\nShow plain credential input]
C --> E[PasteCredentialInputs renders\naffix span + raw input]
D --> F[PasteCredentialInputs renders\nstandard Input]
G[PlacementEditor] --> H{barePrefix?}
H -- yes --> I[Amber warning: 'Prefix has no trailing space']
H -- no --> J[No warning]
%%{init: {'theme': 'base', 'themeVariables': {"darkMode": true, "background": "#0d1117", "primaryColor": "#21262d", "primaryTextColor": "#e6edf3", "primaryBorderColor": "#8b949e", "lineColor": "#8b949e", "textColor": "#e6edf3", "edgeLabelBackground": "#161b22", "actorBkg": "#21262d", "actorBorder": "#8b949e", "actorTextColor": "#e6edf3", "actorLineColor": "#8b949e", "signalColor": "#8b949e", "signalTextColor": "#e6edf3", "noteBkgColor": "#373320", "noteBorderColor": "#d4a72c", "noteTextColor": "#f0e6c0", "labelBoxBkgColor": "#21262d", "labelBoxBorderColor": "#8b949e", "labelTextColor": "#e6edf3", "loopTextColor": "#e6edf3", "activationBkgColor": "#30363d", "activationBorderColor": "#8b949e"}}}%%
flowchart TD
A[method + singleInput + !isEnvMethod] --> B{singleCredentialAffix?}
B -- "non-null (1 non-env placement)" --> C[Show affix inside credential input\nHide separate placement preview]
B -- "null (0 or multi non-env placements)" --> D[Show placement preview lines\nShow plain credential input]
C --> E[PasteCredentialInputs renders\naffix span + raw input]
D --> F[PasteCredentialInputs renders\nstandard Input]
G[PlacementEditor] --> H{barePrefix?}
H -- yes --> I[Amber warning: 'Prefix has no trailing space']
H -- no --> J[No warning]
Reviews (2): Last reviewed commit: "Refine the connect modal's API-key crede..." | Re-trigger Greptile |
- Merged credential field: the placement's lead + prefix is a fixed,
non-editable addon inside the field, so it reads as the header value being
built ("Authorization: Bearer <token>") and the separate preview line is
dropped. autoComplete/ignore attrs stop the browser and password managers
from offering to GENERATE a password here; the app's own 1Password picker
still covers filling an existing secret.
- Attached tabs: the auth-method tabs join the panel as one card (full-width
rounded-top header, hairline divider) instead of a pill bar floating above a
separate card.
- Prefix trailing-space warning (amber): a non-empty prefix with no trailing
space is sent joined to the value ("Bearer" + token -> "Bearertoken").
Advisory, not blocking.
8d43d83 to
2692f42
Compare
Summary
Refines how a user reads and enters an API-key credential in the connect modal. Three related changes:
Authorization: Bearer) is a fixed, non-editable addon inside the credential input (its own muted segment + divider), so the field reads as the header value being built and you type only the token. The separateAuthorization: Bearer ••••••preview line is dropped.autoComplete="off"plus password-manager ignore attributes stop the browser from offering to generate a password here; the app's own 1Password picker still covers filling an existing secret.API key/OAuth2/+) are joined to the panel as one card: a full-width, rounded-top header with a hairline divider into the content, instead of a pill bar floating above a separate card.Bearer+ token →Bearertoken), almost always a mistake. An amber warning surfaces in the placement editor; it's advisory, not blocking, and clears once a space is added. (The design system holds color to destructive red, so this amber is a deliberate, scoped exception.)Recording
Connect modal → merged credential field → Add authentication method (presets + placement editor) → a bare prefix warns, and restoring the space clears it.
Tests
New selfhost browser scenario
e2e/selfhost/connect-modal-credential-ux.test.tscovers the merged affix field, the add-method editor's presets, and the prefix warning appearing then clearing.