Skip to content

fix: No thought-capture prompt after light distraction hold#198

Merged
auerbachb merged 4 commits into
mainfrom
issue-187-no-light-distraction-capture
Apr 23, 2026
Merged

fix: No thought-capture prompt after light distraction hold#198
auerbachb merged 4 commits into
mainfrom
issue-187-no-light-distraction-capture

Conversation

@auerbachb
Copy link
Copy Markdown
Owner

@auerbachb auerbachb commented Apr 22, 2026

Summary

  • Stop offering post-distraction thought capture when ending a light-distraction hold on web solo and buddy flows.
  • Mirror the same behavior on iOS by ending distraction without setting the post-hold capture flag.
  • Clarify UI copy on both platforms that captured notes require explicit capture paths, not light-distraction release.

Closes #187

Test Plan

  • Web solo: release light-distraction hold in SessionView does not open post-segment thought capture.
  • Web buddy: release local light-distraction hold in BuddySessionRoom does not open post-segment thought capture.
  • iOS: ending light-distraction hold does not trigger ThoughtCaptureView/post-hold capture overlay.
  • Copy updated to state light-distraction holds only log segments while explicit capture paths are separate.

Made with Cursor

Summary by CodeRabbit

  • New Features

    • Added an explicit "Capture" / "Capture note" control to start thought capture on demand.
  • Changes

    • Light-distraction holds now only log awareness segments and no longer trigger automatic post-distraction capture.
    • Session end paths now consistently finalize holds before other actions.
  • Documentation

    • Updated in-app instructions clarifying that explicit capture is required to save notes.

Light-distraction hold exits now only log awareness segments instead of auto-offering thought capture. Updated web and iOS helper text to clarify that captured notes require explicit capture flows.

Made-with: Cursor
@vercel
Copy link
Copy Markdown

vercel Bot commented Apr 22, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
still-point Ready Ready Preview, Comment Apr 23, 2026 2:56am

Request Review

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 22, 2026

Warning

Rate limit exceeded

@auerbachb has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 9 minutes and 38 seconds before requesting another review.

Your organization is not enrolled in usage-based pricing. Contact your admin to enable usage-based pricing to continue reviews beyond the rate limit, or try again in 9 minutes and 38 seconds.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 9c514e13-d62d-441d-aa41-12dac26adc18

📥 Commits

Reviewing files that changed from the base of the PR and between 6810770 and a5d4409.

📒 Files selected for processing (1)
  • ios/StillPointApp/ViewModels/SessionViewModel.swift
📝 Walkthrough

Walkthrough

Removed the implicit post-distraction thought-capture trigger from hold-finalization paths and introduced an explicit capture action. Finalization APIs were simplified (parameter removed) and callers updated; a new explicit "openThoughtCapture" / "capture" affordance was added and UI text adjusted to state that light-distraction holds only log segments.

Changes

Cohort / File(s) Summary
iOS: SessionViewModel & View
ios/StillPointApp/ViewModels/SessionViewModel.swift, ios/StillPointApp/Views/SessionView.swift
Removed offerThoughtCapture parameter from finalizeActiveHoldIfNeeded(at:); added openThoughtCapture() that finalizes the hold and sets showPostDistractionCapture; updated session termination paths to call new signature; added a Capture button and explanatory text noting light-distraction holds only log segments.
Web: Solo SessionView
src/components/SessionView.tsx
Changed finalizeActiveHold(atTime) to remove boolean capture flag from callers; added handleOpenThoughtCapture that finalizes hold then sets showPostDistractionCapture(true); added Capture button and updated instructional paragraph to state light-distraction holds only log segments.
Web: Buddy Session Room
src/components/BuddySessionRoom.tsx
Refactored finalizeActiveBuddyHold to remove offerThoughtCapture arg and updated all release/leave/cancel handlers to new signature; added openThoughtCapture handler and a capture-note button; updated instructional text about light-distraction behavior.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Poem

🐇 I held a thought, then let it go,

No surprise prompt, just steady flow.
A button now to capture bright,
When I choose, I save the light.
Hop, jot, and gentle glow—notes in tow.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 16.67% 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
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately and concisely describes the main change: preventing thought-capture prompts after light distraction holds across platforms.
Linked Issues check ✅ Passed All code requirements from issue #187 are met: light-distraction hold release no longer triggers thought capture on web and iOS, explicit capture paths added, and UI copy updated across all platforms.
Out of Scope Changes check ✅ Passed All changes directly support the issue objectives; no unrelated refactoring or feature additions beyond the stated scope are present.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch issue-187-no-light-distraction-capture

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

Copy link
Copy Markdown

@cursor cursor Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Comment @cursor review or bugbot run to trigger another review on this PR

Reviewed by Cursor Bugbot for commit 6a06211. Configure here.

Comment thread src/components/SessionView.tsx Outdated
Remove dead hold-finalization capture flags and add explicit capture-note actions on web and iOS so thought capture is intentional rather than tied to light-distraction release.

Made-with: Cursor
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@ios/StillPointApp/ViewModels/SessionViewModel.swift`:
- Line 139: The call to finalizeActiveHoldIfNeeded(at:elapsed,
offerThoughtCapture: false) prevents showPostDistractionCapture from ever being
set, making the post-hold thought-capture UI unreachable; either restore passing
offerThoughtCapture: true on the paths that should trigger post-hold capture or
add an explicit method (e.g., setShowPostDistractionCapture(true) or
offerPostHoldCapture()) invoked after finalizeActiveHoldIfNeeded in the
appropriate hold-completion branches so that the showPostDistractionCapture flag
(and any related UI state) is toggled when intended; update references in
SessionViewModel where finalizeActiveHoldIfNeeded(...) is called to ensure the
intended behavior.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: c1e4c0c4-8e1d-4f28-a04b-ea924334e02d

📥 Commits

Reviewing files that changed from the base of the PR and between c5701c5 and 6a06211.

📒 Files selected for processing (4)
  • ios/StillPointApp/ViewModels/SessionViewModel.swift
  • ios/StillPointApp/Views/SessionView.swift
  • src/components/BuddySessionRoom.tsx
  • src/components/SessionView.tsx

Comment thread ios/StillPointApp/ViewModels/SessionViewModel.swift Outdated
Comment thread src/components/BuddySessionRoom.tsx Outdated
Comment thread src/components/SessionView.tsx Outdated
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@ios/StillPointApp/ViewModels/SessionViewModel.swift`:
- Around line 157-160: The capture action is blocked by the isActive guard in
openThoughtCapture(), causing a dead tappable button; remove the guard and let
openThoughtCapture() always call finalizeActiveHoldIfNeeded(at: elapsed) and set
showPostDistractionCapture = true so the capture flow works whether the session
is active or paused. Locate the openThoughtCapture() method and replace the
current guarded return logic with an unconditional call to
finalizeActiveHoldIfNeeded(at: elapsed) followed by setting
showPostDistractionCapture = true so the UI button becomes effective in paused
state.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 0e389142-3e19-4636-a2c0-fb8b49adf284

📥 Commits

Reviewing files that changed from the base of the PR and between 6a06211 and 6810770.

📒 Files selected for processing (4)
  • ios/StillPointApp/ViewModels/SessionViewModel.swift
  • ios/StillPointApp/Views/SessionView.swift
  • src/components/BuddySessionRoom.tsx
  • src/components/SessionView.tsx
🚧 Files skipped from review as they are similar to previous changes (1)
  • src/components/SessionView.tsx

Comment thread ios/StillPointApp/ViewModels/SessionViewModel.swift
Enable the iOS capture action when a session is paused so the Capture button is not a no-op, while still guarding against completed or abandoned sessions.

Made-with: Cursor
@auerbachb auerbachb merged commit 4a57010 into main Apr 23, 2026
5 checks passed
@auerbachb auerbachb deleted the issue-187-no-light-distraction-capture branch April 23, 2026 03:15
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.

fix: No thought-capture prompt after light distraction hold

1 participant