Repository navigation
feat(ui): copy the MCP address from the account menu after setup - #340
Merged
Merged
Conversation
A Playwright survey (ci/clicks) drives a fresh Lens from the web installer through setup and 19 features, counting clicks, keys and passkey prompts per feature, module and page. The Clicks workflow fails when a journey takes more than baseline.json. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018XZkebEbpvyi9y3qmDVD8V
…vering button Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018XZkebEbpvyi9y3qmDVD8V
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018XZkebEbpvyi9y3qmDVD8V
…to claude/project-thread-kcokci
The survey now runs twice, on a computer and on a phone (Pixel 7, touch), where clicks are taps, swipes to reach an off-screen control count, and journeys use buttons instead of keyboard shortcuts. Twelve journeys cover the modules the first survey left out: connecting an AI assistant over MCP, uploading a file, watching a folder, entities, the graph, podcasts, reports, workflows, templates, namespaces, speakers and switching to a cloud model. baseline-phone.json records the phone run; journeys that can't be done on a phone yet are kept as failed and don't turn CI red. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0145yfQfD4eNkWHgPkk3Q82r
…-kcokci # Conflicts: # .github/workflows/clicks.yml # Makefile # ci/clicks/README.md # ci/clicks/baseline.json # ci/clicks/journeys.mjs # ci/clicks/meter.mjs # ci/clicks/report.mjs # ci/clicks/survey.mjs
Measure where a control settles before counting a swipe, scope the webhook token check to its dialog, and wait for the entity list to filter. The phone baseline is the run with these fixes. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0145yfQfD4eNkWHgPkk3Q82r
…-kcokci # Conflicts: # ci/clicks/baseline.json # ci/clicks/journeys.mjs
On a phone Chat opens on the conversation list, so the journey taps New conversation when the question box isn't there. The computer baseline is a run on main with the setup, Chat, Search and Notes cuts. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0145yfQfD4eNkWHgPkk3Q82r
After setup Lens showed its MCP address nowhere but the setup wizard, so connecting an assistant meant typing it. The account menu now has Copy MCP address (one click, with a toast saying what to do with it), and API tokens shows the address with Copy above Apps with access, saying to use an API token while apps can't sign in. Connecting an assistant over MCP drops from 3 clicks + 25 keys to 5 clicks + 1 paste on a computer and on a phone; the agent-connect journey now copies from the menu and checks the clipboard, and both baselines carry it. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JYGqrDpgP3Gcw1Jwf5mwT8
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0145yfQfD4eNkWHgPkk3Q82r
In CI the entity search opened before the imported transcripts were analysed, so the entity wasn't there yet. The journey now waits (not counted) until the API has it. The API's log is saved with the results, so a failure in CI can be read from the artifact. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0145yfQfD4eNkWHgPkk3Q82r
The API wants the session's bearer token, which the browser's requests don't carry, so the wait reloads the Entities page until the entity shows (not counted) and then starts the journey from Home. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0145yfQfD4eNkWHgPkk3Q82r
…-kcokci # Conflicts: # ci/clicks/baseline.json # ci/clicks/meter.mjs
Computer 93 clicks, 313 keys; phone 115 taps, 315 keys, 10 swipes. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0145yfQfD4eNkWHgPkk3Q82r
…to claude/project-thread-lrsqgt # Conflicts: # ci/clicks/baseline-phone.json # ci/clicks/baseline.json
Both imports match "Welcome back", and the Library's order between them varies. The dialog shows the recording's title, so on a phone the Create button was below the screen for one and not the other (a swipe counted in some runs only). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0145yfQfD4eNkWHgPkk3Q82r
…ranch Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JYGqrDpgP3Gcw1Jwf5mwT8
…to claude/project-thread-lrsqgt
Computer 90 clicks, 313 keys; phone 119 taps, 322 keys, 11 swipes, and the graph can be found on a phone now. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0145yfQfD4eNkWHgPkk3Q82r
…to claude/project-thread-lrsqgt # Conflicts: # ci/clicks/baseline-phone.json # ci/clicks/baseline.json
…-lrsqgt # Conflicts: # ci/clicks/baseline-phone.json # ci/clicks/baseline.json # ci/clicks/journeys.mjs
…agent-connect baselines on main The cloud-model journey from #350 (the Settings presets from #334 broke the old one on main), with #350's baselines and the agent-connect entry from a run of this branch on main. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JYGqrDpgP3Gcw1Jwf5mwT8
…-lrsqgt # Conflicts: # ci/clicks/baseline-phone.json # ci/clicks/baseline.json
adeelahmad
added a commit
that referenced
this pull request
Oct 11, 2026
…monitoring switch as built (#351) "Ask" names the built-in Telegram bot (#293) and Slack app (#287); "Connect your agents" adds mounting the graph's files read-only over S3, WebDAV, NFS or SMB (#324, #295, #305) and copying the MCP address from the account menu (#340); "Watch it run" says one switch in the web app starts Prometheus and Grafana (#337); "Light by default" adds the cloud model presets (#334). The docs index gains the NFS and SMB pages, and "In progress" keeps only open PRs. Claude-Session: https://claude.ai/code/session_01HDx7PPUauyjMn1LZs8JAsS Co-authored-by: Adeel Ahmad <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Requested by Adeel · project thread
Builds on #325 (the clicks survey's phone run and the agent-connect journey) and #350, both merged.
Description
Before: after setup, Lens showed its MCP address nowhere (only the setup wizard's Apps step had it), so connecting Claude, ChatGPT or Cursor meant typing
http://…/mcpby hand: 3 clicks and 25 keys.After: the account menu (your picture, top right) has Copy MCP address. One click copies it and a toast shows the address and what to do with it. API tokens shows the address with Copy above Apps with access. When apps can't sign in (Settings → API keys), both say to give the assistant an API token instead. Connecting an assistant now takes 5 clicks and 1 paste on a computer and on a phone.
ci/clicks/run.sh)run.sh --device phone)Measured on main with this branch, both runs with
--fail-on-regression; the other 30 journeys match main's baselines. The 5 clicks are the account menu, Copy, two in the assistant (add a connector, add it) and Allow on Lens's consent page. The paste is the 1 key.Motivation and Context
The clicks survey's worst Agents item: "Connect an AI assistant over MCP: 3 clicks + 25 keys, target about 4. After setup Lens shows its MCP address nowhere, so it is typed." Lens is built for agents, so connecting one should be a copy and a paste.
How
components/account/connect-assistant.tsx:mcpAddress()(moved out of the setup wizard, which now uses it),useAppSignIn()(OAuth discovery answers only while apps may sign in), andConnectAssistant(the address in the existingCodeBlockwith Copy).ConnectAssistantat the top of Apps with access.ci/clicks/journeys.mjs: agent-connect copies from the menu, reads the clipboard back to check it holds the address, then pastes. Inbaseline.jsonandbaseline-phone.jsononly the agent-connect entry changes, taken from that run.docs/mcp.md: where to copy the address.Types of changes
!in the title)Checklist:
make hookschecks it on commit). ESLint, Prettier andtscpass on the changed files.__tests__/connect-assistant.test.tsxcovers the address and Copy on API tokens, the API-token hint while sign-in is off, the menu copying in one click, and the fallback when the browser won't copy. The agent-connect journey checks the clipboard.docs/accordingly (docs/mcp.md).## UnreleasedinCHANGELOG.md. n/a: the title says it.Done questions (AGENTS.md)
docs/mcp.mdgives it.🤖 Generated with Claude Code
https://claude.ai/code/session_01JYGqrDpgP3Gcw1Jwf5mwT8