Skip to content

Conversation

@titusfortner
Copy link
Member

@titusfortner titusfortner commented Jan 24, 2026

User description

Rust stuff is sometimes in all namespace and sometimes not, this just clarifies it

💥 What does this PR do?

Separates rust (Selenium Manager) from the all: namespace since it has a different release cycle.

  • Removes rust from all:pin, all:update, all:lint, all:version, all:changelogs
  • Updates descriptions to say "language bindings" instead of "languages"
  • Adds rust:lint explicitly to top-level lint task with -rust skip flag support
  • Updates workflows to explicitly call rust tasks where needed

🔧 Implementation Notes

The all: namespace now means "language bindings" while rust: is for Selenium Manager.
This matches how releases already work - rust releases separately via its own branch (rust-release-$version).

Workflow changes:

  • pre-release.yml: Added explicit rust:changelogs call
  • release.yml: Added explicit rust:version nightly call

💡 Additional Considerations

If we need one command to include rust we can do what we're doing with lint and putting it in main namespace

🔄 Types of changes

  • Cleanup (formatting, renaming)

PR Type

Enhancement


Description

  • Separates Rust/Selenium Manager from all: namespace tasks

  • Removes Rust from all:pin, all:update, all:version, all:changelogs

  • Adds explicit rust:lint to top-level lint task with skip support

  • Updates task descriptions to clarify "language bindings" vs Rust separation

  • Updates CI workflows to explicitly call Rust tasks where needed


Diagram Walkthrough

flowchart LR
  A["all: namespace<br/>Language bindings only"] -->|removed| B["rust:pin<br/>rust:update<br/>rust:version<br/>rust:changelogs"]
  C["Top-level lint task"] -->|added| D["rust:lint<br/>with -rust skip flag"]
  E["CI Workflows"] -->|explicit calls| F["rust:changelogs<br/>rust:version nightly"]
Loading

File Walkthrough

Relevant files
Enhancement
Rakefile
Separate Rust from all: namespace tasks                                   

Rakefile

  • Removed Rust from all:pin, all:update, all:version, all:changelogs
    tasks
  • Added explicit rust:lint invocation to top-level lint task with -rust
    skip flag support
  • Updated task descriptions to say "language bindings" instead of
    "languages"
  • Updated all:lint to only include language bindings (removed rust from
    list)
+18/-11 
Configuration changes
pre-release.yml
Add explicit Rust changelogs generation                                   

.github/workflows/pre-release.yml

  • Added explicit ./go rust:changelogs call after all:changelogs in
    generate-changelogs job
+1/-1     
release.yml
Add explicit Rust version reset for nightly                           

.github/workflows/release.yml

  • Added explicit ./go rust:version nightly call after all:version
    nightly in reset-version job
+1/-1     

@titusfortner titusfortner requested a review from Copilot January 24, 2026 08:13
@selenium-ci selenium-ci added the B-build Includes scripting, bazel and CI integrations label Jan 24, 2026
@qodo-code-review
Copy link
Contributor

PR Compliance Guide 🔍

Below is a summary of compliance checks for this PR:

Security Compliance
🟢
No security concerns identified No security vulnerabilities detected by AI analysis. Human verification advised for critical code.
Ticket Compliance
🎫 No ticket provided
  • Create ticket/issue
Codebase Duplication Compliance
Codebase context is not defined

Follow the guide to enable codebase context checks.

Custom Compliance
🟢
Generic: Comprehensive Audit Trails

Objective: To create a detailed and reliable record of critical system actions for security analysis
and compliance.

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Meaningful Naming and Self-Documenting Code

Objective: Ensure all identifiers clearly express their purpose and intent, making code
self-documenting

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Robust Error Handling and Edge Case Management

Objective: Ensure comprehensive error handling that provides meaningful context and graceful
degradation

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Secure Error Handling

Objective: To prevent the leakage of sensitive system information through error messages while
providing sufficient detail for internal debugging.

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Secure Logging Practices

Objective: To ensure logs are useful for debugging and auditing without exposing sensitive
information like PII, PHI, or cardholder data.

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Security-First Input Validation and Data Handling

Objective: Ensure all data inputs are validated, sanitized, and handled securely to prevent
vulnerabilities

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Compliance status legend 🟢 - Fully Compliant
🟡 - Partial Compliant
🔴 - Not Compliant
⚪ - Requires Further Human Verification
🏷️ - Compliance label

@qodo-code-review
Copy link
Contributor

PR Code Suggestions ✨

Explore these optional code suggestions:

CategorySuggestion                                                                                                                                    Impact
High-level
Consolidate build tasks in the Rakefile

Create top-level changelogs and version tasks in the Rakefile to invoke both
all: and rust: sub-tasks. This mirrors the approach used for the lint task,
improving consistency and simplifying CI configuration.

Examples:

.github/workflows/pre-release.yml [143]
      run: ./go all:changelogs && ./go rust:changelogs
Rakefile [119-137]
task :lint do |_task, arguments|
  failures = []
  skip = arguments.to_a.select { |a| a.start_with?('-') }.map { |a| a.delete_prefix('-') }

  begin
    Rake::Task['all:lint'].invoke(*arguments.to_a)
  rescue StandardError => e
    failures << e.message
  end


 ... (clipped 9 lines)

Solution Walkthrough:

Before:

# .github/workflows/pre-release.yml
# ...
generate-changelogs:
  # ...
  run: ./go all:changelogs && ./go rust:changelogs

# Rakefile
namespace :all do
  task :changelogs do
    # ... invokes changelogs for each language binding
  end
end
# No top-level 'changelogs' task exists

After:

# .github/workflows/pre-release.yml
# ...
generate-changelogs:
  # ...
  run: ./go changelogs

# Rakefile
desc 'Update all changelogs'
task :changelogs do
  Rake::Task['all:changelogs'].invoke
  Rake::Task['rust:changelogs'].invoke
end

namespace :all do
  task :changelogs do
    # ... invokes changelogs for each language binding
  end
end
Suggestion importance[1-10]: 8

__

Why: This is a strong design suggestion that correctly identifies an inconsistency and proposes a solution that improves maintainability and centralizes build logic in the Rakefile.

Medium
Possible issue
Prevent crash on lint skip argument

In the lint task, filter out the -rust argument before invoking all:lint to
prevent an "Unknown languages: rust" error.

Rakefile [119-136]

 task :lint do |_task, arguments|
   failures = []
   skip = arguments.to_a.select { |a| a.start_with?('-') }.map { |a| a.delete_prefix('-') }
 
   begin
-    Rake::Task['all:lint'].invoke(*arguments.to_a)
+    all_lint_args = arguments.to_a.reject { |arg| arg == '-rust' }
+    Rake::Task['all:lint'].invoke(*all_lint_args)
   rescue StandardError => e
     failures << e.message
   end
 
   unless skip.include?('rust')
     puts 'Linting rust...'
     begin
       Rake::Task['rust:lint'].invoke
     rescue StandardError => e
       failures << "rust: #{e.message}"
     end
   end
   ...

[To ensure code accuracy, apply this suggestion manually]

Suggestion importance[1-10]: 8

__

Why: The suggestion correctly identifies a bug where passing -rust to the top-level lint task would cause a crash in the all:lint sub-task, and the proposed fix is accurate.

Medium
  • More

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR separates Selenium Manager (rust) from the all: namespace to reflect its independent release cycle. The all: namespace now refers specifically to "language bindings" (Java, Python, Ruby, Node, .NET), while rust tasks must be called explicitly.

Changes:

  • Removed rust from all:pin, all:update, all:lint, all:version, and all:changelogs tasks
  • Updated task descriptions to say "language bindings" instead of "languages" for clarity
  • Added explicit rust:lint call to top-level lint task with -rust skip flag support
  • Updated workflows to explicitly call rust:changelogs and rust:version where needed

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated no comments.

File Description
Rakefile Removes rust from all all: namespace tasks, updates descriptions to "language bindings", adds explicit rust:lint to top-level lint task with skip flag support, and adds rust:changelogs to prep_release task
.github/workflows/release.yml Adds explicit rust:version nightly call alongside all:version nightly in reset-version job
.github/workflows/pre-release.yml Adds explicit rust:changelogs call alongside all:changelogs in generate-changelogs job

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

B-build Includes scripting, bazel and CI integrations Review effort 2/5

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants