paperclip/ui/src/pages
Dotta 856813ba3a
fix(connections): distinguish local setup from provider handoff (#12947)
## Thinking Path

> - Paperclip is the open source app people use to manage AI agents for
work.
> - Connections give those agents access to external services.
> - Connection setup first asks who may use the credential.
> - Some providers need a local method selection before OAuth starts.
> - The Access button said it would open GitHub even when it opened
another local step.
> - This pull request names the actual next action and shows the
external arrow only for a provider handoff.
> - Users can distinguish local setup from leaving Paperclip.

## Linked Issues or Issue Description

Refs: #12943

The browser audit found a second, separate clarity problem. GitHub
showed "Continue to GitHub" twice: once to open its local method
selection and once to start OAuth. The first label promised the wrong
action. This change fixes that label without adding or removing a setup
step.

## What Changed

- Use "Continue" when Access opens another local OAuth setup step.
- Keep "Continue to <provider>" and the external arrow when Access
starts OAuth directly.
- Test GitHub defaults, pre-enrollment setup, direct Notion OAuth, and
dialog behavior.
- Document the two GitHub button actions.
- Preserve the external-handoff arrow in the direct-OAuth Storybook
fixture.

## Verification

- Targeted connection tests: 114 passed.
- `pnpm --filter @paperclipai/ui typecheck`: passed.
- `pnpm --filter @paperclipai/ui build`: passed.
- `node scripts/check-token-gates.mjs`: passed.
- `git diff --check`: passed.
- After the Storybook review fix: 100 connection-flow tests, UI
typecheck, token gates, and Storybook build passed; visually confirmed
the Gmail handoff arrow and local GitHub step labels.
- Actual test-drive browser: confirmed default personal identity and Any
agent; clicked Continue to the local method screen; switched PAT and
OAuth; returned to Access with selections intact; cancelled without a
duplicate connection.
- Live OAuth, local MCP identity, and a real staging sandbox task passed
during the audit. This patch does not change those paths.
- Full local suite has known unrelated macOS path/runtime test failures
from the audit. All CI passed on head
`936ce09f4e1faaf09f9fb778c2cd4c65c2a41972`, including typecheck, build,
all test shards, browser tests, and canary dry run. Greptile: 5/5; no
unresolved comments.

## Risks

- Low risk. This changes button text and an icon cue only. There is no
new schema, permission, consent, or credential behavior.
- Providers with multiple methods now say Continue before their method
screen. Direct OAuth providers keep their existing wording.

## Model Used

- OpenAI Codex assisted with code, tests, terminal checks, and actual
browser verification. The runtime does not expose the exact model ID or
context-window size, so those details are unavailable.

## Checklist

- [x] I have included a thinking path that traces from project context
to this change
- [x] I have specified the model used (with version and capability
details)
- [x] I have checked ROADMAP.md and confirmed this PR does not duplicate
planned core work
- [x] I have searched GitHub for duplicate or related PRs and linked
them above
- [x] I have either (a) linked existing issues with `Fixes: #` /
`Closes: #` / `Refs: #` OR (b) described the issue in-PR following the
relevant issue template
- [x] I have not referenced internal/instance-local Paperclip issues or
links (only public GitHub references)
- [x] My branch name describes the change and contains no internal
Paperclip ticket id or instance-derived details
- [x] I have run tests locally and they pass (targeted tests; full-suite
caveats above)
- [x] I have added or updated tests where applicable
- [x] I have updated relevant documentation to reflect my changes
- [x] I have considered and documented any risks above
- [x] All Paperclip CI gates are green
- [x] Greptile is 5/5 with no open P2s, recommendations, or follow-ups
- [x] I will address all Greptile and reviewer comments before
requesting merge

---------

Co-authored-by: Paperclip <noreply@paperclip.ing>
2026-09-06 17:43:48 -05:00
..
StatusCards test(ui): make the suite independent of the machine timezone (#11478) 2026-08-16 22:22:45 -07:00
agent-skills feat(runner): add administration and observability (#12641) 2026-09-01 03:41:23 -05:00
apps fix(connections): distinguish local setup from provider handoff (#12947) 2026-09-06 17:43:48 -05:00
audit feat(apps): unify permissions and action testing (#12802) 2026-09-03 21:23:26 -05:00
secrets copy: unify user-facing "company" wording to "organization" (#12243) 2026-08-27 01:04:55 -07:00
skills feat(ui): add streamlined navigation foundation (#12746) 2026-09-02 23:55:43 -07:00
tools feat(apps): unify permissions and action testing (#12802) 2026-09-03 21:23:26 -05:00
AdapterManager.tsx Remove cheap model profiles (#12683) 2026-09-01 14:57:38 -05:00
AgentDetail.instructions.test.tsx feat(ui): refine streamlined workspace surfaces (#12747) 2026-09-02 23:55:55 -07:00
AgentDetail.liveRun.test.ts feat(ui): live run label → run detail, running row → task detail (#11034) 2026-08-06 23:18:32 -07:00
AgentDetail.production.tsx feat(ui): refine streamlined workspace surfaces (#12747) 2026-09-02 23:55:55 -07:00
AgentDetail.progress.test.ts fix(ui): move agent secret access to searchable secrets tab (#11283) 2026-08-14 08:03:20 -04:00
AgentDetail.tsx feat(ui): refine streamlined workspace surfaces (#12747) 2026-09-02 23:55:55 -07:00
AgentOverview.test.tsx feat(ui): refine streamlined workspace surfaces (#12747) 2026-09-02 23:55:55 -07:00
AgentToolsTab.test.tsx feat(connections): add durable GitHub identities and webhooks (#12843) 2026-09-04 18:02:52 -05:00
AgentToolsTab.tsx feat(connections): add durable GitHub identities and webhooks (#12843) 2026-09-04 18:02:52 -05:00
Agents.production.tsx feat(ui): refine streamlined workspace surfaces (#12747) 2026-09-02 23:55:55 -07:00
Agents.test.tsx feat(ui): refine streamlined workspace surfaces (#12747) 2026-09-02 23:55:55 -07:00
Agents.tsx feat(ui): refine streamlined workspace surfaces (#12747) 2026-09-02 23:55:55 -07:00
ApprovalDetail.tsx feat(ui): single-source design tokens, visual regression suite, and theme retune (#9134) 2026-07-07 16:22:16 -05:00
Approvals.tsx copy: unify user-facing "company" wording to "organization" (#12243) 2026-08-27 01:04:55 -07:00
Artifacts.test.tsx PAP-10440: group artifacts by task stacks (#7654) 2026-06-06 10:22:47 -05:00
Artifacts.tsx copy: unify user-facing "company" wording to "organization" (#12243) 2026-08-27 01:04:55 -07:00
Auth.test.tsx fix(ui): show source SHA for unreleased builds (#9508) 2026-07-13 20:55:54 -05:00
Auth.tsx Brand lockup, no idle env-check card, no Mission row (#12074) 2026-08-24 01:35:15 -07:00
BoardChat.test.tsx copy: unify user-facing "company" wording to "organization" (#12243) 2026-08-27 01:04:55 -07:00
BoardChat.tsx copy: unify user-facing "company" wording to "organization" (#12243) 2026-08-27 01:04:55 -07:00
BoardClaim.tsx copy: unify user-facing "company" wording to "organization" (#12243) 2026-08-27 01:04:55 -07:00
BootstrapSetupUxLab.tsx copy: unify user-facing "company" wording to "organization" (#12243) 2026-08-27 01:04:55 -07:00
CaseDetail.test.tsx Cases: experimental first-class case object (#9198) 2026-07-09 22:11:03 -05:00
CaseDetail.tsx Cases: experimental first-class case object (#9198) 2026-07-09 22:11:03 -05:00
Cases.test.tsx Cases: experimental first-class case object (#9198) 2026-07-09 22:11:03 -05:00
Cases.tsx Exclude archived projects from the default project list route (#10146) 2026-07-24 07:19:58 -07:00
CliAuth.tsx copy: unify user-facing "company" wording to "organization" (#12243) 2026-08-27 01:04:55 -07:00
Companies.test.tsx copy: unify user-facing "company" wording to "organization" (#12243) 2026-08-27 01:04:55 -07:00
Companies.tsx copy: unify user-facing "company" wording to "organization" (#12243) 2026-08-27 01:04:55 -07:00
CompanyAccess.test.tsx Move company invites into a tab of the Members page (#12289) 2026-08-27 11:34:32 -07:00
CompanyAccess.tsx Move company invites into a tab of the Members page (#12289) 2026-08-27 11:34:32 -07:00
CompanyEnvironments.test.tsx feat: environment delete with agent reassignment and consented sandbox destroy (#12053) 2026-08-23 16:53:17 -07:00
CompanyEnvironments.tsx Hide host-path and execution-engine surfaces in managed-sandbox-only mode (#12293) 2026-08-27 11:59:14 -07:00
CompanyExport.test.tsx refactor(settings): unify settings and speed up exports (#11789) 2026-08-20 12:15:16 -05:00
CompanyExport.tsx copy: unify user-facing "company" wording to "organization" (#12243) 2026-08-27 01:04:55 -07:00
CompanyImport.test.tsx Gate Paperclip Runner setup behind an experimental flag (#12656) 2026-09-01 05:57:40 -05:00
CompanyImport.tsx Gate Paperclip Runner setup behind an experimental flag (#12656) 2026-09-01 05:57:40 -05:00
CompanySettings.test.tsx Remove the company brand color and per-company attachment limit (#12291) 2026-08-27 12:11:05 -07:00
CompanySettings.tsx Remove the company brand color and per-company attachment limit (#12291) 2026-08-27 12:11:05 -07:00
CompanySettingsPluginPage.test.tsx [codex] Add agent permissions and controls plan (#6386) 2026-05-22 08:12:52 -05:00
CompanySettingsPluginPage.tsx copy: unify user-facing "company" wording to "organization" (#12243) 2026-08-27 01:04:55 -07:00
CompanySettingsRenameHint.test.tsx feat(server): derive hosted-tenant issue prefixes from the company name and follow renames (#12292) 2026-08-27 11:34:42 -07:00
CompanySkills.production.tsx feat(ui): refine streamlined workspace surfaces (#12747) 2026-09-02 23:55:55 -07:00
CompanySkills.test.tsx test(ui): flush passive effects with React act in CompanySkills tests (#12878) 2026-09-05 08:40:38 -07:00
CompanySkills.tsx feat(ui): refine streamlined workspace surfaces (#12747) 2026-09-02 23:55:55 -07:00
Costs.production.tsx feat(ui): refine streamlined workspace surfaces (#12747) 2026-09-02 23:55:55 -07:00
Costs.test.tsx feat(ui): refine streamlined workspace surfaces (#12747) 2026-09-02 23:55:55 -07:00
Costs.tsx feat(ui): refine streamlined workspace surfaces (#12747) 2026-09-02 23:55:55 -07:00
CrossIssueCollaborationUxLab.tsx feat(issues): explain cross-task agent writes with attribution, audit receipts, and actionable denials (#10843) 2026-08-04 23:02:51 -05:00
Dashboard.test.ts feat(ui): dashboard banner for paused imported agents with Resume all (#12142) 2026-08-25 14:09:54 -07:00
Dashboard.tsx copy: unify user-facing "company" wording to "organization" (#12243) 2026-08-27 01:04:55 -07:00
DashboardLive.tsx copy: unify user-facing "company" wording to "organization" (#12243) 2026-08-27 01:04:55 -07:00
DecisionQueuePage.tsx copy: unify user-facing "company" wording to "organization" (#12243) 2026-08-27 01:04:55 -07:00
DesignGuide.tsx feat(ui): refine core navigation and task detail (#12854) 2026-09-04 16:15:21 -07:00
ExecutionWorkspaceDetail.provision-status.test.ts fix(workspaces): keep deferred seed databases reliable (#11706) 2026-08-19 10:41:29 -05:00
ExecutionWorkspaceDetail.service-ports.test.ts fix(workspaces): persist readiness state and validate ports (#9408) 2026-07-11 03:02:21 -05:00
ExecutionWorkspaceDetail.test.tsx fix: isolate execution workspace summaries (#10790) 2026-08-11 08:56:32 -04:00
ExecutionWorkspaceDetail.tsx Hide host-path and execution-engine surfaces in managed-sandbox-only mode (#12293) 2026-08-27 11:59:14 -07:00
GoalDetail.test.tsx fix goal view properties toggle 2026-03-30 12:49:22 +05:30
GoalDetail.tsx copy: unify user-facing "company" wording to "organization" (#12243) 2026-08-27 01:04:55 -07:00
Goals.tsx copy: unify user-facing "company" wording to "organization" (#12243) 2026-08-27 01:04:55 -07:00
Inbox.test.tsx feat(ui): refine streamlined task experience (#12748) 2026-09-03 00:28:02 -07:00
Inbox.tsx feat(ui): refine streamlined task experience (#12748) 2026-09-03 00:28:02 -07:00
InstanceAccess.tsx copy: unify user-facing "company" wording to "organization" (#12243) 2026-08-27 01:04:55 -07:00
InstanceExperimentalSettings.test.tsx feat(ui): add streamlined navigation foundation (#12746) 2026-09-02 23:55:43 -07:00
InstanceExperimentalSettings.tsx feat(ui): add streamlined navigation foundation (#12746) 2026-09-02 23:55:43 -07:00
InstanceGeneralSettings.test.tsx feat: operator-configurable settings visibility via PAPERCLIP_HIDDEN_SETTINGS (#11823) 2026-08-20 17:54:44 -07:00
InstanceGeneralSettings.tsx feat: operator-configurable settings visibility via PAPERCLIP_HIDDEN_SETTINGS (#11823) 2026-08-20 17:54:44 -07:00
InviteLanding.test.tsx Gate Paperclip Runner setup behind an experimental flag (#12656) 2026-09-01 05:57:40 -05:00
InviteLanding.tsx Gate Paperclip Runner setup behind an experimental flag (#12656) 2026-09-01 05:57:40 -05:00
InviteUxLab.test.tsx copy: unify user-facing "company" wording to "organization" (#12243) 2026-08-27 01:04:55 -07:00
InviteUxLab.tsx Remove the company brand color and per-company attachment limit (#12291) 2026-08-27 12:11:05 -07:00
IssueChatLongThreadPerf.tsx feat(ui): single-source design tokens, visual regression suite, and theme retune (#9134) 2026-07-07 16:22:16 -05:00
IssueChatUxLab.tsx feat(ui): design-system component convergence — Card/Badge adoption, multiplicative radius ladder, unified list surfaces (#9240) 2026-07-08 17:15:45 -07:00
IssueDetail.test.tsx fix(ui): show continuation actions in confirmation receipts (#12939) 2026-09-06 13:56:18 -05:00
IssueDetail.tsx fix(ui): show continuation actions in confirmation receipts (#12939) 2026-09-06 13:56:18 -05:00
Issues.test.tsx feat(ui): refine streamlined task experience (#12748) 2026-09-03 00:28:02 -07:00
Issues.tsx feat(ui): refine streamlined task experience (#12748) 2026-09-03 00:28:02 -07:00
JoinRequestQueue.tsx copy: unify user-facing "company" wording to "organization" (#12243) 2026-08-27 01:04:55 -07:00
LegacyInbox.tsx feat(ui): refine streamlined task experience (#12748) 2026-09-03 00:28:02 -07:00
MyIssues.tsx feat(ui): refine streamlined task experience (#12748) 2026-09-03 00:28:02 -07:00
NewAgent.test.tsx Remove cheap model profiles (#12683) 2026-09-01 14:57:38 -05:00
NewAgent.tsx Gate Paperclip Runner setup behind an experimental flag (#12656) 2026-09-01 05:57:40 -05:00
NotFound.tsx copy: unify user-facing "company" wording to "organization" (#12243) 2026-08-27 01:04:55 -07:00
Org.tsx copy: unify user-facing "company" wording to "organization" (#12243) 2026-08-27 01:04:55 -07:00
OrgChart.production.tsx feat(ui): refine streamlined workspace surfaces (#12747) 2026-09-02 23:55:55 -07:00
OrgChart.test.tsx feat(ui): refine streamlined workspace surfaces (#12747) 2026-09-02 23:55:55 -07:00
OrgChart.tsx feat(ui): refine streamlined workspace surfaces (#12747) 2026-09-02 23:55:55 -07:00
PipelineSettings.test.ts [codex] Add pipeline automation title templates (#8787) 2026-06-30 07:52:40 -07:00
PipelineSettings.tsx copy: unify user-facing "company" wording to "organization" (#12243) 2026-08-27 01:04:55 -07:00
Pipelines.test.tsx Add pipeline workflow primitives and operator UI (#7903) 2026-06-26 12:02:44 -05:00
Pipelines.tsx copy: unify user-facing "company" wording to "organization" (#12243) 2026-08-27 01:04:55 -07:00
PluginManager.tsx copy: unify user-facing "company" wording to "organization" (#12243) 2026-08-27 01:04:55 -07:00
PluginPage.test.tsx [codex] Move instance settings under company settings (#7680) 2026-06-07 17:23:53 -05:00
PluginPage.tsx copy: unify user-facing "company" wording to "organization" (#12243) 2026-08-27 01:04:55 -07:00
PluginSettings.test.tsx Hide host-path and execution-engine surfaces in managed-sandbox-only mode (#12293) 2026-08-27 11:59:14 -07:00
PluginSettings.tsx Hide host-path and execution-engine surfaces in managed-sandbox-only mode (#12293) 2026-08-27 11:59:14 -07:00
ProfileSettings.test.tsx fix(assets): accept identity-provider characters in image upload namespaces (#12288) 2026-08-27 11:27:31 -07:00
ProfileSettings.tsx copy: unify user-facing "company" wording to "organization" (#12243) 2026-08-27 01:04:55 -07:00
ProjectDetail.test.tsx feat(ui): refine streamlined workspace surfaces (#12747) 2026-09-02 23:55:55 -07:00
ProjectDetail.tsx copy: unify user-facing "company" wording to "organization" (#12243) 2026-08-27 01:04:55 -07:00
ProjectWorkspaceDetail.test.tsx Hide host-path and execution-engine surfaces in managed-sandbox-only mode (#12293) 2026-08-27 11:59:14 -07:00
ProjectWorkspaceDetail.tsx Hide host-path and execution-engine surfaces in managed-sandbox-only mode (#12293) 2026-08-27 11:59:14 -07:00
Projects.test.tsx Information Architecture + project/agent visual refresh (experimental) (#7543) 2026-06-06 09:17:27 -05:00
Projects.tsx copy: unify user-facing "company" wording to "organization" (#12243) 2026-08-27 01:04:55 -07:00
ResponsibleUserDenialUxLab.tsx feat(ui): design-system component convergence — Card/Badge adoption, multiplicative radius ladder, unified list surfaces (#9240) 2026-07-08 17:15:45 -07:00
RoutineDetail.production.tsx feat(ui): refine streamlined workspace surfaces (#12747) 2026-09-02 23:55:55 -07:00
RoutineDetail.test.tsx Exclude archived projects from the default project list route (#10146) 2026-07-24 07:19:58 -07:00
RoutineDetail.tsx feat(ui): refine streamlined workspace surfaces (#12747) 2026-09-02 23:55:55 -07:00
Routines.production.tsx feat(ui): refine streamlined workspace surfaces (#12747) 2026-09-02 23:55:55 -07:00
Routines.test.tsx feat(ui): refine streamlined workspace surfaces (#12747) 2026-09-02 23:55:55 -07:00
Routines.tsx feat(ui): refine streamlined workspace surfaces (#12747) 2026-09-02 23:55:55 -07:00
RunTranscriptUxLab.tsx feat(ui): design-system component convergence — Card/Badge adoption, multiplicative radius ladder, unified list surfaces (#9240) 2026-07-08 17:15:45 -07:00
Search.test.tsx feat(search): filters, sorting, operators & command-palette parity (#9327) 2026-07-09 19:32:58 -05:00
Search.tsx copy: unify user-facing "company" wording to "organization" (#12243) 2026-08-27 01:04:55 -07:00
Secrets.render.test.tsx Let operators hide the Provider vaults and Proposals tabs (#12284) 2026-08-27 11:28:15 -07:00
Secrets.test.ts feat(secrets): add user-specific runtime secrets (#8825) 2026-07-05 05:58:20 -05:00
Secrets.tsx Let operators hide the Provider vaults and Proposals tabs (#12284) 2026-08-27 11:28:15 -07:00
SkillStudio.test.tsx test(ui): wait for conditions in the last four fixed-turn loops (#11523) 2026-08-17 00:58:16 -07:00
SkillStudio.tsx copy: unify user-facing "company" wording to "organization" (#12243) 2026-08-27 01:04:55 -07:00
SystemNoticeUxLab.tsx fix(recovery): stop automatic stranded-task takeovers (#11961) 2026-08-22 11:41:24 -05:00
TaskChatLab.tsx feat(ui): refine the chat-style task workflow (#11263) 2026-08-12 11:41:40 -07:00
TeamCard.test.tsx [codex] Add teams catalog extraction (#7550) 2026-06-05 12:55:49 -05:00
TeamCatalog.fixtures.ts [codex] Add teams catalog extraction (#7550) 2026-06-05 12:55:49 -05:00
TeamCatalog.test.tsx Gate Paperclip Runner setup behind an experimental flag (#12656) 2026-09-01 05:57:40 -05:00
TeamCatalog.tsx Gate Paperclip Runner setup behind an experimental flag (#12656) 2026-09-01 05:57:40 -05:00
Timeline.test.tsx feat(ui): refine streamlined workspace surfaces (#12747) 2026-09-02 23:55:55 -07:00
Timeline.tsx feat(ui): refine streamlined workspace surfaces (#12747) 2026-09-02 23:55:55 -07:00
UserProfile.tsx copy: unify user-facing "company" wording to "organization" (#12243) 2026-08-27 01:04:55 -07:00
WhatNeedsMe.test.tsx feat(decisions): add first-class propose mode (#10010) 2026-07-31 19:17:02 -07:00
WhatNeedsMe.tsx copy: unify user-facing "company" wording to "organization" (#12243) 2026-08-27 01:04:55 -07:00
Workspaces.test.tsx feat: add built-in summarizer and summary slots (#9713) 2026-07-17 11:03:07 -05:00
Workspaces.tsx feat: add built-in summarizer and summary slots (#9713) 2026-07-17 11:03:07 -05:00
agent-detail-navigation.test.ts feat(ui): add streamlined navigation foundation (#12746) 2026-09-02 23:55:43 -07:00
agent-detail-navigation.ts feat(ui): add streamlined navigation foundation (#12746) 2026-09-02 23:55:43 -07:00
useInstallTeamCatalogEntry.test.tsx [codex] Add teams catalog extraction (#7550) 2026-06-05 12:55:49 -05:00