Skip to content

feat: a pull request whose title matches a skipTitles pattern is skipped before any agent runs - #102

Merged
fiddur merged 1 commit into
developfrom
feat/skip-titles
Sep 8, 2026
Merged

feat: a pull request whose title matches a skipTitles pattern is skipped before any agent runs#102
fiddur merged 1 commit into
developfrom
feat/skip-titles

Conversation

@fiddur

@fiddur fiddur commented Sep 8, 2026

Copy link
Copy Markdown
Collaborator

What. skipTitles: string[] in the inbox config — regular-expression sources matched against the pull request title. A match skips the pull request in the daemon, before any worktree, diffity server or agent run. Editable from the page's Settings panel, one pattern per line; the free-text filter stays for what a regex cannot say.

Why. A \(payments\) or Release$ skip was costing an agent run and 0.2–1 minute per pull request, every time the head moved. A regex costs nothing.

How it behaves. ↑ overrides a title skip, as it overrides the filter and the CI hold. The title is answered before the CI hold — a skipped title has nothing to wait for. The match is re-decided at every poll, so a retitle brings the pull request back to the queue (unlike a filter skip, which settles at its head). A review already prepared for an older head stays stale and openable. Patterns are compiled at parse time, so a typo is a refused config (skipTitles[2] is not a valid regular expression: …) rather than a lost skip.

Also, from the reviewer: the page's "Max prepared at once" is now labelled "Auto-prepare from queue" — the number caps what the daemon prepares on its own, and a bumped pull request is prepared past it. The config key maxPrepared is unchanged.

Verified. npm run build, npm run typecheck and the full npm test green (CLI 575 tests / 64 files; 1227 across the workspace). New unit tests cover the config parse (accept, non-string, bad regex by name), the settings round-trip, titleSkipReason (first match wins, no match, escaped and anchored sources, an uncompilable pattern ignored), reconcile (fresh skip, bumped override, re-decided on retitle, ahead of the CI hold, stale kept openable, nothing said on a pull request it would not prepare), runTick (a matching title never reaches prepare) and the page fields plus the script parse-check.

🤖 Generated with Claude Code

https://claude.ai/code/session_01Bwp5QefjsjMFeq6CK6cT6w

…ped before any agent runs

`skipTitles` holds regular-expression sources matched against the pull request
title. A match is decided in the daemon — no worktree, no diffity server, no
agent run — where the reviewer's free-text `filter` costs an agent run for
every pull request it skips; the filter stays for what a regex cannot say. ↑
overrides a title skip as it overrides the filter and the CI hold, the title is
answered before the CI hold (a skipped title has nothing to wait for), and the
match is re-decided at every poll, so a retitle brings the pull request back to
the queue. A review already prepared for an older head stays openable as
`stale`, as it does under the CI hold. Patterns are compiled at parse time, so
a typo is a refused config rather than a lost skip.

The page's prepared cap is relabelled "Auto-prepare from queue": the number
caps what the daemon prepares from the queue on its own, and a bumped pull
request is prepared past it.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Bwp5QefjsjMFeq6CK6cT6w
@fiddur
fiddur marked this pull request as ready for review September 8, 2026 08:41
@fiddur
fiddur merged commit b50f2a1 into develop Sep 8, 2026
2 checks passed
@fiddur
fiddur deleted the feat/skip-titles branch September 8, 2026 08:41
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