Repository navigation
fix(task): match project-qualified monorepo tasks without // - #11782
Conversation
`mise run web:build` stopped resolving `//web:build` in 2026.8.1. jdx#11581 replaced the fall-through for patterns not starting with `//` with an early return that matches whole task identities only, and deleted the `relative_match` arm that had matched such patterns against keys with their `//` prefix stripped. Bare project-qualified names reach `get_matching` through the fallback in `task_list.rs`, so both halves of the regression sit on that path. It also fails confusingly: `err_no_task` reports the expanded `//:web:build`, a name the user never typed. When identity matching finds nothing and the map holds monorepo keys, anchor the pattern at the monorepo root instead. Monorepo keys are always rooted, so this is equivalent to the removed prefix-stripped match, but it routes through the current matcher and preserves the group-boundary semantics jdx#11581 added — reinstating the old arm would have brought back the `*`-crosses-`:` bug. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
📝 WalkthroughWalkthroughThis change allows unprefixed patterns to resolve monorepo project tasks when no direct match exists. Exact root task names remain preferred. Unit and end-to-end tests cover project matching, wildcard scoping, root task names with colons, and invalid task or project failures. ChangesMonorepo task matching
Estimated code review effort: 3 (Moderate) | ~20 minutes Possibly related PRs
Suggested reviewers: Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
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. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@src/task/mod.rs`:
- Around line 3316-3317: Update the task resolution flow around the earlier `/`
and `:` syntax rejection so monorepo fallback is attempted first when monorepo
tasks exist, allowing unprefixed nested names such as apps/web:build to resolve
to the project-qualified task. Preserve existing rejection behavior when no
matching monorepo task is available, and add unit and end-to-end coverage for a
nested config root.
🪄 Autofix
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: Central YAML (base), Organization UI (inherited)
Review profile: CHILL
Plan: Pro Plus
Run ID: 09b910db-f390-4e71-b22f-a653b7a35af9
📒 Files selected for processing (2)
e2e/tasks/test_task_monorepo_optional_slash_prefixsrc/task/mod.rs
Greptile SummaryThis PR restores resolution of project-qualified monorepo task names that omit the leading
Confidence Score: 5/5The PR appears safe to merge, with no actionable correctness or security issues identified. Existing exact and ordinary matching retain precedence, the fallback only activates after those paths fail, and the rewritten pattern enters the monorepo branch without further recursion. Important Files Changed
Reviews (1): Last reviewed commit: "fix(task): match project-qualified monor..." | Re-trigger Greptile |
Summary
mise run web:buildno longer resolves//web:build. Project-qualified task names without the//prefix regressed in 2026.8.1 (#11581); this restores them, keeping the group-boundary semantics that PR introduced.Still worked throughout, for contrast:
//web:buildfrom anywhere, andbuildor:buildfrom inside the project.Repro
AI-assisted — Tool: Claude Code; model: Anthropic/claude-opus-5[1m]; version: unavailable.
Summary by CodeRabbit
New Features
//prefixes.Bug Fixes