Repository navigation
ci(clicks): survey every module, and on a phone with taps and swipes - #325
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
20 of 22 tasks
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
This was referenced Oct 10, 2026
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0145yfQfD4eNkWHgPkk3Q82r
This was referenced Oct 10, 2026
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
20 of 22 tasks
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
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
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
adeelahmad
pushed a commit
that referenced
this pull request
Oct 11, 2026
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0173hj1h6qEeBT7zMzCgedwo
This was referenced Oct 11, 2026
adeelahmad
pushed a commit
that referenced
this pull request
Oct 14, 2026
Bring in #325's phone survey and drop the name typing from the workflow and template journeys, now that Lens names them. Both baselines are regenerated from ci/clicks/run.sh (computer and phone): -29 keys each. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014pKRz6HkdQ7hTqEbpnyhYo
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 #298 (the clicks survey, merged).
Description
Before: the clicks survey counted 19 features on a computer only. Twelve modules (agents over MCP, the graph, entities, podcasts, reports, workflows, templates, namespaces, speakers, watched folders, file upload, cloud model setup) had no journey, and nothing measured a phone.
After:
make clicksand the Clicks workflow run 31 journeys twice, on a computer (1400x900) and on a phone (Pixel 7, touch). On the phone, clicks are taps, a swipe counts whenever the control is off the screen, and journeys use buttons instead of shortcuts (the menu button for the navigation, Save for Ctrl+S, the Jump to box for Ctrl+K).baseline-phone.jsonholds the phone run; a journey that can't be done on a phone yet stays in it as failed, so CI stays green until it becomes possible (then it shows as an improvement).Totals on a fresh install, on main as of #339: computer 90 clicks, 313 keys, 1 passkey; phone 119 taps, 322 keys, 11 swipes, 1 passkey, with 1 journey impossible on a phone (switching namespace: the namespace switcher is hidden below 640px). The first survey, before #315, #331, #336 and #339 landed, was computer 107 clicks and 338 keys, phone 126 taps, 340 keys and 15 swipes with 2 journeys impossible.
Motivation and Context
Adeel asked for a survey of the clicks, keys and touch needed for setup and use, per page and module, repeated every 12 hours, with threads that cut them. This makes the survey cover every module and the phone, so each cut can show before and after.
How
meter.mjs: a touch mode (taps, andswipesTo()for controls off the screen, measured where the control settles).survey.mjs:--device desktop|phone, phone page reach adds the menu tap, journeys may start with a namespace picked (ns, not counted), a journey that failed in the baseline too isn't a new failure, and the API's log is saved beside the results (in the CI artifact).journeys.mjs:go(),save(),jumpTo(),openImport(),needs()andmadeInBackground()helpers, and 12 journeys appended (existing ids and counts unchanged). On a phone Chat opens on the conversation list, so the Chat journey taps New conversation there.report.mjs: Taps and Swipes columns for the phone; "still can't be done" and "can be done now" in comparisons.clicks.yml: a phone step, and rclone copied from the image Lens ships (rclone/rclone:1.75.1) for the watched-folder journey.Types of changes
!in the title)Checklist:
make hookschecks it on commit). actionlint passes on clicks.yml.docs/accordingly. n/a: CI tooling only;ci/clicks/README.mdis updated.## UnreleasedinCHANGELOG.md. n/a: CI only.Done questions (AGENTS.md)
make clicksneeds rclone on the PATH, as the image has).🤖 Generated with Claude Code
https://claude.ai/code/session_0145yfQfD4eNkWHgPkk3Q82r