fix(rules): stop lumping every no-rules-file client into one unsupported line - #848
Conversation
…ted line Cursor and GitHub Copilot CLI have no global rules file but do read project rules, so the Clients section now points them at Projects instead of calling them unsupported. Claude Desktop is named as the chat app, with Claude Code inside it covered by the Claude Code row. Only clients with no rules file anywhere still say to paste rules in by hand. The backend marks a pathless client project_covered when it reads one of the PROJECT_FILES, so the UI stays in step with the project-file roster rather than hardcoding names.
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_f2deab95-5ac8-46d7-9d2f-92401d30b556) |
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: ⛔ Files ignored due to path filters (2)
📒 Files selected for processing (4)
Included review availability: Your plan provides up to 2 included reviews per hour; 1 remains after this review. 📝 WalkthroughWalkthrough
ChangesRules coverage reporting
Estimated code review effort: 3 (Moderate) | ~20 minutes Merge Risk: ⚪ Minimal · up to This PR refines client-specific rules guidance and adds a read-only status field without changing rule writing, authentication, or data handling. No actionable merge-blocking risk remains after normal checks and review. Sequence Diagram(s)sequenceDiagram
participant RulesBackend as rules.rs
participant RulesStatus as ClientStatus
participant RulesView
participant Reviewer as Test
RulesBackend->>RulesStatus: Set projectCovered for covered clients
RulesStatus->>RulesView: Provide client status
RulesView->>RulesView: Categorize unsupported clients
RulesView->>Reviewer: Render client-specific guidance
Reviewer->>Reviewer: Assert Cursor, Claude Desktop, and OpenCode messages
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches 💡 2📝 Generate docstrings 💡
🛠️ Fix failing CI checks 💡
🧪 Generate unit tests (beta)
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 |
…shell #848 split "no rules file Toolport can write for X, Y, Z" apart in the React shell because one line hides three different truths and reads as "Cursor is unsupported" when project rules reach Cursor fine. The native shell landed after that branch point and had lumped them back together. Same split and the same wording now: project-covered clients are pointed at Projects, Claude Desktop is explained as the chat app whose Claude Code is already covered, and only the rest get the paste-by-hand line. Uses the `project_covered` flag rules.rs already computes from the PROJECT_FILES roster rather than hardcoding names.
The Agent rules tab said "No rules file Toolport can write for Claude Desktop, Cursor, OpenCode, Grok Build, GitHub Copilot CLI. Paste your rules in by hand." That line hides three different truths, and it reads as "Cursor is unsupported" when project rules reach Cursor fine.
Now the Clients section says which case each client is:
The backend marks a pathless client
projectCoveredwhen its id is in PROJECT_FILES, so the split follows the project-file roster instead of hardcoded names in the frontend. Claude Desktop stays a frontend special case since it is about what the client is, not about files.Tests: RulesView vitest suite (40 pass) including an expanded callout test, rules:: cargo tests (29 pass), tsc clean.
🤖 Generated with Claude Code
Note
Low Risk
Copy and a read-only API field on the rules view; no changes to how rules are written or to auth/data handling.
Overview
The Agent rules Clients section no longer uses one "No rules file Toolport can write for … Paste by hand" line for every client without a global path.
Backend:
ClientStatusgainsprojectCovered, set when there is no writable global file but the client id appears on thePROJECT_FILESroster (e.g. Cursor, GitHub Copilot CLI), so the UI can route users to Projects without hardcoding names in the frontend.UI: Unsupported clients are split into up to three messages—project-reachable clients are told to add a folder under Projects; Claude Desktop is explained as the chat app with Claude Code already covered above; everyone else keeps the paste-by-hand guidance.
Docs and CHANGELOG match the new behavior; RulesView tests assert the three cases.
Reviewed by Cursor Bugbot for commit e632ccc. Bugbot is set up for automated code reviews on this repo. Configure here.
Note
Split no-rules-file clients into project-covered, Claude Desktop, and manual-only groups in
RulesViewprojectCoveredboolean toClientStatus(rules.rs) so the backend can flag clients without a writable global rules file that are still covered by project-level files (e.g. Cursor, GitHub Copilot CLI).status_fromsetsprojectCovered=truewhen a client has no target path but its id appears inPROJECT_FILES.RulesView(RulesView.tsx) partitions unsupported clients into three buckets — project-only (points to Projects), Claude Desktop (explains Claude Code coverage), and manual-only — each with its own guidance instead of a single generic message.pathset always haveprojectCovered=false; any frontend code that ignores the flag and groups all pathless clients together will lose the new guidance.Macroscope summarized e632ccc.