Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .coderabbit.yaml
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json
early_access: true
reviews:
profile: assertive
path_instructions:
- path: "**/vendor_files/**"
instructions: "These files came from a vendor and we're not allowed to change them. Refer to it if you need to understand how the main code interacts with it, but do not make comments about it."
- path: "**/*.py"
instructions: "Do not express concerns about assert statements being removed by using the -O python flag; we never use that flag. Do not express concerns about ruff rules; a pre-commit hook already runs a ruff check. Do not warn about unnecessary super().init() calls; pyright prefers those to be present."
tools:
eslint: # when the code contains typescript, eslint will be run by pre-commit, and coderabbit often generates false positives
enabled: false
Expand All @@ -14,6 +17,7 @@ reviews:
flake8: # we use ruff instead (when we use Python)
enabled: false
poem: false
in_progress_fortune: false
# the commit status is driven by our repository config and required checks, we don't want CodeRabbit messing with it
commit_status: false
auto_review:
Expand Down
2 changes: 1 addition & 1 deletion .copier-answers.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Changes here will be overwritten by Copier
_commit: v0.0.91
_commit: v0.0.92
_src_path: gh:LabAutomationAndScreening/copier-base-template.git
description: A web app that is hosted within a local intranet. Nuxt frontend, python
backend, docker-compose
Expand Down
16 changes: 8 additions & 8 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,24 +16,24 @@
"extensions": [
// basic tooling
// "eamodio.gitlens@15.5.1",
"coderabbit.coderabbit-vscode@0.16.1",
"coderabbit.coderabbit-vscode@0.16.4",
"ms-vscode.live-server@0.5.2025051301",
"MS-vsliveshare.vsliveshare@1.0.5905",
"github.copilot@1.388.0",
"github.copilot-chat@0.34.2025112401",
"github.copilot-chat@0.36.2026010502",

// Python
"ms-python.python@2025.17.2025100201",
"ms-python.vscode-pylance@2025.8.3",
"ms-python.python@2025.21.2026010501",
"ms-python.vscode-pylance@2025.10.100",
"ms-vscode-remote.remote-containers@0.414.0",
"charliermarsh.ruff@2025.28.0",
"charliermarsh.ruff@2025.32.0",

// Misc file formats
"bierner.markdown-mermaid@1.28.0",
"bierner.markdown-mermaid@1.29.0",
"samuelcolvin.jinjahtml@0.20.0",
"tamasfe.even-better-toml@0.19.2",
"emilast.LogFileHighlighter@3.3.3",
"esbenp.prettier-vscode@11.0.0"
"esbenp.prettier-vscode@11.0.2"
],
"settings": {
"editor.accessibilitySupport": "off", // turn off sounds
Expand All @@ -58,5 +58,5 @@
"initializeCommand": "sh .devcontainer/initialize-command.sh",
"onCreateCommand": "sh .devcontainer/on-create-command.sh",
"postStartCommand": "sh .devcontainer/post-start-command.sh"
// Devcontainer context hash (do not manually edit this, it's managed by a pre-commit hook): 2f01e630 # spellchecker:disable-line
// Devcontainer context hash (do not manually edit this, it's managed by a pre-commit hook): 1798e6dc # spellchecker:disable-line
}
4 changes: 2 additions & 2 deletions .devcontainer/install-ci-tooling.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@
import tempfile
from pathlib import Path

UV_VERSION = "0.9.18"
PNPM_VERSION = "10.25.0"
UV_VERSION = "0.9.21"
PNPM_VERSION = "10.27.0"
COPIER_VERSION = "==9.11.0"
COPIER_TEMPLATE_EXTENSIONS_VERSION = "==0.3.3"
PRE_COMMIT_VERSION = "4.5.0"
Expand Down
8 changes: 4 additions & 4 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ repos:

# Reformatting (should generally come before any file format or other checks, because reformatting can change things)
- repo: https://github.com/crate-ci/typos
rev: 802d5794ff9cf7b15610c47eca99cd1ab757d8d4 # frozen: v1
rev: b31d3aa6e8e43e6a9cf7a1d137baf189dec0922b # frozen: v1
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

# First, find and read the .pre-commit-config.yaml file
find . -name ".pre-commit-config.yaml" -type f | head -5

Repository: LabAutomationAndScreening/copier-nuxt-python-intranet-app

Length of output: 126


🏁 Script executed:

# Once found, read the relevant lines to see the actual revisions
cat -n .pre-commit-config.yaml | sed -n '40,60p;195,210p;250,260p'

Repository: LabAutomationAndScreening/copier-nuxt-python-intranet-app

Length of output: 1961


🏁 Script executed:

# Verify the commit SHAs via GitHub API
echo "=== Checking typos v1 ==="
curl -s https://api.github.com/repos/crate-ci/typos/commits/b31d3aa6e8e43e6a9cf7a1d137baf189dec0922b | jq -r 'select(.commit != null) | .commit.message, .sha' 2>/dev/null || echo "Commit not found or API error"

echo -e "\n=== Checking check-jsonschema 0.36.0 ==="
curl -s https://api.github.com/repos/python-jsonschema/check-jsonschema/commits/b035497fb64e3f9faa91e833331688cc185891e6 | jq -r 'select(.commit != null) | .commit.message, .sha' 2>/dev/null || echo "Commit not found or API error"

echo -e "\n=== Checking check-json5 v1.0.1 ==="
curl -s https://api.github.com/repos/maresb/check-json5/commits/bd4737432a2175617a9eeaa510ab369cbc1cbd3d | jq -r 'select(.commit != null) | .commit.message, .sha' 2>/dev/null || echo "Commit not found or API error"

echo -e "\n=== Checking ruff v0.14.10 ==="
curl -s https://api.github.com/repos/astral-sh/ruff-pre-commit/commits/5ba58aca0bd5bc7c0e1c0fc45af2e88d6a2bde83 | jq -r 'select(.commit != null) | .commit.message, .sha' 2>/dev/null || echo "Commit not found or API error"

Repository: LabAutomationAndScreening/copier-nuxt-python-intranet-app

Length of output: 294


🌐 Web query:

typos v1 release crate-ci github

💡 Result:

Here are the relevant pages and how to reference a v1 release of crate-ci/typos in CI:

  • Releases page (all v1.* releases, latest tags): GitHub releases for crate-ci/typos. [1]
  • Repository README / usage (install and GitHub Actions examples). [2]
  • Example showing pinning to a specific v1 release in CI (use crate-ci/typos@v1.31.2 or another v1.* tag to fix the version). [3]

If you want, tell me which exact v1.* release you need and I’ll fetch its release notes and downloadable assets.

Sources:
[1] crate-ci/typos — Releases (GitHub).
[2] crate-ci/typos — README (GitHub).
[3] jas docs — example pinning typos to a v1.* release.


🌐 Web query:

check-jsonschema 0.36.0 release

💡 Result:

check-jsonschema 0.36.0 was released in mid‑December 2025 — the PyPI artifacts were uploaded Dec 15, 2025. Key changes: updated many vendored schemas (bitbucket-pipelines, buildkite, circle-ci, dependabot, gitlab-ci, mergify, readthedocs, renovate, snapcraft) and added a GitHub Discussion category forms schema and pre-commit hook. [1][2][3]

Sources:

  • PyPI release files and upload metadata. [1]
  • Changelog entry for v0.36.0. [2]
  • Homebrew / project listing showing stable v0.36.0. [3]

🌐 Web query:

check-json5 v1.0.1 release

💡 Result:

json5 v1.0.1 was released on March 18, 2018. [1][2]

Sources:

  • Release timeline / versions listing. [1]
  • npm package page for json5 (v1.0.1 listed). [2]

🌐 Web query:

ruff v0.14.10 release security

💡 Result:

Short answer: ruff v0.14.10 was released (Dec 18, 2025) and there are no public/security advisories affecting v0.14.10 that the major trackers show — upgrade to 0.14.10 to get the latest fixes/features. [1][2][4]

Notes / sources:

  • PyPI release (ruff 0.14.10 uploaded Dec 18, 2025). [1]
  • Safety DB / package-security listing shows 0.14.10 as latest with no known vulnerabilities. [2]
  • Historical/security CVE (CVE-2025-62518) affected earlier ruff/related components; ensure you’re on >=0.14.10 which contains recent fixes. [3]
  • Official ruff GitHub (release/installation references for v0.14.10). [4]

If you want, I can fetch the exact changelog entries for 0.14.10 or check specific CVE databases (NVD, GH Security Advisories) for additional confirmation.


🌐 Web query:

typos check-jsonschema check-json5 ruff security advisories 2025 2026

💡 Result:

Short summary of known security advisories (2024–Jan 5, 2026) for the packages you listed:

  • check-jsonschema — Cache-confusion vulnerability (CVE-2024-53848). Fixed by upgrading to >= 0.30.0; workarounds: --no-cache or use local schema files. [1][2]

  • check-json5 / json5 — Known prototype-pollution advisory (GHSA published Dec 2022; patched in later json5 releases). Project security policy and advisories are on the repo. Watch json5 GitHub advisories for updates. [3][4]

  • ruff — Multiple advisories in 2025 (including GHSA/CVE-related fixes such as CVE-2025-4574 / rebuilds to pick safe crossbeam-channel versions and other downstream fixes); distributions published sec updates (Fedora advisories). Follow ruff releases/changelog for patched versions. [5][6]

  • typos (and action-typos) — supply-chain incident: reviewdog/action-setup compromise (CVE-2025-30154, published March 2025) affected reviewdog actions including action-typos; follow reviewdog/typos advisories and avoid unpinned use of vulnerable actions. Package scanners show no direct typos package code vulnerability as of latest advisories, but the GitHub Actions compromise is the main concern. [7][8][9]

If you want, I can:

  • list exact patched versions and recommended upgrades for each package, or
  • gather current release/changelog links and direct upgrade commands.

Sources:
[1] Snyk / check-jsonschema advisory (CVE-2024-53848).
[2] CVE / CVE details / Debian tracker for CVE-2024-53848.
[3] json5 GitHub advisory (Prototype Pollution GHSA).
[4] JSON5 SECURITY policy / project security page.
[5] Fedora / ruff security update (CVE-2025-4574 / GHSA).
[6] Fedora / Tenable/Nessus reporting on ruff-related updates.
[7] NVD / CVE-2025-30154 (reviewdog/action-setup compromise affecting action-typos).
[8] Tenable / CVE-2025-30154 writeup.
[9] SafetyDB / typos package status.


Update check-json5 to a more recent version to address potential prototype-pollution vulnerability.

While the commit SHAs are valid and correspond to their frozen versions, check-json5 v1.0.1 (released March 2018) wraps the underlying json5 package, which has a known prototype-pollution advisory (GHSA, December 2022). Upgrade to a newer release of check-json5 to pull in patched json5 dependencies.

The other revisions are safe:

  • typos v1: Confirmed stable (note: CVE-2025-30154 affects action-typos in GitHub Actions, not the package itself).
  • check-jsonschema 0.36.0: Confirmed (released Dec 15, 2025); CVE-2024-53848 cache-confusion vulnerability is fixed in this version.
  • ruff v0.14.10: Confirmed stable (released Dec 18, 2025); no known advisories.

hooks:
- id: typos
exclude: |
Expand Down Expand Up @@ -195,12 +195,12 @@ repos:
- id: check-case-conflict

- repo: https://github.com/python-jsonschema/check-jsonschema
rev: 16a6ad2fead09286ee6eb6b0a3fab55655a6c22a # frozen: 0.35.0
rev: b035497fb64e3f9faa91e833331688cc185891e6 # frozen: 0.36.0
hooks:
- id: check-github-workflows

- repo: https://github.com/maresb/check-json5
rev: 893a2b5a0a27c3540bd8fcafe2968ccc05237179 # 1.0
rev: bd4737432a2175617a9eeaa510ab369cbc1cbd3d # frozen: v1.0.1
hooks:
- id: check-json5
files: |
Expand Down Expand Up @@ -249,7 +249,7 @@ repos:
description: Runs hadolint to lint Dockerfiles

- repo: https://github.com/astral-sh/ruff-pre-commit
rev: 1a1f58ba4c35362efe8fed2279715a905baee93d # frozen: v0.14.8
rev: 5ba58aca0bd5bc7c0e1c0fc45af2e88d6a2bde83 # frozen: v0.14.10
hooks:
- id: ruff
name: ruff-src
Expand Down
2 changes: 1 addition & 1 deletion copier.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ use_windows_in_ci:
node_version:
type: str
help: What version of NodeJS is used for development?
default: "{{ node_version }}"
default: "{{ default_node_version }}"


install_aws_ssm_port_forwarding_plugin:
Expand Down
57 changes: 28 additions & 29 deletions extensions/context.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,66 +10,65 @@ class ContextUpdater(ContextHook):

@override
def hook(self, context: dict[Any, Any]) -> dict[Any, Any]:
context["uv_version"] = "0.9.18"
context["pnpm_version"] = "10.25.0"
context["uv_version"] = "0.9.21"
context["pnpm_version"] = "10.27.0"
context["pre_commit_version"] = "4.5.0"
context["pyright_version"] = ">=1.1.407"
context["pytest_version"] = ">=9.0.2"
context["pytest_randomly_version"] = ">=4.0.1"
context["pytest_cov_version"] = ">=7.0.0"
context["ty_version"] = ">=0.0.2"
context["ty_version"] = ">=0.0.9"
Copy link

Copilot AI Jan 5, 2026

Choose a reason for hiding this comment

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

The PR description states "updates structlog config to include more information" and mentions updating logging to display more locals, but there are no visible changes to structlog configuration files (such as logger_config.py) in this diff. The primary change appears to be the ty package version bump from 0.0.2 to 0.0.9, along with other dependency updates. If the logging configuration was actually changed, those changes may not be included in this PR. Otherwise, the PR description should be updated to accurately reflect that this is primarily a dependency update PR.

Copilot uses AI. Check for mistakes.
context["copier_version"] = "==9.11.0"
context["copier_template_extensions_version"] = "==0.3.3"
context["sphinx_version"] = "9.0.4"
context["pulumi_version"] = ">=3.212.0"
context["pulumi_aws_version"] = ">=7.14.0"
context["pulumi_aws_native_version"] = ">=1.40.0"
context["pulumi_version"] = ">=3.214.1"
context["pulumi_aws_version"] = ">=7.15.0"
context["pulumi_aws_native_version"] = ">=1.47.0"
context["pulumi_command_version"] = ">=1.1.3"
context["pulumi_github_version"] = ">=6.9.1"
context["pulumi_github_version"] = ">=6.10.0"
context["pulumi_okta_version"] = ">=6.2.0"
context["boto3_version"] = ">=1.42.11"
context["ephemeral_pulumi_deploy_version"] = ">=0.0.5"
context["ephemeral_pulumi_deploy_version"] = ">=0.0.6"
context["pydantic_version"] = ">=2.12.5"
context["pyinstaller_version"] = "6.17.0"
context["pyinstaller_version"] = ">=6.17.0"
context["setuptools_version"] = "80.7.1"
context["strawberry_graphql_version"] = ">=0.287.0"
context["fastapi_version"] = ">=0.124.2"
context["fastapi_version"] = ">=0.128.0"
context["fastapi_offline_version"] = ">=1.7.4"
context["uvicorn_version"] = ">=0.38.0"
context["lab_auto_pulumi_version"] = ">=0.1.17"
context["uvicorn_version"] = ">=0.40.0"
context["lab_auto_pulumi_version"] = ">=0.1.18"
context["ariadne_codegen_version"] = ">=0.17.0"
context["pytest_mock_version"] = "3.15.1"
context["pytest_mock_version"] = ">=3.15.1"
context["uuid_utils_version"] = ">=0.12.0"
context["syrupy_version"] = ">=5.0.0"
context["structlog_version"] = ">=25.5.0"
context["httpx_version"] = "0.28.1"
context["python_kiota_bundle_version"] = ">=1.9.7"
context["vcrpy_version"] = ">=8.1.0"
context["python_kiota_bundle_version"] = ">=1.9.8"
context["vcrpy_version"] = ">=8.1.1"
context["pytest_recording_version"] = ">=0.13.4"
context["pytest_asyncio_version"] = ">=1.3.0"
context["pytest_reserial_version"] = ">=0.6.0"

context["node_version"] = "24.11.1"
context["nuxt_ui_version"] = "^4.2.1"
context["default_node_version"] = "24.11.1"
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Check for any remaining references to the old key name

echo "=== Searching for old 'node_version' references (excluding default_node_version) ==="
rg -n 'node_version' --type-add 'jinja:*.jinja' --type-add 'jinja:*.j2' -g '!extensions/context.py' | grep -v 'default_node_version' || echo "No old references found"

echo ""
echo "=== Verifying new 'default_node_version' usage ==="
rg -n 'default_node_version' --type-add 'jinja:*.jinja' --type-add 'jinja:*.j2'

echo ""
echo "=== Checking templates more broadly (*.html, *.j2, *.jinja) ==="
find . -type f \( -name "*.jinja" -o -name "*.j2" -o -name "*.html" \) -exec grep -l 'node_version\|default_node_version' {} \;

Repository: LabAutomationAndScreening/copier-nuxt-python-intranet-app

Length of output: 1197


Templates still reference old node_version key and will fail.

Verification found that templates have NOT been updated to use the new default_node_version key. The old node_version variable is still referenced in:

  • template/frontend/package.json.jinja:51: {{ node_version.split('.')[0] }}
  • template/frontend/{% if not deploy_as_executable %}Dockerfile{% endif %}.jinja:2: {{ node_version }}

Additionally, copier.yml still defines node_version: (line 35) while referencing the new key (line 38). Update all template references and configuration to consistently use default_node_version instead of the old key name.

🤖 Prompt for AI Agents
In @extensions/context.py around line 52, Templates and config still reference
the old variable node_version while the context now sets default_node_version;
update all references to use default_node_version (e.g., change {{
node_version.split('.')... }} to {{ default_node_version.split('.')... }} and {{
node_version }} to {{ default_node_version }}), and reconcile copier.yml by
removing or renaming the old node_version entry so it consistently uses
default_node_version everywhere.

context["nuxt_ui_version"] = "^4.3.0"
context["nuxt_version"] = "^4.2.2"
context["nuxt_icon_version"] = "^2.1.0"
context["nuxt_icon_version"] = "^2.1.1"
context["typescript_version"] = "^5.9.3"
context["playwright_version"] = "^1.57.0"
context["vue_version"] = "^3.5.25"
context["vue_tsc_version"] = "^3.1.2"
context["vue_version"] = "^3.5.26"
context["vue_tsc_version"] = "^3.2.1"
context["vue_devtools_api_version"] = "^8.0.0"
context["vue_router_version"] = "^4.6.0"
context["vue_router_version"] = "^4.6.4"
context["dotenv_cli_version"] = "^11.0.0"
context["faker_version"] = "^10.1.0"
context["faker_version"] = "^10.2.0"
context["vitest_version"] = "^3.2.4"
context["eslint_version"] = "~9.38.0"
context["nuxt_eslint_version"] = "^1.10.0"
context["zod_version"] = "^4.1.12"
context["nuxt_eslint_version"] = "^1.12.1"
context["zod_version"] = "^4.3.5"
context["zod_from_json_schema_version"] = "^0.5.1"
context["types_node_version"] = "^25.0.0"
context["nuxt_apollo_version"] = "5.0.0-alpha.15"
context["graphql_codegen_cli_version"] = "^6.0.0"
context["graphql_codegen_typescript_version"] = "^5.0.0"
context["graphql_codegen_typescript_operations_version"] = "^5.0.0"
context["graphql_codegen_cli_version"] = "^6.1.0"
context["graphql_codegen_typescript_version"] = "^5.0.7"
context["graphql_tools_mock_version"] = "^9.1.0"
context["tailwindcss_version"] = "^4.1.11"
context["iconify_vue_version"] = "^5.0.0"
Expand All @@ -79,7 +78,7 @@ def hook(self, context: dict[Any, Any]) -> dict[Any, Any]:
context["vue_test_utils_version"] = "^2.4.6"
context["nuxt_test_utils_version"] = "3.19.1"
context["vue_eslint_parser_version"] = "^10.1.3"
context["happy_dom_version"] = "^20.0.2"
context["happy_dom_version"] = "^20.0.11"
context["node_kiota_bundle_version"] = "1.0.0-preview.99"

context["gha_checkout"] = "v6.0.1"
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ dependencies = [
"pytest-cov>=7.0.0",
"pytest-randomly>=4.0.1",
"pyright[nodejs]>=1.1.407",
"ty>=0.0.2",
"ty>=0.0.9",
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🌐 Web query:

ty package version 0.0.9 PyPI

💡 Result:

As of January 5, 2026, PyPI does not show a ty version 0.0.9 — the latest published release on the official PyPI project page is 0.0.8. [1]

Sources:
[1] PyPI — ty project page (release history).


🏁 Script executed:

#!/bin/bash
# Check ty package on PyPI
curl -s https://pypi.org/pypi/ty/json | jq -r '.releases | keys | .[]' | sort -V | tail -15

Repository: LabAutomationAndScreening/copier-nuxt-python-intranet-app

Length of output: 211


🌐 Web query:

ty package changelog release notes breaking changes 0.0.9

💡 Result:

Which "ty" package do you mean — the Python package (PyPI/astral-sh/ty), an npm package, or a GitHub repo? Provide the package registry or a link (or tell me the exact project owner) and I’ll fetch the 0.0.9 changelog/release notes and breaking changes.


🏁 Script executed:

#!/bin/bash
# Get detailed info about ty 0.0.9 release
curl -s https://pypi.org/pypi/ty/0.0.9/json | jq '.info | {version, summary, home_page, project_urls, requires_dist}'

Repository: LabAutomationAndScreening/copier-nuxt-python-intranet-app

Length of output: 584


🏁 Script executed:

#!/bin/bash
# Fetch the CHANGELOG.md from astral-sh/ty
curl -s https://raw.githubusercontent.com/astral-sh/ty/main/CHANGELOG.md | head -100

Repository: LabAutomationAndScreening/copier-nuxt-python-intranet-app

Length of output: 5646


🏁 Script executed:

#!/bin/bash
# Get more of the changelog to see all versions between 0.0.2 and 0.0.9
curl -s https://raw.githubusercontent.com/astral-sh/ty/main/CHANGELOG.md | grep -A 50 "^## 0.0" | head -200

Repository: LabAutomationAndScreening/copier-nuxt-python-intranet-app

Length of output: 10993


🏁 Script executed:

#!/bin/bash
# Check how ty is used in the codebase
find . -type f \( -name "*.py" -o -name "*.toml" -o -name "*.cfg" -o -name "*.ini" \) | xargs grep -l "ty" 2>/dev/null | head -20

Repository: LabAutomationAndScreening/copier-nuxt-python-intranet-app

Length of output: 617


🏁 Script executed:

#!/bin/bash
# Check pyproject.toml for ty dependency and configuration
cat -n pyproject.toml | head -50

Repository: LabAutomationAndScreening/copier-nuxt-python-intranet-app

Length of output: 739


🏁 Script executed:

#!/bin/bash
# Search for any references to non-subscriptable or not-subscriptable rules
grep -r "non-subscriptable\|not-subscriptable" . --include="*.toml" --include="*.py" --include="*.ini" --include="*.cfg" 2>/dev/null

Repository: LabAutomationAndScreening/copier-nuxt-python-intranet-app

Length of output: 83


Review the breaking change in ty 0.0.8 when upgrading from >=0.0.2 to >=0.0.9.

Version 0.0.9 exists on PyPI. However, upgrading to >=0.0.9 includes a breaking change introduced in version 0.0.8: the rule non-subscriptable has been renamed to not-subscriptable. While the codebase does not currently reference this rule directly, verify that any ty configuration files or downstream tools do not depend on the old rule name.

🤖 Prompt for AI Agents
In @pyproject.toml around line 16, The dependency line "ty>=0.0.9" introduces a
breaking rename (rule non-subscriptable -> not-subscriptable); either pin ty to
a safe version (e.g., "ty>=0.0.2,<0.0.8") or update any ty rule usages to the
new name; search for any ty configuration files, CI/lint scripts, or downstream
tool configs for "non-subscriptable" and rename them to "not-subscriptable" (or
adjust version constraint) so the upgrade to "ty>=0.0.9" won't break rule
references.

"copier==9.11.0",
"copier-template-extensions==0.3.3"
]
8 changes: 6 additions & 2 deletions template/.coderabbit.yaml
Original file line number Diff line number Diff line change
@@ -1,15 +1,18 @@
# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json
early_access: true
reviews:
profile: assertive
path_instructions:
- path: "**/vendor_files/**"
instructions: "These files came from a vendor and we're not allowed to change them. Refer to it if you need to understand how the main code interacts with it, but do not make comments about it."
- path: "**/generated/open-api/**"
instructions: "This is generated client code for the API. Refer to it if you need to understand how the main code interacts with it, but do not make comments about it."
- path: "**/generated/open_api/**"
instructions: "This is generated client code for the API. Refer to it if you need to understand how the main code interacts with it, but do not make comments about it."
- path: "**/generated/graphql.ts"
instructions: "This is generated client code for the API. Refer to it if you need to understand how the main code interacts with it, but do not make comments about it."
- path: "**/vendor_files/**"
instructions: "These files came from a vendor and we're not allowed to change them. Refer to it if you need to understand how the main code interacts with it, but do not make comments about it."
- path: "**/*.py"
instructions: "Do not express concerns about assert statements being removed by using the -O python flag; we never use that flag. Do not express concerns about ruff rules; a pre-commit hook already runs a ruff check. Do not warn about unnecessary super().init() calls; pyright prefers those to be present."
tools:
eslint: # when the code contains typescript, eslint will be run by pre-commit, and coderabbit often generates false positives
enabled: false
Expand All @@ -20,6 +23,7 @@ reviews:
flake8: # we use ruff instead (when we use Python)
enabled: false
poem: false
in_progress_fortune: false
# the commit status is driven by our repository config and required checks, we don't want CodeRabbit messing with it
commit_status: false
auto_review:
Expand Down
22 changes: 11 additions & 11 deletions template/.devcontainer/devcontainer.json.jinja
Original file line number Diff line number Diff line change
Expand Up @@ -29,32 +29,32 @@
"-AmazonWebServices.aws-toolkit-vscode", // the AWS CLI feature installs this automatically, but it's causing problems in VS Code{% endraw %}{% endif %}{% raw %}
// basic tooling
// "eamodio.gitlens@15.5.1",
"coderabbit.coderabbit-vscode@0.16.1",
"coderabbit.coderabbit-vscode@0.16.4",
"ms-vscode.live-server@0.5.2025051301",
"MS-vsliveshare.vsliveshare@1.0.5905",
"github.copilot@1.388.0",
"github.copilot-chat@0.34.2025112401",{% endraw %}{% if install_claude_cli %}{% raw %}
"anthropic.claude-code@2.0.27",{% endraw %}{% endif %}{% raw %}
"github.copilot-chat@0.36.2026010502",{% endraw %}{% if install_claude_cli %}{% raw %}
"anthropic.claude-code@2.0.75",{% endraw %}{% endif %}{% raw %}

// Python
"ms-python.python@2025.17.2025100201",
"ms-python.vscode-pylance@2025.8.3",
"ms-python.python@2025.21.2026010501",
"ms-python.vscode-pylance@2025.10.100",
"ms-vscode-remote.remote-containers@0.414.0",
"charliermarsh.ruff@2025.28.0",
"charliermarsh.ruff@2025.32.0",
{% endraw %}{% if is_child_of_copier_base_template is not defined and template_uses_vuejs is defined and template_uses_vuejs is sameas(true) %}{% raw %}
// VueJS
"vue.volar@3.0.6",
"vitest.explorer@1.16.1",
"vue.volar@3.2.1",
"vitest.explorer@1.36.0",
{% endraw %}{% endif %}{% raw %}{% endraw %}{% if is_child_of_copier_base_template is not defined and template_uses_javascript is defined and template_uses_javascript is sameas(true) %}{% raw %}
// All javascript
"dbaeumer.vscode-eslint@3.0.19",
"dbaeumer.vscode-eslint@3.0.21",
{% endraw %}{% endif %}{% raw %}
// Misc file formats
"bierner.markdown-mermaid@1.28.0",
"bierner.markdown-mermaid@1.29.0",
"samuelcolvin.jinjahtml@0.20.0",
"tamasfe.even-better-toml@0.19.2",
"emilast.LogFileHighlighter@3.3.3",
"esbenp.prettier-vscode@11.0.0"
"esbenp.prettier-vscode@11.0.2"
],
"settings": {
"editor.accessibilitySupport": "off", // turn off sounds
Expand Down
3 changes: 3 additions & 0 deletions template/.github/dependabot.yml.jinja
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,9 @@ updates:{% endraw %}{% if has_backend %}{% raw %}
- dependency-name: "*"
update-types:
- "version-update:semver-patch" # we don't want to be bothered with patch updates for anything except security updates
- dependency-name: "@types/node"
update-types:
- "version-update:semver-major" # @types/node major should be pinned to the node engine itself
groups:
prod-dependencies:
dependency-type: "production"
Expand Down
8 changes: 4 additions & 4 deletions template/.pre-commit-config.yaml.jinja
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ repos:

# Reformatting (should generally come before any file format or other checks, because reformatting can change things)
- repo: https://github.com/crate-ci/typos
rev: 802d5794ff9cf7b15610c47eca99cd1ab757d8d4 # frozen: v1
rev: b31d3aa6e8e43e6a9cf7a1d137baf189dec0922b # frozen: v1
hooks:
- id: typos
exclude: |
Expand Down Expand Up @@ -194,12 +194,12 @@ repos:
- id: check-case-conflict

- repo: https://github.com/python-jsonschema/check-jsonschema
rev: 16a6ad2fead09286ee6eb6b0a3fab55655a6c22a # frozen: 0.35.0
rev: b035497fb64e3f9faa91e833331688cc185891e6 # frozen: 0.36.0
hooks:
- id: check-github-workflows

- repo: https://github.com/maresb/check-json5
rev: 893a2b5a0a27c3540bd8fcafe2968ccc05237179 # 1.0
rev: bd4737432a2175617a9eeaa510ab369cbc1cbd3d # frozen: v1.0.1
hooks:
- id: check-json5
files: |
Expand Down Expand Up @@ -276,7 +276,7 @@ repos:
description: Runs hadolint to lint Dockerfiles

- repo: https://github.com/astral-sh/ruff-pre-commit
rev: 1a1f58ba4c35362efe8fed2279715a905baee93d # frozen: v0.14.8
rev: 5ba58aca0bd5bc7c0e1c0fc45af2e88d6a2bde83 # frozen: v0.14.10
hooks:
- id: ruff
name: ruff-src
Expand Down
4 changes: 2 additions & 2 deletions template/frontend/package.json.jinja
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@
"@faker-js/faker": "{% endraw %}{{ faker_version }}{% raw %}",{% endraw %}{% if frontend_uses_graphql %}{% raw %}
"@graphql-codegen/cli": "{% endraw %}{{ graphql_codegen_cli_version }}{% raw %}",
"@graphql-codegen/typescript": "{% endraw %}{{ graphql_codegen_typescript_version }}{% raw %}",
"@graphql-codegen/typescript-operations": "{% endraw %}{{ graphql_codegen_typescript_operations_version }}{% raw %}",
"@graphql-codegen/typescript-operations": "{% endraw %}{{ graphql_codegen_typescript_version }}{% raw %}",
"@graphql-codegen/typescript-vue-apollo": "^4.1.2",
"@graphql-tools/mock": "^9.0.22",
"@graphql-tools/schema": "^10.0.23",{% endraw %}{% endif %}{% raw %}
Expand All @@ -48,7 +48,7 @@
"@nuxtjs/apollo": "{% endraw %}{{ nuxt_apollo_version }}{% raw %}",{% endraw %}{% endif %}{% raw %}
"@nuxtjs/eslint-config-typescript": "^12.1.0",
"@playwright/test": "{% endraw %}{{ playwright_version }}{% raw %}",
"@types/node": "{% endraw %}{{ types_node_version }}{% raw %}",
"@types/node": "^{% endraw %}{{ node_version.split('.')[0] }}{% raw %}",
"@vitest/coverage-istanbul": "{% endraw %}{{ vitest_version }}{% raw %}",{% endraw %}{% if frontend_uses_graphql %}{% raw %}
"@vue/apollo-composable": "^4.2.2",{% endraw %}{% endif %}{% raw %}
"@vue/devtools-api": "{% endraw %}{{ vue_devtools_api_version }}{% raw %}",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,12 +41,12 @@ dev = [
"pytest{% endraw %}{{ pytest_version }}{% raw %}",
"pytest-cov{% endraw %}{{ pytest_cov_version }}{% raw %}",
"pytest-randomly{% endraw %}{{ pytest_randomly_version }}{% raw %}",
"pytest-mock>={% endraw %}{{ pytest_mock_version }}{% raw %}",
"pytest-mock{% endraw %}{{ pytest_mock_version }}{% raw %}",
"pytest-asyncio{% endraw %}{{ pytest_asyncio_version }}{% raw %}",{% endraw %}{% if backend_makes_api_calls %}{% raw %}
"pytest-recording{% endraw %}{{ pytest_recording_version }}{% raw %}",
"vcrpy{% endraw %}{{ vcrpy_version }}{% raw %}",{% endraw %}{% endif %}{% raw %}{% endraw %}{% if deploy_as_executable %}{% raw %}
"pyinstaller>={% endraw %}{{ pyinstaller_version }}{% raw %}",{% endraw %}{% endif %}{% raw %}{% endraw %}{% if is_circuit_python_driver %}{% raw %}
"pytest-reserial>={% endraw %}0.6.0{% raw %}",
"pyinstaller{% endraw %}{{ pyinstaller_version }}{% raw %}",{% endraw %}{% endif %}{% raw %}{% endraw %}{% if is_circuit_python_driver %}{% raw %}
"pytest-reserial{% endraw %}{{ pytest_reserial_version }}{% raw %}",
"circup>=2.3.0",
"adafruit-circuitpython-busdevice{% endraw %}{{ adafruit_circuitpython_busdevice_version }}{% raw %}",
"adafruit-circuitpython-register{% endraw %}{{ adafruit_circuitpython_register_version }}{% raw %}",{% endraw %}{% endif %}{% raw %}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,12 @@ def configure_logging(

json_processors = [
*shared_processors,
structlog.processors.ExceptionRenderer(structlog.tracebacks.ExceptionDictTransformer()),
structlog.processors.ExceptionRenderer(
structlog.tracebacks.ExceptionDictTransformer(
locals_max_length=50, # increase from default 10
locals_max_string=500, # Increase from default 80
)
),
structlog.processors.EventRenamer(to="message"),
structlog.stdlib.ProcessorFormatter.remove_processors_meta,
structlog.processors.JSONRenderer(),
Expand Down
Loading