Skip to content

feat: Add --await flag to enable-pause-point for single-command enable and wait#1893

Merged
hatayama merged 3 commits into
feature/pause-point-round4-integrationfrom
feat/enable-pause-point-await
Jul 20, 2026
Merged

feat: Add --await flag to enable-pause-point for single-command enable and wait#1893
hatayama merged 3 commits into
feature/pause-point-round4-integrationfrom
feat/enable-pause-point-await

Conversation

@hatayama

@hatayama hatayama commented Jul 20, 2026

Copy link
Copy Markdown
Owner

Summary

  • enable-pause-point --await enables a marker and waits for the hit (or timeout) in one call, instead of requiring a separate await-pause-point invocation.
  • The pause point skill's Quick Check Template now leads with this single-call flow.

User Impact

  • Previously, checking one frame required three round trips: enable-pause-point, a trigger command, then a separate await-pause-point. With --await, the enable call itself waits for the hit, so the workflow only needs the enable-and-wait call (run in the background) plus the trigger.
  • --captured-variables/--captured-variable-names are now accepted on enable-pause-point as well, mirroring await-pause-point, and only take effect together with --await.
  • A single-shot marker (the default) is now documented as not needing a clear-pause-point call, since it already disarms itself after the hit.
  • Also fixes a wording bug from a previous change: the skill referenced a nonexistent control-play-mode "Resume" action; the real actions are Play/Stop/Pause/Step, so the text now says to resume with control-play-mode --action Play.

Changes

  • enable-pause-point without --await is unchanged: same schema-driven dispatch, same single IPC call, same response shape.
  • With --await, the CLI sends the same single enable-pause-point IPC request as before; only on a successful enable does it reuse the existing await-pause-point poll loop (get-pause-point-status) in-process. Unity never sees an extra or different IPC call for --await.
  • A failed enable returns the enable failure directly without polling.
  • The enable-time Warning (for example the physics-callback cached-dispatch warning) is preserved and merged into the final response when --await waits through to a hit.
  • --await/--captured-variables/--captured-variable-names are CLI-only flags, stripped before the existing schema-driven parameter builder runs, so they never reach Unity's EnablePausePointSchema.
  • No cli/common changes: enable-pause-point keeps its existing schema-tool identity: it is not added to clicore.NativeCommands, avoiding a second, conflicting command identity (double help listing, different tool-settings gating path).

Verification

  • scripts/check-go-cli.sh: all packages pass (fmt/vet/lint/test/build)
  • New tests: flag extraction (--await alone, with captured-variable options, missing --await guard, unrelated args untouched), a full enable-then-hit round trip against a fake Unity IPC listener, a failed-enable-skips-wait case, and a uloop list catalog test for the new options
  • Manual smoke test against a running Unity Editor: enable-pause-point without --await (unchanged response), enable-pause-point --await with an already-expired marker (correct PAUSE_POINT_EXPIRED diagnosis), and the --captured-variables without --await rejection
  • uloop skills install --claude --agents: regenerated copies verified byte-identical to source

Review in cubic

hatayama added 2 commits July 21, 2026 04:40
Previously enabling a marker and waiting for it required two separate
CLI invocations, which raced against fast-progressing games between
the two calls. --await lets the CLI enable the marker and, only on a
successful enable, chain into the existing await-pause-point poll
loop within the same process. Unity still sees exactly the same two
IPC calls (enable, then poll) as manual two-step usage, and the
non-awaiting path is byte-for-byte the pre-existing generic schema
dispatch. --captured-variables/--captured-variable-names are also
accepted when --await is set, mirroring await-pause-point.
…rding

The template now enables and waits for a marker in one backgrounded
call via --await instead of three separate enable/trigger/await
invocations, and notes that single-shot markers need no clear call.
Also corrects a Fast-Progressing Games line added in a prior change
that referenced a nonexistent control-play-mode "Resume" action;
the only actions are Play/Stop/Pause/Step, so resuming is phrased as
`control-play-mode --action Play`.
@coderabbitai

coderabbitai Bot commented Jul 20, 2026

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

@hatayama, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 2 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 23db36fc-33e9-461f-8b04-cc4c048fb03c

📥 Commits

Reviewing files that changed from the base of the PR and between 6b4f786 and 20ee2e9.

📒 Files selected for processing (9)
  • .agents/skills/uloop-pause-point/SKILL.md
  • .claude/skills/uloop-pause-point/SKILL.md
  • Packages/src/Editor/CliOnlyTools~/PausePoint/Skill/SKILL.md
  • cli/project-runner/internal/projectrunner/list_output.go
  • cli/project-runner/internal/projectrunner/list_output_test.go
  • cli/project-runner/internal/projectrunner/pause_point_enable.go
  • cli/project-runner/internal/projectrunner/pause_point_enable_test.go
  • cli/project-runner/internal/projectrunner/pause_point_types.go
  • cli/project-runner/internal/projectrunner/runner_commands.go
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/enable-pause-point-await

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.

…e-pause-point --await

Address 3 final-review findings: apply debug-timing instrumentation
before the enable send so --await gets the same ULOOP_DEBUG timing
info as the plain enable path; report the correct command name
(enable-pause-point, not await-pause-point) on wait errors raised
through --await; and fix a dangling clause in the Quick Check
Template describing when clear-pause-point is still needed for a
disarmed single-shot marker.
@hatayama
hatayama merged commit ab3e753 into feature/pause-point-round4-integration Jul 20, 2026
1 of 2 checks passed
@hatayama
hatayama deleted the feat/enable-pause-point-await branch July 20, 2026 19:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant