Skip to content

feat: support continuous and trace pause point capture - #1726

Merged
hatayama merged 3 commits into
feat/pause-point-capture-modesfrom
feat/pause-point-capture-modes-core
Jul 12, 2026
Merged

hatayama merged 3 commits into
feat/pause-point-capture-modesfrom
feat/pause-point-capture-modes-core

Conversation

@hatayama

@hatayama hatayama commented Jul 12, 2026 •

Copy link
Copy Markdown
Owner

Summary

  • Pause points can now capture repeated hits in continuous mode or record trace history without pausing Unity.
  • Status snapshots retain the latest captured variables and bounded hit history.

User Impact

  • Continuous pause points remain armed after a hit, so stepping through repeatedly executed lines can show value changes over time.
  • Trace pause points record hits without interrupting Play Mode.
  • History survives clear and capture-window expiry, with dropped-frame counts when the configured limit is exceeded.

Changes

  • Added stable capture mode values and history frame DTOs.
  • Added bounded FIFO history, frame counts, timestamps, latest-value compatibility fields, and mode-aware clear/expiry behavior.
  • Preserved single-shot behavior as the default.

Verification

  • dist/darwin-arm64/uloop compile --project-path "$(git rev-parse --show-toplevel)"
  • dist/darwin-arm64/uloop run-tests --test-mode EditMode --filter-type regex --filter-value "PausePointCaptureModeTests" (7 passed)
  • dist/darwin-arm64/uloop run-tests --test-mode EditMode --filter-type regex --filter-value "(PausePointTests|SourcePausePointCaptureTests)" (51 passed)

Review in cubic

hatayama added 2 commits July 12, 2026 17:44
Define the stable string values for single-shot, continuous, and trace pause point behavior so later registry and tool changes share one contract.
Extend pause point state with continuous and trace behavior plus bounded capture history while preserving single-shot defaults. Record frame-level evidence and retain history through clear and expiry so status consumers can inspect prior captures.
@coderabbitai

coderabbitai Bot commented Jul 12, 2026 •

Copy link
Copy Markdown
Contributor

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 99384de1-c328-44ec-a366-10a5120f607c

📥 Commits

Reviewing files that changed from the base of the PR and between 5ac4cb0 and e1edde8.

📒 Files selected for processing (1)
  • Packages/src/Runtime/PausePoints/UloopPausePointEntry.cs

📝 Walkthrough

Walkthrough

Pause points now support single-shot, continuous, and trace capture modes. Captured variables are retained in bounded history frames with frame metadata, dropped-count tracking, lifecycle messages, and expanded snapshots. Editor tests cover mode behavior and lifecycle operations.

Changes

Pause-point capture behavior

Layer / File(s) Summary
Capture mode and history contracts
Packages/src/Runtime/PausePoints/UloopPausePointCaptureMode.cs, Packages/src/Runtime/PausePoints/UloopPausePointCapturedHistoryFrame.cs, Packages/src/Runtime/PausePoints/UloopPausePointSnapshot.cs, Packages/src/Runtime/PausePoints/UloopPausePointRegistry.cs
Defines supported capture modes, history-frame data, bounded-history constants, and snapshot metadata.
Entry hit recording and history
Packages/src/Runtime/PausePoints/UloopPausePointEntry.cs
Stores capture configuration, records mode-specific hits, retains bounded captured-variable history, tracks dropped frames, and updates lifecycle messages.
Registry lifecycle and mode validation
Packages/src/Runtime/PausePoints/UloopPausePointRegistry.cs, Assets/Tests/Editor/PausePointCaptureModeTests.cs
Validates mode and history settings, skips pausing for trace mode, updates clear behavior, and tests continuous, trace, bounded-history, single-shot, expiry, clear, and re-enable flows.

Estimated code review effort: 3 (Moderate) | ~25 minutes

Possibly related PRs

Sequence Diagram(s)

sequenceDiagram
  participant Caller
  participant UloopPausePointRegistry
  participant UloopPausePointEntry
  participant PauseController
  Caller->>UloopPausePointRegistry: Enable capture mode and history limit
  Caller->>UloopPausePointRegistry: Hit pause point with captured variables
  UloopPausePointRegistry->>UloopPausePointEntry: Record hit and frame history
  UloopPausePointRegistry->>PauseController: Pause unless mode is trace
  UloopPausePointRegistry-->>Caller: Return snapshot with capture history
Loading
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately summarizes the main change: adding continuous and trace pause point capture modes.
Description check ✅ Passed The description clearly matches the changeset, covering continuous and trace modes, bounded history, and verification.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/pause-point-capture-modes-core

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.

Keep frame count capture inside the registry hit path, where main-thread execution is guaranteed, and make history snapshot allocation explicit at the call site.
@hatayama
hatayama merged commit 7fbd795 into feat/pause-point-capture-modes Jul 12, 2026
1 check passed
@hatayama
hatayama deleted the feat/pause-point-capture-modes-core branch July 12, 2026 09:01
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