Skip to content

Copier update (misc version bumps)#74

Merged
ejfine merged 1 commit intomainfrom
misc-version-bumps
Oct 22, 2025
Merged

Copier update (misc version bumps)#74
ejfine merged 1 commit intomainfrom
misc-version-bumps

Conversation

@ejfine
Copy link
Contributor

@ejfine ejfine commented Oct 22, 2025

Pull in upstream template changes

Summary by CodeRabbit

  • New Features

    • Added optional Claude CLI integration support.
    • Added control over Python version management during setup.
  • Chores

    • Updated development dependencies and tools to latest versions.
    • Refreshed pre-commit hook configurations and exclusion patterns.
    • Updated documentation branding references.
    • Minor text corrections throughout configuration files.

@ejfine ejfine self-assigned this Oct 22, 2025
@coderabbitai
Copy link

coderabbitai bot commented Oct 22, 2025

Walkthrough

This PR updates multiple tool versions across the project's build and development infrastructure, introduces a new install_claude_cli feature flag for conditional Claude code devcontainer inclusion, adds a new CLI option --allow-uv-to-install-python to control Python version installation behavior, and updates pre-commit configurations with expanded exclusion patterns for generated artifacts.

Changes

Cohort / File(s) Summary
Core Version Bumps
.copier-answers.yml, extensions/context.py, pyproject.toml, .devcontainer/install-ci-tooling.py
Updated UV from 0.8.22 to 0.9.2, PNPM from 10.17.1 to 10.18.3, Pyright to 1.1.406, and numerous context tool versions (Nuxt, Vue, Eslint, Node, etc.)
New Feature: Claude CLI Flag
copier.yml, .copier-answers.yml, template/.devcontainer/devcontainer.json.jinja, template/.devcontainer/docker-compose.yml.jinja, tests/copier_data/data1.yaml, tests/copier_data/data2.yaml, tests/copier_data/data3.yaml
Added boolean install_claude_cli configuration parameter with conditional Claude code devcontainer feature and ANTHROPIC_API_KEY environment variable setup
UV Python Installation Control
.devcontainer/install-ci-tooling.py, template/.devcontainer/install-ci-tooling.py.jinja, README.md
Introduced --allow-uv-to-install-python CLI flag to conditionally allow UV to install Python versions on-the-fly; updated lock file generation instructions
Devcontainer & Extension Updates
.devcontainer/devcontainer.json, template/.devcontainer/devcontainer.json.jinja
Updated AWS CLI feature to 1.1.2 (AWS CLI 2.31.11), Node feature to 1.6.3, added CodeRabbit VSCode extension, commented out GitLens, updated Copilot, Python, and Ruff extensions to newer versions, added Copilot setting for whitespace-only changes
Pre-commit Configuration Updates
.pre-commit-config.yaml, template/.pre-commit-config.yaml
Updated hook revisions and added exclusion patterns for openapi_codegen directories, SVG files, test snapshots, and vendor files across multiple linters
Minor Text Corrections
CONTRIBUTING.md, template/CONTRIBUTING.md, _typos.toml, template/_typos.toml, ruff-test.toml, template/ruff-test.toml
Fixed GitHub branding capitalization ("Github" → "GitHub") and spelling corrections ("mispell" → "misspell", "dont" → "don't")
Cache Directory Removal
.gitignore, template/.gitignore
Removed .pytest_cache/ and .mypy_cache/ ignore rules to allow git tracking of these directories

Sequence Diagram(s)

sequenceDiagram
    participant User as User/CI
    participant InstallScript as install-ci-tooling.py
    participant UV as UV Manager
    participant SysPython as System Python

    User->>InstallScript: Run with --allow-uv-to-install-python?
    alt With --allow-uv-to-install-python flag
        InstallScript->>InstallScript: Set UV_PYTHON to version
        InstallScript->>InstallScript: Do NOT set UV_PYTHON_PREFERENCE
        InstallScript->>UV: Execute with flexible Python handling
        UV->>UV: Can install Python versions on-the-fly
    else Without flag (default)
        InstallScript->>InstallScript: Set UV_PYTHON to version
        InstallScript->>InstallScript: Set UV_PYTHON_PREFERENCE to "only-system"
        InstallScript->>UV: Execute with restricted mode
        UV->>SysPython: Use only system Python
    end
    InstallScript->>InstallScript: Continue with remaining setup<br/>(npm, pnpm, tools, etc.)
Loading
sequenceDiagram
    participant User as Template Generation
    participant Copier as Copier
    participant Config as Config (install_claude_cli)
    participant Devcontainer as Devcontainer Setup
    
    User->>Copier: Generate with install_claude_cli flag
    Copier->>Config: Check install_claude_cli value
    alt install_claude_cli = true
        Config->>Devcontainer: Include Claude code feature<br/>(ghcr.io/anthropics/...)
        Devcontainer->>Devcontainer: Add ANTHROPIC_API_KEY env var
    else install_claude_cli = false
        Devcontainer->>Devcontainer: Omit Claude code feature
    end
    Devcontainer->>Devcontainer: Setup complete
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

The changes span ~20 files across configuration, templates, and tooling with mixed complexity: version bumps (mostly homogeneous and simple), a new feature flag introducing conditional logic (requires cross-file consistency verification), CLI option changes affecting installer behavior, and minor text corrections. While individual changes are straightforward, the variety and distribution across multiple file categories (devcontainer, pre-commit, extensions, templates, tests) warrant careful attention to ensure consistency and correctness.

Possibly related PRs

Poem

🐰 Hops with glee through version streams,
Claude's CLI joins our template dreams!
UV runs free (or stays confined),
Pre-commit guards what flows behind,
With care and wit, the tools align!

Pre-merge checks and finishing touches

❌ Failed checks (2 warnings)
Check name Status Explanation Resolution
Description Check ⚠️ Warning The provided description "Pull in upstream template changes" is significantly incomplete compared to the required template structure. The template specifies required sections including a link to an issue or message thread, explanations of why the change is necessary, how it addresses the issue, side effects, testing approach, and other relevant information. The current description provides none of these details—it only offers a single generic sentence without elaboration on the changes, their rationale, or their implications. The PR description must be updated to follow the template structure. Add a link to the upstream source or relevant discussion, explain why these template changes are being pulled in (e.g., to benefit from new features or fixes), describe the expected side effects (such as updated dependencies or new configuration options), and clarify how these changes have been validated. At minimum, provide context about the new install_claude_cli feature and the dependency version updates included in this PR.
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (1 passed)
Check name Status Explanation
Title Check ✅ Passed The title "Copier update (misc version bumps)" relates to the changeset by identifying it as a template update with multiple version bumps, which is a substantial aspect of the changes. However, the use of "misc" is somewhat generic, and the title misses other significant changes like the introduction of the new install_claude_cli feature that is added across multiple template files and test data. The title captures one major theme but does not fully represent the scope of the PR, which includes not just version bumps but also new feature additions and template enhancements. While the term "misc" is not as specific as it could be, it does convey meaningful information that this is a template update with multiple dependency version changes.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch misc-version-bumps

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 and usage tips.

@ejfine ejfine requested a review from Copilot October 22, 2025 10:05
Copy link

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 updates the Copier template with miscellaneous version bumps for development tools, dependency versions, and adds Claude CLI installation support.

Key changes:

  • Version updates for multiple dependencies (uv, pnpm, ruff, pylint, pyright, and various Python/JavaScript packages)
  • Added optional Claude CLI installation feature for devcontainer
  • Corrected spelling errors ("mispell" → "misspell", "Github" → "GitHub", "dont" → "don't")

Reviewed Changes

Copilot reviewed 22 out of 24 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
tests/copier_data/*.yaml Added install_claude_cli field to test data files
template/ruff-test.toml, ruff-test.toml Fixed grammar in comment: "dont" → "don't"
template/_typos.toml, _typos.toml Corrected spelling: "mispell" → "misspell"
template/CONTRIBUTING.md, CONTRIBUTING.md Corrected capitalization: "Github" → "GitHub"
template/.pre-commit-config.yaml, .pre-commit-config.yaml Updated tool versions and added exclusions for openapi_codegen and .svg files
template/.gitignore Removed duplicate cache directory entries
template/.devcontainer/install-ci-tooling.py.jinja, .devcontainer/install-ci-tooling.py Added --allow-uv-to-install-python flag for Python version management
template/.devcontainer/docker-compose.yml.jinja Added conditional ANTHROPIC_API_KEY environment variable
template/.devcontainer/devcontainer.json.jinja, .devcontainer/devcontainer.json Updated extension versions, added Claude CLI feature and CodeRabbit extension
pyproject.toml Bumped pyright version to 1.1.406
extensions/context.py Updated 40+ version variables for Python and JavaScript dependencies
copier.yml Added install_claude_cli configuration option
README.md Updated manual-setup-deps.py command to include new flag
.copier-answers.yml Updated commit reference and added install_claude_cli setting
Comments suppressed due to low confidence (1)

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

Comment on lines 44 to 47
tests/__coverage__
test/__coverage__
coverage-report-pytest
.pytest_cache/
.mypy_cache/
.coverage
Copy link

Copilot AI Oct 22, 2025

Choose a reason for hiding this comment

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

The removed entries .pytest_cache/ and .mypy_cache/ may have been duplicated elsewhere in the .gitignore file, but without seeing the full file, it's unclear if these cache directories are still being ignored. If not duplicated, removing these entries could cause cache directories to be tracked by git.

Copilot uses AI. Check for mistakes.
(?x)^(
.copier-answers.yml|
(.*/helm/.*)|
(.*/?helm/.*)|
Copy link

Copilot AI Oct 22, 2025

Choose a reason for hiding this comment

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

The regex pattern .*/?helm/.* allows an optional / before helm, which makes the pattern ambiguous. It would match both helm/... and /helm/... but the ? quantifier on / is redundant since .* already matches zero or more of any character including /. Consider simplifying to .*/helm/.* for clarity.

Suggested change
(.*/?helm/.*)|
(.*/helm/.*)|

Copilot uses AI. Check for mistakes.
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 5882376 and 14f9000.

⛔ Files ignored due to path filters (1)
  • uv.lock is excluded by !**/*.lock
📒 Files selected for processing (23)
  • .copier-answers.yml (1 hunks)
  • .devcontainer/devcontainer.json (4 hunks)
  • .devcontainer/install-ci-tooling.py (2 hunks)
  • .gitignore (0 hunks)
  • .pre-commit-config.yaml (12 hunks)
  • CONTRIBUTING.md (1 hunks)
  • README.md (1 hunks)
  • _typos.toml (1 hunks)
  • copier.yml (1 hunks)
  • extensions/context.py (2 hunks)
  • pyproject.toml (1 hunks)
  • ruff-test.toml (1 hunks)
  • template/.devcontainer/devcontainer.json.jinja (3 hunks)
  • template/.devcontainer/docker-compose.yml.jinja (1 hunks)
  • template/.devcontainer/install-ci-tooling.py.jinja (1 hunks)
  • template/.gitignore (0 hunks)
  • template/.pre-commit-config.yaml (12 hunks)
  • template/CONTRIBUTING.md (1 hunks)
  • template/_typos.toml (1 hunks)
  • template/ruff-test.toml (1 hunks)
  • tests/copier_data/data1.yaml (1 hunks)
  • tests/copier_data/data2.yaml (1 hunks)
  • tests/copier_data/data3.yaml (1 hunks)
💤 Files with no reviewable changes (2)
  • template/.gitignore
  • .gitignore
🧰 Additional context used
🧬 Code graph analysis (1)
.devcontainer/install-ci-tooling.py (2)
.devcontainer/manual-setup-deps.py (1)
  • main (59-128)
template/.devcontainer/manual-setup-deps.py (1)
  • main (59-128)
⏰ 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). (6)
  • GitHub Check: lint-matrix (ubuntu-24.04, 3.12.7, --data-file tests/copier_data/data3.yaml)
  • GitHub Check: lint-matrix (ubuntu-24.04, 3.13.2, --data-file tests/copier_data/data1.yaml)
  • GitHub Check: lint-matrix (ubuntu-24.04, 3.12.7, --data-file tests/copier_data/data1.yaml)
  • GitHub Check: lint-matrix (ubuntu-24.04, 3.13.2, --data-file tests/copier_data/data3.yaml)
  • GitHub Check: lint-matrix (ubuntu-24.04, 3.12.7, --data-file tests/copier_data/data2.yaml)
  • GitHub Check: lint-matrix (ubuntu-24.04, 3.13.2, --data-file tests/copier_data/data2.yaml)
🔇 Additional comments (32)
template/_typos.toml (1)

25-25: Typo fix approved.

The comment correction from "mispell" to "misspell" is correct and consistent with the root-level file update.

template/ruff-test.toml (1)

15-15: Typo fix approved.

The comment correction from "dont" to "don't" is correct and consistent with the root-level file update.

_typos.toml (1)

25-25: Typo fix approved.

The comment correction is consistent with the template/_typos.toml update.

ruff-test.toml (1)

15-15: Typo fix approved.

The comment correction is consistent with the template/ruff-test.toml update.

template/CONTRIBUTING.md (1)

30-30: Branding capitalization fix approved.

"GitHub" is the correct official capitalization (GitHub brand), aligning with the root CONTRIBUTING.md update.

pyproject.toml (1)

12-12: Verify pyright version bump.

The patch version bump from 1.1.405 to 1.1.406 is straightforward, but please confirm this version is stable and addresses any security or compatibility concerns.
Pyright 1.1.406 is a valid, stable release published October 1, 2025, with several bug fixes including module attribute synthesis, unpack operator subscripts, and unnecessary comparison checks.

CONTRIBUTING.md (1)

30-30: Branding capitalization fix approved.

"GitHub" is the correct official capitalization, matching the template/CONTRIBUTING.md update.

template/.pre-commit-config.yaml (2)

45-45: Version bumps to pre-commit hooks approved.

The updates to typos, ruff-pre-commit, pylint, and check-jsonschema hook revisions are standard maintenance updates consistent with the PR's "misc version bumps" objective.

Also applies to: 62-62, 74-74, 75-75, 79-79, 91-91, 105-105, 132-132, 157-157, 192-192, 246-246, 276-276


45-45: The review comment's concern about cassette pattern scope is not supported by the codebase.

The repository contains no cassette files, and only a tests/unit/ test directory exists—there is no tests/integration/ directory to exclude cassettes from. The pattern change from a hypothetical broader scope to (.*/tests/unit/.*/?cassettes/.*) appropriately reflects the actual test structure. The helm pattern improvement is correct and minor.

Likely an incorrect or invalid review comment.

.pre-commit-config.yaml (3)

45-45: LGTM! Routine hook version updates.

The pre-commit hook version bumps for typos, check-jsonschema, ruff, and pylint are routine maintenance updates that keep the tooling current.

Also applies to: 192-192, 246-246, 276-276


62-63: LGTM! Appropriate exclusions for generated content.

The expanded exclusion patterns for openapi_codegen outputs, SVG files, and template directories are appropriate for preventing pre-commit hooks from flagging autogenerated or generated artifacts.

Also applies to: 74-74, 79-79, 91-91, 105-105, 132-132, 157-157


180-186: LGTM! Clarified exclusion patterns.

The updated comment about VCRpy cassettes and the adjusted regex patterns (wrapping in capture groups) improve clarity without changing the matching behavior.

extensions/context.py (1)

13-75: LGTM! Coordinated version updates.

The version bumps across Python and Node.js dependencies, along with the addition of new context keys (syrupy_version, vue_eslint_parser_version, happy_dom_version, node_kiota_bundle_version), are consistent with a comprehensive template update. These changes align with the PR objective of pulling in upstream template changes.

template/.devcontainer/install-ci-tooling.py.jinja (1)

39-44: LGTM! Sensible addition for Python version flexibility.

The new --allow-uv-to-install-python flag provides useful flexibility by allowing UV to install Python versions on the fly when needed (e.g., during template instantiation), while maintaining the safe default behavior of restricting to system-installed Python. The conditional logic correctly sets UV_PYTHON_PREFERENCE to "only-system" only when the flag is not provided.

Also applies to: 51-53

.devcontainer/install-ci-tooling.py (2)

10-11: LGTM! Version updates align with context.

The UV and PNPM version bumps (0.9.2 and 10.18.3 respectively) are consistent with the versions defined in extensions/context.py.


39-44: LGTM! Consistent with template changes.

The addition of the --allow-uv-to-install-python flag and the updated UV Python provisioning logic match the corresponding template file changes, maintaining proper consistency between the template and instantiated versions.

Also applies to: 51-53

.devcontainer/devcontainer.json (3)

6-9: LGTM! AWS CLI feature update.

The AWS CLI devcontainer feature bump from 1.1.1 to 1.1.2 with CLI version update to 2.31.11 is a routine maintenance update.


23-24: LGTM! VS Code extensions updated.

The extension updates (adding CodeRabbit, updating Copilot, Python, Pylance, and Ruff extensions) keep the development environment current. Note that GitLens has been commented out in favor of CodeRabbit.

Also applies to: 27-28, 31-32, 34-34


48-48: LGTM! Improved Copilot behavior.

The new setting github.copilot.nextEditSuggestions.allowWhitespaceOnlyChanges: false prevents Copilot from suggesting whitespace-only changes, which improves the quality of suggestions.

.copier-answers.yml (1)

2-2: LGTM! Template update with new feature flag.

The commit bump to v0.0.77 and the addition of install_claude_cli: false reflect the upstream template changes. The new flag provides optional Claude CLI integration with a safe default value.

Also applies to: 5-5

tests/copier_data/data1.yaml (1)

6-6: LGTM! Test data updated for new field.

The addition of install_claude_cli: false to the test data ensures coverage of the new configuration option introduced in the template.

README.md (1)

13-13: LGTM! Documentation updated for new flag.

The addition of --allow-uv-to-install-python to the lock file generation command correctly reflects the new CLI option introduced in the install tooling scripts. This is appropriate for the template instantiation context where UV may need to install Python versions on the fly.

tests/copier_data/data2.yaml (1)

6-6: LGTM! Test data properly covers the Claude CLI enabled scenario.

The addition of install_claude_cli: true provides test coverage for the new Claude CLI feature when enabled.

copier.yml (1)

14-17: LGTM! Well-defined configuration parameter.

The new install_claude_cli parameter is properly structured with appropriate type, default value, and clear help text. The conservative default of "no" ensures Claude CLI is only installed when explicitly requested.

tests/copier_data/data3.yaml (1)

6-6: LGTM! Test data properly covers the Claude CLI disabled scenario.

The addition of install_claude_cli: false provides test coverage for the new feature when disabled, complementing the enabled scenario in data2.yaml.

template/.devcontainer/docker-compose.yml.jinja (1)

19-20: LGTM! Secure conditional environment variable implementation.

The ANTHROPIC_API_KEY is properly gated behind the install_claude_cli flag, ensuring the sensitive credential is only exposed when Claude CLI is explicitly enabled. The use of Docker Compose's environment variable substitution (${ANTHROPIC_API_KEY}) follows best practices.

template/.devcontainer/devcontainer.json.jinja (6)

18-18: LGTM! Node feature version bump.

The Node devcontainer feature update from 1.6.1 to 1.6.3 is a standard patch-level version bump.


22-23: LGTM! Claude code feature properly gated.

The Claude code devcontainer feature (ghcr.io/anthropics/devcontainer-features/claude-code:1.0.5) is correctly conditional on the install_claude_cli flag, consistent with the docker-compose configuration.


30-31: GitLens commented out, CodeRabbit extension added.

The GitLens extension has been commented out (rather than removed) and the CodeRabbit VSCode extension has been added. This appears intentional, possibly as a replacement for Git visualization capabilities.


34-36: LGTM! Copilot and Claude extensions updated.

The GitHub Copilot extensions have been updated to newer versions, and the Claude code extension is properly gated behind the install_claude_cli flag, maintaining consistency with other Claude-related changes.


39-42: LGTM! Python tooling extensions updated.

The Python extension, Pylance, and Ruff have all been updated to newer versions. The version numbers follow expected patterns.


63-63: LGTM! New Copilot setting to reduce noise.

The new github.copilot.nextEditSuggestions.allowWhitespaceOnlyChanges: false setting disables whitespace-only change suggestions, which should improve the signal-to-noise ratio of Copilot's edit suggestions.

Comment on lines +6 to +9
"ghcr.io/devcontainers/features/aws-cli:1.1.2": {
// https://github.com/devcontainers/features/blob/main/src/aws-cli/devcontainer-feature.json
// view latest version https://raw.githubusercontent.com/aws/aws-cli/v2/CHANGELOG.rst
"version": "2.27.14"
"version": "2.31.11"
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

LGTM! AWS CLI version updates look reasonable.

The AWS CLI feature bump (1.1.1 → 1.1.2) and internal CLI version update (2.27.14 → 2.31.11) follow expected versioning patterns.

If you'd like to confirm these are the latest stable versions, run:


🌐 Web query:

What is the latest version of AWS CLI v2?

💡 Result:

Do you want me to look up the current latest AWS CLI v2 version now?


Update AWS CLI version to 2.31.12 in the feature configuration.

The AWS CLI CHANGELOG shows version 2.31.12 is available, while the configuration pins version 2.31.11. This is a minor version behind the latest stable release. Update line 9 to reflect the newer version for the most current security patches and enhancements.

    "ghcr.io/devcontainers/features/aws-cli:1.1.2": {
      // https://github.com/devcontainers/features/blob/main/src/aws-cli/devcontainer-feature.json
      // view latest version https://raw.githubusercontent.com/aws/aws-cli/v2/CHANGELOG.rst
      "version": "2.31.12"
🤖 Prompt for AI Agents
In template/.devcontainer/devcontainer.json.jinja around lines 6 to 9, the
aws-cli feature version is pinned to "2.31.11"; update the "version" value to
"2.31.12" so the devcontainer uses the latest stable AWS CLI minor release. Edit
that line to replace 2.31.11 with 2.31.12, then run any relevant devcontainer
rebuild or validation to ensure the change is applied.

@ejfine ejfine merged commit 3f1516d into main Oct 22, 2025
10 checks passed
@ejfine ejfine deleted the misc-version-bumps branch October 22, 2025 10:09
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.

2 participants