Skip to content

Add a dragAt step to the dogfood tour format - #15315

Merged
teamleaderleo merged 1 commit into
mainfrom
feat/dogfood-drag-at
Sep 28, 2026
Merged

teamleaderleo merged 1 commit into
mainfrom
feat/dogfood-drag-at

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Sep 28, 2026 •

Copy link
Copy Markdown
Collaborator

Dogfood tours can click, double-click, right-click and hover, at an element or at a point, but they cannot drag. Anything whose only interaction is a drag is therefore unreachable from a tour: sidebar and pane resizers, the split divider, dragging a tab to another pane or window.

This adds a dragAt step:

{"dragAt": {"from": {"x": 0.2, "y": 0.5}, "to": {"x": 0.1, "y": 0.5}, "duration": 0.2}}

Both points are in the same 0 to 1 window space that clickAt and hoverAt already use, duration is the press-and-hold before the drag begins and defaults to 0.2 seconds, and it lowers onto XCUICoordinate.press(forDuration:thenDragTo:).

Why now

Three groups landing UI changes this week are writing coordinate-driven tours, and one of them established that clickAt reports ok whether or not anything is under the point. A tour that asserts nothing about what it hit is weak evidence, and the cases people most want frames of are the resize interactions, which could not be driven at all. This is 26 lines of harness and one row of reference documentation, with no product code involved.

Provenance

The commit is @teamleaderleo's, written on a sidebar branch where it did not belong, and it is kept at its original authorship here rather than reattributed. It was removed from #14875 and recovered onto this branch so it lands where it is useful to everyone rather than riding along with a sidebar setting. Cherry-picking it onto current main conflicted with #15239, which added modifiers to every click and hover step after this commit was written; the resolution keeps #15239's modifier handling in full and adds dragAt alongside it.

Tests

No new test. The step is exercised by any tour that uses it, and a scenario that names an unknown step already fails loudly through DogfoodStep.kinds. python3 scripts/verify-local.py passed the 15 checks it selected for these paths, including Swift syntax and test wiring.

Changelog

none


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.


Summary by cubic

Adds a dragAt step to the dogfood tour format so tours can reach drag-only interactions like pane resizers and split dividers.

  • Takes from and to points in the same 0 to 1 window space clickAt and hoverAt use, plus an optional duration that defaults to 0.2 seconds.
  • Presses at from, then drags to to via XCUICoordinate.press(forDuration:thenDragTo:).
  • Adds one row of reference docs; unknown step names already fail loudly, so no new test is needed.

Written for commit 9befcee. Summary will update on new commits.

Review in cubic

@coderabbitai

coderabbitai Bot commented Sep 28, 2026 •

Copy link
Copy Markdown

Warning

Review limit reached

Next included review available in 18 seconds.

Check out review usage here.

View limit details

Limit details: You’ve used all 10 included reviews currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Repository: manaflow-ai/cmux/.coderabbit.yaml

Review profile: ASSERTIVE

Plan: Advanced

Run ID: 0ad0cf7b-1352-483c-8a2c-e4375ad8f7a1

📥 Commits

Reviewing files that changed from the base of the PR and between d2877b2 and 9befcee.

📒 Files selected for processing (2)
  • cmuxUITests/DogfoodScenarioUITests.swift
  • skills/cmux-testing/references/dogfood-scenarios.md

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

github-actions Bot commented Sep 28, 2026 •

Copy link
Copy Markdown
Contributor

All contributors have signed the CLA ✍️ ✅
Posted by the CLA Assistant Lite bot.

@github-actions

github-actions Bot commented Sep 28, 2026 •

Copy link
Copy Markdown
Contributor

Dogfood build of a645df9bf97989ed798d69f5b2f4287fed439846

cmux DEV pr-15315-a645df9b.app

The link opens this exact commit in the cmux dev menu bar app. The build starts on each push and the page waits until it is ready; a newer push replaces it. It signs in against production, so Cloud or backend changes still need a tagged build with a development backend.

Dogfood tours of 9befcee6

sidebar-and-chrome-tour at 9befcee6: passed (run)

sidebar-and-chrome-tour at 9befcee6

Key frames of sidebar-and-chrome-tour at 9befcee 04-three-workspaces 10-split-right 15-command-palette 24-settings

Tours are picked by the paths globs in dogfood/scenarios/*.json; a Dogfood-tours: a, b line in the description picks them instead (none turns this off). Look at every frame before merging: a green tour only means no step failed.

@teamleaderleo teamleaderleo added the full-ci EXPENSIVE: full macOS tests/builds; overrides selective PR routing. Not needed for normal checks. label Sep 28, 2026
@github-actions

github-actions Bot commented Sep 28, 2026 •

Copy link
Copy Markdown
Contributor

CI failure attribution

CI stopped on 9befcee615 (run 36455691177 attempt 1): 2 machine, 2 code.

Job Verdict Why
macos / CLI product tests code a test failed
macos / app-host unit tests (4/7) code a test failed
macos / app-host unit tests (7/7) machine the runner went away mid-job (runner cmux9s-mac-mini-glaeda-4)
macos / app-host unit tests (6/7) machine the runner went away mid-job (runner cmux11s-mac-mini-glaeda-4)
Matched log lines
macos / CLI product tests: ✘ Test codexInstalledStopUsesQueueAdmission() recorded an issue at CLICodexHookTimeoutRegressionTests.swift:356:9: Expectation failed: !((run → CodexHookProcessRunResult(status: 15, stdout: "", stderr: "", timedOut: true)).timedOut → true → true)
macos / app-host unit tests (4/7): ✘ Test "Both header actions share one trailing slot: same size, trailing edge, and vertical center" recorded an issue with 1 argument width → 220.0 at CloudTreeHeaderActionsTests.swift:174:9: Expectation failed: (plusFrame.midY - cloudRow.midY → -0.1999999999999993) == (menuFrame.midY - devicesRow.m
macos / app-host unit tests (7/7): The self-hosted runner lost communication with the server. Verify the machine is running and has a healthy network connection. Anything in your workflow that terminates the runner process, starves it for CPU/Memory, or blocks its network access can cause this error.
macos / app-host unit tests (6/7): The self-hosted runner lost communication with the server. Verify the machine is running and has a healthy network connection. Anything in your workflow that terminates the runner process, starves it for CPU/Memory, or blocks its network access can cause this error.

Not re-run automatically: macos / CLI product tests, macos / app-host unit tests (4/7) are not machine failures.

Written by scripts/ci/classify_failures.py (ci-failure-attribution.yml); signatures are its SIGNATURES table. A machine verdict is the runner's fault, not this PR's.

@github-actions

Copy link
Copy Markdown
Contributor

Automatic catch-up couldn't merge main (94a6387e8a75): cmuxUITests/DogfoodScenarioUITests.swift (both sides changed the same lines). Nothing was pushed; merge it by hand. A new push or /catch-up tries again.

Label no-auto-catch-up to opt out · Catch-up run

@blacksmith-sh

This comment has been minimized.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Merged main in at a208db121c8. The automatic catch-up bot could not do it, which is why this went to conflicting.

One conflict, in the step-kind set: main added socketLine while this branch added dragAt. Resolved as the union, since the two are independent. Both cases, both enum payloads and both documentation rows survive, and verify-local.py --only swift-syntax passes on the merged file.

CI attribution on the previous head

Four red lanes, and none of them are this change.

Three are capacity: two runners refused the job outright and one stopped talking to the server mid-job. Tracked in #15350.

The fourth was classified as code, but it is a known flake rather than a regression: BrowserOmnibarPerformanceSupportTests/testSuggestionRefreshSchedulerInvalidatesQueuedRefreshOnCancel, failing on Asynchronous wait failed: Exceeded timeout of 1 seconds. This repository's own bisect bot already recorded that exact test as flaky on main on 2026-09-25, with the note "did not reproduce on a rerun at the same commit". A one second async expectation is exactly the kind of assertion that misses when the machine is loaded, and every other lane in that run was starved. This diff adds a step type to the dogfood tour parser and a documentation row, so it cannot reach the browser omnibar suggestion scheduler at all.

What is still blocking

The CLA check, and no push can clear it. The bot's count is 1 of 2 committers signed, and the one it cannot resolve is the author Leo Li <leo@manaflow.ai> on 7b3585769f7, an address not linked to any GitHub account. The separate CLA policy guard check is green, so the opener rule is satisfied; the unlinked address is the only thing red.

Two ways out, per the bot:

  1. Add that address at github.com/settings/emails, then comment recheck here.
  2. Rewrite the commit to use an address that is already linked.

The first needs the account owner. I am not doing the second: re-attributing someone else's commit is not my call, and it would mean force-pushing this branch.

Review

Review: read the merged parser end to end rather than just my own hunk. dragAt sits beside clickAt and hoverAt, takes the same 0 to 1 window space, defaults duration to 0.2s, and is registered in kinds so an unknown-step error cannot mask a typo. It is not in the set of steps that skip the window wait, which is right, since a drag needs the window on screen. The documentation row states the window space and gives a resizer as the use case.

Fixed: the step-kind conflict against main, resolved as a union with both step types kept.

Left: the CLA check, which needs the address linked or the commit re-authored by its owner. Nothing else. The step type has no dependents in this PR, and #15349 says plainly that it cannot demonstrate a drag floor until this lands.

@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

recheck

Tours could click and hover but not drag, so a resizer or any other
drag handle could not be exercised from a tour. dragAt presses at one
point in the window and drags to another, both in the same 0 to 1
window space the existing clickAt and hoverAt steps use.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

Review record: the earlier review at a208db1 (comment above) stands. The diff has not changed since then: it is still the dragAt step plus its reference row.

The CLA check was red because the original commit was authored with an address not linked to any GitHub account. Both the commit and the branch are @teamleaderleo's, so I re-authored the commit to his linked address and rebased it onto current main as a single commit (9befcee). Its tree is identical to merging main into the previous head a645df9. Authorship stays with @teamleaderleo, and the only thing that changed is the address.

@teamleaderleo
teamleaderleo enabled auto-merge (squash) September 28, 2026 17:09
github-actions Bot added a commit that referenced this pull request Sep 28, 2026
github-actions Bot added a commit that referenced this pull request Sep 28, 2026
github-actions Bot added a commit that referenced this pull request Sep 28, 2026
github-actions Bot added a commit that referenced this pull request Sep 28, 2026
github-actions Bot added a commit that referenced this pull request Sep 28, 2026
github-actions Bot added a commit that referenced this pull request Sep 28, 2026
@teamleaderleo
teamleaderleo merged commit eb2331c into main Sep 28, 2026
108 of 117 checks passed
@teamleaderleo
teamleaderleo deleted the feat/dogfood-drag-at branch September 28, 2026 18:34
@github-actions

Copy link
Copy Markdown
Contributor

Merge receipt for 9befcee615: every check was green at merge (21 verified; 11 skipped by policy). Full suite runs on main after merge.

rustybret pushed a commit to rustybret/bmux that referenced this pull request Sep 28, 2026
04c8747 ci: scope contributor web complexity to web changes (manaflow-ai#15424)
1b3fbff ci: accept dynamic app-host shard names (manaflow-ai#15426)
16f0f97 Fix Cloud graph freezing on daemons that send no cursor (manaflow-ai#15283)
eb2331c Add a dragAt step to the dogfood tour format (manaflow-ai#15315)
90e6862 Fix split-space admission after sidebar pane changes (manaflow-ai#15422)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

full-ci EXPENSIVE: full macOS tests/builds; overrides selective PR routing. Not needed for normal checks.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant