Skip to content

feat(vis): add an rslint adapter to vis lint, and fix workspace root and scope - #42

Merged
prisis merged 2 commits into
feat/vis-dev-build-rebuildfrom
feat/vis-rslint-adapter
Oct 22, 2026
Merged

prisis merged 2 commits into
feat/vis-dev-build-rebuildfrom
feat/vis-rslint-adapter

Conversation

@prisis

@prisis prisis commented Oct 22, 2026 •

Copy link
Copy Markdown
Member

Summary

  • vis lint runs rslint when a project has an rslint config. Findings come from rslint's jsonline output. Warnings map to warning severity, and paths resolve against the workspace.
  • Detection requires a config file, not just the @rslint/core dependency. Rslint exits 1 without one, so a dependency alone would make every run fail. The rslint inference target follows the same rule.
  • A crashed run is an error, not a pass. A non-zero exit with no findings (for example a broken config) becomes an error finding with rslint's first stderr line.
  • Workspace root detection now takes the nearest ancestor that declares a workspace (pnpm-workspace.yaml or workspaces). The lockfile finder is the fallback. Before, a package with its own lockfile was taken as the root, and a declared workspace without a lockfile was not found.
  • vis dev, vis build, vis pack, and vis preview run from a package directory select that package. From the root, or with --filter or --projects, they select across the workspace as before.
  • The pack offer's packem config sets failOnWarn: false, so package.json metadata warnings print without failing the build.
  • The config schema is regenerated. It had drifted after an earlier comment change.

Stack

This PR is the top of a three-PR stack:

  1. feat(vis)!: add vis test and make vis check a lint, format, and type gate #34: node runtime feature parity (base main)
  2. feat(vis): add dev, build, and rebuild commands with Rstack inference #35: dev, build, rebuild, pack, and preview (base feat(vis)!: add vis test and make vis check a lint, format, and type gate #34)
  3. This PR (base feat(vis): add dev, build, and rebuild commands with Rstack inference #35)

The diff here shows only the rslint adapter, the workspace root fix, and the scoping fix on top of #35.

Notes

  • Rslint runs without --type-check. TypeScript errors are reported by the typecheck adapter, which is opt-in.
  • When both eslint and rslint are configured, both run. That is the documented precedence, and nothing warns about it.

Testing

  • Typecheck and ESLint are clean on the changed files.
  • The full suite passes: 271 files and 3276 tests.
  • Adapter tests use rslint output captured from @rslint/core 0.9.5: findings, a warning, a multi-file run, junk lines, a crash, and dependency-only detection.
  • Against the built CLI: vis lint fails with the finding on a violation, passes on a clean project, and reports a broken config as an error. vis pack from a package builds only that package. From the root it builds the whole workspace, and packem exits 0 with its warnings printed.

🤖 Generated with Claude Code

prisis and others added 2 commits October 18, 2026 10:31
`vis lint` runs rslint when the project has an rslint config. Detection
requires the config file, not just the `@rslint/core` dependency: rslint
exits 1 with "no rslint config found" without one, so a dependency alone would
make every run fail.

Findings are parsed from rslint's jsonline output, one object per line. A
warning's severity is "warn", mapped to warning. Non-JSON lines are skipped.
Paths are resolved against the workspace. A non-zero exit with no findings
(such as a broken config) becomes an error finding with the first stderr line,
so a crashed linter does not print "no findings".

The config is loaded from rslint.config.ts, .js, .mjs, or .mts. .cjs is not
loaded by rslint, so it is not detected.

The rslint target inference no longer uses the dependency as a fallback, for
the same reason.

The committed config schema was also regenerated. It had drifted after the
`check` to `outdated` comment change in the security config.

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
…d, pack, and preview to it

Root detection took the nearest lockfile as the monorepo root. A package with
its own lockfile was mistaken for the root, and a declared workspace without a
lockfile was not found. The root is now the nearest ancestor that declares a
workspace (pnpm-workspace.yaml or package.json `workspaces`), with the lockfile
finder as the fallback.

`vis dev`, `vis build`, `vis pack`, and `vis preview` run from a package
directory now select that package (`~:<target>`). From the workspace root, or
with --filter or --projects, they select across the workspace as before.

The packem config the pack offer writes sets `failOnWarn: false`, so
package.json metadata warnings (exports, engines, sideEffects) print without
failing the build. tsdown does the same: its package.json checks are opt-in,
and it builds ESM from src/index.ts with no config.

The `vis env pin` tip pointed at a command that does not exist. It now
names `vis toolchain pin`. The readJsonFileSafe generic is justified in a
comment rather than flagged.

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Oct 22, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 6f4f5ed4-f88e-44b6-8a04-b1e6a95a054e

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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.

@github-actions

Copy link
Copy Markdown
Contributor

Thank you for following the naming conventions! 🙏

@github-actions github-actions Bot added size:L Size of the change, tests and generated files excluded. vouch:trusted PR author is a collaborator, a bot or on the VOUCHED list. labels Oct 22, 2026
@prisis
prisis merged commit 99aa82e into feat/vis-dev-build-rebuild Oct 22, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

package: vis size:L Size of the change, tests and generated files excluded. vouch:trusted PR author is a collaborator, a bot or on the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant