ci: add CI workflow for trusted publishers for crates#7769
Conversation
|
WalkthroughAdds a manual GitHub Actions workflow to publish workspace crates to crates.io and a Node.js script (scripts/update-crates-versions.mjs) to bulk-update crate versions. Updates RELEASES.md (reorganises prerelease/npm sections and adds a Crates section). Introduces a new crate Possibly related PRs
Suggested reviewers
Pre-merge checks and finishing touches✅ Passed checks (3 passed)
✨ Finishing touches🧪 Generate unit tests (beta)
📜 Recent review detailsConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro 📒 Files selected for processing (13)
🚧 Files skipped from review as they are similar to previous changes (10)
🧰 Additional context used📓 Path-based instructions (4)crates/biome_*/**📄 CodeRabbit inference engine (CLAUDE.md)
Files:
**/*.toml📄 CodeRabbit inference engine (CONTRIBUTING.md)
Files:
{Cargo.toml,crates/**/Cargo.toml}📄 CodeRabbit inference engine (CONTRIBUTING.md)
Files:
crates/biome_*_{syntax,parser,formatter,analyze,factory,semantic}/**📄 CodeRabbit inference engine (CLAUDE.md)
Files:
🧠 Learnings (2)📚 Learning: 2025-08-17T08:55:30.118ZApplied to files:
📚 Learning: 2025-10-15T09:22:46.002ZApplied to files:
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (23)
Comment |
CodSpeed Performance ReportMerging #7769 will not alter performanceComparing Summary
Footnotes
|
There was a problem hiding this comment.
Actionable comments posted: 1
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (1)
Cargo.lockis excluded by!**/*.lockand included by**
📒 Files selected for processing (24)
.github/workflows/publish-crates.yml(1 hunks)RELEASES.md(2 hunks)crates/biome_configuration/Cargo.toml(3 hunks)crates/biome_configuration/src/lib.rs(1 hunks)crates/biome_configuration/src/overrides.rs(1 hunks)crates/biome_graphql_analyze/Cargo.toml(1 hunks)crates/biome_graphql_factory/Cargo.toml(1 hunks)crates/biome_graphql_formatter/Cargo.toml(1 hunks)crates/biome_graphql_parser/Cargo.toml(1 hunks)crates/biome_graphql_syntax/Cargo.toml(1 hunks)crates/biome_grit_parser/Cargo.toml(1 hunks)crates/biome_html_parser/Cargo.toml(1 hunks)crates/biome_js_type_info/Cargo.toml(1 hunks)crates/biome_js_type_info_macros/Cargo.toml(1 hunks)crates/biome_jsdoc_comment/Cargo.toml(1 hunks)crates/biome_markdown_parser/Cargo.toml(2 hunks)crates/biome_plugin_loader/Cargo.toml(3 hunks)crates/biome_plugin_loader/src/lib.rs(1 hunks)crates/biome_plugin_loader/src/plugin_cache.rs(1 hunks)crates/biome_project_layout/Cargo.toml(1 hunks)crates/biome_rule_options/Cargo.toml(1 hunks)crates/biome_service/src/settings.rs(1 hunks)crates/biome_service/src/workspace/server.rs(1 hunks)scripts/update-crates-versions.mjs(1 hunks)
🧰 Additional context used
📓 Path-based instructions (7)
crates/biome_*_{syntax,parser,formatter,analyze,factory,semantic}/**
📄 CodeRabbit inference engine (CLAUDE.md)
Maintain the per-language crate structure: biome_{lang}_{syntax,parser,formatter,analyze,factory,semantic}
Files:
crates/biome_grit_parser/Cargo.tomlcrates/biome_html_parser/Cargo.tomlcrates/biome_graphql_syntax/Cargo.tomlcrates/biome_graphql_factory/Cargo.tomlcrates/biome_markdown_parser/Cargo.tomlcrates/biome_graphql_formatter/Cargo.tomlcrates/biome_graphql_analyze/Cargo.tomlcrates/biome_graphql_parser/Cargo.toml
crates/biome_*/**
📄 CodeRabbit inference engine (CLAUDE.md)
Place core crates under /crates/biome_*/
Files:
crates/biome_grit_parser/Cargo.tomlcrates/biome_js_type_info_macros/Cargo.tomlcrates/biome_html_parser/Cargo.tomlcrates/biome_service/src/workspace/server.rscrates/biome_configuration/src/lib.rscrates/biome_graphql_syntax/Cargo.tomlcrates/biome_graphql_factory/Cargo.tomlcrates/biome_rule_options/Cargo.tomlcrates/biome_jsdoc_comment/Cargo.tomlcrates/biome_markdown_parser/Cargo.tomlcrates/biome_project_layout/Cargo.tomlcrates/biome_graphql_formatter/Cargo.tomlcrates/biome_plugin_loader/src/lib.rscrates/biome_plugin_loader/src/plugin_cache.rscrates/biome_service/src/settings.rscrates/biome_configuration/src/overrides.rscrates/biome_configuration/Cargo.tomlcrates/biome_graphql_analyze/Cargo.tomlcrates/biome_plugin_loader/Cargo.tomlcrates/biome_graphql_parser/Cargo.tomlcrates/biome_js_type_info/Cargo.toml
**/*.toml
📄 CodeRabbit inference engine (CONTRIBUTING.md)
Format TOML files before committing (e.g., via
just fusing taplo-cli)
Files:
crates/biome_grit_parser/Cargo.tomlcrates/biome_js_type_info_macros/Cargo.tomlcrates/biome_html_parser/Cargo.tomlcrates/biome_graphql_syntax/Cargo.tomlcrates/biome_graphql_factory/Cargo.tomlcrates/biome_rule_options/Cargo.tomlcrates/biome_jsdoc_comment/Cargo.tomlcrates/biome_markdown_parser/Cargo.tomlcrates/biome_project_layout/Cargo.tomlcrates/biome_graphql_formatter/Cargo.tomlcrates/biome_configuration/Cargo.tomlcrates/biome_graphql_analyze/Cargo.tomlcrates/biome_plugin_loader/Cargo.tomlcrates/biome_graphql_parser/Cargo.tomlcrates/biome_js_type_info/Cargo.toml
{Cargo.toml,crates/**/Cargo.toml}
📄 CodeRabbit inference engine (CONTRIBUTING.md)
{Cargo.toml,crates/**/Cargo.toml}: Use workspace = true for internal crates in dependencies
Use path dependencies for dev-dependencies of internal crates
Files:
crates/biome_grit_parser/Cargo.tomlcrates/biome_js_type_info_macros/Cargo.tomlcrates/biome_html_parser/Cargo.tomlcrates/biome_graphql_syntax/Cargo.tomlcrates/biome_graphql_factory/Cargo.tomlcrates/biome_rule_options/Cargo.tomlcrates/biome_jsdoc_comment/Cargo.tomlcrates/biome_markdown_parser/Cargo.tomlcrates/biome_project_layout/Cargo.tomlcrates/biome_graphql_formatter/Cargo.tomlcrates/biome_configuration/Cargo.tomlcrates/biome_graphql_analyze/Cargo.tomlcrates/biome_plugin_loader/Cargo.tomlcrates/biome_graphql_parser/Cargo.tomlcrates/biome_js_type_info/Cargo.toml
**/*.rs
📄 CodeRabbit inference engine (CONTRIBUTING.md)
**/*.rs: Format Rust files before committing (e.g., viajust fwhich formats Rust)
Document rules, assists, and options with inline rustdoc in source
Files:
crates/biome_service/src/workspace/server.rscrates/biome_configuration/src/lib.rscrates/biome_plugin_loader/src/lib.rscrates/biome_plugin_loader/src/plugin_cache.rscrates/biome_service/src/settings.rscrates/biome_configuration/src/overrides.rs
crates/biome_service/src/workspace/server.rs
📄 CodeRabbit inference engine (crates/biome_service/CONTRIBUTING.md)
WorkspaceServer must maintain workspace state and is used in the daemon and CLI daemonless mode
Files:
crates/biome_service/src/workspace/server.rs
crates/biome_configuration/src/**
📄 CodeRabbit inference engine (CLAUDE.md)
Keep configuration sources under biome_configuration/src/
Files:
crates/biome_configuration/src/lib.rscrates/biome_configuration/src/overrides.rs
🧠 Learnings (6)
📚 Learning: 2025-10-15T09:22:15.851Z
Learnt from: CR
PR: biomejs/biome#0
File: crates/biome_formatter/CONTRIBUTING.md:0-0
Timestamp: 2025-10-15T09:22:15.851Z
Learning: Applies to crates/biome_formatter/**/Cargo.toml : Add the specified dev-dependencies under [dev-dependencies] for the test infrastructure
Applied to files:
crates/biome_markdown_parser/Cargo.tomlcrates/biome_configuration/Cargo.toml
📚 Learning: 2025-10-15T09:19:01.347Z
Learnt from: CR
PR: biomejs/biome#0
File: CONTRIBUTING.md:0-0
Timestamp: 2025-10-15T09:19:01.347Z
Learning: Applies to {Cargo.toml,crates/**/Cargo.toml} : Use workspace = true for internal crates in dependencies
Applied to files:
crates/biome_markdown_parser/Cargo.tomlcrates/biome_configuration/Cargo.tomlcrates/biome_plugin_loader/Cargo.toml
📚 Learning: 2025-10-15T09:22:46.002Z
Learnt from: CR
PR: biomejs/biome#0
File: crates/biome_js_formatter/CONTRIBUTING.md:0-0
Timestamp: 2025-10-15T09:22:46.002Z
Learning: Applies to crates/biome_js_formatter/**/Cargo.toml : Declare the dependency `biome_js_formatter = { version = "0.0.1", path = "../biome_js_formatter" }` for internal installation
Applied to files:
crates/biome_markdown_parser/Cargo.tomlcrates/biome_configuration/Cargo.toml
📚 Learning: 2025-10-15T09:25:05.698Z
Learnt from: CR
PR: biomejs/biome#0
File: crates/biome_service/CONTRIBUTING.md:0-0
Timestamp: 2025-10-15T09:25:05.698Z
Learning: Applies to crates/biome_service/src/workspace/watcher.tests.rs : Place watcher tests related to workspace methods in src/workspace/watcher.tests.rs
Applied to files:
crates/biome_markdown_parser/Cargo.toml
📚 Learning: 2025-10-15T09:22:15.851Z
Learnt from: CR
PR: biomejs/biome#0
File: crates/biome_formatter/CONTRIBUTING.md:0-0
Timestamp: 2025-10-15T09:22:15.851Z
Learning: Applies to crates/biome_formatter/src/lib.rs : Implement FormatLanguage for HtmlFormatLanguage with associated types: SyntaxLanguage=HtmlLanguage, Context=HtmlFormatContext, FormatRule=FormatHtmlSyntaxNode
Applied to files:
crates/biome_configuration/src/overrides.rs
📚 Learning: 2025-10-15T09:22:15.851Z
Learnt from: CR
PR: biomejs/biome#0
File: crates/biome_formatter/CONTRIBUTING.md:0-0
Timestamp: 2025-10-15T09:22:15.851Z
Learning: Applies to crates/biome_formatter/src/cst.rs : Create FormatHtmlSyntaxNode in cst.rs implementing FormatRule<HtmlSyntaxNode> and AsFormat/IntoFormat for HtmlSyntaxNode using the provided plumbing
Applied to files:
crates/biome_configuration/src/overrides.rs
🧬 Code graph analysis (1)
crates/biome_plugin_loader/src/lib.rs (1)
crates/biome_analyze/src/options.rs (1)
configuration(167-169)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (20)
- GitHub Check: Bench (biome_graphql_formatter)
- GitHub Check: Bench (biome_graphql_parser)
- GitHub Check: Test (depot-windows-2022-16)
- GitHub Check: Lint project (depot-windows-2022)
- GitHub Check: Check Dependencies
- GitHub Check: Documentation
- GitHub Check: Test Node.js API
- GitHub Check: Bench (biome_js_parser)
- GitHub Check: Bench (biome_js_analyze)
- GitHub Check: Bench (biome_js_formatter)
- GitHub Check: autofix
- GitHub Check: Bench (biome_configuration)
- GitHub Check: Bench (biome_json_analyze)
- GitHub Check: Bench (biome_package)
- GitHub Check: Bench (biome_css_formatter)
- GitHub Check: Bench (biome_css_parser)
- GitHub Check: Bench (biome_json_formatter)
- GitHub Check: Bench (biome_css_analyze)
- GitHub Check: Bench (biome_json_parser)
- GitHub Check: Bench (biome_module_graph)
🔇 Additional comments (9)
crates/biome_graphql_parser/Cargo.toml (1)
4-10: All set, cheers.
Description andpublish = trueline up neatly with the trusted-publish rollout—nothing more to do here.crates/biome_js_type_info_macros/Cargo.toml (1)
10-10: All clear on making this crate public.Flip to
publish = truefits nicely with the new release flow—no red flags spotted.crates/biome_markdown_parser/Cargo.toml (2)
10-10: Keeps the crate privateNice touch—explicitly marking this crate as private saves us from accidental publishes.
26-26: Path dev-dep is the right moveSwapping to the path dev-dependency matches our workspace pattern perfectly.
crates/biome_configuration/src/overrides.rs (1)
15-15: Import path update looks correct.The change routes
Pluginsthroughbiome_plugin_loader, consistent with the broader refactor to centralize plugin types. Clean and straightforward.crates/biome_service/src/workspace/server.rs (1)
26-26: Import path correctly updated.The routing of
PluginConfigurationandPluginsthroughbiome_plugin_loaderaligns with the refactor. No behavioural change expected..github/workflows/publish-crates.yml (1)
1-16: Workflow implementation is sound.The use of OIDC authentication and the
crate-publishenvironment provides appropriate security controls. Thecargo publish --workspacecommand will automatically:
- Skip crates marked
publish = falseor without the publish field- Respect dependency ordering
- Handle failures gracefully
The manual trigger aligns with the "on demand" publishing approach documented in RELEASES.md.
crates/biome_configuration/src/lib.rs (1)
163-163: Type path correctly updated.The
pluginsfield now referencesbiome_plugin_loader::Pluginsdirectly, completing the refactor to centralize plugin types. This aligns with the import updates across the codebase.RELEASES.md (1)
7-40: Documentation clearly describes the new publishing approach.The restructured sections effectively communicate the npm and crates publishing workflows. The "on demand" approach for crates aligns with the manual workflow, and the single-version strategy is clearly stated.
Co-authored-by: Naoki Ikeguchi <me@s6n.jp>
|
I improved the script:
|
There was a problem hiding this comment.
Actionable comments posted: 7
🧹 Nitpick comments (1)
scripts/update-crates-versions.mjs (1)
173-206: Consider verifying the workspace dependency format.The regex pattern assumes a specific format for workspace dependencies. Whilst this is standard, you might want to verify it matches your actual root Cargo.toml format, especially if you have custom formatting.
Run this script to check the format:
#!/bin/bash # Description: Verify workspace dependency format in root Cargo.toml # Check the format of workspace dependencies for a few publishable crates rg -A 1 'biome_js_factory\s*=|biome_string_case\s*=|biome_tailwind_factory\s*=' Cargo.toml
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (63)
crates/biome_analyze/Cargo.toml(1 hunks)crates/biome_aria/Cargo.toml(1 hunks)crates/biome_aria_metadata/Cargo.toml(1 hunks)crates/biome_console/Cargo.toml(1 hunks)crates/biome_control_flow/Cargo.toml(1 hunks)crates/biome_css_analyze/Cargo.toml(2 hunks)crates/biome_css_factory/Cargo.toml(1 hunks)crates/biome_css_formatter/Cargo.toml(2 hunks)crates/biome_css_parser/Cargo.toml(2 hunks)crates/biome_css_semantic/Cargo.toml(1 hunks)crates/biome_css_syntax/Cargo.toml(1 hunks)crates/biome_deserialize/Cargo.toml(1 hunks)crates/biome_deserialize_macros/Cargo.toml(1 hunks)crates/biome_diagnostics/Cargo.toml(1 hunks)crates/biome_diagnostics_categories/Cargo.toml(1 hunks)crates/biome_diagnostics_macros/Cargo.toml(1 hunks)crates/biome_formatter/Cargo.toml(1 hunks)crates/biome_fs/Cargo.toml(1 hunks)crates/biome_glob/Cargo.toml(1 hunks)crates/biome_graphql_semantic/Cargo.toml(1 hunks)crates/biome_grit_factory/Cargo.toml(1 hunks)crates/biome_grit_formatter/Cargo.toml(1 hunks)crates/biome_grit_syntax/Cargo.toml(1 hunks)crates/biome_html_factory/Cargo.toml(1 hunks)crates/biome_html_formatter/Cargo.toml(2 hunks)crates/biome_html_syntax/Cargo.toml(1 hunks)crates/biome_js_analyze/Cargo.toml(2 hunks)crates/biome_js_factory/Cargo.toml(1 hunks)crates/biome_js_formatter/Cargo.toml(2 hunks)crates/biome_js_parser/Cargo.toml(2 hunks)crates/biome_js_runtime/Cargo.toml(1 hunks)crates/biome_js_semantic/Cargo.toml(1 hunks)crates/biome_js_syntax/Cargo.toml(1 hunks)crates/biome_js_transform/Cargo.toml(1 hunks)crates/biome_json_analyze/Cargo.toml(2 hunks)crates/biome_json_factory/Cargo.toml(1 hunks)crates/biome_json_formatter/Cargo.toml(2 hunks)crates/biome_json_parser/Cargo.toml(2 hunks)crates/biome_json_syntax/Cargo.toml(1 hunks)crates/biome_json_value/Cargo.toml(1 hunks)crates/biome_line_index/Cargo.toml(1 hunks)crates/biome_lsp_converters/Cargo.toml(1 hunks)crates/biome_markdown_factory/Cargo.toml(1 hunks)crates/biome_markdown_syntax/Cargo.toml(1 hunks)crates/biome_markup/Cargo.toml(1 hunks)crates/biome_module_graph/Cargo.toml(2 hunks)crates/biome_parser/Cargo.toml(1 hunks)crates/biome_resolver/Cargo.toml(1 hunks)crates/biome_rowan/Cargo.toml(2 hunks)crates/biome_string_case/Cargo.toml(1 hunks)crates/biome_suppression/Cargo.toml(1 hunks)crates/biome_syntax_codegen/Cargo.toml(1 hunks)crates/biome_tailwind_factory/Cargo.toml(1 hunks)crates/biome_tailwind_parser/Cargo.toml(1 hunks)crates/biome_tailwind_syntax/Cargo.toml(1 hunks)crates/biome_text_edit/Cargo.toml(1 hunks)crates/biome_text_size/Cargo.toml(2 hunks)crates/biome_ungrammar/Cargo.toml(1 hunks)crates/biome_unicode_table/Cargo.toml(1 hunks)crates/biome_yaml_factory/Cargo.toml(1 hunks)crates/biome_yaml_parser/Cargo.toml(1 hunks)crates/biome_yaml_syntax/Cargo.toml(1 hunks)scripts/update-crates-versions.mjs(1 hunks)
✅ Files skipped from review due to trivial changes (24)
- crates/biome_css_semantic/Cargo.toml
- crates/biome_text_edit/Cargo.toml
- crates/biome_ungrammar/Cargo.toml
- crates/biome_json_parser/Cargo.toml
- crates/biome_css_factory/Cargo.toml
- crates/biome_module_graph/Cargo.toml
- crates/biome_yaml_parser/Cargo.toml
- crates/biome_tailwind_parser/Cargo.toml
- crates/biome_html_formatter/Cargo.toml
- crates/biome_js_parser/Cargo.toml
- crates/biome_js_runtime/Cargo.toml
- crates/biome_markup/Cargo.toml
- crates/biome_resolver/Cargo.toml
- crates/biome_unicode_table/Cargo.toml
- crates/biome_js_analyze/Cargo.toml
- crates/biome_js_semantic/Cargo.toml
- crates/biome_css_analyze/Cargo.toml
- crates/biome_json_factory/Cargo.toml
- crates/biome_aria/Cargo.toml
- crates/biome_markdown_factory/Cargo.toml
- crates/biome_grit_factory/Cargo.toml
- crates/biome_lsp_converters/Cargo.toml
- crates/biome_text_size/Cargo.toml
- crates/biome_line_index/Cargo.toml
🧰 Additional context used
📓 Path-based instructions (6)
crates/biome_*/**
📄 CodeRabbit inference engine (CLAUDE.md)
Place core crates under /crates/biome_*/
Files:
crates/biome_suppression/Cargo.tomlcrates/biome_control_flow/Cargo.tomlcrates/biome_grit_syntax/Cargo.tomlcrates/biome_json_syntax/Cargo.tomlcrates/biome_aria_metadata/Cargo.tomlcrates/biome_grit_formatter/Cargo.tomlcrates/biome_graphql_semantic/Cargo.tomlcrates/biome_glob/Cargo.tomlcrates/biome_json_formatter/Cargo.tomlcrates/biome_diagnostics/Cargo.tomlcrates/biome_css_parser/Cargo.tomlcrates/biome_deserialize_macros/Cargo.tomlcrates/biome_analyze/Cargo.tomlcrates/biome_formatter/Cargo.tomlcrates/biome_console/Cargo.tomlcrates/biome_markdown_syntax/Cargo.tomlcrates/biome_diagnostics_macros/Cargo.tomlcrates/biome_html_syntax/Cargo.tomlcrates/biome_html_factory/Cargo.tomlcrates/biome_css_formatter/Cargo.tomlcrates/biome_json_value/Cargo.tomlcrates/biome_css_syntax/Cargo.tomlcrates/biome_tailwind_syntax/Cargo.tomlcrates/biome_tailwind_factory/Cargo.tomlcrates/biome_fs/Cargo.tomlcrates/biome_js_formatter/Cargo.tomlcrates/biome_js_transform/Cargo.tomlcrates/biome_rowan/Cargo.tomlcrates/biome_parser/Cargo.tomlcrates/biome_yaml_syntax/Cargo.tomlcrates/biome_js_factory/Cargo.tomlcrates/biome_diagnostics_categories/Cargo.tomlcrates/biome_js_syntax/Cargo.tomlcrates/biome_yaml_factory/Cargo.tomlcrates/biome_syntax_codegen/Cargo.tomlcrates/biome_deserialize/Cargo.tomlcrates/biome_json_analyze/Cargo.tomlcrates/biome_string_case/Cargo.toml
**/*.toml
📄 CodeRabbit inference engine (CONTRIBUTING.md)
Format TOML files before committing (e.g., via
just fusing taplo-cli)
Files:
crates/biome_suppression/Cargo.tomlcrates/biome_control_flow/Cargo.tomlcrates/biome_grit_syntax/Cargo.tomlcrates/biome_json_syntax/Cargo.tomlcrates/biome_aria_metadata/Cargo.tomlcrates/biome_grit_formatter/Cargo.tomlcrates/biome_graphql_semantic/Cargo.tomlcrates/biome_glob/Cargo.tomlcrates/biome_json_formatter/Cargo.tomlcrates/biome_diagnostics/Cargo.tomlcrates/biome_css_parser/Cargo.tomlcrates/biome_deserialize_macros/Cargo.tomlcrates/biome_analyze/Cargo.tomlcrates/biome_formatter/Cargo.tomlcrates/biome_console/Cargo.tomlcrates/biome_markdown_syntax/Cargo.tomlcrates/biome_diagnostics_macros/Cargo.tomlcrates/biome_html_syntax/Cargo.tomlcrates/biome_html_factory/Cargo.tomlcrates/biome_css_formatter/Cargo.tomlcrates/biome_json_value/Cargo.tomlcrates/biome_css_syntax/Cargo.tomlcrates/biome_tailwind_syntax/Cargo.tomlcrates/biome_tailwind_factory/Cargo.tomlcrates/biome_fs/Cargo.tomlcrates/biome_js_formatter/Cargo.tomlcrates/biome_js_transform/Cargo.tomlcrates/biome_rowan/Cargo.tomlcrates/biome_parser/Cargo.tomlcrates/biome_yaml_syntax/Cargo.tomlcrates/biome_js_factory/Cargo.tomlcrates/biome_diagnostics_categories/Cargo.tomlcrates/biome_js_syntax/Cargo.tomlcrates/biome_yaml_factory/Cargo.tomlcrates/biome_syntax_codegen/Cargo.tomlcrates/biome_deserialize/Cargo.tomlcrates/biome_json_analyze/Cargo.tomlcrates/biome_string_case/Cargo.toml
{Cargo.toml,crates/**/Cargo.toml}
📄 CodeRabbit inference engine (CONTRIBUTING.md)
{Cargo.toml,crates/**/Cargo.toml}: Use workspace = true for internal crates in dependencies
Use path dependencies for dev-dependencies of internal crates
Files:
crates/biome_suppression/Cargo.tomlcrates/biome_control_flow/Cargo.tomlcrates/biome_grit_syntax/Cargo.tomlcrates/biome_json_syntax/Cargo.tomlcrates/biome_aria_metadata/Cargo.tomlcrates/biome_grit_formatter/Cargo.tomlcrates/biome_graphql_semantic/Cargo.tomlcrates/biome_glob/Cargo.tomlcrates/biome_json_formatter/Cargo.tomlcrates/biome_diagnostics/Cargo.tomlcrates/biome_css_parser/Cargo.tomlcrates/biome_deserialize_macros/Cargo.tomlcrates/biome_analyze/Cargo.tomlcrates/biome_formatter/Cargo.tomlcrates/biome_console/Cargo.tomlcrates/biome_markdown_syntax/Cargo.tomlcrates/biome_diagnostics_macros/Cargo.tomlcrates/biome_html_syntax/Cargo.tomlcrates/biome_html_factory/Cargo.tomlcrates/biome_css_formatter/Cargo.tomlcrates/biome_json_value/Cargo.tomlcrates/biome_css_syntax/Cargo.tomlcrates/biome_tailwind_syntax/Cargo.tomlcrates/biome_tailwind_factory/Cargo.tomlcrates/biome_fs/Cargo.tomlcrates/biome_js_formatter/Cargo.tomlcrates/biome_js_transform/Cargo.tomlcrates/biome_rowan/Cargo.tomlcrates/biome_parser/Cargo.tomlcrates/biome_yaml_syntax/Cargo.tomlcrates/biome_js_factory/Cargo.tomlcrates/biome_diagnostics_categories/Cargo.tomlcrates/biome_js_syntax/Cargo.tomlcrates/biome_yaml_factory/Cargo.tomlcrates/biome_syntax_codegen/Cargo.tomlcrates/biome_deserialize/Cargo.tomlcrates/biome_json_analyze/Cargo.tomlcrates/biome_string_case/Cargo.toml
crates/biome_*_{syntax,parser,formatter,analyze,factory,semantic}/**
📄 CodeRabbit inference engine (CLAUDE.md)
Maintain the per-language crate structure: biome_{lang}_{syntax,parser,formatter,analyze,factory,semantic}
Files:
crates/biome_grit_syntax/Cargo.tomlcrates/biome_json_syntax/Cargo.tomlcrates/biome_grit_formatter/Cargo.tomlcrates/biome_graphql_semantic/Cargo.tomlcrates/biome_json_formatter/Cargo.tomlcrates/biome_css_parser/Cargo.tomlcrates/biome_markdown_syntax/Cargo.tomlcrates/biome_html_syntax/Cargo.tomlcrates/biome_html_factory/Cargo.tomlcrates/biome_css_formatter/Cargo.tomlcrates/biome_css_syntax/Cargo.tomlcrates/biome_tailwind_syntax/Cargo.tomlcrates/biome_tailwind_factory/Cargo.tomlcrates/biome_js_formatter/Cargo.tomlcrates/biome_yaml_syntax/Cargo.tomlcrates/biome_js_factory/Cargo.tomlcrates/biome_js_syntax/Cargo.tomlcrates/biome_yaml_factory/Cargo.tomlcrates/biome_json_analyze/Cargo.toml
crates/biome_formatter/**/Cargo.toml
📄 CodeRabbit inference engine (crates/biome_formatter/CONTRIBUTING.md)
Add the specified dev-dependencies under [dev-dependencies] for the test infrastructure
Files:
crates/biome_formatter/Cargo.toml
crates/biome_js_formatter/**/Cargo.toml
📄 CodeRabbit inference engine (crates/biome_js_formatter/CONTRIBUTING.md)
Declare the dependency
biome_js_formatter = { version = "0.0.1", path = "../biome_js_formatter" }for internal installation
Files:
crates/biome_js_formatter/Cargo.toml
🧠 Learnings (2)
📚 Learning: 2025-08-17T08:55:30.118Z
Learnt from: CR
PR: biomejs/biome#0
File: CLAUDE.md:0-0
Timestamp: 2025-08-17T08:55:30.118Z
Learning: Applies to crates/biome_html_formatter/benches/html_formatter.rs : Maintain the HTML formatter benchmark at benches/html_formatter.rs within the biome_html_formatter crate
Applied to files:
crates/biome_json_formatter/Cargo.tomlcrates/biome_css_formatter/Cargo.tomlcrates/biome_js_formatter/Cargo.toml
📚 Learning: 2025-10-15T09:22:46.002Z
Learnt from: CR
PR: biomejs/biome#0
File: crates/biome_js_formatter/CONTRIBUTING.md:0-0
Timestamp: 2025-10-15T09:22:46.002Z
Learning: Applies to crates/biome_js_formatter/**/Cargo.toml : Declare the dependency `biome_js_formatter = { version = "0.0.1", path = "../biome_js_formatter" }` for internal installation
Applied to files:
crates/biome_js_formatter/Cargo.toml
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (24)
- GitHub Check: Parser conformance
- GitHub Check: Bench (biome_package)
- GitHub Check: Bench (biome_graphql_formatter)
- GitHub Check: Bench (biome_graphql_parser)
- GitHub Check: Lint project (depot-windows-2022)
- GitHub Check: Test (depot-windows-2022-16)
- GitHub Check: Documentation
- GitHub Check: Lint project (depot-ubuntu-24.04-arm-16)
- GitHub Check: autofix
- GitHub Check: Test Node.js API
- GitHub Check: Test (depot-ubuntu-24.04-arm-16)
- GitHub Check: End-to-end tests
- GitHub Check: Check Dependencies
- GitHub Check: Bench (biome_js_formatter)
- GitHub Check: Bench (biome_css_analyze)
- GitHub Check: Bench (biome_js_parser)
- GitHub Check: Bench (biome_css_formatter)
- GitHub Check: Bench (biome_js_analyze)
- GitHub Check: Bench (biome_css_parser)
- GitHub Check: Bench (biome_configuration)
- GitHub Check: Bench (biome_module_graph)
- GitHub Check: Bench (biome_json_analyze)
- GitHub Check: Bench (biome_json_parser)
- GitHub Check: Bench (biome_json_formatter)
🔇 Additional comments (22)
crates/biome_deserialize_macros/Cargo.toml (1)
10-10: All clear on publishing.Explicit
publish = truekeeps the intent unambiguous—looks good to me.crates/biome_json_value/Cargo.toml (1)
10-10: Looks ready to ship. Flipping onpublish = truehere dovetails nicely with the trusted-publishing workflow. Cheers for keeping it explicit.crates/biome_diagnostics_macros/Cargo.toml (1)
10-10: Explicit publish flag keeps the macros crate in the release train—nice.
No issues spotted; this matches the new trusted-publishing flow.crates/biome_fs/Cargo.toml (1)
10-10: Explicit publish flag looks grand.Nice to see the crate opting into the trusted workflow without surprises.
crates/biome_diagnostics_categories/Cargo.toml (1)
10-10: Explicit publish flag looks spot on.Nice to see the manifest making its intentions clear; this keeps the crates.io pipeline tidy.
crates/biome_js_syntax/Cargo.toml (1)
10-10: Explicit publish flag looks good.Thanks for wiring this up; keeps the manifest intent clear.
crates/biome_markdown_syntax/Cargo.toml (1)
10-10: Explicit publish gate looks good.Setting
publish = falsekeeps this crate off crates.io until it’s ready—exactly what we want.crates/biome_console/Cargo.toml (1)
10-10: Publish flag looks spot on.Explicit
publish = truekeeps the console crate in the release train—no objections here.crates/biome_tailwind_syntax/Cargo.toml (1)
10-10: Explicit publish flag acknowledgedSetting
publish = truekeeps the manifest consistent with the new release flow. All good from my side.crates/biome_graphql_semantic/Cargo.toml (1)
11-11: Explicit publish flag confirmed.
Looks aligned with the trusted publishing flow—no objections here.crates/biome_aria_metadata/Cargo.toml (1)
10-10: Explicit publish flag matches the plan.Nice to see the crate opted in deliberately.
crates/biome_grit_formatter/Cargo.toml (1)
10-10: Explicit publish flag looks goodThanks for setting the intent explicitly; matches the trusted publisher flow. Looks spot on.
crates/biome_formatter/Cargo.toml (1)
10-10: Explicit publish flag looks good.Setting
publish = truekeeps the manifest aligned with the new trusted-publishing checks—no issues spotted here.crates/biome_json_syntax/Cargo.toml (1)
10-10: Explicit publish flag looks goodCheers for making the intent explicit; this keeps the new script and the release workflow singing from the same hymn sheet.
crates/biome_syntax_codegen/Cargo.toml (1)
10-10: LGTM!The explicit
publish = falsedeclaration aligns with the PR's requirement for all crates to have an explicit publish field. This crate is correctly marked as non-publishable.crates/biome_js_factory/Cargo.toml (1)
8-8: LGTM!The
publish = truedeclaration correctly marks this crate as publishable, enabling it for the new crates.io publishing workflow.crates/biome_tailwind_factory/Cargo.toml (1)
8-8: LGTM!Consistent with the workspace-wide publishing configuration.
crates/biome_string_case/Cargo.toml (1)
10-10: LGTM!The publish declaration is correctly placed and marks this crate for publication.
crates/biome_js_transform/Cargo.toml (1)
10-13: LGTM!The
publish = falsefield correctly marks this crate as non-publishable. The field reordering is just a formatting adjustment with no functional impact.scripts/update-crates-versions.mjs (3)
15-16: LGTM!Correctly using
import.meta.filenameandimport.meta.dirnamefor Node.js >= 20, as suggested in the earlier review.
96-116: LGTM!Excellent validation that enforces the project's requirement for all crates to have an explicit
publishfield. This prevents accidental publication and makes publishing intent clear, as noted in the PR objectives.
211-306: LGTM!The main function provides excellent user experience with clear help text, proper validation, and informative dry-run output. The version format validation (X.Y.Z only) aligns with the simplified publishing process described in the PR.
Parser conformance results onjs/262
jsx/babel
symbols/microsoft
ts/babel
ts/microsoft
|
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Summary
This PR does three things:
crates.io. It uses the trusted publishing workflow. As for now, the workflow is meant to be run usingworkflow_dispatch(let's keep it simple for now). It uses the environmentcrate-publishenvironment variable, which means only @biomejs/core-contributors can publish and approve the releasecargo publish --dry-run --workspaceto understand which crates can be published. While doing so, I discovered that the there was an incorrect dependency relation betweenbiome_configuration(inteded to be private) andbiome_plugin_loader(intended to be public). I refactored the relation, so nowbiome_configurationis correctly private.Cargo.tomlfiles when we want to release new crates. The publishing infra is meant to be as simple as possible so it doesn't put too much work on us maintainers. We have one single version for all crates. New crates get published with the version we already have. No changelogs, no git tags. We can add them later if we want.Note
I vibe-coded the script using Claud Code. It went through some interactions, I tested it multiple times via
--dry-runand without.Next step will be to setup the crates on
crates.io(manually :( )Test Plan
Locally tested the script
Docs
I updated the
RELEASES.mdfile to reflect our commitment