diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 0000000..2cbbbf2 --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,37 @@ +{ + "name": "JS Dev Container", + "image": "mcr.microsoft.com/devcontainers/javascript-node:1-20", + "features": { + "ghcr.io/devcontainers/features/git:1": {}, + "ghcr.io/devcontainers/features/git-lfs:1": {}, + "ghcr.io/devcontainers-extra/features/pre-commit:2": {}, + "ghcr.io/devcontainers-extra/features/npm-packages:1": { + "packages": "@google/gemini-cli" + } + }, + "customizations": { + "vscode": { + "extensions": [ + "ms-python.python", + "esbenp.prettier-vscode", + "vitest.explorer", + "google.gemini-cli-vscode-ide-companion", + "google.geminicodeassist" + ], + "settings": { + "editor.formatOnSave": true, + "editor.defaultFormatter": "esbenp.prettier-vscode" + } + } + }, + "postStartCommand": "bash .devcontainer/setup.sh", + "remoteUser": "node", + "updateRemoteUserUID": true, + "mounts": [ + "source=pipx-venvs,target=/home/node/.local/share/pipx,type=volume", + "source=pipx-bin,target=/home/node/.local/bin,type=volume", + "source=pre-commit-cache,target=/home/node/.cache/pre-commit,type=volume", + "source=${localEnv:USERPROFILE}/.gemini,target=/home/node/.gemini,type=bind", + "source=gvscode-extensions,target=/home/node/.cache/google-vscode-extension,type=volume" + ] +} diff --git a/.devcontainer/setup.sh b/.devcontainer/setup.sh new file mode 100644 index 0000000..61d9d72 --- /dev/null +++ b/.devcontainer/setup.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +# 1. Fix Git Permissions (Critical in Docker) +git config --global --add safe.directory $(pwd) + +# In your setup.sh or postCreateCommand +sudo chown -R node:node /home/node/.cache/ + +# 2. Re-connect Git Hooks +pre-commit install +pre-commit install-hooks diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index d9ba9c9..e0ec95a 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,57 +1,48 @@ -exclude: ^node_modules/ -repos: -- repo: https://github.com/pre-commit/pre-commit-hooks - rev: v6.0.0 - hooks: - - id: end-of-file-fixer - exclude: (.txt$|.ipynb$|README.md$|readme.mde$) - - id: trailing-whitespace - exclude: (.txt$|README.md$) - - id: check-yaml - - id: check-json - - id: check-toml - - id: check-xml - - id: check-added-large-files - args: [--enforce-all] - - id: name-tests-test - - id: detect-private-key - - id: check-case-conflict - - id: check-symlinks - - id: check-docstring-first - - id: pretty-format-json - args: [--autofix, --no-sort-keys, --no-ensure-ascii] - - id: check-merge-conflict - - id: no-commit-to-branch - args: [--branch, main] - -- repo: https://github.com/macisamuele/language-formatters-pre-commit-hooks - rev: v2.15.0 - hooks: - - id: pretty-format-ini - args: [--autofix] - - id: pretty-format-toml - args: [--autofix] - - id: pretty-format-yaml - args: [--autofix] - -- repo: https://github.com/frnmst/md-toc - rev: 9.0.0 - hooks: - - id: md-toc - -- repo: https://github.com/Lucas-C/pre-commit-hooks-java - rev: 1.3.10 - hooks: - - id: validate-html - -- repo: https://github.com/pre-commit/mirrors-prettier - rev: v4.0.0-alpha.8 - hooks: - - id: prettier - types_or: [css, javascript] - -- repo: https://github.com/python-jsonschema/check-jsonschema - rev: 0.36.0 - hooks: - - id: check-renovate - - id: check-github-actions +exclude: ^node_modules/ +repos: +- repo: https://github.com/pre-commit/pre-commit-hooks + rev: v6.0.0 + hooks: + - id: end-of-file-fixer + exclude: (.txt$|.ipynb$|README.md$|readme.mde$) + - id: trailing-whitespace + exclude: (.txt$|README.md$) + - id: check-yaml + - id: check-json + - id: check-toml + - id: check-xml + - id: check-added-large-files + args: [--enforce-all] + - id: name-tests-test + - id: detect-private-key + - id: check-case-conflict + - id: check-symlinks + - id: check-docstring-first + - id: pretty-format-json + args: [--autofix, --no-sort-keys, --no-ensure-ascii] + - id: check-merge-conflict + - id: no-commit-to-branch + args: [--branch, main] + +- repo: https://github.com/macisamuele/language-formatters-pre-commit-hooks + rev: v2.15.0 + hooks: + - id: pretty-format-ini + args: [--autofix] + - id: pretty-format-toml + args: [--autofix] + - id: pretty-format-yaml + args: [--autofix] + +- repo: https://github.com/pre-commit/mirrors-prettier + rev: v4.0.0-alpha.8 + hooks: + - id: prettier + types_or: [css, javascript] + +- repo: https://github.com/python-jsonschema/check-jsonschema + rev: 0.36.0 + hooks: + - id: check-renovate + - id: check-github-actions + - id: check-github-workflows