Skip to content

fix(rules): stop lumping every no-rules-file client into one unsupported line - #848

Merged
btsouth merged 1 commit into
mainfrom
rules-unsupported-wording
Aug 29, 2026
Merged

fix(rules): stop lumping every no-rules-file client into one unsupported line#848
btsouth merged 1 commit into
mainfrom
rules-unsupported-wording

Conversation

@btsouth

@btsouth btsouth commented Aug 25, 2026

Copy link
Copy Markdown
Owner

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:

  • Cursor and GitHub Copilot CLI: "No global rules file for Cursor, GitHub Copilot CLI, but project rules reach them: add a folder under Projects below."
  • Claude Desktop: "Claude Desktop is the chat app and has no rules file; Claude Code inside it is covered by the Claude Code row above."
  • The rest keep the old sentence and the paste-by-hand advice.

The backend marks a pathless client projectCovered when 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: ClientStatus gains projectCovered, set when there is no writable global file but the client id appears on the PROJECT_FILES roster (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 RulesView

  • Adds a projectCovered boolean to ClientStatus (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_from sets projectCovered=true when a client has no target path but its id appears in PROJECT_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.
  • Updates types.ts, tests, docs, and changelog accordingly.
  • Risk: clients with path set always have projectCovered=false; any frontend code that ignores the flag and groups all pathless clients together will lose the new guidance.

Macroscope summarized e632ccc.

…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.
@cursor

cursor Bot commented Aug 25, 2026

Copy link
Copy Markdown

Bugbot couldn't run - usage limit reached

Bugbot 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)

@coderabbitai

coderabbitai Bot commented Aug 25, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 70fb2fab-a15a-4711-a177-ed636948b1fc

📥 Commits

Reviewing files that changed from the base of the PR and between 54d487c and e632ccc.

⛔ Files ignored due to path filters (2)
  • CHANGELOG.md is excluded by !**/*.md
  • docs/agent-rules.md is excluded by !**/*.md
📒 Files selected for processing (4)
  • src-tauri/src/rules.rs
  • src/components/RulesView.test.tsx
  • src/components/RulesView.tsx
  • src/lib/types.ts

Included review availability: Your plan provides up to 2 included reviews per hour; 1 remains after this review.


📝 Walkthrough

Walkthrough

ClientStatus now reports project-level rules coverage. RulesView uses this status to show different guidance for project-covered clients, Claude Desktop, and clients that require manual rule entry. Tests validate all three messages.

Changes

Rules coverage reporting

Layer / File(s) Summary
Project coverage status reporting
src-tauri/src/rules.rs, src/lib/types.ts
The client status contract includes projectCovered. Backend status rows set the field when a targetless client reads a supported project rules file.
Client-specific unsupported guidance
src/components/RulesView.tsx, src/components/RulesView.test.tsx
The UI categorizes unsupported clients and renders distinct guidance. Tests cover Cursor, Claude Desktop, and OpenCode.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Merge Risk: ⚪ Minimal · up to e632c

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
Loading
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 66.67% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 3 functions across 4 files. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarizes the main change: separating clients that lack writable global rules files instead of grouping them under one unsupported message.
Description check ✅ Passed The description directly explains the backend marker, the three client categories, the updated guidance, and the reported test results.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches 💡 2
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🛠️ Fix failing CI checks 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch rules-unsupported-wording

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

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

@btsouth
btsouth merged commit 7b61c1b into main Aug 29, 2026
19 of 20 checks passed
btsouth added a commit that referenced this pull request Aug 30, 2026
…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.
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