Skip to content

feat: notify on runner job activity - #68

Merged
Peyton-Spencer merged 2 commits into
mainfrom
feat/43-job-notifications
May 3, 2026
Merged

feat: notify on runner job activity#68
Peyton-Spencer merged 2 commits into
mainfrom
feat/43-job-notifications

Conversation

@Peyton-Spencer

Copy link
Copy Markdown
Contributor

Summary

  • add native macOS job notifications using UserNotifications, with click-through links that open the related GitHub Actions run
  • detect job start/completion from the existing runner status poller by resolving workflow/job metadata from GitHub when a runner flips between idle and busy
  • add a single settings toggle to enable or disable notifications, defaulting to on for existing and new configs

Testing

  • git diff --check
  • swift test (not runnable in this container: swift: command not found)

Notes

  • this keeps v1 intentionally simple with one global notifications toggle instead of separate per-event settings

@coderabbitai

coderabbitai Bot commented Mar 25, 2026

Copy link
Copy Markdown

Warning

Rate limit exceeded

@Peyton-Spencer has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 48 minutes and 43 seconds before requesting another review.

To keep reviews running without waiting, you can enable usage-based add-on for your organization. This allows additional reviews beyond the hourly cap. Account admins can enable it under billing.

⌛ 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: defaults

Review profile: CHILL

Plan: Pro

Run ID: 14bbaf33-57c1-4f16-b943-f3f33bf814a5

📥 Commits

Reviewing files that changed from the base of the PR and between 3c9d3bc and 4e309f8.

📒 Files selected for processing (8)
  • Sources/MacRunner/MacRunnerApp.swift
  • Sources/Models/Runner.swift
  • Sources/Services/ContainerIsolationService.swift
  • Sources/Services/GHCLIService.swift
  • Sources/Services/JobNotificationService.swift
  • Sources/Services/RunnerManager.swift
  • Sources/Views/MenuBarView.swift
  • Tests/MacRunnerTests/MacRunnerTests.swift
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/43-job-notifications

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
Review rate limit: 0/1 reviews remaining, refill in 48 minutes and 43 seconds.

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

@Peyton-Spencer

Copy link
Copy Markdown
Contributor Author

Mergemaster note — Clayton, 2026-05-02 19:00 PT window

Picking this PR back up after ~5 weeks dormant. Current blocker is a CI compile error from a botched rebase: PR #66 (auto-provision toolchains) merged on 2026-03-25 20:49 UTC and added toolProvisioningService on main. PR #68 was rebased on top in a way that left duplicate declarations in the diff:

  • Sources/Services/RunnerManager.swift:316-318 — duplicate private let toolProvisioningService = ToolProvisioningService()
  • Sources/Models/Runner.swift — duplicate tools: ToolProvisioningSettings = .default, parameter and duplicate self.tools = tools assignment in the AppSettings init

Branch is also mergeable_state: dirty against current main.

Delegated rebase + dedupe to @OCPeyton. Will hold the merge until:

  1. Duplicate lines removed
  2. Branch rebased onto main
  3. CI Build & Test green on macOS-15-arm64
  4. CodeRabbit re-review clean

PR #69 is stacked on this branch and will be rebased + merged immediately after this lands.

Add native macOS notifications for job start and completion, including click-through links to the GitHub Actions run and a single settings toggle to disable them. Use the existing runner status poller to detect transitions and tie notifications to the workflow/job metadata fetched from GitHub.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@Peyton-Spencer
Peyton-Spencer force-pushed the feat/43-job-notifications branch from 565d7c8 to 30575b6 Compare May 3, 2026 02:03
@Peyton-Spencer

Copy link
Copy Markdown
Contributor Author

Rebased onto latest main; kept the main-branch ToolProvisioningService instance as the single declaration and preserved the job notification state/restoration handlers.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@Peyton-Spencer
Peyton-Spencer merged commit 08919ae into main May 3, 2026
2 checks passed
@Peyton-Spencer
Peyton-Spencer deleted the feat/43-job-notifications branch May 3, 2026 02:14
@Peyton-Spencer
Peyton-Spencer restored the feat/43-job-notifications branch May 3, 2026 02:15
@Peyton-Spencer
Peyton-Spencer deleted the feat/43-job-notifications branch May 3, 2026 02:15
github-actions Bot pushed a commit that referenced this pull request May 3, 2026
# [1.15.0](v1.14.1...v1.15.0) (2026-05-03)

### Features

* notify on runner job activity ([#68](#68)) ([08919ae](08919ae))
@github-actions

github-actions Bot commented May 3, 2026

Copy link
Copy Markdown

🎉 This PR is included in version 1.15.0 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant