From e86c09b091b2cf1e1480027048ea03ef39b086e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ko=CC=88nig?= Date: Mon, 14 Sep 2026 11:44:35 +0200 Subject: [PATCH 1/3] chore: add .gitattributes to enforce LF line endings Pins LF in the working tree regardless of core.autocrlf, so Windows checkouts (Git for Windows defaults to autocrlf=true) match the repo. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_013AdTeADfo4e7vzGstUSnSM --- .gitattributes | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 .gitattributes diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..d6b6a06 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,29 @@ +* text=auto eol=lf +*.sh text eol=lf +.husky/* text eol=lf +.githooks/* text eol=lf +Dockerfile text eol=lf +*.cmd text eol=crlf +*.bat text eol=crlf +*.png binary +*.jpg binary +*.jpeg binary +*.gif binary +*.webp binary +*.avif binary +*.ico binary +*.pdf binary +*.woff binary +*.woff2 binary +*.ttf binary +*.otf binary +*.eot binary +*.zip binary +*.gz binary +*.tgz binary +*.wasm binary +*.node binary +*.mp4 binary +*.webm binary +pnpm-lock.yaml text eol=lf linguist-generated=true +package-lock.json text eol=lf From 96c433635174b0e72d877f74cdb8a5c53aaa996f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ko=CC=88nig?= Date: Mon, 14 Sep 2026 11:46:52 +0200 Subject: [PATCH 2/3] fix: quote lint globs with double quotes for cmd.exe cmd.exe passes single quotes through literally, so eslint received '**/*.{ts,js,vue}' including the quotes and found no files on Windows. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_013AdTeADfo4e7vzGstUSnSM --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 6a3844f..e641307 100644 --- a/package.json +++ b/package.json @@ -33,8 +33,8 @@ "release": "standard-version && git push --follow-tags origin main", "release:minor": "standard-version --release-as minor && git push --follow-tags origin main", "release:major": "standard-version --release-as major && git push --follow-tags origin main", - "lint": "eslint '**/*.{ts,js,vue}'", - "lint:fix": "eslint '**/*.{ts,js,vue}' --fix" + "lint": "eslint \"**/*.{ts,js,vue}\"", + "lint:fix": "eslint \"**/*.{ts,js,vue}\" --fix" }, "dependencies": { "@babel/core": "7.28.3", From 739caae8e1963ec9489b65924eb308eae49a9c0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ko=CC=88nig?= Date: Mon, 14 Sep 2026 11:49:17 +0200 Subject: [PATCH 3/3] ci: add non-blocking Windows workflow Runs on windows-latest with core.autocrlf=true, checks that no file except *.cmd/*.bat is checked out with CRLF, then builds the playground, builds the module and lints. Separate workflow with continue-on-error, so next.yml and release.yml never wait on it. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_013AdTeADfo4e7vzGstUSnSM --- .github/workflows/windows.yml | 55 +++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 .github/workflows/windows.yml diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml new file mode 100644 index 0000000..2087e93 --- /dev/null +++ b/.github/workflows/windows.yml @@ -0,0 +1,55 @@ +name: Windows + +# Non-blocking Windows check. Separate workflow on purpose: next.yml and +# release.yml do not wait on it, so a red Windows run never holds up a release. + +on: + push: + branches: + - "**" + workflow_dispatch: + +jobs: + windows: + runs-on: windows-latest + continue-on-error: true # non-blocking until Windows support is declared stable + timeout-minutes: 45 + steps: + # Reproduce the Git for Windows default before checkout + - run: git config --global core.autocrlf true + + - uses: actions/checkout@v4 + + - name: Use Node LTS ✨ + uses: actions/setup-node@v4 + with: + node-version: lts/* + cache: npm + + - name: Check line endings + shell: bash + run: | + # Only *.cmd and *.bat may be checked out with CRLF (covers *.sh, Dockerfile and hooks) + crlf=$(git ls-files --eol | grep 'w/crlf' | grep -vE '\.(cmd|bat)$' || true) + if [ -n "$crlf" ]; then + echo "Files checked out with CRLF:" + echo "$crlf" + exit 1 + fi + + - name: Install dependencies 📦️ + if: ${{ !cancelled() }} + run: npm ci + + # The module tsconfig extends playground/nuxt-app/.nuxt/tsconfig.json + - name: Build playground + if: ${{ !cancelled() }} + run: cd playground/nuxt-app && npm ci && npm run build + + - name: Build + if: ${{ !cancelled() }} + run: npm run build + + - name: Lint + if: ${{ !cancelled() }} + run: npm run lint