Skip to content

Add pause/resume for the runner animation#43

Open
HashaamKhan19 wants to merge 1 commit into
runcat-dev:mainfrom
HashaamKhan19:feature/pause-resume-animation
Open

Add pause/resume for the runner animation#43
HashaamKhan19 wants to merge 1 commit into
runcat-dev:mainfrom
HashaamKhan19:feature/pause-resume-animation

Conversation

@HashaamKhan19

Copy link
Copy Markdown

Adds a "Pause Animation" / "Resume Animation" item to the dropdown menu that freezes the running cat in place (preserving its position via the existing CALayer speed/timeOffset plumbing) without quitting the app. The paused state is persisted in UserDefaults and broadcast through AppState so RunnerBar (which owns the CALayer) and Dashboard (which owns the menu) stay in sync.

Context of Contribution

  • Bug Fix
  • Refactoring
  • New Feature
  • Others

Summary of the Proposal

Adds a "Pause Animation" / "Resume Animation" item to the menu-bar dropdown menu. Clicking
it freezes the running cat in place (using the existing CALayer speed/timeOffset mechanism)
without quitting the app, and clicking it again resumes at the current CPU-driven speed.
The paused state is persisted so it survives an app relaunch.

Reason for the new feature

Users on screen-shares, presentations, or who just want a moment of visual stillness
currently have no way to stop the cat without quitting the whole app, which also loses
menu-bar access to Settings, Activity Monitor, etc. A simple pause/resume toggle solves
this with minimal, low-risk surface area (one new preference, one new AppState stream,
one new menu item).

Checklist

  • I have read the CONTRIBUTING.md and agree to follow it.
  • This PR does not contain commits of multiple contexts.
  • Code follows proper indentation and naming conventions.
  • Implemented using only APIs that can be submitted to the App Store.

Adds a "Pause Animation" / "Resume Animation" item to the dropdown
menu that freezes the running cat in place (preserving its position
via the existing CALayer speed/timeOffset plumbing) without quitting
the app. The paused state is persisted in UserDefaults and broadcast
through AppState so RunnerBar (which owns the CALayer) and Dashboard
(which owns the menu) stay in sync.

Signed-off-by: HashaamKhan19 <hashaamkhan4247@gmail.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
@Kyome22

Kyome22 commented Jul 18, 2026

Copy link
Copy Markdown
Collaborator

People who want to disable the animations are not the target users of this app. I suggest they use other apps instead.

Rather, the greatest value of this app lies in using it to break the ice during screen sharing, or occasionally being soothed by watching the animations.

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.

2 participants