Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
# Sends new bug reports to Drew's "Bug report to draft PR" Claude routine.
# Sends new bug reports to Drew's "Bug report to draft PR" routine.
# The routine reads the issue itself and, if it is a fixable bug, opens a
# draft pull request from claude/issue-<n>. Nothing here merges anything.
# draft pull request from fix/issue-<n>. Nothing here merges anything.
#
# Only the repository name and issue number leave this workflow; the issue
# text is never put in a shell command or sent in the request.
# Re-run on any issue by adding the `claude-fix` label (needs triage access).
# Re-run on any issue by adding the `fix-this` label (needs triage access).

name: Claude issue fix
name: Issue fix

on:
issues:
Expand All @@ -16,16 +16,16 @@ permissions:
issues: read

concurrency:
group: claude-issue-fix-${{ github.event.issue.number }}
group: issue-fix-${{ github.event.issue.number }}

jobs:
fire:
if: >-
(github.event.action == 'opened'
&& github.event.issue.user.type != 'Bot'
&& !endsWith(github.event.issue.user.login, '[bot]')
&& !contains(github.event.issue.labels.*.name, 'claude-fix'))
|| (github.event.action == 'labeled' && github.event.label.name == 'claude-fix')
&& !contains(github.event.issue.labels.*.name, 'fix-this'))
|| (github.event.action == 'labeled' && github.event.label.name == 'fix-this')
runs-on: ubuntu-latest
timeout-minutes: 5
env:
Expand All @@ -44,7 +44,7 @@ jobs:
--jq "[.[] | select(.pull_request == null and .created_at >= \"$since\" and .user.type != \"Bot\")] | length")
echo "Issues opened in the last 24 hours: $count (limit $DAILY_LIMIT)"
if [ "$count" -gt "$DAILY_LIMIT" ]; then
echo "::notice::Daily limit reached; not sending this issue. Add the claude-fix label to send it anyway."
echo "::notice::Daily limit reached; not sending this issue. Add the fix-this label to send it anyway."
echo "skip=true" >> "$GITHUB_OUTPUT"
fi

Expand Down
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ Permission identity: the bundle ID `app.cleanmode.mac` and a consistent Apple De

Releases: version and build live only in `Resources/Info.plist` and are bumped by hand; also update CHANGELOG.md and the README download name. Distribution is a separate Developer ID copy (team 7BVMD7TA97), notarized with `asc` from the keychain, never the development bundle; follow [docs/RELEASING.md](docs/RELEASING.md). 0.1.0 shipped 2026-10-21 as a notarized DMG and ZIP. Evidence and limits are in [docs/VALIDATION.md](docs/VALIDATION.md).

New GitHub issues fire the "Bug report to draft PR" Claude routine through `.github/workflows/claude-issue-fix.yml` (3 per day; the `claude-fix` label re-fires it).
New GitHub issues fire the "Bug report to draft PR" routine through `.github/workflows/issue-fix.yml` (3 per day; the `fix-this` label re-fires it).

The engine owns event filtering and deadlines off the main thread. The deterministic core is in KeydozeCore. Never log typed content or raw events, replay blocked events, automatically restart an interrupted session, or request extra privacy permissions by habit. Idle means no event taps.

Expand Down
Loading