From 627c52b40beabaae81d443ad7073ca52cb4a52ec Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Mon, 7 Sep 2026 22:44:11 +0000 Subject: [PATCH 01/22] chore(deps): update dependencies (#537) Co-authored-by: Renovate Bot --- .gitea/workflows/test.yaml | 2 +- package.json | 2 +- pnpm-lock.yaml | 832 +++++++++++++++++++++++++++++++++++-- pnpm-workspace.yaml | 1 - sites/docs/package.json | 6 +- 5 files changed, 791 insertions(+), 52 deletions(-) diff --git a/.gitea/workflows/test.yaml b/.gitea/workflows/test.yaml index e5efc5ee..623a35bb 100644 --- a/.gitea/workflows/test.yaml +++ b/.gitea/workflows/test.yaml @@ -94,7 +94,7 @@ jobs: body="$(printf '%s Preview: %s\n' "$marker" "$PREVIEW_URL")" fi - jq -n --arg body "$body" '{body: $body}' > patch.json + printf '%s' "$body" | jq -Rs '{body: .}' > patch.json curl --silent --show-error --fail --output /dev/null \ -X PATCH "$api" \ -H "Authorization: token $DEPLOY_TOKEN" \ diff --git a/package.json b/package.json index a241c1da..fe83a0f9 100644 --- a/package.json +++ b/package.json @@ -13,5 +13,5 @@ "engines": { "node": ">=22" }, - "packageManager": "pnpm@11.22.0" + "packageManager": "pnpm@12.2.1" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b4c29dee..eded0cdf 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,3 +1,104 @@ +--- +lockfileVersion: '9.0' + +importers: + + .: + configDependencies: {} + packageManagerDependencies: + pnpm: + specifier: 12.2.1 + version: 12.2.1 + +packages: + + '@pnpm/exe.darwin-arm64@12.2.1': + resolution: {integrity: sha512-efC1yfz2xbyHiMLrQAYtnoo5XP20LeAiYYcyL1962qQagZrMXIB0BoQYeZoPTLggLh0Q4MD7jpZUInU5fWxCgQ==} + cpu: [arm64] + os: [darwin] + + '@pnpm/exe.darwin-x64@12.2.1': + resolution: {integrity: sha512-0bloFmxrvYY5LYex5V6SZySwg+egBk0pOW+YUeOm9fiG2U1wv+qRVLBOUvIzLAeJE7vBlAzxUwXkQAYtr12n+Q==} + cpu: [x64] + os: [darwin] + + '@pnpm/exe.linux-arm64-musl@12.2.1': + resolution: {integrity: sha512-AZl7apVZC4TV1/vTp/bS16XUsHeqx9AHsU4V55joiGR+iR6vl+WF0WlGvGCTjqjICS4q/kThpgNrtG8aqQ9seQ==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@pnpm/exe.linux-arm64@12.2.1': + resolution: {integrity: sha512-S36+tMEGrPz3nwtfFU9kYxbHoi8sV7WJfMO9njEL4jRaShTNaLRERMAqyI2DUCiA5QCr6/a50lt4+pKCV2mCvw==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@pnpm/exe.linux-x64-musl@12.2.1': + resolution: {integrity: sha512-4MQClkAk1em55LFZJpeIqb7j+gEqCgX8yC42j9DFWL42q1uMX1e1tvTy2Dtd4NoWQqgdkLxOStZ+D9CYC+28ow==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@pnpm/exe.linux-x64@12.2.1': + resolution: {integrity: sha512-A/AlR71Leph7qgB3ThSU9yU/vLfre4HmP6nbt3/qt51fzAjQ0xuq7j+cw0f1yDskzOsGzmo5uD6ruefCwLK5uQ==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@pnpm/exe.win32-arm64@12.2.1': + resolution: {integrity: sha512-TEGUmroT6NGfo2O2+tHK9Zr1lhP1zLzpwx+QAQV19l8V4ljUoMfz8Os5V9zzNCtIpzyKcK7SuG7fkVbxFgRMzg==} + cpu: [arm64] + os: [win32] + + '@pnpm/exe.win32-x64@12.2.1': + resolution: {integrity: sha512-V2Q+AF8fCsw8/CC3bWF8kopOmH0aAjgk9m7H7uAQNulOYIJs9YJBiAlgByswmt+igV9axc4dBI//ZlK2NKpDcw==} + cpu: [x64] + os: [win32] + + pnpm@12.2.1: + resolution: {integrity: sha512-9Vymiqy561q2nGb4KKmK+JoyKGcDrvH42hMcp+q01nfzS/qF4YZGepGcB5nfi29KokD33CkZszsycxkBBBYmFg==} + engines: {node: '>=18.*'} + hasBin: true + +snapshots: + + '@pnpm/exe.darwin-arm64@12.2.1': + optional: true + + '@pnpm/exe.darwin-x64@12.2.1': + optional: true + + '@pnpm/exe.linux-arm64-musl@12.2.1': + optional: true + + '@pnpm/exe.linux-arm64@12.2.1': + optional: true + + '@pnpm/exe.linux-x64-musl@12.2.1': + optional: true + + '@pnpm/exe.linux-x64@12.2.1': + optional: true + + '@pnpm/exe.win32-arm64@12.2.1': + optional: true + + '@pnpm/exe.win32-x64@12.2.1': + optional: true + + pnpm@12.2.1: + optionalDependencies: + '@pnpm/exe.darwin-arm64': 12.2.1 + '@pnpm/exe.darwin-x64': 12.2.1 + '@pnpm/exe.linux-arm64': 12.2.1 + '@pnpm/exe.linux-arm64-musl': 12.2.1 + '@pnpm/exe.linux-x64': 12.2.1 + '@pnpm/exe.linux-x64-musl': 12.2.1 + '@pnpm/exe.win32-arm64': 12.2.1 + '@pnpm/exe.win32-x64': 12.2.1 + +--- lockfileVersion: '9.0' settings: @@ -12,7 +113,7 @@ importers: dependencies: astro: specifier: ^7.0.2 - version: 7.2.3(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0) + version: 7.2.10(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0) tinyglobby: specifier: 0.2.17 version: 0.2.17 @@ -23,11 +124,11 @@ importers: sites/docs: dependencies: '@astrojs/starlight': - specifier: 0.41.7 - version: 0.41.7(astro@7.2.3(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(supports-color@7.2.0)(typescript@6.0.3) + specifier: 0.41.11 + version: 0.41.11(astro@7.2.10(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(supports-color@7.2.0)(typescript@6.0.3) '@astrojs/starlight-docsearch': specifier: 0.7.0 - version: 0.7.0(@algolia/client-search@5.56.0)(@astrojs/starlight@0.41.7(astro@7.2.3(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(supports-color@7.2.0)(typescript@6.0.3))(search-insights@2.17.3) + version: 0.7.0(@algolia/client-search@5.56.0)(@astrojs/starlight@0.41.11(astro@7.2.10(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(supports-color@7.2.0)(typescript@6.0.3))(search-insights@2.17.3) '@gitea-docs/content-loader': specifier: workspace:* version: link:../../packages/content-loader @@ -35,14 +136,14 @@ importers: specifier: 1.5.2 version: 1.5.2 astro: - specifier: 7.2.3 - version: 7.2.3(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0) + specifier: 7.2.10 + version: 7.2.10(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0) sharp: - specifier: 0.35.3 - version: 0.35.3(@types/node@24.13.3) + specifier: 0.35.4 + version: 0.35.4(@types/node@24.13.3) starlight-openapi: specifier: 0.26.1 - version: 0.26.1(@astrojs/markdown-satteri@0.3.6)(@astrojs/starlight@0.41.7(astro@7.2.3(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(supports-color@7.2.0)(typescript@6.0.3))(astro@7.2.3(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(openapi-types@12.1.3) + version: 0.26.1(@astrojs/markdown-satteri@0.4.0)(@astrojs/starlight@0.41.11(astro@7.2.10(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(supports-color@7.2.0)(typescript@6.0.3))(astro@7.2.10(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(openapi-types@12.1.3) devDependencies: '@astrojs/check': specifier: 0.9.10 @@ -145,12 +246,24 @@ packages: cpu: [arm64] os: [darwin] + '@astrojs/compiler-binding-darwin-arm64@0.4.0': + resolution: {integrity: sha512-ZVUwHundaQyFNjE6uoa0usaC0WOCitDCLS/4mdb4rOiJXwVUuKJBMxI5WMzXLWmamsXtK/Z//ifLXvV5Yeh4Hw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + '@astrojs/compiler-binding-darwin-x64@0.3.2': resolution: {integrity: sha512-2lXOlzf8xb7jLomRsf/aswh61/NnGusynB2OwFkK6k4pmOtpfXMYnG0PLfXrEvxXYj69NdCnmUYXtHDd+JOOag==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] + '@astrojs/compiler-binding-darwin-x64@0.4.0': + resolution: {integrity: sha512-FI6G8AY8u6fR1SI/QRR5yGMwtvZwP34CDmZpZ5HwJGa50UM1VISTLhqkhV4a476pmgd25X1Aur2dqw6hUnrlKA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + '@astrojs/compiler-binding-linux-arm64-gnu@0.3.2': resolution: {integrity: sha512-BmU3kWj7qnLrd4vzm49zFEPJ5oFnn1tCT4Vt9hZbqdU5Cmb8GZl7fn6VFsnNfe7B18a2gIFtVzbLINtYl5kBjQ==} engines: {node: ^20.19.0 || >=22.12.0} @@ -158,6 +271,13 @@ packages: os: [linux] libc: [glibc] + '@astrojs/compiler-binding-linux-arm64-gnu@0.4.0': + resolution: {integrity: sha512-lB9gLFJK7m82EnjaU8nlRBEfcwGNeHidW3sSjODTUjMNaoewVuUz9fwwdY5M4jiSXIqWLH3yl6TX8FTDKA74Sw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [glibc] + '@astrojs/compiler-binding-linux-arm64-musl@0.3.2': resolution: {integrity: sha512-f0heT9ZZEseSu5bHCeb80eL2DH07ArE6U9xi1WT/PEusNjzPmEr3GJsjG1tRLo5VYUUYX7h3ScaqGmGrMOVGmw==} engines: {node: ^20.19.0 || >=22.12.0} @@ -165,6 +285,13 @@ packages: os: [linux] libc: [musl] + '@astrojs/compiler-binding-linux-arm64-musl@0.4.0': + resolution: {integrity: sha512-HPbvWqbxFxyaoQJhLxCaSjtYBx9KBo7JGVzEFZCmMl968a2PsSH0UfiODYgYPXofTOIsIH2aoCcrHXML0IA3ig==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [musl] + '@astrojs/compiler-binding-linux-x64-gnu@0.3.2': resolution: {integrity: sha512-M8fOUt0itRpqiGyoEA/ij184s8O+hqbCz3+YozRusOOM3osgGljpDThhbKAJjqh82wOo6FioQ4w8PBvU1XMD5Q==} engines: {node: ^20.19.0 || >=22.12.0} @@ -172,6 +299,13 @@ packages: os: [linux] libc: [glibc] + '@astrojs/compiler-binding-linux-x64-gnu@0.4.0': + resolution: {integrity: sha512-tQKolMxoJ/+0AmLWm1PmJ/i+z3i10ZU1bNuVjEDulCf48azEMtUNjTZgHJ5MPtpYRNc7dlETr8QujUfduzoC7Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [glibc] + '@astrojs/compiler-binding-linux-x64-musl@0.3.2': resolution: {integrity: sha512-/Kebk8sO6HnLeSd691JkaAPfN7CqR9/KEXmWvyNPkaKNGmj8rTZ/lf2uXtnPu92Lan84UrKdIKVPy1fSo2encQ==} engines: {node: ^20.19.0 || >=22.12.0} @@ -179,31 +313,63 @@ packages: os: [linux] libc: [musl] + '@astrojs/compiler-binding-linux-x64-musl@0.4.0': + resolution: {integrity: sha512-5v5YymudsxMHp3NBLCS8BUlu5CRqeLtWD9cKS/4nIhIEHCbpz9okmVV6I0HWqmBAPhWYcDa3vw/vltYPrOQCTA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [musl] + '@astrojs/compiler-binding-wasm32-wasi@0.3.2': resolution: {integrity: sha512-pUA6xbcOSB7DhfzIArB8BCAkFfAIqriiR7zl5zOStd6oU2G0kIKj+GUdGnyXyhfiv881Hffyk5tC0mR18sDjDw==} engines: {node: '>=14.0.0'} cpu: [wasm32] + '@astrojs/compiler-binding-wasm32-wasi@0.4.0': + resolution: {integrity: sha512-m/phuH3x3PREvv1OnkM44NoPh4MatUadix1fB1u5SvMLCyDTUZykDJbKnWf1cjnYmHdlB8HcjTjl6JrCqAIXcw==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + '@astrojs/compiler-binding-win32-arm64-msvc@0.3.2': resolution: {integrity: sha512-ESruf+6Qkl1trHUFxI6GSf6t52j8yN2kCNSzMWdzt7V/T09tFHrYzrVaJQohb2C9bJUH76pNvX6Zb51+xCQc9Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] + '@astrojs/compiler-binding-win32-arm64-msvc@0.4.0': + resolution: {integrity: sha512-B9zYf3okEY83kM8gydlpH2BHP00w4ifxPqlYlWrgTwuD6wnkrJDCwBlgy1q31cERjCJRXN1lrE2VmkLvFjv/6g==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + '@astrojs/compiler-binding-win32-x64-msvc@0.3.2': resolution: {integrity: sha512-wzzVrEbOwbsLWOdEbocskjMRx2aZPxJ7ZbmL+jnpBamFwmigm+2M/wzuM6JWncocgYwLic1csSpalBh96kQKXA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] + '@astrojs/compiler-binding-win32-x64-msvc@0.4.0': + resolution: {integrity: sha512-zB0Nrv0dGc0zZWPGDRmmETTPhDRqyZjAjk+gWMlVrJX5U89obpB3VUUE1ZiHxOCN5LQojeLK6O8L/dnoHolvNQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + '@astrojs/compiler-binding@0.3.2': resolution: {integrity: sha512-8w/9CWmYrAJJ8N0SY3O43ws2BgxoW6u3QsD8u2mE140lMYAlwh+tlNoUeSBq22wVheFuiBbR212l6ixZ2IIgCQ==} engines: {node: ^20.19.0 || >=22.12.0} + '@astrojs/compiler-binding@0.4.0': + resolution: {integrity: sha512-x2RjDUuWfwLNtc3mjAdSRInwqh/rqbLar9cm/5FOMbHvmYZB7yfKewzSclAxWjIZsypJDXv1lhaP2WG+P8TK3g==} + engines: {node: ^20.19.0 || >=22.12.0} + '@astrojs/compiler-rs@0.3.2': resolution: {integrity: sha512-xlx/T7JovIKduu4ucbTQUxQ5+Q8wxkHxhLjnZk3VlJbhbQ9RLvvuDk1p2YYFYFQ5y14dVm3FGGO4isQXa4F+Tg==} engines: {node: '>=22.12.0'} + '@astrojs/compiler-rs@0.4.0': + resolution: {integrity: sha512-koVikeon1kreEy+/JzLQRy3vzHHQVOjycs4degg4vFufKApZOwMZvSSAEztYNhmcQVfNVsVZZI4cEge3cexAbQ==} + engines: {node: '>=22.12.0'} + '@astrojs/compiler@2.13.1': resolution: {integrity: sha512-f3FN83d2G/v32ipNClRKgYv30onQlMZX1vCeZMjPsMMPl1mDpmbl0+N5BYo4S/ofzqJyS5hvwacEo0CCVDn/Qg==} @@ -213,6 +379,9 @@ packages: '@astrojs/internal-helpers@0.10.3': resolution: {integrity: sha512-HIx/t1NywcqSTFaVwZh15n8JsC3YQdCaJZDaTS/aurYTEvNiWDXUGS3Z9uQX3bFB+B1pCgN/nljckkzYTpHZ2w==} + '@astrojs/internal-helpers@0.11.0': + resolution: {integrity: sha512-3rzxJ+xbo0+8YyqOzLziIN32wmsHdCjEVz2sGOpRxJ+Ben/KiLph4ItxBy1abEL+E8fkRzqjg0rfXmaHJGw9JA==} + '@astrojs/language-server@2.16.13': resolution: {integrity: sha512-ekOa+CYprEq5n4EJC1qTIAhLk49HZIUQuFwrEuF+3JK/pdMaYnWoREFUI2A0KEPOJiFA2kamBzKzbYljDvUxLg==} hasBin: true @@ -231,6 +400,9 @@ packages: '@astrojs/markdown-satteri@0.3.6': resolution: {integrity: sha512-kkeWP4Lh6Do/qz2R0DIAtPWCh6WPr1J4UrzDItVmHMK1HwyLHxG4JxM8uBNavhD7ivGOO9BUTsAP5D7ppa68CA==} + '@astrojs/markdown-satteri@0.4.0': + resolution: {integrity: sha512-wykOOW9KsUVcZweOpY/CeXpdKcCKZy6fQbdcteWFuI75+sQCiqxYM7VKsGa5b+aGl3cYQscFY37rsbbyal5MRw==} + '@astrojs/mdx@7.0.5': resolution: {integrity: sha512-wEM/HH1RiEntyPVagdiF+yArzfcYLKBB0C1RZspVidKZ97rRMbaqP1Nbl/GR0sJs8zwaceqxRymw8aOKKJRdYw==} engines: {node: '>=22.12.0'} @@ -253,8 +425,8 @@ packages: peerDependencies: '@astrojs/starlight': '>=0.38.0' - '@astrojs/starlight@0.41.7': - resolution: {integrity: sha512-579VJuZgo20UpNQPm9EIez5W3DFSrD16uiV2YX6rUlpLtjgKSdnc69TxVTZXn4AtI2B731TI2qhW1O3K+vwtrQ==} + '@astrojs/starlight@0.41.11': + resolution: {integrity: sha512-hM95Mbsl4l60SBwaNQA/HTxpOLGfeB5EfR9qY3kr0SsAVKUspCssjO0RVBsLiPAE6EA5xuORcCoz/Q6DTX+MuQ==} peerDependencies: '@astrojs/markdown-remark': ^7.2.0 astro: ^7.0.2 @@ -294,50 +466,99 @@ packages: resolution: {integrity: sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==} engines: {node: '>=6.9.0'} + '@bruits/satteri-darwin-arm64@0.10.5': + resolution: {integrity: sha512-27KTVl4TJkVahMy/ohyA7qd4938G5UNneFUz/PsScYfpIhj0IVAS23mpcJXdPF44sa6nva198lmV/cKIb2YPyA==} + cpu: [arm64] + os: [darwin] + '@bruits/satteri-darwin-arm64@0.9.5': resolution: {integrity: sha512-iw4nZgx9v30lWo/MTngQqi1pI78KI0DnkSm+lVJGYdmPLgAyDNJigVhpG42/Iq55A6c1Ll8q66ljyyRiQUxwow==} cpu: [arm64] os: [darwin] + '@bruits/satteri-darwin-x64@0.10.5': + resolution: {integrity: sha512-IjnLe3nKspq6qaeqGgjT7MT8VrTV74yWRlaag7ZdNsI8TDAYZ0iPxMCo+9KQZHUk5EyVB+reBI/PFWL5KuFw9Q==} + cpu: [x64] + os: [darwin] + '@bruits/satteri-darwin-x64@0.9.5': resolution: {integrity: sha512-6T26Z5Kf3cFW2PSlk9p7zT7yVxvuBSiJvYyz9u8KjYwMTqZyIDOj2wDyNpxKV4+6yUVG7rddq2QwvG/8LJA2+Q==} cpu: [x64] os: [darwin] + '@bruits/satteri-linux-arm64-gnu@0.10.5': + resolution: {integrity: sha512-glkYXZCJywjP13v67eAyAMSJdF+ncvEbYvgi/wOtffL9tQ27lr/zsyzUfgs+ovjJ9d8JNQKiXeiArJcX8PJL9w==} + cpu: [arm64] + os: [linux] + libc: [glibc] + '@bruits/satteri-linux-arm64-gnu@0.9.5': resolution: {integrity: sha512-u51id17uJwNEMK9nBlICsq6U31c+XVqQueVBkwRIzZG+gMpS8TOJctt5h5Wz33Z8xnMdTd+adtACVz0yHgGuOA==} cpu: [arm64] os: [linux] libc: [glibc] + '@bruits/satteri-linux-arm64-musl@0.10.5': + resolution: {integrity: sha512-yWdgG1g17Nh2QyGVlFUxGRa3FEFwiMcpZEyMNWkbM3deC94cmVc+/i9OuyFpdKuWo3GkgoCtYVOoxk1uCnCZIA==} + cpu: [arm64] + os: [linux] + libc: [musl] + '@bruits/satteri-linux-arm64-musl@0.9.5': resolution: {integrity: sha512-v39HxiwGC5Rqm01HksP6+5Y+xKLPlsuVFgIgpEAo+SiQ22c+mJVhS3u7Z6ePAKdhL5NJoK1xq70kLz3L13AhpQ==} cpu: [arm64] os: [linux] libc: [musl] + '@bruits/satteri-linux-x64-gnu@0.10.5': + resolution: {integrity: sha512-FVaLoPT1fBgGl0J+AYebyyXJYBachGl8Oyyrf1lye4RTqCB4S0Gwkj1uM9RJyThUOvx5VUmAT1CnNh1SFHA+kw==} + cpu: [x64] + os: [linux] + libc: [glibc] + '@bruits/satteri-linux-x64-gnu@0.9.5': resolution: {integrity: sha512-F3uO8uFp3pAP5ZGXttwvh57GS7s0lL953tnNdyI2gRyP4kOOkp6pyGojNJzCjkDvWI2Cvb9iNrKok3aqQPauAw==} cpu: [x64] os: [linux] libc: [glibc] + '@bruits/satteri-linux-x64-musl@0.10.5': + resolution: {integrity: sha512-EHpVAx2bqW3GINHTKkljtxVfQmVDGWIuwOYOP5YghTj+0PkBa2o8oKPRtQ9Kbsr1Fye8jtUcDjhwj2jMNugZKg==} + cpu: [x64] + os: [linux] + libc: [musl] + '@bruits/satteri-linux-x64-musl@0.9.5': resolution: {integrity: sha512-bicEqglLlz++mWyADaZoP0JY20s4vDfLjaPYgQqC+NI4zZLTOOg1T4GB8aqtc822Pqji8SQBmSrTb7CrP8i08Q==} cpu: [x64] os: [linux] libc: [musl] + '@bruits/satteri-wasm32-wasi@0.10.5': + resolution: {integrity: sha512-ypz8c/Zmipxp4IoeDa228Gstv6TLzVmNs3yC6wKCoNSOjx1iwpgzu87Y3hTkXFdwChVGU85qeUDuOIarGUZQLw==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + '@bruits/satteri-wasm32-wasi@0.9.5': resolution: {integrity: sha512-zauAuMwfPnKPUkd4AFixRFpXdgKwP2mKgxrIIo2gJzW0/ZneF9dbHnLkojSpaBnCCp7VUL1hIi5WWZvB1CqmAQ==} engines: {node: '>=14.0.0'} cpu: [wasm32] + '@bruits/satteri-win32-arm64-msvc@0.10.5': + resolution: {integrity: sha512-siTV88nb0LRqNpkL2gXboqCwVdq95sLtzMHS1/3eONV2gLbB3NAK46wmSMvCO/yquBvI2lvaFIfd8P12ecsxBw==} + cpu: [arm64] + os: [win32] + '@bruits/satteri-win32-arm64-msvc@0.9.5': resolution: {integrity: sha512-SrfE7NEsgZjBvU3c+RR6oQRu0ToXY5uVJEbieXEF0YTctIV2zAVlbaMjWLts074QCgh3a+XHWkR/lWh2VH2LUg==} cpu: [arm64] os: [win32] + '@bruits/satteri-win32-x64-msvc@0.10.5': + resolution: {integrity: sha512-C3IfPvfvMXmlzBxaMPKFS1XiuV9pu2mC7YqkPk7PSvTgPZ8gbdASIpHpztDLvTTQjqZ0z1Ol8tK5X+V6XXC0wQ==} + cpu: [x64] + os: [win32] + '@bruits/satteri-win32-x64-msvc@0.9.5': resolution: {integrity: sha512-5Kw9ZAtTGS8WHizyn+CJhjjfIQrw+7jcZodpmpXJjefnO15M8UexIi6JR2E5thyvsmHyhL6ZDDMUNR4bKJPd4g==} cpu: [x64] @@ -597,75 +818,150 @@ packages: cpu: [arm64] os: [darwin] + '@img/sharp-darwin-arm64@0.35.4': + resolution: {integrity: sha512-Uhfl4V4lhP2nbUVF9+hyH1+luj86f1gUFeo8ALYxFoULoU+G87D43BfeMP8XHsk9boxAnCY/bf2EHwhA7MuGsA==} + engines: {node: '>=20.9.0'} + cpu: [arm64] + os: [darwin] + '@img/sharp-darwin-x64@0.35.3': resolution: {integrity: sha512-Xo+5uFBtLN0BKqieTxiFzFPQAUlBbbH5iBKyRX/z1JrbnYsHTfKJnUfL8+p2TPXr1pXqao4eeL4Rl144uDpK9w==} engines: {node: '>=20.9.0'} cpu: [x64] os: [darwin] + '@img/sharp-darwin-x64@0.35.4': + resolution: {integrity: sha512-hWniXY3bG5qKpkKrAwPe4y+VTPmf086YQAnkxWh7uA1YrlRouWGa0M0Mxj3ZjnXFkv7/TD1bTy9lGUK26vRvWw==} + engines: {node: '>=20.9.0'} + cpu: [x64] + os: [darwin] + '@img/sharp-freebsd-wasm32@0.35.3': resolution: {integrity: sha512-lUxcqWIj2wMQ9BrwNjngcr1gWUr5xgaGThBRqPPalIC2n67Cqj1uPh8NnA/ZhAg8hUbKl+kVHKwgUIwe6ZYPrg==} engines: {node: '>=20.9.0'} os: [freebsd] + '@img/sharp-freebsd-wasm32@0.35.4': + resolution: {integrity: sha512-lIsKw/BU+kjB4eZjxrYrZmwOJYi3Ajrv66iAlBmUPyKc3HpnloevB1g3wxGD9P/5BbQ1brBGl65VRRrCvQDEqA==} + engines: {node: '>=20.9.0'} + os: [freebsd] + '@img/sharp-libvips-darwin-arm64@1.3.2': resolution: {integrity: sha512-9J6ypZFpQBj4YnePGoq/S38w6nz+vqg5WZLrLGY4YuSemdMq47GMLBPO42MzwdGwpg/agZ7xzZcFHa48xlywfg==} cpu: [arm64] os: [darwin] + '@img/sharp-libvips-darwin-arm64@1.3.3': + resolution: {integrity: sha512-suTBPTDGrI9WodccaDdwZItTSaBYASlBk1NSfElSHrUfzu3szG6lvIF58+WiFvnfzuK8ZBFS5zE00PxqxnRiPg==} + cpu: [arm64] + os: [darwin] + '@img/sharp-libvips-darwin-x64@1.3.2': resolution: {integrity: sha512-m2pW1n6cns9VaubNwsZ+c3CRYjxNQWgJ5gPlnL1nbBcpkBvFm6SCFN5o0psFHI8w9n11NKhFkeEDns98tiqbEw==} cpu: [x64] os: [darwin] + '@img/sharp-libvips-darwin-x64@1.3.3': + resolution: {integrity: sha512-FVJZ5mITMobmXIz/hPDTw0EintTW5H3WfrxwLqEqjiIihlu+hVRyGrFQ60xl0Lxn7Bt3zdpevPaQi0HEzqz9fw==} + cpu: [x64] + os: [darwin] + '@img/sharp-libvips-linux-arm64@1.3.2': resolution: {integrity: sha512-dqVSFynCox4C/J8kT16V7SIFAns0IjgLwkvYT7p8LQVmJ5OS5b6tI9IGflxTeuBS//zXeFIUbwt5dwxyZ17cnA==} cpu: [arm64] os: [linux] libc: [glibc] + '@img/sharp-libvips-linux-arm64@1.3.3': + resolution: {integrity: sha512-0DaL0A6Xu6sQSQFwe4iVCrKWU2cCTItnRsYsCdxAMm9NF6twAA9BKnoqy4hqz4+azQ0JHuA26qiUKsf1XJ/v5A==} + cpu: [arm64] + os: [linux] + libc: [glibc] + '@img/sharp-libvips-linux-arm@1.3.2': resolution: {integrity: sha512-1eMLzy92I4J6rmi4mAT8yC3HxOtniyGELlzGbNMLLeqe052ahFQ0h6LFq+lh5DsDIdYViIDst08abvSbcEdLXQ==} cpu: [arm] os: [linux] libc: [glibc] + '@img/sharp-libvips-linux-arm@1.3.3': + resolution: {integrity: sha512-3rbU4vqXXc3hY/OiXdl52xZvT0F1yEngWfvqudtPJg/KkyiaQw2DRsFrNzpmLvfavbwOq3qXn36GP8obHRULQA==} + cpu: [arm] + os: [linux] + libc: [glibc] + '@img/sharp-libvips-linux-ppc64@1.3.2': resolution: {integrity: sha512-3z0NHDxD6n5I9gc05U1eW1AyRm+Gznzq3naMrthPNqE6oYykcogW0l/jfpJdjYnuNl8R7yI9pNbE1XiUeyq0Aw==} cpu: [ppc64] os: [linux] libc: [glibc] + '@img/sharp-libvips-linux-ppc64@1.3.3': + resolution: {integrity: sha512-cdn1OvUBwsXhbC0zSzJnNzf5MZ/mTrobawDvNXBTxe8VtqKAm0sRuEY2Evzovb/w9JMk4TvRxqt1mekSuJz64w==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + '@img/sharp-libvips-linux-riscv64@1.3.2': resolution: {integrity: sha512-bsb4rI+NldGOsXuej2r8OdSS8+zXDVaCWxyWrcv6kneTOlgAHtZABRzBBCwdsPiD90J4myNJuHpg6kA20ImW/w==} cpu: [riscv64] os: [linux] libc: [glibc] + '@img/sharp-libvips-linux-riscv64@1.3.3': + resolution: {integrity: sha512-HjPVx7yKz+0lqdhDlTw1tt90wamBoxhiXpvl1XZpJLiHH4RCJ5yDTqH+VlYPv2fwFs89JFw4c1IexYOcQUi4IQ==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + '@img/sharp-libvips-linux-s390x@1.3.2': resolution: {integrity: sha512-/ABshyj8gCpyIrNXnHn4LorDJ0HHm1VhXPBlxZ8zAtfVPAaSafXPGn+sUSIRiwaSBy0mmFjSjiXI5mkcwdChKQ==} cpu: [s390x] os: [linux] libc: [glibc] + '@img/sharp-libvips-linux-s390x@1.3.3': + resolution: {integrity: sha512-neWLh+3yCNThxnfy3c4BbVBeGgt9aftno+XbT56iK28RgeDs3UOFWviLWlUu0bArYVYJaFDK+RRohbicUNCm8Q==} + cpu: [s390x] + os: [linux] + libc: [glibc] + '@img/sharp-libvips-linux-x64@1.3.2': resolution: {integrity: sha512-ITPEtgffGJ0S6G9dRyw/366tJQqFRcHWPHhC+Stpg3Z8AEMrDrTr2lhdz4f/Y/HMbRh//7Z5mBzEpVdi62Oc3w==} cpu: [x64] os: [linux] libc: [glibc] + '@img/sharp-libvips-linux-x64@1.3.3': + resolution: {integrity: sha512-4vKmvAst9nrowcqquKFAyZJUDolUaIp8uRiN0mWFguJ1IplC9/pitXtlnnlU4aa/eJw3J7i67V+pwUL+wZGdsA==} + cpu: [x64] + os: [linux] + libc: [glibc] + '@img/sharp-libvips-linuxmusl-arm64@1.3.2': resolution: {integrity: sha512-zE9EdiUzUmg5mDT5a1rk5fYJ6GWPloTwWBYDS14naqHsL+EaMpDj1AWnpLgh3u0YCORv2Tt50wrcrpYqkP97Kw==} cpu: [arm64] os: [linux] libc: [musl] + '@img/sharp-libvips-linuxmusl-arm64@1.3.3': + resolution: {integrity: sha512-Y9kQaLMuNoB0bPYOOdcZMaseNrFpPodIWWMrx+CZyydf2xn68j9WYc6sWWRrDwNkzCQjKYfc68L7jKjGlHMibw==} + cpu: [arm64] + os: [linux] + libc: [musl] + '@img/sharp-libvips-linuxmusl-x64@1.3.2': resolution: {integrity: sha512-m0lrLiUt+lBYnCFr8qV/65yMR4E/c7/wf78I5eKTdkEakFAlZ9QlzEM3QIhhAwVeUhLAHLcCq7a7Vszq/oFNZQ==} cpu: [x64] os: [linux] libc: [musl] + '@img/sharp-libvips-linuxmusl-x64@1.3.3': + resolution: {integrity: sha512-fj8Mv0HHfD1Rr+4I68+3agJynxDWtBFgicTbSOb9Bke6pIwzGcJ+RX/yHjmiEGFMCavY/dxvem7MyNaJF+wDiw==} + cpu: [x64] + os: [linux] + libc: [musl] + '@img/sharp-linux-arm64@0.35.3': resolution: {integrity: sha512-QgKDspHPnrU+GQ55XPhGwyhC8acLVOOSyAvo1oVfFmrIXLkDNmGWzAfDZ4xK8oSA1qBQrALcHX0G5UZni/SuFQ==} engines: {node: '>=20.9.0'} @@ -673,6 +969,13 @@ packages: os: [linux] libc: [glibc] + '@img/sharp-linux-arm64@0.35.4': + resolution: {integrity: sha512-De4jpEnAU8Hd5oT0j1G3uL4ZvTuipVMn7YC6vPaJhy6/7EwEae0SVAoBrUMYQbkLGDm85taVWwuPc1a44LTzCQ==} + engines: {node: '>=20.9.0'} + cpu: [arm64] + os: [linux] + libc: [glibc] + '@img/sharp-linux-arm@0.35.3': resolution: {integrity: sha512-affVWCTLooy8TSxbDx2qkzuDeaWLNVBA+P//FNBirHsXpP2fuBhk5AuboYUnrDnzoXes8GFjpTx0SBFOCRg+FA==} engines: {node: '>=20.9.0'} @@ -680,6 +983,13 @@ packages: os: [linux] libc: [glibc] + '@img/sharp-linux-arm@0.35.4': + resolution: {integrity: sha512-7OAS8gI0EReKGVN2HssHlM6umJgxF5VI3xN0p9FA91p/YO+ou5hiNghLdZ5BEHztwaaK5+bLKRf8x/o2L2nk9A==} + engines: {node: '>=20.9.0'} + cpu: [arm] + os: [linux] + libc: [glibc] + '@img/sharp-linux-ppc64@0.35.3': resolution: {integrity: sha512-sMd8rDxmpLOwv/7N44klFjOD5DUO7FLdjiXDI0hoxYaf7Ar262dQIEkosE98bps+5HPLtp/EvNqeqQtOycP/IA==} engines: {node: '>=20.9.0'} @@ -687,6 +997,13 @@ packages: os: [linux] libc: [glibc] + '@img/sharp-linux-ppc64@0.35.4': + resolution: {integrity: sha512-2oYZJeIl4kCcMGk4ouZVjnkCtFrpQFlNEtJ6GbxzhHQchwH0NH/qEb9ykmOl29dqwMq+JhFdZn+1ak2FKhI9fQ==} + engines: {node: '>=20.9.0'} + cpu: [ppc64] + os: [linux] + libc: [glibc] + '@img/sharp-linux-riscv64@0.35.3': resolution: {integrity: sha512-0Eob78yjlYPfL5vMNWAW55l3R9Y6BQS/gOfe0ZcP9mEz9ohhKSt4im1hayiknXgf8AWrFqMvJcKIdmLmEe7yeQ==} engines: {node: '>=20.9.0'} @@ -694,6 +1011,13 @@ packages: os: [linux] libc: [glibc] + '@img/sharp-linux-riscv64@0.35.4': + resolution: {integrity: sha512-cPbNChoRURAWdebDIHSenxRpgEdy7JkPydSnUxRm9VvKD7m0/xVaR/8Fzlu81pk5nHEvHH87UZUA7cTtwnbJSA==} + engines: {node: '>=20.9.0'} + cpu: [riscv64] + os: [linux] + libc: [glibc] + '@img/sharp-linux-s390x@0.35.3': resolution: {integrity: sha512-KgAxQ0DxpNOq1rG2t5cgTgShJFGSuU7XO45cqC+1NVOuZnP6tlgZRuSYOfNupGkHID0o3cJOsw4DVeJpMovcGw==} engines: {node: '>=20.9.0'} @@ -701,6 +1025,13 @@ packages: os: [linux] libc: [glibc] + '@img/sharp-linux-s390x@0.35.4': + resolution: {integrity: sha512-RY0JFY8Fd6RonCBtHz+DvadaPkXDSI1AUn6yWL9TipqkZ1vY8w8evqdgyDFnkm4/K1ve1TvZiaePP5oSd4+WVQ==} + engines: {node: '>=20.9.0'} + cpu: [s390x] + os: [linux] + libc: [glibc] + '@img/sharp-linux-x64@0.35.3': resolution: {integrity: sha512-8pqvxubL2PGdhlPy6GLqzDYMUjyRmKAwKHYKixpdJYBUK7PJ0C029XdsnpFIdgRZG68fZiGdHVWcKPvtiPB4cA==} engines: {node: '>=20.9.0'} @@ -708,6 +1039,13 @@ packages: os: [linux] libc: [glibc] + '@img/sharp-linux-x64@0.35.4': + resolution: {integrity: sha512-9qvvEAuk8k89TfWUoX2htWjbAMX8p+NxCppjpcg5k6xMsjhBQPTsoIh36h9Qde4WRuGpJeYnOjdosDn/cnv+OA==} + engines: {node: '>=20.9.0'} + cpu: [x64] + os: [linux] + libc: [glibc] + '@img/sharp-linuxmusl-arm64@0.35.3': resolution: {integrity: sha512-Vz0iQjzzcSX3HCbfwFfCSG/9SCIqyO0mH2sXyiHaAYfBk0cRsCWXRyQYX0ovCK/PAQBbTzQ0dsPQHh5MAFL59w==} engines: {node: '>=20.9.0'} @@ -715,6 +1053,13 @@ packages: os: [linux] libc: [musl] + '@img/sharp-linuxmusl-arm64@0.35.4': + resolution: {integrity: sha512-KB5jxpfWQTr0nc3xdHtWChdbifHrBGsd2SM62Eyxrl8afikm+f5qGBU75SJIZBT/S1MC8XyacdlXBMSWq6OURA==} + engines: {node: '>=20.9.0'} + cpu: [arm64] + os: [linux] + libc: [musl] + '@img/sharp-linuxmusl-x64@0.35.3': resolution: {integrity: sha512-6O1NPKcDVj9QEdg7Hx549EX8U0rp6yXQERqru6yRN7fGBn32UvIRJUlWnk+8xDCiG76hXVBbX82NZ/ZKr0euIg==} engines: {node: '>=20.9.0'} @@ -722,33 +1067,67 @@ packages: os: [linux] libc: [musl] + '@img/sharp-linuxmusl-x64@0.35.4': + resolution: {integrity: sha512-f+eZJZIQNEEd26RPSW+76chwOf1XtA2Y/O+5ocVyLliHkeih3e+jhLVBdNTd2rS3IbNXK8+ug93Vf5ZXtF5Lxg==} + engines: {node: '>=20.9.0'} + cpu: [x64] + os: [linux] + libc: [musl] + '@img/sharp-wasm32@0.35.3': resolution: {integrity: sha512-cZ0XkcYGpHZkqW6iCkqTcmUC0CD9DhD5d/qeZlZkfRBn6GnHniZXLUo5+9xw8Iv76YE6LQFN9YNBlKREcCG76w==} engines: {node: '>=20.9.0'} + '@img/sharp-wasm32@0.35.4': + resolution: {integrity: sha512-zQnl4Kwp7Q6NHsENtU2T/00Zi+w3AQNwz3+UaTyVBy2FpXrzXzGjndpK61onhZjRtRpQXxCTeqw19bVyXOh7jA==} + engines: {node: '>=20.9.0'} + '@img/sharp-webcontainers-wasm32@0.35.3': resolution: {integrity: sha512-2rnq7bX3NzeR2T4YWgz8qiG4h3TSdMe+vN1iQXpJleSJ3SM5zQ8Fy2SyyXAWlbxpEZ2Y+Z4u1BePgJEYbSy80Q==} engines: {node: '>=20.9.0'} cpu: [wasm32] + '@img/sharp-webcontainers-wasm32@0.35.4': + resolution: {integrity: sha512-ESfNkywmCfPNyaZjxooddJQiQ+l/nTpGEOGthxiLnIHXC/CmcBixnfwUleX9mCz9ovrUUvKMap/pm8RYbzfwaA==} + engines: {node: '>=20.9.0'} + cpu: [wasm32] + '@img/sharp-win32-arm64@0.35.3': resolution: {integrity: sha512-4bPwFdMbeC4JQ8L8LOyWp6nsHcboP5fxkp6iPOXz2Vg49R42TuMs2whkJ5OAP4/Ul035qOzy0AecOF9VOscn4w==} engines: {node: '>=20.9.0'} cpu: [arm64] os: [win32] + '@img/sharp-win32-arm64@0.35.4': + resolution: {integrity: sha512-iNdlBX9gLVvqe2I3uIJSIKTq6wckP/DYxZtcqxm09x5Gi24DnFBmPAWZmr60ZyYMG0xlzo6goG3670ar+RXvRw==} + engines: {node: '>=20.9.0'} + cpu: [arm64] + os: [win32] + '@img/sharp-win32-ia32@0.35.3': resolution: {integrity: sha512-r53mXsBN6lFUDiST764SvgwUdHAqM4rPAiDzAmf4fLoB6X/rkfyTrLCg6+g17wJJiCmB3JYgHuUldCWUIRFSXw==} engines: {node: ^20.9.0} cpu: [ia32] os: [win32] + '@img/sharp-win32-ia32@0.35.4': + resolution: {integrity: sha512-kqRsbaa5CS6KHlpxnN7WhE6vAAugXyZButpRdvDWetlv6Qv4N9WTcrWzF7tXfB9T7MsoadqdI8hmwLq6UlLvtw==} + engines: {node: ^20.9.0} + cpu: [ia32] + os: [win32] + '@img/sharp-win32-x64@0.35.3': resolution: {integrity: sha512-D4y1vNeZrIIJCN+uHaWVtH86B+aCrdMYYjicy9pXHvbGZeGYLLSd3wdVuC37FxVXlU1ARsk84eKWfWMXGYEqvA==} engines: {node: '>=20.9.0'} cpu: [x64] os: [win32] + '@img/sharp-win32-x64@0.35.4': + resolution: {integrity: sha512-XtmnYhBcrORsJ4XJngyzr/EWP0hRZLAZRFaApdKuviyqF78+ylxh2y06ZmtULAMOnObJ3ucpN0AcwSWnMowTRg==} + engines: {node: '>=20.9.0'} + cpu: [x64] + os: [win32] + '@jridgewell/sourcemap-codec@1.5.5': resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} @@ -762,6 +1141,13 @@ packages: '@emnapi/core': ^1.7.1 || ^2.0.0-alpha.3 '@emnapi/runtime': ^1.7.1 || ^2.0.0-alpha.3 + '@napi-rs/wasm-runtime@1.2.3': + resolution: {integrity: sha512-UMduMbqO5s5zF2NkNacMT/yK5Y5QiKvWr2+50bzIIxFDwVJ2h49b+oyjaCGPhJxd2/gC2x39EHv/gHVuu36x2Q==} + engines: {node: ^20.19.0 || ^22.13.0 || >=23.5.0} + peerDependencies: + '@emnapi/core': ^1.7.1 || ^2.0.0-alpha.4 + '@emnapi/runtime': ^1.7.1 || ^2.0.0-alpha.4 + '@oslojs/encoding@1.1.0': resolution: {integrity: sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ==} @@ -1111,6 +1497,16 @@ packages: peerDependencies: astro: ^4.0.0-beta || ^5.0.0-beta || ^3.3.0 || ^6.0.0-beta || ^7.0.0 + astro@7.2.10: + resolution: {integrity: sha512-uPtD+nK6kQXugyq4kiMPwj9OI3Sae6HSerA5X+fuv2CPaDwxmokFPPFlGRKIAXH0QAKu+zot2q6yrLG61wFmqg==} + engines: {node: '>=22.12.0', npm: '>=9.6.5', pnpm: '>=7.1.0'} + hasBin: true + peerDependencies: + '@astrojs/markdown-remark': ^7.3.0 + peerDependenciesMeta: + '@astrojs/markdown-remark': + optional: true + astro@7.2.3: resolution: {integrity: sha512-CDf55Cw2nOev5BAM72yn7JQMpK/ByTY5tLSybbHbtZNSiMKk0OeyvCjA2foEUXfHXbATpHQQPBgfuXL8PdofcA==} engines: {node: '>=22.12.0', npm: '>=9.6.5', pnpm: '>=7.1.0'} @@ -1293,6 +1689,10 @@ packages: resolution: {integrity: sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==} engines: {node: '>=0.3.1'} + diff@9.0.0: + resolution: {integrity: sha512-svtcdpS8CgJyqAjEQIXdb3OjhFVVYjzGAPO8WGCmRbrml64SPw/jJD4GoE98aR7r25A0XcgrK3F02yw9R/vhQw==} + engines: {node: '>=0.3.1'} + direction@2.0.1: resolution: {integrity: sha512-9S6m9Sukh1cZNknO1CWAr2QAWsbKLafQiyM5gZ7VgXHeuaoUwffKN4q6NC4A/Mf9iiPlOXQEKW/Mv/mh9/3YFA==} hasBin: true @@ -1433,6 +1833,10 @@ packages: picomatch: optional: true + find-proc@0.1.0: + resolution: {integrity: sha512-OaOpEYv2PiQ7SQ5LIrl+deA1XaWcxEjnpM6VuWXTUvn+teIXxeFTLDmu18/zDQpFmHN4o3oDBX+BT0AGwEhemg==} + engines: {node: ^20.19.0 || >=22.12.0} + find-process@2.1.1: resolution: {integrity: sha512-SrQDx3QhlmHM90iqn9rdjCQcw/T+WlpOkHFsjoRgB+zTpDfltNA1VSNYeYELwhUTJy12UFxqjWhmhOrJc+o4sA==} hasBin: true @@ -2206,6 +2610,9 @@ packages: engines: {node: ^20.19.0 || >=22.12.0} hasBin: true + satteri@0.10.5: + resolution: {integrity: sha512-Ao1LKpAEa9Wdg0otgbVKViZHEq9ebdXe4DMrp3s9vQAU0HNIuHnFEuMuOcm0ZIXyV0Yzxj91NvhLpvXZJO/5ZQ==} + satteri@0.9.5: resolution: {integrity: sha512-ZuWVl+vnM64y+/TtX8Kosv2c00W+hLQiiwnEL6H0UKVVrxFqMw4D2CJHHQaouVd89OAhtBBfjWLqhKi3TVUV4w==} @@ -2230,6 +2637,15 @@ packages: '@types/node': optional: true + sharp@0.35.4: + resolution: {integrity: sha512-n++8XWcj+jCOr2IOl7h8LbKnGBDY4aPbmprMONBNFdn0ImXqpGVv5zliDs0V9HbmbCQLpbuo2ej9rAoOQTvMDA==} + engines: {node: '>=20.9.0'} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true + shiki@4.4.2: resolution: {integrity: sha512-P8F/dFhRevaw2uSdeIYlq/5SXZNY85DPtmXQ947gD1Zj2JqO5AkNvVVBar0Me9JkFx3uzVud/qOtP5ek9NEQGA==} engines: {node: '>=20'} @@ -2835,22 +3251,34 @@ snapshots: - prettier - prettier-plugin-astro - '@astrojs/compiler-binding-darwin-arm64@0.3.2': + '@astrojs/compiler-binding-darwin-arm64@0.3.2': {} + + '@astrojs/compiler-binding-darwin-arm64@0.4.0': optional: true - '@astrojs/compiler-binding-darwin-x64@0.3.2': + '@astrojs/compiler-binding-darwin-x64@0.3.2': {} + + '@astrojs/compiler-binding-darwin-x64@0.4.0': optional: true - '@astrojs/compiler-binding-linux-arm64-gnu@0.3.2': + '@astrojs/compiler-binding-linux-arm64-gnu@0.3.2': {} + + '@astrojs/compiler-binding-linux-arm64-gnu@0.4.0': optional: true - '@astrojs/compiler-binding-linux-arm64-musl@0.3.2': + '@astrojs/compiler-binding-linux-arm64-musl@0.3.2': {} + + '@astrojs/compiler-binding-linux-arm64-musl@0.4.0': optional: true - '@astrojs/compiler-binding-linux-x64-gnu@0.3.2': + '@astrojs/compiler-binding-linux-x64-gnu@0.3.2': {} + + '@astrojs/compiler-binding-linux-x64-gnu@0.4.0': optional: true - '@astrojs/compiler-binding-linux-x64-musl@0.3.2': + '@astrojs/compiler-binding-linux-x64-musl@0.3.2': {} + + '@astrojs/compiler-binding-linux-x64-musl@0.4.0': optional: true '@astrojs/compiler-binding-wasm32-wasi@0.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)': @@ -2859,12 +3287,23 @@ snapshots: transitivePeerDependencies: - '@emnapi/core' - '@emnapi/runtime' + + '@astrojs/compiler-binding-wasm32-wasi@0.4.0(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)': + dependencies: + '@napi-rs/wasm-runtime': 1.2.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3) + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' optional: true - '@astrojs/compiler-binding-win32-arm64-msvc@0.3.2': + '@astrojs/compiler-binding-win32-arm64-msvc@0.3.2': {} + + '@astrojs/compiler-binding-win32-arm64-msvc@0.4.0': optional: true - '@astrojs/compiler-binding-win32-x64-msvc@0.3.2': + '@astrojs/compiler-binding-win32-x64-msvc@0.3.2': {} + + '@astrojs/compiler-binding-win32-x64-msvc@0.4.0': optional: true '@astrojs/compiler-binding@0.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)': @@ -2882,6 +3321,21 @@ snapshots: - '@emnapi/core' - '@emnapi/runtime' + '@astrojs/compiler-binding@0.4.0(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)': + optionalDependencies: + '@astrojs/compiler-binding-darwin-arm64': 0.4.0 + '@astrojs/compiler-binding-darwin-x64': 0.4.0 + '@astrojs/compiler-binding-linux-arm64-gnu': 0.4.0 + '@astrojs/compiler-binding-linux-arm64-musl': 0.4.0 + '@astrojs/compiler-binding-linux-x64-gnu': 0.4.0 + '@astrojs/compiler-binding-linux-x64-musl': 0.4.0 + '@astrojs/compiler-binding-wasm32-wasi': 0.4.0(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3) + '@astrojs/compiler-binding-win32-arm64-msvc': 0.4.0 + '@astrojs/compiler-binding-win32-x64-msvc': 0.4.0 + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' + '@astrojs/compiler-rs@0.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)': dependencies: '@astrojs/compiler-binding': 0.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3) @@ -2889,6 +3343,13 @@ snapshots: - '@emnapi/core' - '@emnapi/runtime' + '@astrojs/compiler-rs@0.4.0(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)': + dependencies: + '@astrojs/compiler-binding': 0.4.0(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3) + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' + '@astrojs/compiler@2.13.1': {} '@astrojs/internal-helpers@0.10.2': @@ -2913,6 +3374,17 @@ snapshots: smol-toml: 1.7.1 unified: 11.0.5 + '@astrojs/internal-helpers@0.11.0': + dependencies: + '@types/hast': 3.0.5 + '@types/mdast': 4.0.4 + js-yaml: 4.3.1 + picomatch: 4.0.5 + retext-smartypants: 6.2.0 + shiki: 4.4.2 + smol-toml: 1.7.1 + unified: 11.0.5 + '@astrojs/language-server@2.16.13(prettier@3.9.6)(typescript@6.0.3)': dependencies: '@astrojs/compiler': 2.13.1 @@ -2968,13 +3440,20 @@ snapshots: hast-util-from-html: 2.0.3 satteri: 0.9.5 - '@astrojs/mdx@7.0.5(@astrojs/markdown-satteri@0.3.6)(astro@7.2.3(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(supports-color@7.2.0)': + '@astrojs/markdown-satteri@0.4.0': + dependencies: + '@astrojs/internal-helpers': 0.11.0 + '@astrojs/prism': 4.0.2 + github-slugger: 2.0.0 + satteri: 0.10.5 + + '@astrojs/mdx@7.0.5(@astrojs/markdown-satteri@0.3.6)(astro@7.2.10(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(supports-color@7.2.0)': dependencies: '@astrojs/internal-helpers': 0.10.2 '@astrojs/markdown-remark': 7.2.2(supports-color@7.2.0) '@mdx-js/mdx': 3.1.1(supports-color@7.2.0) acorn: 8.18.0 - astro: 7.2.3(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0) + astro: 7.2.10(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0) es-module-lexer: 2.3.1 estree-util-visit: 2.0.0 hast-util-to-html: 9.0.5 @@ -3000,9 +3479,9 @@ snapshots: stream-replace-string: 2.0.0 zod: 4.4.3 - '@astrojs/starlight-docsearch@0.7.0(@algolia/client-search@5.56.0)(@astrojs/starlight@0.41.7(astro@7.2.3(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(supports-color@7.2.0)(typescript@6.0.3))(search-insights@2.17.3)': + '@astrojs/starlight-docsearch@0.7.0(@algolia/client-search@5.56.0)(@astrojs/starlight@0.41.11(astro@7.2.10(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(supports-color@7.2.0)(typescript@6.0.3))(search-insights@2.17.3)': dependencies: - '@astrojs/starlight': 0.41.7(astro@7.2.3(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(supports-color@7.2.0)(typescript@6.0.3) + '@astrojs/starlight': 0.41.11(astro@7.2.10(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(supports-color@7.2.0)(typescript@6.0.3) '@docsearch/css': 3.9.0 '@docsearch/js': 3.9.0(@algolia/client-search@5.56.0)(search-insights@2.17.3) transitivePeerDependencies: @@ -3013,17 +3492,17 @@ snapshots: - react-dom - search-insights - '@astrojs/starlight@0.41.7(astro@7.2.3(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(supports-color@7.2.0)(typescript@6.0.3)': + '@astrojs/starlight@0.41.11(astro@7.2.10(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(supports-color@7.2.0)(typescript@6.0.3)': dependencies: '@astrojs/markdown-satteri': 0.3.6 - '@astrojs/mdx': 7.0.5(@astrojs/markdown-satteri@0.3.6)(astro@7.2.3(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(supports-color@7.2.0) + '@astrojs/mdx': 7.0.5(@astrojs/markdown-satteri@0.3.6)(astro@7.2.10(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(supports-color@7.2.0) '@astrojs/sitemap': 3.7.3 '@pagefind/default-ui': 1.5.2 '@types/hast': 3.0.5 '@types/js-yaml': 4.0.9 '@types/mdast': 4.0.4 - astro: 7.2.3(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0) - astro-expressive-code: 0.44.1(astro@7.2.3(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0)) + astro: 7.2.10(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0) + astro-expressive-code: 0.44.1(astro@7.2.10(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0)) bcp-47: 2.1.1 hast-util-from-html: 2.0.3 hast-util-select: 6.0.4 @@ -3081,24 +3560,49 @@ snapshots: '@babel/helper-string-parser': 7.29.7 '@babel/helper-validator-identifier': 7.29.7 + '@bruits/satteri-darwin-arm64@0.10.5': + optional: true + '@bruits/satteri-darwin-arm64@0.9.5': optional: true + '@bruits/satteri-darwin-x64@0.10.5': + optional: true + '@bruits/satteri-darwin-x64@0.9.5': optional: true + '@bruits/satteri-linux-arm64-gnu@0.10.5': + optional: true + '@bruits/satteri-linux-arm64-gnu@0.9.5': optional: true + '@bruits/satteri-linux-arm64-musl@0.10.5': + optional: true + '@bruits/satteri-linux-arm64-musl@0.9.5': optional: true + '@bruits/satteri-linux-x64-gnu@0.10.5': + optional: true + '@bruits/satteri-linux-x64-gnu@0.9.5': optional: true + '@bruits/satteri-linux-x64-musl@0.10.5': + optional: true + '@bruits/satteri-linux-x64-musl@0.9.5': optional: true + '@bruits/satteri-wasm32-wasi@0.10.5': + dependencies: + '@emnapi/core': 1.11.1 + '@emnapi/runtime': 1.11.1 + '@napi-rs/wasm-runtime': 1.2.3(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) + optional: true + '@bruits/satteri-wasm32-wasi@0.9.5': dependencies: '@emnapi/core': 1.11.1 @@ -3106,9 +3610,15 @@ snapshots: '@napi-rs/wasm-runtime': 1.2.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) optional: true + '@bruits/satteri-win32-arm64-msvc@0.10.5': + optional: true + '@bruits/satteri-win32-arm64-msvc@0.9.5': optional: true + '@bruits/satteri-win32-x64-msvc@0.10.5': + optional: true + '@bruits/satteri-win32-x64-msvc@0.9.5': optional: true @@ -3309,105 +3819,183 @@ snapshots: '@img/sharp-darwin-arm64@0.35.3': optionalDependencies: '@img/sharp-libvips-darwin-arm64': 1.3.2 + + '@img/sharp-darwin-arm64@0.35.4': + optionalDependencies: + '@img/sharp-libvips-darwin-arm64': 1.3.3 optional: true '@img/sharp-darwin-x64@0.35.3': optionalDependencies: '@img/sharp-libvips-darwin-x64': 1.3.2 + + '@img/sharp-darwin-x64@0.35.4': + optionalDependencies: + '@img/sharp-libvips-darwin-x64': 1.3.3 optional: true '@img/sharp-freebsd-wasm32@0.35.3': dependencies: '@img/sharp-wasm32': 0.35.3 + + '@img/sharp-freebsd-wasm32@0.35.4': + dependencies: + '@img/sharp-wasm32': 0.35.4 optional: true - '@img/sharp-libvips-darwin-arm64@1.3.2': + '@img/sharp-libvips-darwin-arm64@1.3.2': {} + + '@img/sharp-libvips-darwin-arm64@1.3.3': optional: true - '@img/sharp-libvips-darwin-x64@1.3.2': + '@img/sharp-libvips-darwin-x64@1.3.2': {} + + '@img/sharp-libvips-darwin-x64@1.3.3': optional: true - '@img/sharp-libvips-linux-arm64@1.3.2': + '@img/sharp-libvips-linux-arm64@1.3.2': {} + + '@img/sharp-libvips-linux-arm64@1.3.3': optional: true - '@img/sharp-libvips-linux-arm@1.3.2': + '@img/sharp-libvips-linux-arm@1.3.2': {} + + '@img/sharp-libvips-linux-arm@1.3.3': optional: true - '@img/sharp-libvips-linux-ppc64@1.3.2': + '@img/sharp-libvips-linux-ppc64@1.3.2': {} + + '@img/sharp-libvips-linux-ppc64@1.3.3': optional: true - '@img/sharp-libvips-linux-riscv64@1.3.2': + '@img/sharp-libvips-linux-riscv64@1.3.2': {} + + '@img/sharp-libvips-linux-riscv64@1.3.3': optional: true - '@img/sharp-libvips-linux-s390x@1.3.2': + '@img/sharp-libvips-linux-s390x@1.3.2': {} + + '@img/sharp-libvips-linux-s390x@1.3.3': optional: true - '@img/sharp-libvips-linux-x64@1.3.2': + '@img/sharp-libvips-linux-x64@1.3.2': {} + + '@img/sharp-libvips-linux-x64@1.3.3': optional: true - '@img/sharp-libvips-linuxmusl-arm64@1.3.2': + '@img/sharp-libvips-linuxmusl-arm64@1.3.2': {} + + '@img/sharp-libvips-linuxmusl-arm64@1.3.3': optional: true - '@img/sharp-libvips-linuxmusl-x64@1.3.2': + '@img/sharp-libvips-linuxmusl-x64@1.3.2': {} + + '@img/sharp-libvips-linuxmusl-x64@1.3.3': optional: true '@img/sharp-linux-arm64@0.35.3': optionalDependencies: '@img/sharp-libvips-linux-arm64': 1.3.2 + + '@img/sharp-linux-arm64@0.35.4': + optionalDependencies: + '@img/sharp-libvips-linux-arm64': 1.3.3 optional: true '@img/sharp-linux-arm@0.35.3': optionalDependencies: '@img/sharp-libvips-linux-arm': 1.3.2 + + '@img/sharp-linux-arm@0.35.4': + optionalDependencies: + '@img/sharp-libvips-linux-arm': 1.3.3 optional: true '@img/sharp-linux-ppc64@0.35.3': optionalDependencies: '@img/sharp-libvips-linux-ppc64': 1.3.2 + + '@img/sharp-linux-ppc64@0.35.4': + optionalDependencies: + '@img/sharp-libvips-linux-ppc64': 1.3.3 optional: true '@img/sharp-linux-riscv64@0.35.3': optionalDependencies: '@img/sharp-libvips-linux-riscv64': 1.3.2 + + '@img/sharp-linux-riscv64@0.35.4': + optionalDependencies: + '@img/sharp-libvips-linux-riscv64': 1.3.3 optional: true '@img/sharp-linux-s390x@0.35.3': optionalDependencies: '@img/sharp-libvips-linux-s390x': 1.3.2 + + '@img/sharp-linux-s390x@0.35.4': + optionalDependencies: + '@img/sharp-libvips-linux-s390x': 1.3.3 optional: true '@img/sharp-linux-x64@0.35.3': optionalDependencies: '@img/sharp-libvips-linux-x64': 1.3.2 + + '@img/sharp-linux-x64@0.35.4': + optionalDependencies: + '@img/sharp-libvips-linux-x64': 1.3.3 optional: true '@img/sharp-linuxmusl-arm64@0.35.3': optionalDependencies: '@img/sharp-libvips-linuxmusl-arm64': 1.3.2 + + '@img/sharp-linuxmusl-arm64@0.35.4': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-arm64': 1.3.3 optional: true '@img/sharp-linuxmusl-x64@0.35.3': optionalDependencies: '@img/sharp-libvips-linuxmusl-x64': 1.3.2 + + '@img/sharp-linuxmusl-x64@0.35.4': + optionalDependencies: + '@img/sharp-libvips-linuxmusl-x64': 1.3.3 optional: true '@img/sharp-wasm32@0.35.3': dependencies: '@emnapi/runtime': 1.11.3 + + '@img/sharp-wasm32@0.35.4': + dependencies: + '@emnapi/runtime': 1.11.3 optional: true '@img/sharp-webcontainers-wasm32@0.35.3': dependencies: '@img/sharp-wasm32': 0.35.3 + + '@img/sharp-webcontainers-wasm32@0.35.4': + dependencies: + '@img/sharp-wasm32': 0.35.4 optional: true - '@img/sharp-win32-arm64@0.35.3': + '@img/sharp-win32-arm64@0.35.3': {} + + '@img/sharp-win32-arm64@0.35.4': optional: true - '@img/sharp-win32-ia32@0.35.3': + '@img/sharp-win32-ia32@0.35.3': {} + + '@img/sharp-win32-ia32@0.35.4': optional: true - '@img/sharp-win32-x64@0.35.3': + '@img/sharp-win32-x64@0.35.3': {} + + '@img/sharp-win32-x64@0.35.4': optional: true '@jridgewell/sourcemap-codec@1.5.5': {} @@ -3456,6 +4044,13 @@ snapshots: '@tybys/wasm-util': 0.10.3 optional: true + '@napi-rs/wasm-runtime@1.2.3(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)': + dependencies: + '@emnapi/core': 1.11.1 + '@emnapi/runtime': 1.11.1 + '@tybys/wasm-util': 0.10.3 + optional: true + '@oslojs/encoding@1.1.0': {} '@oxc-project/types@0.143.0': {} @@ -3761,12 +4356,103 @@ snapshots: astring@1.9.0: {} - astro-expressive-code@0.44.1(astro@7.2.3(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0)): + astro-expressive-code@0.44.1(astro@7.2.10(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0)): dependencies: - astro: 7.2.3(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0) + astro: 7.2.10(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0) rehype-expressive-code: 0.44.1 url-extras: 0.1.0 + astro@7.2.10(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0): + dependencies: + '@astrojs/compiler-rs': 0.4.0(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3) + '@astrojs/internal-helpers': 0.11.0 + '@astrojs/markdown-satteri': 0.4.0 + '@astrojs/telemetry': 3.3.3 + '@capsizecss/unpack': 4.0.1 + '@clack/prompts': 1.7.0 + '@oslojs/encoding': 1.1.0 + am-i-vibing: 0.4.0 + aria-query: 5.3.2 + axobject-query: 4.1.0 + ci-info: 4.4.0 + clsx: 2.1.1 + common-ancestor-path: 2.0.0 + cookie: 2.0.1 + devalue: 5.9.0 + diff: 9.0.0 + dset: 3.1.4 + es-module-lexer: 2.3.1 + esbuild: 0.28.2 + find-proc: 0.1.0 + flattie: 1.1.1 + fontace: 0.4.1 + get-tsconfig: 5.0.0-beta.4 + github-slugger: 2.0.0 + html-escaper: 3.0.3 + http-cache-semantics: 4.2.0 + js-yaml: 4.3.1 + jsonc-parser: 3.3.1 + magic-string: 1.1.0 + magicast: 0.5.4 + mrmime: 2.0.1 + neotraverse: 1.0.1 + obug: 2.1.4 + p-limit: 7.3.1 + p-queue: 9.3.3 + package-manager-detector: 1.8.0 + piccolore: 0.1.3 + picomatch: 4.0.5 + semver: 7.8.5 + shiki: 4.4.2 + smol-toml: 1.7.1 + svgo: 4.0.2 + tinyclip: 0.1.15 + tinyexec: 1.3.0 + tinyglobby: 0.2.17 + ultrahtml: 1.7.0 + unifont: 0.7.5 + unstorage: 1.17.5 + vite: 8.2.1(@types/node@24.13.3)(esbuild@0.28.2)(yaml@2.9.0) + vitefu: 1.1.3(vite@8.2.1(@types/node@24.13.3)(esbuild@0.28.2)(yaml@2.9.0)) + xxhash-wasm: 1.1.0 + yargs-parser: 22.0.0 + zod: 4.4.3 + optionalDependencies: + sharp: 0.35.4(@types/node@24.13.3) + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@emnapi/core' + - '@emnapi/runtime' + - '@netlify/blobs' + - '@planetscale/database' + - '@types/node' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - '@vitejs/devtools' + - aws4fetch + - db0 + - idb-keyval + - ioredis + - jiti + - less + - sass + - sass-embedded + - stylus + - sugarss + - terser + - tsx + - uploadthing + - yaml + astro@7.2.3(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0): dependencies: '@astrojs/compiler-rs': 0.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3) @@ -4002,6 +4688,8 @@ snapshots: diff@8.0.4: {} + diff@9.0.0: {} + direction@2.0.1: {} dom-serializer@2.0.0: @@ -4181,6 +4869,8 @@ snapshots: optionalDependencies: picomatch: 4.0.5 + find-proc@0.1.0: {} + find-process@2.1.1: dependencies: chalk: 4.1.2 @@ -5398,6 +6088,23 @@ snapshots: '@rolldown/binding-win32-arm64-msvc': 1.2.3 '@rolldown/binding-win32-x64-msvc': 1.2.3 + satteri@0.10.5: + dependencies: + '@types/estree-jsx': 1.0.5 + '@types/hast': 3.0.5 + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + optionalDependencies: + '@bruits/satteri-darwin-arm64': 0.10.5 + '@bruits/satteri-darwin-x64': 0.10.5 + '@bruits/satteri-linux-arm64-gnu': 0.10.5 + '@bruits/satteri-linux-arm64-musl': 0.10.5 + '@bruits/satteri-linux-x64-gnu': 0.10.5 + '@bruits/satteri-linux-x64-musl': 0.10.5 + '@bruits/satteri-wasm32-wasi': 0.10.5 + '@bruits/satteri-win32-arm64-msvc': 0.10.5 + '@bruits/satteri-win32-x64-msvc': 0.10.5 + satteri@0.9.5: dependencies: '@types/estree-jsx': 1.0.5 @@ -5454,6 +6161,39 @@ snapshots: '@img/sharp-win32-x64': 0.35.3 '@types/node': 24.13.3 + sharp@0.35.4(@types/node@24.13.3): + dependencies: + '@img/colour': 1.1.0 + detect-libc: 2.1.2 + semver: 7.8.5 + optionalDependencies: + '@img/sharp-darwin-arm64': 0.35.4 + '@img/sharp-darwin-x64': 0.35.4 + '@img/sharp-freebsd-wasm32': 0.35.4 + '@img/sharp-libvips-darwin-arm64': 1.3.3 + '@img/sharp-libvips-darwin-x64': 1.3.3 + '@img/sharp-libvips-linux-arm': 1.3.3 + '@img/sharp-libvips-linux-arm64': 1.3.3 + '@img/sharp-libvips-linux-ppc64': 1.3.3 + '@img/sharp-libvips-linux-riscv64': 1.3.3 + '@img/sharp-libvips-linux-s390x': 1.3.3 + '@img/sharp-libvips-linux-x64': 1.3.3 + '@img/sharp-libvips-linuxmusl-arm64': 1.3.3 + '@img/sharp-libvips-linuxmusl-x64': 1.3.3 + '@img/sharp-linux-arm': 0.35.4 + '@img/sharp-linux-arm64': 0.35.4 + '@img/sharp-linux-ppc64': 0.35.4 + '@img/sharp-linux-riscv64': 0.35.4 + '@img/sharp-linux-s390x': 0.35.4 + '@img/sharp-linux-x64': 0.35.4 + '@img/sharp-linuxmusl-arm64': 0.35.4 + '@img/sharp-linuxmusl-x64': 0.35.4 + '@img/sharp-webcontainers-wasm32': 0.35.4 + '@img/sharp-win32-arm64': 0.35.4 + '@img/sharp-win32-ia32': 0.35.4 + '@img/sharp-win32-x64': 0.35.4 + '@types/node': 24.13.3 + shiki@4.4.2: dependencies: '@shikijs/core': 4.4.2 @@ -5486,12 +6226,12 @@ snapshots: dependencies: through: 2.3.8 - starlight-openapi@0.26.1(@astrojs/markdown-satteri@0.3.6)(@astrojs/starlight@0.41.7(astro@7.2.3(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(supports-color@7.2.0)(typescript@6.0.3))(astro@7.2.3(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(openapi-types@12.1.3): + starlight-openapi@0.26.1(@astrojs/markdown-satteri@0.4.0)(@astrojs/starlight@0.41.11(astro@7.2.10(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(supports-color@7.2.0)(typescript@6.0.3))(astro@7.2.10(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(openapi-types@12.1.3): dependencies: - '@astrojs/markdown-satteri': 0.3.6 - '@astrojs/starlight': 0.41.7(astro@7.2.3(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(supports-color@7.2.0)(typescript@6.0.3) + '@astrojs/markdown-satteri': 0.4.0 + '@astrojs/starlight': 0.41.11(astro@7.2.10(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(supports-color@7.2.0)(typescript@6.0.3) '@readme/openapi-parser': 4.1.2(openapi-types@12.1.3) - astro: 7.2.3(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0) + astro: 7.2.10(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0) github-slugger: 2.0.0 httpsnippet: 3.0.10 url-template: 3.1.1 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 5d6a4039..dc707f89 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -7,5 +7,4 @@ dedupePeerDependents: false updateNotifier: false ignoreScripts: true minimumReleaseAge: 0 -confirmModulesPurge: false verifyDepsBeforeRun: false diff --git a/sites/docs/package.json b/sites/docs/package.json index 2e38b85b..5c43b68b 100644 --- a/sites/docs/package.json +++ b/sites/docs/package.json @@ -11,12 +11,12 @@ "check": "astro check" }, "dependencies": { - "@astrojs/starlight": "0.41.7", + "@astrojs/starlight": "0.41.11", "@astrojs/starlight-docsearch": "0.7.0", "@gitea-docs/content-loader": "workspace:*", "@pagefind/default-ui": "1.5.2", - "astro": "7.2.3", - "sharp": "0.35.3", + "astro": "7.2.10", + "sharp": "0.35.4", "starlight-openapi": "0.26.1" }, "devDependencies": { From e1136a791d1cdaec648204af067973ed5791bc10 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Tue, 8 Sep 2026 15:01:21 +0000 Subject: [PATCH 02/22] Show product navigation in the mobile sidebar (#539) Show product navigation in the mobile sidebar (gitea/docs#539) --- sites/docs/astro.config.mjs | 1 + sites/docs/src/components/ProductNav.astro | 78 ++++++++++++++++++++++ sites/docs/src/components/Sidebar.astro | 13 ++++ sites/docs/src/components/SiteTitle.astro | 38 +---------- 4 files changed, 94 insertions(+), 36 deletions(-) create mode 100644 sites/docs/src/components/ProductNav.astro create mode 100644 sites/docs/src/components/Sidebar.astro diff --git a/sites/docs/astro.config.mjs b/sites/docs/astro.config.mjs index a4122dea..e8208c10 100644 --- a/sites/docs/astro.config.mjs +++ b/sites/docs/astro.config.mjs @@ -126,6 +126,7 @@ export default defineConfig({ Header: './src/components/Header.astro', LanguageSelect: './src/components/LanguageSelect.astro', MarkdownContent: './src/components/MarkdownContent.astro', + Sidebar: './src/components/Sidebar.astro', SiteTitle: './src/components/SiteTitle.astro', PageFrame: './src/components/PageFrame.astro', }, diff --git a/sites/docs/src/components/ProductNav.astro b/sites/docs/src/components/ProductNav.astro new file mode 100644 index 00000000..78fdb08e --- /dev/null +++ b/sites/docs/src/components/ProductNav.astro @@ -0,0 +1,78 @@ +--- +import { t } from '../config/strings'; +import { productNav } from '../lib/versions'; + +interface Props { + variant: 'header' | 'sidebar'; +} + +const meta = Astro.locals.starlightRoute.entry.data.gitea; +const strings = t(meta?.locale ?? 'en-us'); +const products = productNav(meta); +const { variant } = Astro.props; +--- + + + + diff --git a/sites/docs/src/components/Sidebar.astro b/sites/docs/src/components/Sidebar.astro new file mode 100644 index 00000000..0afbcf05 --- /dev/null +++ b/sites/docs/src/components/Sidebar.astro @@ -0,0 +1,13 @@ +--- +import Default from '@astrojs/starlight/components/Sidebar.astro'; +import ProductNav from './ProductNav.astro'; + +/** + * The product navigation is hidden from the header until the 72rem layout + * breakpoint, so it is rendered at the top of the sidebar for the layouts in + * between (and for the mobile menu below 50rem). + */ +--- + + + diff --git a/sites/docs/src/components/SiteTitle.astro b/sites/docs/src/components/SiteTitle.astro index 32fd487e..be25338a 100644 --- a/sites/docs/src/components/SiteTitle.astro +++ b/sites/docs/src/components/SiteTitle.astro @@ -1,29 +1,17 @@ --- import Default from '@astrojs/starlight/components/SiteTitle.astro'; -import { t } from '../config/strings'; -import { productNav } from '../lib/versions'; +import ProductNav from './ProductNav.astro'; /** * The starlight header has no navigation links, the gitea site needs the four * products next to the logo. Rendered next to the site title so the rest of the * header (search, theme, pickers) keeps working untouched. */ -const meta = Astro.locals.starlightRoute.entry.data.gitea; -const strings = t(meta?.locale ?? 'en-us'); -const products = productNav(meta); ---
- +
From f4ab1088b1cf0a46a4937d81ef5eb638272743e7 Mon Sep 17 00:00:00 2001 From: Gitea Bot Date: Tue, 8 Sep 2026 16:25:41 +0000 Subject: [PATCH 03/22] Update the latest api documents (#540) Automated update of static/swagger-latest.json and static/openapi3-latest.json from the gitea main branch, opened by the "update api spec files" scheduled workflow. Preview: https://pr-540.docs-gitea-com.pages.dev --------- Co-authored-by: Lunny Xiao Reviewed-on: https://gitea.com/gitea/docs/pulls/540 Reviewed-by: Lunny Xiao Co-authored-by: Gitea Bot --- static/openapi3-latest.json | 9 +++++++++ static/swagger-latest.json | 9 +++++++++ 2 files changed, 18 insertions(+) diff --git a/static/openapi3-latest.json b/static/openapi3-latest.json index e87aaf43..e3376d7f 100644 --- a/static/openapi3-latest.json +++ b/static/openapi3-latest.json @@ -32751,6 +32751,9 @@ }, "422": { "$ref": "#/components/responses/invalidTopicsError" + }, + "423": { + "$ref": "#/components/responses/repoArchivedError" } }, "summary": "Replace list of topics for a repository", @@ -32800,6 +32803,9 @@ }, "422": { "$ref": "#/components/responses/invalidTopicsError" + }, + "423": { + "$ref": "#/components/responses/repoArchivedError" } }, "summary": "Delete a topic from a repository", @@ -32847,6 +32853,9 @@ }, "422": { "$ref": "#/components/responses/invalidTopicsError" + }, + "423": { + "$ref": "#/components/responses/repoArchivedError" } }, "summary": "Add a topic to a repository", diff --git a/static/swagger-latest.json b/static/swagger-latest.json index 1f207409..0b58317b 100644 --- a/static/swagger-latest.json +++ b/static/swagger-latest.json @@ -20099,6 +20099,9 @@ }, "422": { "$ref": "#/responses/invalidTopicsError" + }, + "423": { + "$ref": "#/responses/repoArchivedError" } } } @@ -20145,6 +20148,9 @@ }, "422": { "$ref": "#/responses/invalidTopicsError" + }, + "423": { + "$ref": "#/responses/repoArchivedError" } } }, @@ -20189,6 +20195,9 @@ }, "422": { "$ref": "#/responses/invalidTopicsError" + }, + "423": { + "$ref": "#/responses/repoArchivedError" } } } From 6e8aa63f115998df904c69521e27fb3ba97bc464 Mon Sep 17 00:00:00 2001 From: Gitea Bot Date: Tue, 8 Sep 2026 18:25:55 +0000 Subject: [PATCH 04/22] Update the runner reference pages (#534) Automated update of the generated runner reference pages from gitea/runner (main for the develop docs, the newest stable tag for every documented series), opened by the "update runner reference" scheduled workflow. Preview: https://pr-534.docs-gitea-com.pages.dev --------- Co-authored-by: Lunny Xiao Reviewed-on: https://gitea.com/gitea/docs/pulls/534 Reviewed-by: Lunny Xiao Co-authored-by: Gitea Bot --- runner-docs/reference/cli.md | 4 +++- runner-docs/reference/config-example.md | 6 ++++-- .../version-3/reference/config-example.md | 6 ++++-- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/runner-docs/reference/cli.md b/runner-docs/reference/cli.md index 553196b9..ae2e0be4 100644 --- a/runner-docs/reference/cli.md +++ b/runner-docs/reference/cli.md @@ -103,13 +103,15 @@ Flags: --detect-event Use first event type from workflow as event that triggered the workflow -C, --directory string working directory (default ".") -n, --dryrun dryrun mode - --env stringArray env to make available to actions with optional value (e.g. --env myenv=foo or --env myenv) + --env stringArray env to make available to actions with optional value (e.g. --env myenv=foo or --env myenv; override env-file) --env-file string environment file to read and use as env in the containers (default ".env") -E, --event string run a event name -e, --eventpath string path to a JSON event payload file exposed as the event that triggered the workflow --gitea-instance string Gitea instance to use. -h, --help help for exec -i, --image string Docker image to use. Use "-self-hosted" to run directly on the host. (default "docker.gitea.com/runner-images:ubuntu-latest") + --input stringArray set an input the workflow declares under its workflow_dispatch or workflow_call trigger, others stay invisible to the inputs context (e.g. --input name=bar; can be specified multiple times with highest precedence) + --input-file string path to an .env-format file containing key=value pairs as baseline workflow inputs (override event inputs) --insecure-secrets NOT RECOMMENDED! Doesn't hide secrets while printing logs. -j, --job string run a specific job ID; when several workflow files define that job, also pass --workflows/-W to select the file --json Output logs in json format diff --git a/runner-docs/reference/config-example.md b/runner-docs/reference/config-example.md index 060ec25a..d88fb359 100644 --- a/runner-docs/reference/config-example.md +++ b/runner-docs/reference/config-example.md @@ -86,7 +86,7 @@ runner: # This ensures bursty output (e.g., npm install) is delivered promptly. #log_report_batch_size: 100 # The interval for reporting task state (step status, timing) to the Gitea instance. - # State is also reported immediately on step transitions (start/stop). + # State is also reported on step transitions (start/stop) and after each log flush. #state_report_interval: 5s # Per-attempt deadline for flushing the final logs and task state when a job # finishes, on a detached context so a server cancel can't block the acknowledgement. @@ -234,6 +234,8 @@ container: # A volume declared here replaces the one the runner would mount on the same container path, so the # tool cache can be kept on the host. Its source must also be allowed by valid_volumes below: # options: --volume /host/toolcache:/opt/hostedtoolcache + # With privileged disabled, options that could escape the container (--security-opt, --device, + # --cap-add, --pid, ...) are ignored in a workflow's container.options, but keep working here. #options: # The parent directory of a job's working directory. # NOTE: There is no need to add the first '/' of the path as runner will add it automatically. @@ -254,7 +256,7 @@ container: #valid_volumes: [] # Overrides the docker client host with the specified one. # If it's empty, runner will find an available docker host automatically. - # If it's "-", runner will find an available docker host automatically, but the docker host won't be mounted to the job containers and service containers. + # If it's "-", runner will find an available docker host automatically, but won't mount it into the job and action containers. # If it's not empty or "-", the specified docker host will be used. An error will be returned if it doesn't work. #docker_host: "" # Pull docker image(s) even if already present. diff --git a/runner-docs_versioned_docs/version-3/reference/config-example.md b/runner-docs_versioned_docs/version-3/reference/config-example.md index 060ec25a..d88fb359 100644 --- a/runner-docs_versioned_docs/version-3/reference/config-example.md +++ b/runner-docs_versioned_docs/version-3/reference/config-example.md @@ -86,7 +86,7 @@ runner: # This ensures bursty output (e.g., npm install) is delivered promptly. #log_report_batch_size: 100 # The interval for reporting task state (step status, timing) to the Gitea instance. - # State is also reported immediately on step transitions (start/stop). + # State is also reported on step transitions (start/stop) and after each log flush. #state_report_interval: 5s # Per-attempt deadline for flushing the final logs and task state when a job # finishes, on a detached context so a server cancel can't block the acknowledgement. @@ -234,6 +234,8 @@ container: # A volume declared here replaces the one the runner would mount on the same container path, so the # tool cache can be kept on the host. Its source must also be allowed by valid_volumes below: # options: --volume /host/toolcache:/opt/hostedtoolcache + # With privileged disabled, options that could escape the container (--security-opt, --device, + # --cap-add, --pid, ...) are ignored in a workflow's container.options, but keep working here. #options: # The parent directory of a job's working directory. # NOTE: There is no need to add the first '/' of the path as runner will add it automatically. @@ -254,7 +256,7 @@ container: #valid_volumes: [] # Overrides the docker client host with the specified one. # If it's empty, runner will find an available docker host automatically. - # If it's "-", runner will find an available docker host automatically, but the docker host won't be mounted to the job containers and service containers. + # If it's "-", runner will find an available docker host automatically, but won't mount it into the job and action containers. # If it's not empty or "-", the specified docker host will be used. An error will be returned if it doesn't work. #docker_host: "" # Pull docker image(s) even if already present. From 24a7eb79e58581dacbd9999e6de394e8b4da3c8d Mon Sep 17 00:00:00 2001 From: silverwind Date: Tue, 8 Sep 2026 18:26:25 +0000 Subject: [PATCH 05/22] Document GITEA_DOCKER_WORKSPACE (#535) Documents the variable added in https://gitea.com/gitea/runner/pulls/1204 and drops the `valid_volumes` requirement for `bind_workdir`, gone since https://gitea.com/gitea/runner/pulls/1203. Assisted by Claude (Fable 5.1). --------- Co-authored-by: Lunny Xiao Reviewed-on: https://gitea.com/gitea/docs/pulls/535 Reviewed-by: Lunny Xiao Co-authored-by: silverwind --- docs/usage/actions/variables.md | 1 + runner-docs/configuration.md | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/usage/actions/variables.md b/docs/usage/actions/variables.md index 958ed127..ac157a64 100644 --- a/docs/usage/actions/variables.md +++ b/docs/usage/actions/variables.md @@ -15,6 +15,7 @@ These environment variables are set automatically in every workflow run and can | `CI` | Always set to `true`. | `true` | | `GITEA_ACTIONS` | Always set to `true`. Useful to distinguish Gitea Actions from other CI systems. | `true` | | `GITEA_ACTIONS_RUNNER_VERSION` | The version of the runner executing the workflow. | `1.0.8` | +| `GITEA_DOCKER_WORKSPACE` | The workspace path as the Docker daemon sees it, for bind mounts into containers a job starts, e.g. `${GITEA_DOCKER_WORKSPACE:-.}/data:/app/data` in a compose file. Only set for jobs running in a container. | `/var/lib/docker/volumes/GITEA-ACTIONS-TASK-42_***/_data` | | `GITEA_ENV`
`GITHUB_ENV` | Path to the file that sets environment variables for subsequent steps. | `/home/runner/work/_temp/_runner_file_commands/set_env_***` | | `GITEA_OUTPUT`
`GITHUB_OUTPUT` | Path to the file that sets step output parameters. | `/home/runner/work/_temp/_runner_file_commands/set_output_***` | | `GITEA_PATH`
`GITHUB_PATH` | Path to the file that adds system `PATH` entries for subsequent steps. | `/home/runner/work/_temp/_runner_file_commands/add_path_***` | diff --git a/runner-docs/configuration.md b/runner-docs/configuration.md index ca6de0ac..6a514ee5 100644 --- a/runner-docs/configuration.md +++ b/runner-docs/configuration.md @@ -106,7 +106,7 @@ Applies to jobs that run in containers. | `force_rebuild` | `false` | rebuild local action images even when present. | | `require_docker` | `false` | always require a reachable daemon, even for host-only labels. | | `docker_timeout` | `0s` | how long to wait for the daemon to become reachable. | -| `bind_workdir` | `false` | bind-mount the workspace from the host instead of using a docker volume. Needed for jobs that use `docker compose` with bind mounts under Docker-in-Docker. The parent directory must then be mounted into the runner container and listed in `valid_volumes`. | +| `bind_workdir` | `false` | bind-mount the workspace from the host instead of using a docker volume, so jobs can bind-mount it by its own path into containers they start (`.:/app` in `docker compose`). Not needed when workflows use `GITEA_DOCKER_WORKSPACE`. The parent directory must then be mounted into the runner container. | :::note Privileged mode and workflow container options A workflow's own `jobs..container.options` are untrusted input. While `container.privileged` is disabled, the options that would break out of the container are stripped with a warning in the job log: `--pid`, `--ipc`, `--uts`, `--cgroupns`, `--userns`, `--cap-add`, `--security-opt`, `--device`, `--device-cgroup-rule`, `--gpus`, `--volumes-from`, `--runtime`, `--cgroup-parent` and `--sysctl`. They are honoured once privileged mode is enabled, because the operator has then opted into host access. From 9a6d0d90bf0b1aae423cdd73280f9445b1f0b442 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Sat, 12 Sep 2026 11:16:22 +0000 Subject: [PATCH 06/22] docs(lfs): document the sha the contents API expects for LFS files (#542) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes #243. The `sha` of the contents API is compared against the ID of the blob the commit has at that path, and for a file tracked by Git LFS that blob is the pointer file. Sending the `lfs_oid` or a checksum of the file content fails with `sha does not match`, and nothing in the documentation said so. Adds a section to the LFS page: use the `sha` from `GET /repos/{owner}/{repo}/contents/{filepath}`, not `lfs_oid`, and note that the API does turn the content into an LFS object by itself when `.gitattributes` tracks the path (`modifyFile()` stores the object and commits the pointer), so nothing else has to be done differently. The swagger comments upstream are being fixed in https://github.com/go-gitea/gitea/pull/38915, which will reach `/api/next/` through the scheduled job and the released reference with 1.28. The documents of 1.22 – 1.27 are frozen, so the guide is the only place where readers of the current release can find it. Preview: https://pr-542.docs-gitea-com.pages.dev Reviewed-on: https://gitea.com/gitea/docs/pulls/542 Reviewed-by: bircni Co-authored-by: Lunny Xiao --- docs/administration/git-lfs-support.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/docs/administration/git-lfs-support.md b/docs/administration/git-lfs-support.md index 4a390721..c26e9527 100644 --- a/docs/administration/git-lfs-support.md +++ b/docs/administration/git-lfs-support.md @@ -41,3 +41,24 @@ client that causes SSH transfers to hang: https://github.com/git-lfs/git-lfs/pul This can be worked around on all the client machines by setting the git config: `git config --global lfs.ssh.automultiplex false` ::: + +# Changing LFS files through the API + +The [contents API](https://docs.gitea.com/api/operations/repo-change-files/) +works on LFS tracked files as well: send the file content as usual and Gitea +stores it as an LFS object and commits a pointer file, as long as the path is +matched by a `filter=lfs` rule in `.gitattributes`. + +What is easy to get wrong is the `sha` of the file being changed, which +`PUT`/`DELETE /repos/{owner}/{repo}/contents/{filepath}` and +`POST /repos/{owner}/{repo}/contents` require for an existing file. Gitea +compares it with the ID of the blob the commit has at that path, and for an LFS +tracked file that blob is the **pointer file**, not the content: + +- use the `sha` returned by + [`GET /repos/{owner}/{repo}/contents/{filepath}`](https://docs.gitea.com/api/operations/repo-get-contents/) +- do not use `lfs_oid` from the same response, which identifies the LFS object, + and do not use a checksum of the file itself + +Sending anything else fails with `sha does not match`, even though the request +looks correct. From 3258717d62d0eb66358167e530c5ee5c976af917 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Sat, 12 Sep 2026 11:27:21 +0000 Subject: [PATCH 07/22] fix(api): show the name of a type in the reference, document the gmail app password (#541) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Two unrelated but small fixes, closes #258 and closes #32. **The reference does not name its types (#258)** Since the api reference is rendered from the openapi 3.0 document, a field of type `ReviewStateType` is rendered as the bare string enum the `$ref` points at: starlight-openapi dereferences everything and the schema has no `title`, so the name of the type is nowhere on the page. Searching the current reference for `ReviewStateType` returns nothing, which is what the issue reports (the plugin also has no route for `components/schemas`, so there is no page per type either). `normalizeSchema()` now titles every named schema of an openapi 3.0 document with its own name, which the plugin renders next to the type of a field: - before: `state` · `string` · Allowed values: APPROVED … - after: `state` · `ReviewStateType` · `string` · Allowed values: APPROVED … The go doc comments start with the name of the type, so the description would repeat it ("ChangeFilesOptions — ChangeFilesOptions options for creating …"); a leading ` ` is stripped from the description. For the record, how the three generations of documents describe that type: | Versions | Type name | Allowed values | | --- | --- | --- | | 1.22 – 1.25 (swagger, `ReviewStateType` definition without `enum`) | shown | missing | | 1.26 – 1.27 (swagger, enum inlined upstream) | missing | shown | | 1.27, next (openapi 3.0, with this change) | shown | shown | The released swagger documents are frozen, so 1.22 – 1.26 keep what they have; from 1.27 on the reference answers the question the issue asks. **Gmail needs an app password (#32)** The configuration in the guide is still correct after Google turned off password-only access, because it already asks for an app password. What was missing is why there is no alternative: Gitea's mailer authenticates with `CRAM-MD5`, `PLAIN` or `LOGIN` and has no XOAUTH2, so "Sign in with Google" is not an option. Added that, together with the two things people run into — an app password needs 2-step verification and a Workspace administrator can disable app passwords for the domain — and the `587` + `smtp+starttls` variant. Verified by building the api and the next docs: the type names show up on the operation pages, the descriptions are not duplicated, and 1.26 and older are unchanged. `pnpm check` passes. Preview: https://pr-541.docs-gitea-com.pages.dev --------- Co-authored-by: bircni Reviewed-on: https://gitea.com/gitea/docs/pulls/541 Reviewed-by: bircni Co-authored-by: Lunny Xiao --- docs/administration/email-setup.md | 15 ++++++++++++++ sites/docs/src/config/api.ts | 33 ++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) diff --git a/docs/administration/email-setup.md b/docs/administration/email-setup.md index cc018c58..e8ea8d0c 100644 --- a/docs/administration/email-setup.md +++ b/docs/administration/email-setup.md @@ -86,6 +86,21 @@ PROTOCOL = smtps Note that you'll need to create and use an [App password](https://support.google.com/accounts/answer/185833?hl=en) by enabling 2FA on your Google account. You won't be able to use your Google account password directly. +An app password is the only option: Google +[turned off access for apps that sign in with a password alone](https://workspaceupdates.googleblog.com/2023/09/winding-down-google-sync-and-less-secure-apps-support.html) +in 2024 and asks applications to use OAuth instead, which Gitea's mailer does +not implement — it authenticates with `CRAM-MD5`, `PLAIN` or `LOGIN`. + +Two things to keep in mind: + +- app passwords require 2-step verification on the account, and a Google + Workspace administrator can switch them off for the whole domain. If they are + not available, send through the + [Workspace SMTP relay service](https://support.google.com/a/answer/2956491) + or through another mail provider. +- port `587` works as well, with `SMTP_PORT = 587` and + `PROTOCOL = smtp+starttls`. + ### ProtonMail This feature is currently only available for select Proton for Business customers and those with Visionary and Family plans with custom domain addresses. See [ProtonMail's SMTP documentation](https://proton.me/support/smtp-submission) for more information. This limitation can be circumvented by using the ProtonMail Bridge application. diff --git a/sites/docs/src/config/api.ts b/sites/docs/src/config/api.ts index 297c7941..8ec45175 100644 --- a/sites/docs/src/config/api.ts +++ b/sites/docs/src/config/api.ts @@ -27,6 +27,11 @@ interface Operation { operationId?: string; } +interface Schema { + title?: string; + description?: string; +} + interface SwaggerDocument { openapi?: string; basePath?: string; @@ -34,6 +39,7 @@ interface SwaggerDocument { schemes?: string[]; tags?: { name: string; description?: string }[]; paths?: Record>; + components?: { schemas?: Record }; } const httpMethods = ['get', 'put', 'post', 'delete', 'options', 'head', 'patch']; @@ -95,6 +101,7 @@ function normalizeSchema(source: string, name: string): string { hyphenateOperationIds(document); describeTags(document); + nameSchemas(document); mkdirSync(cacheDir, { recursive: true }); const target = path.join(cacheDir, name); @@ -123,6 +130,32 @@ function describeTags(document: SwaggerDocument): void { document.tags = [...described.values()]; } +/** + * Titles the named schemas of an openapi 3.0 document with their own name. + * + * starlight-openapi dereferences every `$ref`, so a field of type + * `ReviewStateType` is rendered as the bare string enum it points at and the + * name of the type is nowhere on the page: searching the reference for a type + * name found in an sdk or in an error message turns up nothing (gitea/docs#258). + * The plugin renders `title` next to the type of a field, so setting it brings + * the name back, next to the allowed values. + * + * Swagger 2.0 documents are left alone, they are rendered with the name of the + * definition already. + */ +function nameSchemas(document: SwaggerDocument): void { + for (const [name, schema] of Object.entries(document.components?.schemas ?? {})) { + if (!schema || typeof schema !== 'object') continue; + if (!schema.title) schema.title = name; + // the go doc comments start with the name of the type, which would read + // "ChangeFilesOptions — ChangeFilesOptions options for ..." once the title + // is rendered in front of the description + if (schema.description?.startsWith(`${name} `)) { + schema.description = schema.description.slice(name.length + 1); + } + } +} + /** * One starlight-openapi schema per documented api version, each mounted at the * route of its version: `/api/` for the latest release, `/api/1.26/` and From 42591cadac3e0e8b5a83cfd8007485a044c02151 Mon Sep 17 00:00:00 2001 From: Gitea Bot Date: Mon, 14 Sep 2026 12:25:17 +0000 Subject: [PATCH 08/22] Update the runner reference pages (#547) Automated update of the generated runner reference pages from gitea/runner (main for the develop docs, the newest stable tag for every documented series), opened by the "update runner reference" scheduled workflow. Preview: https://pr-547.docs-gitea-com.pages.dev Reviewed-on: https://gitea.com/gitea/docs/pulls/547 Reviewed-by: silverwind <2021+silverwind@noreply.gitea.com> Co-authored-by: Gitea Bot --- runner-docs/reference/config-example.md | 25 ++++++++++--------- .../version-3/reference/cli.md | 4 ++- .../version-3/reference/config-example.md | 18 ++++++------- 3 files changed, 25 insertions(+), 22 deletions(-) diff --git a/runner-docs/reference/config-example.md b/runner-docs/reference/config-example.md index d88fb359..53b31a66 100644 --- a/runner-docs/reference/config-example.md +++ b/runner-docs/reference/config-example.md @@ -68,11 +68,12 @@ runner: # scratch directories (left behind when a host cleanup delete stalls) older than # this duration. Setting either workdir_cleanup_age or idle_cleanup_interval to 0 # (or any non-positive value) disables stale-directory cleanup entirely, along with - # the docker network cleanup below. + # the docker network and volume cleanup below. #workdir_cleanup_age: 24h # Cadence for the idle cleanup pass. Besides the directories above, on runners that use - # docker it removes the per-job networks of jobs this runner did not live to tear down, - # which would otherwise hold a subnet of the daemon address pool until the host is rebuilt. + # docker it removes the per-job networks and volumes of jobs this runner did not live to + # tear down, which would otherwise hold a subnet of the daemon address pool and the job's + # workspace contents until the host is rebuilt. #idle_cleanup_interval: 10m # The base interval for periodic log flush to the Gitea instance. # Logs may be sent earlier if the buffer reaches log_report_batch_size @@ -154,7 +155,8 @@ runner: # job_completed: '' cache: - # Enable the built-in cache server (used by actions/cache and similar actions). + # Enable caching (used by actions/cache and similar actions). Off means no built-in server is + # started and no job is registered with an external_server either. #enabled: true # Directory where cache blobs are stored on disk. Default: $HOME/.cache/actcache # Ignored when external_server is set. @@ -191,9 +193,9 @@ cache: # until its cache entry expires or is manually removed. #offline_mode: false # Serve the actions cache service v2 API. The actions that use it refuse any host they do not - # take for GitHub, so reaching it means editing that check out of their own bundle, undone - # whenever it is downloaded again. That edit is made either way, this only governs the API - # advertised. A bundle that does not match is left alone. + # take for GitHub, so reaching it means editing that check out of their own bundle, put back + # after the copy into the job. That edit is made either way, this only governs the API + # advertised. A bundle that does not match is left alone. With v2, uploads need a reachable cache. #v2: true # How the cache server discards entries, ignored when external_server is set since that # server applies its own. Leave a setting out for its default; 0s or 0 turns the three @@ -271,11 +273,10 @@ container: #require_docker: false # Timeout to wait for the docker daemon to be reachable, if docker is required by require_docker or runner #docker_timeout: 0s - # Bind the workspace to the host filesystem instead of using Docker volumes. - # This is required for Docker-in-Docker (DinD) setups when jobs use docker compose - # with bind mounts (e.g., ".:/app"), as volume-based workspaces are not accessible - # from the DinD daemon's filesystem. When enabled, ensure the workspace parent - # directory is also mounted into the runner container and listed in valid_volumes. + # Mount the workspace from a host directory instead of a Docker volume, so jobs + # can bind-mount it by its own path into sibling containers (".:/app" in docker + # compose). Not needed when workflows use the GITEA_DOCKER_WORKSPACE variable. + # The workspace parent directory must be mounted into the runner container. #bind_workdir: false # How long a job waits for a service container that declares a healthcheck to become # healthy. A negative value (e.g. -1s) starts the steps without waiting. diff --git a/runner-docs_versioned_docs/version-3/reference/cli.md b/runner-docs_versioned_docs/version-3/reference/cli.md index 553196b9..ae2e0be4 100644 --- a/runner-docs_versioned_docs/version-3/reference/cli.md +++ b/runner-docs_versioned_docs/version-3/reference/cli.md @@ -103,13 +103,15 @@ Flags: --detect-event Use first event type from workflow as event that triggered the workflow -C, --directory string working directory (default ".") -n, --dryrun dryrun mode - --env stringArray env to make available to actions with optional value (e.g. --env myenv=foo or --env myenv) + --env stringArray env to make available to actions with optional value (e.g. --env myenv=foo or --env myenv; override env-file) --env-file string environment file to read and use as env in the containers (default ".env") -E, --event string run a event name -e, --eventpath string path to a JSON event payload file exposed as the event that triggered the workflow --gitea-instance string Gitea instance to use. -h, --help help for exec -i, --image string Docker image to use. Use "-self-hosted" to run directly on the host. (default "docker.gitea.com/runner-images:ubuntu-latest") + --input stringArray set an input the workflow declares under its workflow_dispatch or workflow_call trigger, others stay invisible to the inputs context (e.g. --input name=bar; can be specified multiple times with highest precedence) + --input-file string path to an .env-format file containing key=value pairs as baseline workflow inputs (override event inputs) --insecure-secrets NOT RECOMMENDED! Doesn't hide secrets while printing logs. -j, --job string run a specific job ID; when several workflow files define that job, also pass --workflows/-W to select the file --json Output logs in json format diff --git a/runner-docs_versioned_docs/version-3/reference/config-example.md b/runner-docs_versioned_docs/version-3/reference/config-example.md index d88fb359..30cf5b32 100644 --- a/runner-docs_versioned_docs/version-3/reference/config-example.md +++ b/runner-docs_versioned_docs/version-3/reference/config-example.md @@ -154,7 +154,8 @@ runner: # job_completed: '' cache: - # Enable the built-in cache server (used by actions/cache and similar actions). + # Enable caching (used by actions/cache and similar actions). Off means no built-in server is + # started and no job is registered with an external_server either. #enabled: true # Directory where cache blobs are stored on disk. Default: $HOME/.cache/actcache # Ignored when external_server is set. @@ -191,9 +192,9 @@ cache: # until its cache entry expires or is manually removed. #offline_mode: false # Serve the actions cache service v2 API. The actions that use it refuse any host they do not - # take for GitHub, so reaching it means editing that check out of their own bundle, undone - # whenever it is downloaded again. That edit is made either way, this only governs the API - # advertised. A bundle that does not match is left alone. + # take for GitHub, so reaching it means editing that check out of their own bundle, put back + # after the copy into the job. That edit is made either way, this only governs the API + # advertised. A bundle that does not match is left alone. With v2, uploads need a reachable cache. #v2: true # How the cache server discards entries, ignored when external_server is set since that # server applies its own. Leave a setting out for its default; 0s or 0 turns the three @@ -271,11 +272,10 @@ container: #require_docker: false # Timeout to wait for the docker daemon to be reachable, if docker is required by require_docker or runner #docker_timeout: 0s - # Bind the workspace to the host filesystem instead of using Docker volumes. - # This is required for Docker-in-Docker (DinD) setups when jobs use docker compose - # with bind mounts (e.g., ".:/app"), as volume-based workspaces are not accessible - # from the DinD daemon's filesystem. When enabled, ensure the workspace parent - # directory is also mounted into the runner container and listed in valid_volumes. + # Mount the workspace from a host directory instead of a Docker volume, so jobs + # can bind-mount it by its own path into sibling containers (".:/app" in docker + # compose). Not needed when workflows use the GITEA_DOCKER_WORKSPACE variable. + # The workspace parent directory must be mounted into the runner container. #bind_workdir: false # How long a job waits for a service container that declares a healthcheck to become # healthy. A negative value (e.g. -1s) starts the steps without waiting. From 1a284521f104aec364718aceff83fa8a439aef29 Mon Sep 17 00:00:00 2001 From: kmiit Date: Mon, 14 Sep 2026 19:50:42 +0000 Subject: [PATCH 09/22] docs: Sync zh-cn and zh-tw current and 1.27 with English (#545) Co-authored-by: Lunny Xiao Reviewed-on: https://gitea.com/gitea/docs/pulls/545 Reviewed-by: Lunny Xiao Co-authored-by: kmiit --- .../current/administration/reverse-proxies.md | 99 +++++++++++++++---- .../administration/reverse-proxies.md | 76 +++++++++++--- .../current/administration/reverse-proxies.md | 99 +++++++++++++++---- .../administration/reverse-proxies.md | 76 +++++++++++--- 4 files changed, 284 insertions(+), 66 deletions(-) diff --git a/i18n/zh-cn/docusaurus-plugin-content-docs/current/administration/reverse-proxies.md b/i18n/zh-cn/docusaurus-plugin-content-docs/current/administration/reverse-proxies.md index 138f7d58..20cd8b82 100644 --- a/i18n/zh-cn/docusaurus-plugin-content-docs/current/administration/reverse-proxies.md +++ b/i18n/zh-cn/docusaurus-plugin-content-docs/current/administration/reverse-proxies.md @@ -14,6 +14,8 @@ aliases: 2. 将 `https://git.example.com/foo` 反向代理到 `http://gitea:3000/foo` 3. 确保反向代理不会解码 URI。`https://git.example.com/a%2Fb`的请求应该被传递给 `http://gitea:3000/a%2Fb`。 4. 确保 `Host` 和 `X-Forwarded-Proto` 头被正确的传递给 Gitea,使 Gitea 可以看到正在访问的真实 URL。 +5. 确保 Web 服务器有完整的证书(包括所有中间证书和根证书),以便 `git clone` 和 `git pull` 正常工作。 +6. Gitea 会在 `/-/ws` 使用 WebSocket 连接,用于通知计数等实时更新。请确保反向代理使用 HTTP/1.1,并转发 `Upgrade` 和 `Connection` 头,参见下面的示例。否则 Gitea 会回退为定期轮询。 ## 使用子路径 @@ -39,6 +41,7 @@ server { location / { client_max_body_size 512M; proxy_pass http://localhost:3000; + proxy_http_version 1.1; proxy_set_header Connection $http_connection; proxy_set_header Upgrade $http_upgrade; proxy_set_header Host $host; @@ -61,8 +64,9 @@ server { # 确保 nginx 使用未转义 URI, 按原样保持 "%2F"。 确保 nginx 去除 "/gitea" 子路径前缀, 按原样传递 "/v2"。 rewrite ^ $request_uri; - rewrite ^(/gitea)?(/.*) $2 break; + rewrite ^/(gitea($|/))?(.*) /$3 break; proxy_pass http://127.0.0.1:3000$uri; + proxy_http_version 1.1; # 其他的常规 HTTP 表头,见上面“使用 Nginx 作为反向代理服务”小节的配置 proxy_set_header Connection $http_connection; @@ -107,6 +111,7 @@ server { } location / { + # 其他指令见上面「使用 Nginx 作为反向代理服务」小节 proxy_pass http://localhost:3000; } } @@ -123,6 +128,7 @@ server { server_name git.example.com; location / { + # 其他指令见上面「使用 Nginx 作为反向代理服务」小节 proxy_pass http://localhost:3000; } } @@ -144,6 +150,20 @@ server { } ``` +## Nginx Proxy Manager + +如果使用 Nginx Proxy Manager 作为 Gitea 的反向代理,配置与原生 Nginx 略有不同。 + +它会[默认给自定义 location 加上一些指令](https://github.com/NginxProxyManager/nginx-proxy-manager/blob/master/docker/rootfs/etc/nginx/conf.d/include/proxy.conf),因此上面 Nginx 配置里对应的指令不要再写一遍。否则会因为指令重复(尤其是 `proxy_set_header Host $host`)出现 `400 bad request`。 + +创建 `/` 自定义 location 时,只需在其配置中加入: + +```nginx +client_max_body_size 512M; +``` + +在代理主机上启用 `Websockets Support`,Nginx Proxy Manager 会自行加入 WebSocket 相关指令。再额外添加 `proxy_http_version` 会导致 Nginx 拒绝启动。 + ## 使用 Apache HTTPD 作为反向代理服务 如果您想使用 Apache HTTPD 作为 Gitea 的反向代理服务,您可以为您的 Apache HTTPD 作如下配置(在 Ubuntu 中,配置文件通常在 `/etc/apache2/httpd.conf` 目录下): @@ -154,30 +174,23 @@ server { ProxyPreserveHost On ProxyRequests off AllowEncodedSlashes NoDecode - ProxyPass / http://localhost:3000/ nocanon + ProxyPass / http://localhost:3000/ nocanon upgrade=websocket RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME} ``` -注:必须启用以下 Apache HTTPD 组件:`proxy`, `proxy_http` +:::note +必须启用以下 Apache HTTPD 组件:`proxy`, `proxy_http`。 + +`upgrade=websocket` 需要 Apache HTTPD 2.4.48 或更高版本。更旧的版本**必须**去掉它,否则 Apache HTTPD 将无法启动。 +::: + +如果希望用 Let's Encrypt 的 webroot 验证,请在 `ProxyPass` 之前加入 `ProxyPass /.well-known !`,避免把这些请求代理到 Gitea。 ## 使用 Apache HTTPD 作为反向代理服务并将 Gitea 路由至一个子路径 如果您已经有一个域名并且想与 Gitea 共享该域名,您可以增加以下配置为 Gitea 添加路由规则(在 Ubuntu 中,配置文件通常在 `/etc/apache2/httpd.conf` 目录下): -``` - - ... - - Order allow,deny - Allow from all - - AllowEncodedSlashes NoDecode - # 注意: 路径和 URL 后面都不要写路径符号 '/' - ProxyPass /git http://localhost:3000 nocanon - -``` - ```apacheconf ... @@ -187,7 +200,7 @@ server { AllowEncodedSlashes NoDecode # 注意: 路径和 URL 后面都不要写路径符号 '/' - ProxyPass /git http://localhost:3000 nocanon + ProxyPass /git http://localhost:3000 nocanon upgrade=websocket ProxyPreserveHost On RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME} @@ -195,7 +208,55 @@ server { 然后您**必须**在 Gitea 的配置文件中正确的添加类似 `[server] ROOT_URL = http://git.example.com/git/` 的配置项。 -注:必须启用以下 Apache HTTPD 组件:`proxy`, `proxy_http` +:::note +必须启用以下 Apache HTTPD 组件:`proxy`, `proxy_http`。`upgrade=websocket` 需要 Apache HTTPD 2.4.48 或更高版本,更旧的版本请去掉它。 +::: + +## 使用 Apache HTTPD 直接提供静态资源 + +我们可以通过将资源分为静态和动态两种类型来调节性能。 + +CSS 文件、JavaScript 文件、图片和字体是静态内容。首页、仓库视图和工单列表是动态内容。 + +Apache HTTPD 可以直接提供静态资源,并且只代理动态资源请求给 Gitea。 + +将 Gitea 源代码仓库的一个快照下载到 `/path/to/gitea/`。 +在此之后,在本地仓库目录运行 `make frontend` 来生成静态资源。在这个情况下,我们只对 `public/` 目录感兴趣,您可以删除剩下的其他目录。 +(为了生成静态资源,您需要安装一个[带 npm 的 Node ](https://nodejs.org/en/download/)和 `make`) + +取决于您的用户量的大小,您可以将流量分离到两个不同的服务器,或者为静态资源配置一个 cdn。 + +### 单服务器节点,单域名 + +将 `[server] STATIC_URL_PREFIX = /_/static` 写入您的 Gitea 配置文件: + +```apacheconf + + ... + + Order allow,deny + Allow from all + + + ProxyPass /_/static/ ! + Alias /_/static/ /path/to/gitea/public/ + + Options FollowSymlinks + AllowOverride None + Require all granted + + + AllowEncodedSlashes NoDecode + # 注意: 路径和 URL 后面都不要写路径符号 '/' + ProxyPass / http://localhost:3000/ nocanon upgrade=websocket + ProxyPreserveHost On + RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME} + +``` + +:::note +必须启用以下 Apache HTTPD 组件:`proxy`, `proxy_http`。`upgrade=websocket` 需要 Apache HTTPD 2.4.48 或更高版本,更旧的版本请去掉它。 +::: ## 使用 Caddy 作为反向代理服务 @@ -231,11 +292,13 @@ git.example.com { - 使用 Microsoft Web Platform Installer 5.1 (WebPI) 安装 Application Request Routing(简称 ARR),或者在 [IIS.net](https://www.iis.net/downloads/microsoft/application-request-routing) 下载这个插件。 - 一但这个模块被安装到 IIS 上,你将会在 IIS 管理控制台看到一个叫做 URL Rewrite 的新图标。 +- 安装 Windows 功能 `WebSocket Protocol`,否则 ARR 无法代理 Gitea 的 WebSocket 端点。 - 打开 IIS 管理控制台,在左边的列表中点击 `Gitea Proxy` 网页。在中间选中并且双击 URL Rewrite 的图标来加载 URL 重写的面板。 - 在管理控制台的右边选择 `Add Rule` 操作,并且在 `Inbound and Outbound Rules` 分类中选择 `Reverse Proxy Rule`。 - 在 Inbound Rules 中, 将 server name 设置为 Gitea 正在运行的主机以及对应端口。例如,如果你在 localhost 的 3000 端口上运行 Gitea,则设置为 `127.0.0.1:3000`。 - 启用 SSL Offloading - 在 Outbound Rules 中,确保设置了 `Rewrite the domain names of the links in HTTP response`,并且将 `From:` 设置为上面的 server name,将 `To:` 设置为你的外部访问名称,例如:`git.example.com` +- 关闭 Application Request Routing 的 `Server Proxy Settings` 中的 `Reverse rewrite host in response headers`(在 IIS 管理器中选择服务器节点,打开 `Application Request Routing Cache`,再打开右侧的 `Server Proxy Settings`)。若保持开启,ARR 会把 `Location` 头里的主机改回内部地址,导致登录或表单提交后的重定向把浏览器送到 `127.0.0.1:3000` 而不是 `git.example.com`。 - 现在,根据下面的内容为您的网页编辑 `web.config`(将 `127.0.0.1:3000` 和 `git.example.com` 改为适当的值) ```xml diff --git a/i18n/zh-cn/docusaurus-plugin-content-docs/version-1.27/administration/reverse-proxies.md b/i18n/zh-cn/docusaurus-plugin-content-docs/version-1.27/administration/reverse-proxies.md index 138f7d58..31db3fe9 100644 --- a/i18n/zh-cn/docusaurus-plugin-content-docs/version-1.27/administration/reverse-proxies.md +++ b/i18n/zh-cn/docusaurus-plugin-content-docs/version-1.27/administration/reverse-proxies.md @@ -14,6 +14,7 @@ aliases: 2. 将 `https://git.example.com/foo` 反向代理到 `http://gitea:3000/foo` 3. 确保反向代理不会解码 URI。`https://git.example.com/a%2Fb`的请求应该被传递给 `http://gitea:3000/a%2Fb`。 4. 确保 `Host` 和 `X-Forwarded-Proto` 头被正确的传递给 Gitea,使 Gitea 可以看到正在访问的真实 URL。 +5. 确保 Web 服务器有完整的证书(包括所有中间证书和根证书),以便 `git clone` 和 `git pull` 正常工作。 ## 使用子路径 @@ -61,7 +62,7 @@ server { # 确保 nginx 使用未转义 URI, 按原样保持 "%2F"。 确保 nginx 去除 "/gitea" 子路径前缀, 按原样传递 "/v2"。 rewrite ^ $request_uri; - rewrite ^(/gitea)?(/.*) $2 break; + rewrite ^/(gitea($|/))?(.*) /$3 break; proxy_pass http://127.0.0.1:3000$uri; # 其他的常规 HTTP 表头,见上面“使用 Nginx 作为反向代理服务”小节的配置 @@ -75,7 +76,7 @@ server { } ``` -然后您**必须**在 Gitea 的配置文件中正确的添加类似 `[server] ROOT_URL = http://git.example.com/git/` 的配置项。 +然后您**必须**在 Gitea 的配置文件中正确的添加类似 `[server] ROOT_URL = http://git.example.com/gitea/` 的配置项。 ## 使用 Nginx 直接提供静态资源 @@ -144,6 +145,20 @@ server { } ``` +## Nginx Proxy Manager + +如果使用 Nginx Proxy Manager 作为 Gitea 的反向代理,配置与原生 Nginx 略有不同。 + +它会[默认给自定义 location 加上一些指令](https://github.com/NginxProxyManager/nginx-proxy-manager/blob/master/docker/rootfs/etc/nginx/conf.d/include/proxy.conf),因此上面 Nginx 配置里对应的指令不要再写一遍。否则会因为指令重复(尤其是 `proxy_set_header Host $host`)出现 `400 bad request`。 + +创建 `/` 自定义 location 时,只需在其配置中加入: + +```nginx +client_max_body_size 512M; +proxy_set_header Connection $http_connection; +proxy_set_header Upgrade $http_upgrade; +``` + ## 使用 Apache HTTPD 作为反向代理服务 如果您想使用 Apache HTTPD 作为 Gitea 的反向代理服务,您可以为您的 Apache HTTPD 作如下配置(在 Ubuntu 中,配置文件通常在 `/etc/apache2/httpd.conf` 目录下): @@ -161,23 +176,12 @@ server { 注:必须启用以下 Apache HTTPD 组件:`proxy`, `proxy_http` +如果希望用 Let's Encrypt 的 webroot 验证,请在 `ProxyPass` 之前加入 `ProxyPass /.well-known !`,避免把这些请求代理到 Gitea。 + ## 使用 Apache HTTPD 作为反向代理服务并将 Gitea 路由至一个子路径 如果您已经有一个域名并且想与 Gitea 共享该域名,您可以增加以下配置为 Gitea 添加路由规则(在 Ubuntu 中,配置文件通常在 `/etc/apache2/httpd.conf` 目录下): -``` - - ... - - Order allow,deny - Allow from all - - AllowEncodedSlashes NoDecode - # 注意: 路径和 URL 后面都不要写路径符号 '/' - ProxyPass /git http://localhost:3000 nocanon - -``` - ```apacheconf ... @@ -197,6 +201,48 @@ server { 注:必须启用以下 Apache HTTPD 组件:`proxy`, `proxy_http` +## 使用 Apache HTTPD 直接提供静态资源 + +我们可以通过将资源分为静态和动态两种类型来调节性能。 + +CSS 文件、JavaScript 文件、图片和字体是静态内容。首页、仓库视图和工单列表是动态内容。 + +Apache HTTPD 可以直接提供静态资源,并且只代理动态资源请求给 Gitea。 + +将 Gitea 源代码仓库的一个快照下载到 `/path/to/gitea/`。 +在此之后,在本地仓库目录运行 `make frontend` 来生成静态资源。在这个情况下,我们只对 `public/` 目录感兴趣,您可以删除剩下的其他目录。 +(为了生成静态资源,您需要安装一个[带 npm 的 Node ](https://nodejs.org/en/download/)和 `make`) + +取决于您的用户量的大小,您可以将流量分离到两个不同的服务器,或者为静态资源配置一个 cdn。 + +### 单服务器节点,单域名 + +将 `[server] STATIC_URL_PREFIX = /_/static` 写入您的 Gitea 配置文件: + +```apacheconf + + ... + + Order allow,deny + Allow from all + + + ProxyPass /_/static/ ! + Alias /_/static/ /path/to/gitea/public/ + + Options FollowSymlinks + AllowOverride None + Require all granted + + + AllowEncodedSlashes NoDecode + # 注意: 路径和 URL 后面都不要写路径符号 '/' + ProxyPass / http://localhost:3000/ nocanon + ProxyPreserveHost On + RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME} + +``` + ## 使用 Caddy 作为反向代理服务 如果您想使用 Caddy 作为 Gitea 的反向代理服务,您可以在 `Caddyfile` 中添加如下配置: diff --git a/i18n/zh-tw/docusaurus-plugin-content-docs/current/administration/reverse-proxies.md b/i18n/zh-tw/docusaurus-plugin-content-docs/current/administration/reverse-proxies.md index e86740e0..a342335a 100644 --- a/i18n/zh-tw/docusaurus-plugin-content-docs/current/administration/reverse-proxies.md +++ b/i18n/zh-tw/docusaurus-plugin-content-docs/current/administration/reverse-proxies.md @@ -14,6 +14,8 @@ aliases: 2. 將 `https://git.example.com/foo` 反向代理到 `http://gitea:3000/foo` 3. 確保反向代理不會解碼 URI。`https://git.example.com/a%2Fb`的請求應該被傳遞給 `http://gitea:3000/a%2Fb`。 4. 確保 `Host` 和 `X-Forwarded-Proto` 頭被正確的傳遞給 Gitea,使 Gitea 可以看到正在訪問的真實 URL。 +5. 確保 Web 伺服器有完整的憑證(包括所有中間憑證和根憑證),以便 `git clone` 和 `git pull` 正常工作。 +6. Gitea 會在 `/-/ws` 使用 WebSocket 連線,用於通知計數等即時更新。請確保反向代理使用 HTTP/1.1,並轉發 `Upgrade` 和 `Connection` 頭,參見下面的示例。否則 Gitea 會改為定期輪詢。 ## 使用子路徑 @@ -39,6 +41,7 @@ server { location / { client_max_body_size 512M; proxy_pass http://localhost:3000; + proxy_http_version 1.1; proxy_set_header Connection $http_connection; proxy_set_header Upgrade $http_upgrade; proxy_set_header Host $host; @@ -61,8 +64,9 @@ server { # 確保 nginx 使用未轉義 URI, 按原樣保持 "%2F"。 確保 nginx 去除 "/gitea" 子路徑前綴, 按原樣傳遞 "/v2"。 rewrite ^ $request_uri; - rewrite ^(/gitea)?(/.*) $2 break; + rewrite ^/(gitea($|/))?(.*) /$3 break; proxy_pass http://127.0.0.1:3000$uri; + proxy_http_version 1.1; # 其他的常規 HTTP 表頭,見上面“使用 Nginx 作為反向代理服務”小節的配置 proxy_set_header Connection $http_connection; @@ -107,6 +111,7 @@ server { } location / { + # 其他指令見上面「使用 Nginx 作為反向代理服務」小節 proxy_pass http://localhost:3000; } } @@ -123,6 +128,7 @@ server { server_name git.example.com; location / { + # 其他指令見上面「使用 Nginx 作為反向代理服務」小節 proxy_pass http://localhost:3000; } } @@ -144,6 +150,20 @@ server { } ``` +## Nginx Proxy Manager + +如果使用 Nginx Proxy Manager 作為 Gitea 的反向代理,設定與原生 Nginx 略有不同。 + +它會[預設給自訂 location 加上一些指令](https://github.com/NginxProxyManager/nginx-proxy-manager/blob/master/docker/rootfs/etc/nginx/conf.d/include/proxy.conf),因此上面 Nginx 設定裡對應的指令不要再寫一遍。否則會因為指令重複(尤其是 `proxy_set_header Host $host`)出現 `400 bad request`。 + +建立 `/` 自訂 location 時,只需在其設定中加入: + +```nginx +client_max_body_size 512M; +``` + +在代理主機上啟用 `Websockets Support`,Nginx Proxy Manager 會自行加入 WebSocket 相關指令。再額外添加 `proxy_http_version` 會導致 Nginx 拒絕啟動。 + ## 使用 Apache HTTPD 作為反向代理服務 如果您想使用 Apache HTTPD 作為 Gitea 的反向代理服務,您可以為您的 Apache HTTPD 作如下設定(在 Ubuntu 中,設定文件通常在 `/etc/apache2/httpd.conf` 目錄下): @@ -154,30 +174,23 @@ server { ProxyPreserveHost On ProxyRequests off AllowEncodedSlashes NoDecode - ProxyPass / http://localhost:3000/ nocanon + ProxyPass / http://localhost:3000/ nocanon upgrade=websocket RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME} ``` -注:必須啟用以下 Apache HTTPD 元件:`proxy`, `proxy_http` +:::note +必須啟用以下 Apache HTTPD 元件:`proxy`, `proxy_http`。 + +`upgrade=websocket` 需要 Apache HTTPD 2.4.48 或更高版本。更舊的版本**必須**去掉它,否則 Apache HTTPD 將無法啟動。 +::: + +如果希望用 Let's Encrypt 的 webroot 驗證,請在 `ProxyPass` 之前加入 `ProxyPass /.well-known !`,避免把這些請求代理到 Gitea。 ## 使用 Apache HTTPD 作為反向代理服務並將 Gitea 路由至一個子路徑 如果您已經有一個域名並且想與 Gitea 共享該域名,您可以增加以下設定為 Gitea 添加路由規則(在 Ubuntu 中,設定文件通常在 `/etc/apache2/httpd.conf` 目錄下): -``` - - ... - - Order allow,deny - Allow from all - - AllowEncodedSlashes NoDecode - # 注意: 路徑和 URL 後面都不要寫路徑符號 '/' - ProxyPass /git http://localhost:3000 nocanon - -``` - ```apacheconf ... @@ -187,7 +200,7 @@ server { AllowEncodedSlashes NoDecode # 注意: 路徑和 URL 後面都不要寫路徑符號 '/' - ProxyPass /git http://localhost:3000 nocanon + ProxyPass /git http://localhost:3000 nocanon upgrade=websocket ProxyPreserveHost On RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME} @@ -195,7 +208,55 @@ server { 然後您**必須**在 Gitea 的設定文件中正確的添加類似 `[server] ROOT_URL = http://git.example.com/git/` 的設定項。 -注:必須啟用以下 Apache HTTPD 元件:`proxy`, `proxy_http` +:::note +必須啟用以下 Apache HTTPD 元件:`proxy`, `proxy_http`。`upgrade=websocket` 需要 Apache HTTPD 2.4.48 或更高版本,更舊的版本請去掉它。 +::: + +## 使用 Apache HTTPD 直接提供靜態資源 + +我們可以通過將資源分為靜態和動態兩種類型來調節性能。 + +CSS 文件、JavaScript 文件、圖片和字體是靜態內容。首頁、倉庫視圖和工單列表是動態內容。 + +Apache HTTPD 可以直接提供靜態資源,並且只代理動態資源請求給 Gitea。 + +將 Gitea 源代碼倉庫的一個快照下載到 `/path/to/gitea/`。 +在此之後,在本地倉庫目錄運行 `make frontend` 來生成靜態資源。在這個情況下,我們只對 `public/` 目錄感興趣,您可以刪除剩下的其他目錄。 +(為了生成靜態資源,您需要安裝一個[帶 npm 的 Node ](https://nodejs.org/en/download/)和 `make`) + +取決於您的用戶量的大小,您可以將流量分離到兩個不同的服務器,或者為靜態資源設定一個 cdn。 + +### 單伺服器節點,單域名 + +將 `[server] STATIC_URL_PREFIX = /_/static` 寫入您的 Gitea 設定文件: + +```apacheconf + + ... + + Order allow,deny + Allow from all + + + ProxyPass /_/static/ ! + Alias /_/static/ /path/to/gitea/public/ + + Options FollowSymlinks + AllowOverride None + Require all granted + + + AllowEncodedSlashes NoDecode + # 注意: 路徑和 URL 後面都不要寫路徑符號 '/' + ProxyPass / http://localhost:3000/ nocanon upgrade=websocket + ProxyPreserveHost On + RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME} + +``` + +:::note +必須啟用以下 Apache HTTPD 元件:`proxy`, `proxy_http`。`upgrade=websocket` 需要 Apache HTTPD 2.4.48 或更高版本,更舊的版本請去掉它。 +::: ## 使用 Caddy 作為反向代理服務 @@ -231,11 +292,13 @@ git.example.com { - 使用 Microsoft Web Platform Installer 5.1 (WebPI) 安裝 Application Request Routing(簡稱 ARR),或者在 [IIS.net](https://www.iis.net/downloads/microsoft/application-request-routing) 下載這個外掛。 - 一但這個模組被安裝到 IIS 上,你將會在 IIS 管理控制檯看到一個叫做 URL Rewrite 的新圖標。 +- 安裝 Windows 功能 `WebSocket Protocol`,否則 ARR 無法代理 Gitea 的 WebSocket 端點。 - 打開 IIS 管理控制檯,在左邊的列表中點擊 `Gitea Proxy` 網頁。在中間選中並且雙擊 URL Rewrite 的圖標來加載 URL 重寫的面板。 - 在管理控制檯的右邊選擇 `Add Rule` 操作,並且在 `Inbound and Outbound Rules` 分類中選擇 `Reverse Proxy Rule`。 - 在 Inbound Rules 中, 將 server name 設定為 Gitea 正在運行的主機以及對應端口。例如,如果你在 localhost 的 3000 端口上運行 Gitea,則設定為 `127.0.0.1:3000`。 - 啟用 SSL Offloading - 在 Outbound Rules 中,確保設定了 `Rewrite the domain names of the links in HTTP response`,並且將 `From:` 設定為上面的 server name,將 `To:` 設定為你的外部訪問名稱,例如:`git.example.com` +- 關閉 Application Request Routing 的 `Server Proxy Settings` 中的 `Reverse rewrite host in response headers`(在 IIS 管理員中選擇伺服器節點,打開 `Application Request Routing Cache`,再開啟右側的 `Server Proxy Settings`)。若保持開啟,ARR 會把 `Location` 頭裡的主機改回內部位址,導致登入或表單提交後的重新導向把瀏覽器送到 `127.0.0.1:3000` 而不是 `git.example.com`。 - 現在,根據下面的內容為您的網頁編輯 `web.config`(將 `127.0.0.1:3000` 和 `git.example.com` 改為適當的值) ```xml diff --git a/i18n/zh-tw/docusaurus-plugin-content-docs/version-1.27/administration/reverse-proxies.md b/i18n/zh-tw/docusaurus-plugin-content-docs/version-1.27/administration/reverse-proxies.md index e86740e0..4bc8884f 100644 --- a/i18n/zh-tw/docusaurus-plugin-content-docs/version-1.27/administration/reverse-proxies.md +++ b/i18n/zh-tw/docusaurus-plugin-content-docs/version-1.27/administration/reverse-proxies.md @@ -14,6 +14,7 @@ aliases: 2. 將 `https://git.example.com/foo` 反向代理到 `http://gitea:3000/foo` 3. 確保反向代理不會解碼 URI。`https://git.example.com/a%2Fb`的請求應該被傳遞給 `http://gitea:3000/a%2Fb`。 4. 確保 `Host` 和 `X-Forwarded-Proto` 頭被正確的傳遞給 Gitea,使 Gitea 可以看到正在訪問的真實 URL。 +5. 確保 Web 伺服器有完整的憑證(包括所有中間憑證和根憑證),以便 `git clone` 和 `git pull` 正常工作。 ## 使用子路徑 @@ -61,7 +62,7 @@ server { # 確保 nginx 使用未轉義 URI, 按原樣保持 "%2F"。 確保 nginx 去除 "/gitea" 子路徑前綴, 按原樣傳遞 "/v2"。 rewrite ^ $request_uri; - rewrite ^(/gitea)?(/.*) $2 break; + rewrite ^/(gitea($|/))?(.*) /$3 break; proxy_pass http://127.0.0.1:3000$uri; # 其他的常規 HTTP 表頭,見上面“使用 Nginx 作為反向代理服務”小節的配置 @@ -75,7 +76,7 @@ server { } ``` -然後您**必須**在 Gitea 的設定文件中正確的添加類似 `[server] ROOT_URL = http://git.example.com/git/` 的設定項。 +然後您**必須**在 Gitea 的設定文件中正確的添加類似 `[server] ROOT_URL = http://git.example.com/gitea/` 的設定項。 ## 使用 Nginx 直接提供靜態資源 @@ -144,6 +145,20 @@ server { } ``` +## Nginx Proxy Manager + +如果使用 Nginx Proxy Manager 作為 Gitea 的反向代理,設定與原生 Nginx 略有不同。 + +它會[預設給自訂 location 加上一些指令](https://github.com/NginxProxyManager/nginx-proxy-manager/blob/master/docker/rootfs/etc/nginx/conf.d/include/proxy.conf),因此上面 Nginx 設定裡對應的指令不要再寫一遍。否則會因為指令重複(尤其是 `proxy_set_header Host $host`)出現 `400 bad request`。 + +建立 `/` 自訂 location 時,只需在其設定中加入: + +```nginx +client_max_body_size 512M; +proxy_set_header Connection $http_connection; +proxy_set_header Upgrade $http_upgrade; +``` + ## 使用 Apache HTTPD 作為反向代理服務 如果您想使用 Apache HTTPD 作為 Gitea 的反向代理服務,您可以為您的 Apache HTTPD 作如下設定(在 Ubuntu 中,設定文件通常在 `/etc/apache2/httpd.conf` 目錄下): @@ -161,23 +176,12 @@ server { 注:必須啟用以下 Apache HTTPD 元件:`proxy`, `proxy_http` +如果希望用 Let's Encrypt 的 webroot 驗證,請在 `ProxyPass` 之前加入 `ProxyPass /.well-known !`,避免把這些請求代理到 Gitea。 + ## 使用 Apache HTTPD 作為反向代理服務並將 Gitea 路由至一個子路徑 如果您已經有一個域名並且想與 Gitea 共享該域名,您可以增加以下設定為 Gitea 添加路由規則(在 Ubuntu 中,設定文件通常在 `/etc/apache2/httpd.conf` 目錄下): -``` - - ... - - Order allow,deny - Allow from all - - AllowEncodedSlashes NoDecode - # 注意: 路徑和 URL 後面都不要寫路徑符號 '/' - ProxyPass /git http://localhost:3000 nocanon - -``` - ```apacheconf ... @@ -197,6 +201,48 @@ server { 注:必須啟用以下 Apache HTTPD 元件:`proxy`, `proxy_http` +## 使用 Apache HTTPD 直接提供靜態資源 + +我們可以通過將資源分為靜態和動態兩種類型來調節性能。 + +CSS 文件、JavaScript 文件、圖片和字體是靜態內容。首頁、倉庫視圖和工單列表是動態內容。 + +Apache HTTPD 可以直接提供靜態資源,並且只代理動態資源請求給 Gitea。 + +將 Gitea 源代碼倉庫的一個快照下載到 `/path/to/gitea/`。 +在此之後,在本地倉庫目錄運行 `make frontend` 來生成靜態資源。在這個情況下,我們只對 `public/` 目錄感興趣,您可以刪除剩下的其他目錄。 +(為了生成靜態資源,您需要安裝一個[帶 npm 的 Node ](https://nodejs.org/en/download/)和 `make`) + +取決於您的用戶量的大小,您可以將流量分離到兩個不同的服務器,或者為靜態資源設定一個 cdn。 + +### 單伺服器節點,單域名 + +將 `[server] STATIC_URL_PREFIX = /_/static` 寫入您的 Gitea 設定文件: + +```apacheconf + + ... + + Order allow,deny + Allow from all + + + ProxyPass /_/static/ ! + Alias /_/static/ /path/to/gitea/public/ + + Options FollowSymlinks + AllowOverride None + Require all granted + + + AllowEncodedSlashes NoDecode + # 注意: 路徑和 URL 後面都不要寫路徑符號 '/' + ProxyPass / http://localhost:3000/ nocanon + ProxyPreserveHost On + RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME} + +``` + ## 使用 Caddy 作為反向代理服務 如果您想使用 Caddy 作為 Gitea 的反向代理服務,您可以在 `Caddyfile` 中添加如下設定: From 3d302e72e29ba00725585f6902d41f93140bd956 Mon Sep 17 00:00:00 2001 From: Talya <243989+nehemiagurl@noreply.gitea.com> Date: Tue, 15 Sep 2026 16:56:15 +0000 Subject: [PATCH 10/22] Add commits in other repos documentation (#548) Added in [go-gitea/gitea#22645](https://github.com/go-gitea/gitea/pull/22645) but not properly documented. Reviewed-on: https://gitea.com/gitea/docs/pulls/548 Reviewed-by: silverwind <2021+silverwind@noreply.gitea.com> Co-authored-by: Talya <243989+nehemiagurl@noreply.gitea.com> --- .../version-1.27/usage/issues-prs/linked-references.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/versioned_docs/version-1.27/usage/issues-prs/linked-references.md b/versioned_docs/version-1.27/usage/issues-prs/linked-references.md index 9038321a..90788db2 100644 --- a/versioned_docs/version-1.27/usage/issues-prs/linked-references.md +++ b/versioned_docs/version-1.27/usage/issues-prs/linked-references.md @@ -51,6 +51,11 @@ Example: > This bug was introduced in [e59ff077](#) +Commits in other repositories can be referred to as well +using the form `owner/repository@e59ff077`: + +> This bug was introduced in [mike/compiler@e59ff077](#) + ## Issues and Pull Requests A reference to another issue or pull request can be created using the simple @@ -177,7 +182,7 @@ In the examples, `User1/Repo1` refers to the repository where the reference is u | `UserZ/RepoZ!1234` | - | no | A link to issue/pull 1234 in `UserZ/RepoZ` | | `UserZ/RepoZ#1234` | - | yes | A link to _external issue_ 1234 for `UserZ/RepoZ` | | `UserZ/RepoZ!1234` | - | yes | A link to _PR_ 1234 for `UserZ/RepoZ` | -| **Alphanumeric issue IDs:** | - | - | - | +| **Alphanumeric issue IDs:** | - | - | - | | `AAA-1234` | yes | - | A link to _external issue_ `AAA-1234` for `User1/Repo1` | | `!1234` | yes | - | A link to _PR_ 1234 for `User1/Repo1` | | `User1/Repo1!1234` | yes | - | A link to _PR_ 1234 for `User1/Repo1` | From 77e495f7729f3b3b4cbee62ec8894fe770c454bc Mon Sep 17 00:00:00 2001 From: Gitea Bot Date: Thu, 17 Sep 2026 00:21:50 +0000 Subject: [PATCH 11/22] Update the latest api documents (#549) Automated update of static/swagger-latest.json and static/openapi3-latest.json from the gitea main branch, opened by the "update api spec files" scheduled workflow. Preview: https://pr-549.docs-gitea-com.pages.dev Reviewed-on: https://gitea.com/gitea/docs/pulls/549 Co-authored-by: Gitea Bot --- static/openapi3-latest.json | 12 ++++++++++++ static/swagger-latest.json | 12 ++++++++++++ 2 files changed, 24 insertions(+) diff --git a/static/openapi3-latest.json b/static/openapi3-latest.json index e3376d7f..536091d0 100644 --- a/static/openapi3-latest.json +++ b/static/openapi3-latest.json @@ -12058,6 +12058,9 @@ "403": { "$ref": "#/components/responses/forbidden" }, + "409": { + "$ref": "#/components/responses/error" + }, "422": { "$ref": "#/components/responses/validationError" } @@ -12142,6 +12145,9 @@ "403": { "$ref": "#/components/responses/forbidden" }, + "409": { + "$ref": "#/components/responses/error" + }, "422": { "$ref": "#/components/responses/validationError" } @@ -34999,6 +35005,12 @@ "201": { "$ref": "#/components/responses/EmailList" }, + "400": { + "$ref": "#/components/responses/error" + }, + "409": { + "$ref": "#/components/responses/error" + }, "422": { "$ref": "#/components/responses/validationError" } diff --git a/static/swagger-latest.json b/static/swagger-latest.json index 0b58317b..0ea47a14 100644 --- a/static/swagger-latest.json +++ b/static/swagger-latest.json @@ -945,6 +945,9 @@ "403": { "$ref": "#/responses/forbidden" }, + "409": { + "$ref": "#/responses/error" + }, "422": { "$ref": "#/responses/validationError" } @@ -1029,6 +1032,9 @@ "403": { "$ref": "#/responses/forbidden" }, + "409": { + "$ref": "#/responses/error" + }, "422": { "$ref": "#/responses/validationError" } @@ -22273,6 +22279,12 @@ "201": { "$ref": "#/responses/EmailList" }, + "400": { + "$ref": "#/responses/error" + }, + "409": { + "$ref": "#/responses/error" + }, "422": { "$ref": "#/responses/validationError" } From f1553bed2f51fa6cb9fda692d717f42476db0d3d Mon Sep 17 00:00:00 2001 From: axel7083 <238520+axel7083@noreply.gitea.com> Date: Thu, 17 Sep 2026 23:10:02 +0000 Subject: [PATCH 12/22] docs(installation): adding podman quadlet instructions (#536) I was reading the instructions from Docker, trying to adapt to my podman setup (with Quadlet) and through I could share it, some people might find it useful. Signed-off-by: axel7083 <42176370+axel7083@users.noreply.github.com> Co-authored-by: silverwind Co-authored-by: Lunny Xiao Co-authored-by: axel7083 <42176370+axel7083@users.noreply.github.com> Reviewed-on: https://gitea.com/gitea/docs/pulls/536 Reviewed-by: Lunny Xiao Reviewed-by: silverwind <2021+silverwind@noreply.gitea.com> Co-authored-by: axel7083 <238520+axel7083@noreply.gitea.com> --- docs/installation/with-podman-quadlet.md | 166 +++++++++++++++++++++++ 1 file changed, 166 insertions(+) create mode 100644 docs/installation/with-podman-quadlet.md diff --git a/docs/installation/with-podman-quadlet.md b/docs/installation/with-podman-quadlet.md new file mode 100644 index 00000000..15987215 --- /dev/null +++ b/docs/installation/with-podman-quadlet.md @@ -0,0 +1,166 @@ +--- +date: "2026-09-03T20:00:00+02:00" +slug: "install-with-podman-quadlet" +sidebar_position: 65 +aliases: + - /en-us/install-with-podman-quadlet +--- + +# Installation with Podman Quadlet + +Similarly to [Docker](with-docker.md), [Podman](https://podman.io/) can be used to deploy Gitea. + +This reference setup guides users through the setup based on Podman Quadlet. +Podman Quadlet is the native integration of Podman through systemd. + +To learn more about Podman Quadlet, see [systemd units using Podman Quadlet](https://docs.podman.io/en/latest/markdown/podman-systemd.unit.5.html). + +This setup installs the quadlets in `~/.config/containers/systemd/`, the directory for rootless quadlets, and uses the rootless images. +If you install them in a rootful directory such as `/etc/containers/systemd/`, use the rootful images instead. + +## Basics + +Since Podman v6.0 a single `gitea.quadlets` file can hold multiple quadlets separated by the `---` delimiter. + +Paste the following content into a file named `gitea.quadlets` + +```ini +# FileName=gitea-data +[Volume] +VolumeName=gitea-data +--- +# FileName=gitea-config +[Volume] +VolumeName=gitea-config +--- +# FileName=gitea +[Container] +PublishPort=2222:2222 +PublishPort=3000:3000 +Image=docker.gitea.com/gitea:@dockerVersion@-rootless +ContainerName=gitea +Mount=type=volume,src=gitea-data.volume,destination=/var/lib/gitea +Mount=type=volume,src=gitea-config.volume,destination=/etc/gitea + +[Service] +Restart=always + +[Install] +# Start with the user session +WantedBy=default.target +``` + +You can run the installation command + +```sh +$ podman quadlet install ./gitea.quadlets --application=gitea +/home/user/.config/containers/systemd/gitea/gitea-data.volume +/home/user/.config/containers/systemd/gitea/gitea-config.volume +/home/user/.config/containers/systemd/gitea/gitea.container +``` + +The `--application=gitea` flag allows us to tell podman to group the quadlets together, this can help for managing and organizing the quadlets files. + +You can validate the quadlets are properly installed by looking at the list command + +```sh +$ podman quadlet list +NAME UNIT NAME PATH ON DISK STATUS APPLICATION POD +gitea-config.volume gitea-config-volume.service /home/user/.config/containers/systemd/gitea/gitea-config.volume active/exited gitea +gitea-data.volume gitea-data-volume.service /home/user/.config/containers/systemd/gitea/gitea-data.volume active/exited gitea +gitea.container gitea.service /home/user/.config/containers/systemd/gitea/gitea.container failed/failed gitea +``` + +You can start the application by running `systemctl --user start gitea` command. + +`WantedBy=default.target` starts the service when the user session starts. +Rootless user services do not run without a session, so to start Gitea at boot, enable lingering for the user with `loginctl enable-linger $USER`. + +## Databases + +### PostgreSQL database + +To start Gitea in combination with a PostgreSQL database, apply these changes to the +`gitea.quadlets` file created above. + +To start Gitea with a database, we need to create a network, so the database and Gitea container can communicate. + +```diff +# FileName=gitea-data +[Volume] +VolumeName=gitea-data +--- +# FileName=gitea-config +[Volume] +VolumeName=gitea-config +--- ++ # FileName=gitea-postgres-data ++ [Volume] ++ VolumeName=gitea-postgres-data ++ --- ++ # FileName=gitea ++ [Network] ++ NetworkName=gitea ++ --- ++ # FileName=gitea-postgres ++ [Container] ++ Image=docker.io/library/postgres:18 ++ ContainerName=gitea-postgres ++ Network=gitea.network ++ Mount=type=volume,src=gitea-postgres-data.volume,destination=/var/lib/postgresql ++ Environment=POSTGRES_USER=gitea ++ Environment=POSTGRES_PASSWORD=gitea ++ Environment=POSTGRES_DB=gitea ++ ++ [Service] ++ Restart=always ++ ++ [Install] ++ # Start with the user session ++ WantedBy=default.target ++ --- +# FileName=gitea ++ [Unit] ++ Requires=gitea-postgres.service ++ After=gitea-postgres.service ++ +[Container] +PublishPort=2222:2222 +PublishPort=3000:3000 +Image=docker.gitea.com/gitea:@dockerVersion@-rootless +ContainerName=gitea +Mount=type=volume,src=gitea-data.volume,destination=/var/lib/gitea +Mount=type=volume,src=gitea-config.volume,destination=/etc/gitea ++ Network=gitea.network ++ Environment=GITEA__database__DB_TYPE=postgres ++ Environment=GITEA__database__HOST=gitea-postgres:5432 ++ Environment=GITEA__database__NAME=gitea ++ Environment=GITEA__database__USER=gitea ++ Environment=GITEA__database__PASSWD=gitea + +[Service] +Restart=always + +[Install] +# Start with the user session +WantedBy=default.target +``` + +## Logs + +As systemd manages the container we can use `journalctl` to access the logs + +```sh +$ journalctl --user --follow --unit=gitea.service +gitea[5967]: 2026/09/03 14:50:42 cmd/web.go:263:runWeb() [I] Starting Gitea on PID: 2 +gitea[5967]: 2026/09/03 14:50:42 cmd/web.go:115:showWebStartupMessage() [I] Gitea version: 1.27.3 built with go1.26.7-X:jsonv2 : bindata, timetzdata, +gitea[5967]: 2026/09/03 14:50:42 cmd/web.go:116:showWebStartupMessage() [I] * RunMode: prod +gitea[5967]: 2026/09/03 14:50:42 cmd/web.go:117:showWebStartupMessage() [I] * AppPath: /usr/local/bin/gitea +gitea[5967]: 2026/09/03 14:50:42 cmd/web.go:118:showWebStartupMessage() [I] * WorkPath: /var/lib/gitea +gitea[5967]: 2026/09/03 14:50:42 cmd/web.go:119:showWebStartupMessage() [I] * CustomPath: /var/lib/gitea/custom +gitea[5967]: 2026/09/03 14:50:42 cmd/web.go:120:showWebStartupMessage() [I] * ConfigFile: /etc/gitea/app.ini +gitea[5967]: 2026/09/03 14:50:42 cmd/web.go:121:showWebStartupMessage() [I] Prepare to run install page +gitea[5967]: 2026/09/03 14:50:42 cmd/web.go:329:listen() [I] Listen: http://0.0.0.0:3000 +gitea[5967]: 2026/09/03 14:50:42 cmd/web.go:333:listen() [I] AppURL(ROOT_URL): http://localhost:3000/ +gitea[5967]: 2026/09/03 14:50:42 modules/graceful/server.go:52:NewServer() [I] Starting new Web server: tcp:0.0.0.0:3000 on PID: 2 +``` From 5db4089ae6eaf462cd7de192854caf8ad8419d62 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Fri, 18 Sep 2026 00:22:46 +0000 Subject: [PATCH 13/22] chore(deps): update dependencies (#546) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [@astrojs/starlight](https://starlight.astro.build) ([source](https://github.com/withastro/starlight/tree/HEAD/packages/starlight)) | [`0.41.11` → `0.42.0`](https://renovatebot.com/diffs/npm/@astrojs%2fstarlight/0.41.11/0.42.0) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@astrojs%2fstarlight/0.42.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@astrojs%2fstarlight/0.41.11/0.42.0?slim=true) | | [@astrojs/starlight-docsearch](https://starlight.astro.build) ([source](https://github.com/withastro/starlight/tree/HEAD/packages/docsearch)) | [`0.7.0` → `0.8.0`](https://renovatebot.com/diffs/npm/@astrojs%2fstarlight-docsearch/0.7.0/0.8.0) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@astrojs%2fstarlight-docsearch/0.8.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@astrojs%2fstarlight-docsearch/0.7.0/0.8.0?slim=true) | | [astro](https://astro.build) ([source](https://github.com/withastro/astro/tree/HEAD/packages/astro)) | [`7.2.10` → `7.3.2`](https://renovatebot.com/diffs/npm/astro/7.2.10/7.3.2) | ![age](https://developer.mend.io/api/mc/badges/age/npm/astro/7.3.2?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/astro/7.2.10/7.3.2?slim=true) | | [pnpm](https://github.com/pnpm/pnpm/tree/main/pnpm) ([source](https://github.com/pnpm/pnpm/tree/HEAD/pnpm/npm/pnpm)) | [`12.2.1` → `12.4.0`](https://renovatebot.com/diffs/npm/pnpm/12.2.1/12.4.0) | ![age](https://developer.mend.io/api/mc/badges/age/npm/pnpm/12.4.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/pnpm/12.2.1/12.4.0?slim=true) | | [starlight-openapi](https://github.com/HiDeoo/starlight-openapi) ([source](https://github.com/HiDeoo/starlight-openapi/tree/HEAD/packages/starlight-openapi)) | [`0.26.1` → `0.26.2`](https://renovatebot.com/diffs/npm/starlight-openapi/0.26.1/0.26.2) | ![age](https://developer.mend.io/api/mc/badges/age/npm/starlight-openapi/0.26.2?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/starlight-openapi/0.26.1/0.26.2?slim=true) | --- ### Release Notes
withastro/starlight (@​astrojs/starlight) ### [`v0.42.0`](https://github.com/withastro/starlight/blob/HEAD/packages/starlight/CHANGELOG.md#0420) [Compare Source](https://github.com/withastro/starlight/compare/@astrojs/starlight@0.41.11...@astrojs/starlight@0.42.0) ##### Minor Changes - [#​3572](https://github.com/withastro/starlight/pull/3572) [`292fb17`](https://github.com/withastro/starlight/commit/292fb179cbf6e2cd970ced46359c520aa14a80b4) Thanks [@​HiDeoo](https://github.com/HiDeoo)! - Distributes package as JavaScript files with dedicated type declaration files instead of TypeScript source files. - [#​4121](https://github.com/withastro/starlight/pull/4121) [`2623ae6`](https://github.com/withastro/starlight/commit/2623ae60af0fdafc71938f96153b0427fcc2b5aa) Thanks [@​delucis](https://github.com/delucis)! - Simplifies markup for Starlight’s mobile menu toggle **⚠️ Potentially breaking change:** If you use a theme plugin, custom styles, or component overrides targeting the `MobileMenuToggle` button or `PageFrame` components, you may need to adjust these for the new markup. The button is no longer wrapped in a `` custom element and no longer uses the `aria-expanded` attribute. Instead, you can use the `.sl-menu-button` class name to target the button and the `:popover-open` pseudo-class to style the menu open state specifically. In the following example, custom styles for the menu button are updated for the new approach: ```diff - starlight-menu-button button { + .sl-menu-button { color: var(--sl-color-text); } - starlight-menu-button[aria-expanded='true'] button { + .sl-menu-button:has(~ :popover-open) { color: var(--sl-color-text-accent-high); } ``` See [`MobileMenuToggle.astro`](https://github.com/withastro/starlight/blob/main/packages/starlight/components/MobileMenuToggle.astro) and [`PageFrame.astro`](https://github.com/withastro/starlight/blob/main/packages/starlight/components/PageFrame.astro) on GitHub for the full source code of the updated components. - [#​3572](https://github.com/withastro/starlight/pull/3572) [`292fb17`](https://github.com/withastro/starlight/commit/292fb179cbf6e2cd970ced46359c520aa14a80b4) Thanks [@​HiDeoo](https://github.com/HiDeoo)! - Removes the `tagline` configuration option, which was never used. If your configuration included a `tagline` option, you can safely remove it without any replacement. - [#​4134](https://github.com/withastro/starlight/pull/4134) [`6135f01`](https://github.com/withastro/starlight/commit/6135f015b527453d7083ad01d2dc6c61d72fbefc) Thanks [@​HiDeoo](https://github.com/HiDeoo)! - Updates internal `@astrojs/mdx`, `@astrojs/markdown-satteri`, and `satteri` dependencies. ⚠️ **BREAKING CHANGE:** The following minimum versions are now required: - `astro` v7.2.10 or later - `@astrojs/markdown-satteri` 0.4.0 or later (if you use it) - `@astrojs/markdown-remark` 7.3.0 or later (if you use it) Please update Starlight and Astro together: ```sh npx @​astrojs/upgrade ``` - [#​4121](https://github.com/withastro/starlight/pull/4121) [`2623ae6`](https://github.com/withastro/starlight/commit/2623ae60af0fdafc71938f96153b0427fcc2b5aa) Thanks [@​delucis](https://github.com/delucis)! - Refactors Starlight’s mobile menu toggle to work when JavaScript fails or is disabled ⚠️ **BREAKING CHANGE:** This release drops official support for Chromium-based browsers prior to version 116 (released August 2023), Safari-based browsers prior to version 17.0 (released September 2023), and Firefox prior to version 125 (released April 2024). You can find a list of currently supported browsers and their versions using this [browserslist query](https://browsersl.ist/#q=%3E+0.5%25%2C+not+dead%2C+Chrome+%3E%3D+116%2C+Edge+%3E%3D+116%2C+Firefox+%3E%3D+125%2C+Safari+%3E%3D+17.0%2C+iOS+%3E%3D+17.0%2C+not+op_mini+all). This change also removes the `data-mobile-menu-expanded` attribute, which was previously added to `` while the mobile menu is open. If you have custom code that was depending on this attribute, you will need to update it to use a new selector to check if the mobile menu is open. In the following example, a custom background colour for the site header while the menu is open is updated for the new approach: ```diff - [data-mobile-menu-expanded] header { + body:has(sl-sidebar-pane:popover-open) header { background-color: var(--sl-color-bg); } ```
withastro/starlight (@​astrojs/starlight-docsearch) ### [`v0.8.0`](https://github.com/withastro/starlight/blob/HEAD/packages/docsearch/CHANGELOG.md#080) [Compare Source](https://github.com/withastro/starlight/compare/@astrojs/starlight-docsearch@0.7.0...@astrojs/starlight-docsearch@0.8.0) ##### Minor Changes - [#​3572](https://github.com/withastro/starlight/pull/3572) [`292fb17`](https://github.com/withastro/starlight/commit/292fb179cbf6e2cd970ced46359c520aa14a80b4) Thanks [@​HiDeoo](https://github.com/HiDeoo)! - Distributes package as JavaScript files with dedicated type declaration files instead of TypeScript source files.
withastro/astro (astro) ### [`v7.3.2`](https://github.com/withastro/astro/blob/HEAD/packages/astro/CHANGELOG.md#732) [Compare Source](https://github.com/withastro/astro/compare/astro@7.3.1...astro@7.3.2) ##### Patch Changes - [#​17896](https://github.com/withastro/astro/pull/17896) [`a548223`](https://github.com/withastro/astro/commit/a548223607b9bb146d5d90ddda495343f9a2a739) Thanks [@​matthewp](https://github.com/matthewp)! - Fixes ``) is now escaped like any other element's content instead of being rendered raw. Use `set:html` to explicitly opt a dynamic value back into raw rendering. - [#​17931](https://github.com/withastro/astro/pull/17931) [`c1a6a89`](https://github.com/withastro/astro/commit/c1a6a89efa577b8388f04c4b42d655913bb4b886) Thanks [@​astro-factory](https://github.com/apps/astro-factory)! - Fixes the dev toolbar returning a 504 "Outdated Optimize Dep" error when a workspace-linked package imports a dependency that Vite's initial scan did not discover - [#​17908](https://github.com/withastro/astro/pull/17908) [`42e9188`](https://github.com/withastro/astro/commit/42e9188c4ba7360e5ab8ea4cd7f13d6abcf31879) Thanks [@​astro-factory](https://github.com/apps/astro-factory)! - Fixes i18n fallback routing replacing the first substring match instead of the actual locale segment, which mangled paths like `/energy/en/about` into `/esergy/en/about` - [#​17936](https://github.com/withastro/astro/pull/17936) [`4b92ddc`](https://github.com/withastro/astro/commit/4b92ddc6ab0795ac78c30aedfe43b081dcf5b6b0) Thanks [@​astro-factory](https://github.com/apps/astro-factory)! - Fixes sessions breaking in dev mode with the Cloudflare adapter when middleware is present - Updated dependencies \[[`a548223`](https://github.com/withastro/astro/commit/a548223607b9bb146d5d90ddda495343f9a2a739)]: - [@​astrojs/markdown-satteri](https://github.com/astrojs/markdown-satteri)@​0.4.1 ### [`v7.3.1`](https://github.com/withastro/astro/blob/HEAD/packages/astro/CHANGELOG.md#731) [Compare Source](https://github.com/withastro/astro/compare/astro@7.3.0...astro@7.3.1) ##### Patch Changes - [#​17899](https://github.com/withastro/astro/pull/17899) [`0389640`](https://github.com/withastro/astro/commit/03896405717471f7d6ff54986ed6beaec0cac94f) Thanks [@​ematipico](https://github.com/ematipico)! - Fixes an error that prevented projects using `astro:assets` from starting or building ### [`v7.3.0`](https://github.com/withastro/astro/blob/HEAD/packages/astro/CHANGELOG.md#730) [Compare Source](https://github.com/withastro/astro/compare/astro@7.2.10...astro@7.3.0) ##### Minor Changes - [#​17767](https://github.com/withastro/astro/pull/17767) [`ce7c91f`](https://github.com/withastro/astro/commit/ce7c91f77dbd7be03c04bc13f87af9d01fef6cef) Thanks [@​astro-factory](https://github.com/apps/astro-factory)! - Adds `--ignore-lock` flag to `astro preview`, allowing multiple preview servers to run simultaneously on different ports. This is useful for E2E testing workflows (e.g., Playwright) that need to run several preview servers at once. - [#​17818](https://github.com/withastro/astro/pull/17818) [`c0b6581`](https://github.com/withastro/astro/commit/c0b65811dfa0dafa1aa04b7d6d67fd09250ff8c1) Thanks [@​florian-lefebvre](https://github.com/florian-lefebvre)! - Adds a `logger` parameter to image services hooks Custom image services now receive Astro's runtime logger as an extra argument. Messages logged with it are routed through the destination configured in `logger` and respect your log level, instead of being written straight to the console: ```ts import type { LocalImageService } from 'astro'; const service: LocalImageService = { // ... async transform(inputBuffer, transform, imageConfig, logger) { logger.warn(`Could not optimize "${transform.src}". Passing it through unchanged.`); return { data: inputBuffer, format: 'png' }; }, }; ``` Astro's built-in Sharp service now uses this logger for the warnings it emits when it encounters an unexpected or unsupported source format. - [#​17818](https://github.com/withastro/astro/pull/17818) [`c0b6581`](https://github.com/withastro/astro/commit/c0b65811dfa0dafa1aa04b7d6d67fd09250ff8c1) Thanks [@​florian-lefebvre](https://github.com/florian-lefebvre)! - Adds `logger` to the context object passed to cache providers Custom cache providers now receive Astro's runtime logger on the context passed to `onRequest()`. Messages logged with it are routed through the destination configured in `logger` and respect your log level, instead of being written straight to the console: ```ts import type { CacheProvider } from 'astro'; const provider: CacheProvider = { name: 'my-cache', async onRequest({ request, url, logger }, next) { logger.warn(`Skipping cache for ${url.pathname} because the response sets a cookie.`); return next(); }, // ... }; ``` Astro's built-in `memoryCache()` provider now uses this logger for the warnings it emits when it skips caching a response that sets cookies, and when a background revalidation fails. ##### Patch Changes - [#​17818](https://github.com/withastro/astro/pull/17818) [`c0b6581`](https://github.com/withastro/astro/commit/c0b65811dfa0dafa1aa04b7d6d67fd09250ff8c1) Thanks [@​florian-lefebvre](https://github.com/florian-lefebvre)! - Updates Astro's remaining internal warnings and errors to be written through the configured logger instead of directly to the console, when possible - [#​17886](https://github.com/withastro/astro/pull/17886) [`e747cba`](https://github.com/withastro/astro/commit/e747cba07fcd2b9e7fb03c02ed42abfe2079daa2) Thanks [@​matthewp](https://github.com/matthewp)! - Fixes the memory cache provider to skip responses with `Vary: Cookie` or `Vary: *` - [#​17885](https://github.com/withastro/astro/pull/17885) [`916b738`](https://github.com/withastro/astro/commit/916b738b0447728f1c274e32677c9bac09be78f6) Thanks [@​Princesseuh](https://github.com/Princesseuh)! - Improves build performance for sites with a large number of pages coming from a large amount of different modules. - [#​17795](https://github.com/withastro/astro/pull/17795) [`15e2deb`](https://github.com/withastro/astro/commit/15e2debc7e81d353410ff76a76c3bf75b7fb3070) Thanks [@​matthewp](https://github.com/matthewp)! - Adds concurrent rendering support for `experimental.incrementalBuild`, including when using `@astrojs/cloudflare` Incremental builds no longer disable caching when `build.concurrency` is greater than `1`. Projects that set `build.concurrency: 1` to keep the cache enabled can remove that workaround. Cloudflare builds also reduce serialization overhead for large prerendered pages. - [#​17879](https://github.com/withastro/astro/pull/17879) [`21c34a6`](https://github.com/withastro/astro/commit/21c34a6816372220157ff7e6b697275360d3e367) Thanks [@​matthewp](https://github.com/matthewp)! - Fixes missing styles, links, and scripts from content collection entries rendered inside server islands - [#​17861](https://github.com/withastro/astro/pull/17861) [`3193988`](https://github.com/withastro/astro/commit/3193988d0566f53ecd10b03cd18669dcf230c8d6) Thanks [@​ethanstoner](https://github.com/ethanstoner)! - Fixes i18n fallback routes being generated with a corrupted path when the locale code also appears at the start of a later path segment. A page such as `src/pages/en/enterprise.astro` with `fallback: { es: 'en' }` produced the route `/es/esterprise` instead of `/es/enterprise`, so the fallback never matched the intended URL. Only the leading locale segment is rewritten now.
pnpm/pnpm (pnpm) ### [`v12.4.0`](https://github.com/pnpm/pnpm/releases/tag/v12.4.0): pnpm 12.4 [Compare Source](https://github.com/pnpm/pnpm/compare/v12.3.4...v12.4.0) #### Minor Changes - pnpm can now manage npm, Python, and Cargo dependencies in the same workspace. Enable `python.enabled` or `cargo.enabled` in `pnpm-workspace.yaml`, then use `pnpm install` to install them together. - Add Python packages with `pnpm add pypi:`. pnpm uses `pyproject.toml`, `pylock.toml`, and a managed `.venv`. Frozen and offline installs are supported, and `pnpm run` and `pnpm exec` make the environment's executables available [#​14566](https://github.com/pnpm/pnpm/issues/14566). - Add Rust crates with `pnpm add crate:`. pnpm supports crates.io and custom sparse registries configured with `cargo.indexUrl`. Registry authentication supports pnpm credentials and, for crates.io, `CARGO_REGISTRY_TOKEN` or `$CARGO_HOME/credentials.toml`. Both ecosystems support faster dependency resolution through `pnprServer`, with local resolution as a fallback when the server does not support it. - Added `pnpm pipeline [name]` to install frozen dependencies and run workspace tasks declared in `pipelines`. It selects affected projects, runs their task graph, and continues running tasks after a task fails. Tasks support `inputs`, `outputs`, `env`, and `cache` settings. Cached results restore task outputs and replay logs. Cargo tasks can reuse local build state between worktrees with `tasks..cargoTargetDir`. Set `includeWorkspaceRoot: true` to include root tasks. Use `pnpm pipeline --dry-run` to preview the task graph without installing configuration dependencies or running workspace hooks. - Added support for Android on arm64 and x64, FreeBSD on x64, and Linux on ppc64le, s390x, and RISC-V (riscv64 with glibc) [#​14431](https://github.com/pnpm/pnpm/issues/14431), [#​14597](https://github.com/pnpm/pnpm/issues/14597), [#​7582](https://github.com/pnpm/pnpm/issues/7582). - Added `trustPolicyExcludePrune` to automatically remove unused versions and packages from `trustPolicyExclude` when running `pnpm add`, `pnpm update`, or `pnpm remove`. It is disabled by default. Package name patterns such as `@scope/*` are kept, and cleanup is skipped when `sharedWorkspaceLockfile` is `false`. - Added `pnpm change check` for CI validation of package versions against the `versioning.epics` bands and `versioning.fixed` groups in `pnpm-workspace.yaml`. It reports all violations, including packages that are not part of the current release. #### Patch Changes - Registry metadata is now kept separate for registries with different URL paths or schemes. This prevents installs from using another registry's package versions or tarball URLs, and keeps metadata fetched over HTTP from being reused for HTTPS [#​13558](https://github.com/pnpm/pnpm/issues/13558). The first install after upgrading refetches registry metadata. The package store is unchanged. `pnpm cache view` now shows full registry URLs. Scripts that parse the directory names from `pnpm cache list-registries` or `pnpm cache list` need updating. - Patches that add build scripts or a `binding.gyp` now trigger a build, subject to build approval. Unapproved builds appear under "Ignored build scripts" [#​14648](https://github.com/pnpm/pnpm/issues/14648). - Build scripts can now be rejected before installing a package with `pnpm add --allow-build=!`, including global installs. `pnpm approve-builds ` and `pnpm approve-builds !` also save decisions when no packages are awaiting approval. They warn if the named package is not awaiting approval [#​14067](https://github.com/pnpm/pnpm/issues/14067). - A registry configured in `.npmrc` now takes precedence over registry settings saved by `pnpm login` in the global `config.yaml`. This fixes installs using the wrong registry after login [#​14614](https://github.com/pnpm/pnpm/issues/14614). - Large downloads over slow connections no longer time out while data is still arriving. `fetch-timeout` now limits how long a request can go without making progress [#​14604](https://github.com/pnpm/pnpm/issues/14604). - Sped up installs in workspaces with many projects when reusing a warm global virtual store [#​14540](https://github.com/pnpm/pnpm/issues/14540). - `pnpm deploy` is faster in large workspaces and no longer fails with `ERR_PNPM_LOCKFILE_CONFIG_MISMATCH` when the project includes a `.pnpmfile.mjs` [#​14539](https://github.com/pnpm/pnpm/issues/14539), [#​14671](https://github.com/pnpm/pnpm/issues/14671). - `pnpm add --workspace ` works again. It saves the dependency with the `workspace:` protocol and links it from the workspace. The command fails if no workspace project provides the package [#​14602](https://github.com/pnpm/pnpm/issues/14602). - `pnpm add` and `pnpm install` now accept protocol-prefixed selectors such as `jsr:@​scope/pkg`, `npm:pkg@^1.0.0`, and `workspace:pkg@*` [#​14590](https://github.com/pnpm/pnpm/issues/14590). Installs with JSR dependencies in the lockfile also no longer fail with `ERR_PNPM_META_FETCH_FAIL` [#​14649](https://github.com/pnpm/pnpm/issues/14649). - Boolean flags now accept explicit inline values. For example, `pnpm install --prod=false` installs devDependencies, while `--prod=true` skips them [#​14553](https://github.com/pnpm/pnpm/issues/14553). - `pnpm install ` now accepts `--offline` and `--prefer-offline`, as `pnpm add ` already did [#​14194](https://github.com/pnpm/pnpm/pull/14194). - Fixed `pnpm install --frozen-lockfile` rejecting a freshly generated lockfile when overrides use relative `file:` or `link:` paths in a workspace [#​14555](https://github.com/pnpm/pnpm/issues/14555). - Fixed installs with config dependencies failing on symlinked lockfiles, such as those used by Bazel and Nix, when the config dependencies have not changed. Updates that would write through a symlink remain disallowed. Updating config dependencies also preserves lockfiles that start with a byte order mark [#​14372](https://github.com/pnpm/pnpm/issues/14372). - Fixed package manager version pins being written to the wrong lockfile when `lockfileDir` is set. The pins also remain consistent across commands when version switching is disabled, avoiding unnecessary lockfile changes [#​14633](https://github.com/pnpm/pnpm/issues/14633), [#​14575](https://github.com/pnpm/pnpm/issues/14575). - `pnpm import` now respects `lockfileDir` and branch lockfiles without modifying other lockfiles. Failed imports restore the destination lockfile [#​14563](https://github.com/pnpm/pnpm/issues/14563). - `pnpm patch-commit` now produces valid patches when files are added or deleted. `pnpm install` also accepts patches that delete files without listing their contents, and patch files with CRLF line endings [#​14559](https://github.com/pnpm/pnpm/issues/14559), [#​14557](https://github.com/pnpm/pnpm/issues/14557). - Fixed version ranges with partial upper bounds. For example, `<=16` now includes all 16.x versions, and `>=0.11 <=3` correctly accepts 3.0.1 [#​14419](https://github.com/pnpm/pnpm/issues/14419). - Workspace package patterns now support `.` and `..` segments and repeated slashes. Patterns such as `./packages/*` and exclusions such as `!./packages/foo` now match correctly [#​14571](https://github.com/pnpm/pnpm/issues/14571). - `packageConfigs` settings now apply to the specified projects when `sharedWorkspaceLockfile` is `false`, including `overrides`, `hoist`, `modulesDir`, `saveExact`, and `savePrefix`. Workspaces with a shared lockfile report which entries were ignored [#​14556](https://github.com/pnpm/pnpm/issues/14556). - `pnpm run` and `pnpm exec` no longer report a changed workspace structure after a successful install when `sharedWorkspaceLockfile` is `false` and `verifyDepsBeforeRun` is enabled [#​14588](https://github.com/pnpm/pnpm/issues/14588). - Commands run from a project's subdirectory now find the nearest ancestor with a manifest. This fixes commands such as `pnpm bin` returning paths under the wrong directory. `pnpm init` still creates its manifest in the current directory, and `pnpm exec` still runs there [#​14622](https://github.com/pnpm/pnpm/issues/14622). - Relative `scriptShell` paths in `pnpm-workspace.yaml` now resolve from the workspace root, including when scripts run in nested packages. Bare command names such as `bash` still use `PATH` [#​14422](https://github.com/pnpm/pnpm/issues/14422). - Fixed installing the pnpm version pinned in `packageManager` when `nodeLinker` is `hoisted`. Managed Node.js, Deno, and Bun installations also work when the global config uses `nodeLinker: hoisted` [#​14595](https://github.com/pnpm/pnpm/issues/14595). - The JavaScript pnpm can again switch to a project's pinned pnpm version on platforms without a native binary for that version, such as Alpine Linux with pnpm 10 or Intel Macs with pnpm 11. If a native pnpm version does not support the platform, the error now names the missing target [#​13622](https://github.com/pnpm/pnpm/issues/13622). - Provisioning Yarn 6 now uses `GH_TOKEN` or `GITHUB_TOKEN` when available to avoid GitHub's anonymous API rate limit in CI. Tokens are only sent when `strict-ssl` is enabled. - Fixed concurrent installs sharing a global virtual store on macOS failing with "failed to import ... No such file or directory" [#​14560](https://github.com/pnpm/pnpm/issues/14560). - Fixed `pnpm setup` failing with `ERR_PNPM_DIRECTORY_FETCHER_PATH_ESCAPE` on Windows. Local `file:` dependencies whose directories are symlinks or junctions are now packed correctly [#​14618](https://github.com/pnpm/pnpm/issues/14618). - On Windows, installs now retry replacing command shims temporarily locked by another process [#​14549](https://github.com/pnpm/pnpm/issues/14549). - Fixed argument forwarding on Windows with `shellEmulator` enabled. Paths ending in a backslash, line breaks, and literal shell expressions are preserved [#​14548](https://github.com/pnpm/pnpm/issues/14548). - Windows store paths now consistently use backslashes in `pnpm store path` output and in the `storeDir` and `virtualStoreDir` fields of `node_modules/.modules.yaml`. - Invalid certificates in `ca` or `cafile` no longer cause an `Invalid CA certificate` error. Valid certificates still apply, and blank `cert` or `key` values are treated as unset [#​14646](https://github.com/pnpm/pnpm/issues/14646). - Installs now respect the archive extraction concurrency limit even after a download is abandoned [#​14585](https://github.com/pnpm/pnpm/issues/14585). - `pnpm audit` summaries now exclude advisories ignored through `auditConfig.ignoreGhsas` and report them separately. When all advisories are ignored, the summary says so [#​14535](https://github.com/pnpm/pnpm/issues/14535). - `pnpm pack --json` now reports errors as JSON. Lifecycle script output appears before the final JSON output. - `pnpm outdated -r` now wraps the `Dependents` column, keeping the table readable when many workspace projects use the same dependency [#​14591](https://github.com/pnpm/pnpm/issues/14591). - Shell completions now support the `pn` alias in bash, fish, pwsh, and zsh [#​11955](https://github.com/pnpm/pnpm/issues/11955). - `pnpm version` now accepts `-m` as a short alias for `--message` [#​14567](https://github.com/pnpm/pnpm/issues/14567). #### Platinum Sponsors
Bit OpenAI Notion
CodeRabbit
#### Gold Sponsors
Sanity Discord Vite
SerpApi Stackblitz Workleap
Nx Latitude
### [`v12.3.4`](https://github.com/pnpm/pnpm/releases/tag/v12.3.4): pnpm 12.3.4 [Compare Source](https://github.com/pnpm/pnpm/compare/v12.3.3...v12.3.4) #### Patch Changes - Sped up dependency resolution in large workspaces [#​14352](https://github.com/pnpm/pnpm/issues/14352). - pnpm 12 now accepts the boolean settings as command-line flags on every command that takes them in pnpm 11, for example `pnpm install --unsafe-perm`, `pnpm add foo --offline`, and `pnpm install --dangerously-allow-all-builds`. pnpm 12 rejected them with `unexpected argument`, which failed every install on Vercel, whose build runs `pnpm install --unsafe-perm` [#​14346](https://github.com/pnpm/pnpm/issues/14346). `pnpm remove` now accepts `--unsafe-perm`, the same flag `pnpm install`, `pnpm add`, and `pnpm update` take. #### Platinum Sponsors
Bit OpenAI Notion
#### Gold Sponsors
Sanity Discord Vite
SerpApi CodeRabbit Stackblitz
Workleap Nx Latitude
### [`v12.3.3`](https://github.com/pnpm/pnpm/releases/tag/v12.3.3): pnpm 12.3.3 [Compare Source](https://github.com/pnpm/pnpm/compare/v12.3.2...v12.3.3) #### Patch Changes - Fixed concurrent installs sharing a store occasionally failing with an ENOENT error while importing a package file [#​14353](https://github.com/pnpm/pnpm/issues/14353). - Sped up writing the lockfile in large workspaces [#​14352](https://github.com/pnpm/pnpm/issues/14352). - Sped up dependency resolution in large workspaces [#​14352](https://github.com/pnpm/pnpm/issues/14352). - pnpm now runs through Node.js when it was installed by a tool that skips build scripts, such as Vercel's `packageManager` provisioning, Bun, Deno, or `npm install --ignore-scripts`. Those installs previously failed with `syntax error near unexpected token ')'`. They still cannot run pnpm on Windows. On macOS only a shell can start it [#​14346](https://github.com/pnpm/pnpm/issues/14346). #### Platinum Sponsors
Bit OpenAI Notion
#### Gold Sponsors
Sanity Discord Vite
SerpApi CodeRabbit Stackblitz
Workleap Nx Latitude
### [`v12.3.2`](https://github.com/pnpm/pnpm/releases/tag/v12.3.2): pnpm 12.3.2 [Compare Source](https://github.com/pnpm/pnpm/compare/v12.3.1...v12.3.2) #### Patch Changes - `pnpm audit --fix update` no longer aborts when a vulnerable package has no safe version inside its declared range [#​14508](https://github.com/pnpm/pnpm/issues/14508). The run updates every package it can and lists the rest as remaining. - `pnpm install` no longer reruns root lifecycle scripts when the global virtual store contains an unfinished-build marker in a package slot that the current lockfile does not use [pnpm/pnpm#14485](https://github.com/pnpm/pnpm/issues/14485). - Sped up installs that have no lockfile. pnpm now links packages whose dependency subtree has no peer dependencies into the virtual store while resolution is still running. - `pnpm run` and `pnpm exec` now start without reinstalling on filesystems that keep sub-millisecond mtimes, such as NTFS. Previously, every run on those filesystems reinstalled first [pnpm/pnpm#14486](https://github.com/pnpm/pnpm/issues/14486). - `pnpm import` now keeps the versions recorded in `package-lock.json`, `npm-shrinkwrap.json`, or `yarn.lock` when it generates `pnpm-lock.yaml`. A range in `package.json`, a catalog, or an override still decides which versions are eligible, and the recorded version is preferred among them. The generated lockfile previously could pin newer versions than the source lockfile [#​14476](https://github.com/pnpm/pnpm/issues/14476). `pnpm import` in a workspace now imports every workspace project into the shared lockfile. It previously imported only the project in the current directory. `pnpm import` now fails with `ERR_PNPM_LOCKFILE_NOT_FOUND` when none of the three source lockfiles is present. It also fails with `ERR_PNPM_YARN_LOCKFILE_PARSE_FAILED` when it cannot parse `yarn.lock`. It previously generated a lockfile from scratch in both cases. `pnpm import` always resolves locally. It warns when `--pnpr-server` or the `pnpr-server` setting is given and does not use the server. - Sped up installs in large workspaces. Discovering the workspace projects no longer enumerates every matched directory to learn which manifest files it holds [#​14352](https://github.com/pnpm/pnpm/issues/14352). - Sped up installs in large workspaces. The resolver and the peer pass allocate less for every dependency edge [#​14352](https://github.com/pnpm/pnpm/issues/14352). - `pnpm self-update`, `pnpm with`, and automatic package-manager version switching no longer wait through registry retry delays when a configured registry has no signatures and `registry.npmjs.org` is unavailable [#​14483](https://github.com/pnpm/pnpm/issues/14483). - Sped up installs in large workspaces. Saving the lockfile is faster, and the install finishes without waiting for memory cleanup [#​14352](https://github.com/pnpm/pnpm/issues/14352). - `pnpm install` now relinks workspace packages when `publishConfig.linkDirectory` changes. Frozen installs report an outdated lockfile until it is regenerated [pnpm/pnpm#14488](https://github.com/pnpm/pnpm/issues/14488). - The pnpm npm wrapper keeps its placeholder shebang-less so pnpm 11 can install pnpm 12 through the version store. Wrapper installs must allow lifecycle scripts to install the native binary [#​14502](https://github.com/pnpm/pnpm/issues/14502). - Sped up dependency resolution when there is no lockfile, and for the dependencies a lockfile does not cover. - Sped up installs in large workspaces. Workspace `link:` targets and importer ids are now derived from the paths' suffixes under the workspace root [#​14352](https://github.com/pnpm/pnpm/issues/14352). - `pnpm install` now reports "Already up to date" when local tarball dependencies have not changed [#​14495](https://github.com/pnpm/pnpm/issues/14495). - `pnpm update` now accepts `--ignore-scripts` and skips lifecycle scripts during the update [pnpm/pnpm#14512](https://github.com/pnpm/pnpm/issues/14512). - Sped up installs that restore a deleted `node_modules` from a warm global virtual store. pnpm no longer re-links packages that are already fully present in the global virtual store [#​14510](https://github.com/pnpm/pnpm/issues/14510). #### Platinum Sponsors
Bit OpenAI Notion
#### Gold Sponsors
Sanity Discord Vite
SerpApi CodeRabbit Stackblitz
Workleap Nx Latitude
### [`v12.3.1`](https://github.com/pnpm/pnpm/releases/tag/v12.3.1): pnpm 12.3.1 [Compare Source](https://github.com/pnpm/pnpm/compare/v12.3.0...v12.3.1) #### Patch Changes - Sped up installs in large workspaces: the anchor for re-rendering workspace `link:` targets is now derived once per project instead of once per dependency edge, and project ordering hashes paths by their raw bytes [#​14352](https://github.com/pnpm/pnpm/issues/14352). - After a self-update from pnpm 12.2 to 12.3, global commands such as `node`, `npm`, and `yarn` failed with `unexpected argument '--shim' found`. Global commands now launch normally, and their first launch migrates the global bin directory to native shims. When self-update downgrades to pnpm 12.2 or older, it keeps the newer native shims so those commands continue to work. - Sped up installs in large workspaces. The check that verifies each project against the lockfile now runs the projects in parallel [#​14352](https://github.com/pnpm/pnpm/issues/14352). #### Platinum Sponsors
Bit OpenAI Notion
#### Gold Sponsors
Sanity Discord Vite
SerpApi CodeRabbit Stackblitz
Workleap Nx Latitude
### [`v12.3.0`](https://github.com/pnpm/pnpm/releases/tag/v12.3.0): pnpm 12.3 [Compare Source](https://github.com/pnpm/pnpm/compare/v12.2.1...v12.3.0) #### Minor Changes - Every context-aware global command (`node`, `deno`, `bun`, and the shims created with `pnpm shim add`) is now a native executable on every platform, so environment variables whose names are not valid shell identifiers reach these commands. On Windows, `.exe` replaces the `.cmd` and `.ps1` shims for them. Shims written by earlier pnpm 12 releases are migrated on the next global install or self-update. - `pnpm remove` and `pnpm update` now accept `--trust-lockfile`, `--no-trust-lockfile`, `--trust-policy`, `--trust-policy-exclude` and `--trust-policy-ignore-after`, the same flags `pnpm install` and `pnpm add` take, so the supply-chain settings can be overridden for a single run. `pnpm remove` verifies the lockfile against the active policies the way `pnpm install` does, and `--trust-lockfile` skips that pass for every entry, not only the package being removed. `pnpm` now also honors `--config.trust-lockfile=`, and accepts the bare `--trust-lockfile` / `--no-trust-lockfile` spelling on the commands that previously took the setting from the config file alone. #### Patch Changes - `pnpm add `, `pnpm add `, `pnpm add file:` and `pnpm add ` work again. A specifier given without a `@​` prefix is no longer read as a registry package name and rejected with `ERR_PNPM_PACKAGE_MANAGER_ADD_RESOLVE_LATEST` [#​14437](https://github.com/pnpm/pnpm/issues/14437). - Fixed `pnpm deploy --legacy` ignoring `allowUnusedPatches` supplied through `--config.allow-unused-patches` or the `PNPM_CONFIG_ALLOW_UNUSED_PATCHES` environment variable [pnpm/pnpm#14450](https://github.com/pnpm/pnpm/issues/14450). - Fixed `pnpm install --lockfile-only` writing a lockfile that referenced a missing peer-suffixed snapshot when an npm-aliased dependency took part in a cyclic peer dependency graph. The following `pnpm install --frozen-lockfile` failed with `ERR_PNPM_LOCKFILE_MISSING_DEPENDENCY` [#​14449](https://github.com/pnpm/pnpm/issues/14449). - `pnpm config` now accepts `-g`/`--global`, `--location`, and `--json` before its subcommand [pnpm/pnpm#14421](https://github.com/pnpm/pnpm/issues/14421). - `pnpm dedupe` now converges in one pass when it re-resolves a lockfile created by pnpm 11, so a second run no longer changes the lockfile [#​14455](https://github.com/pnpm/pnpm/issues/14455). - Fixed detached child processes being terminated on Windows when another program launches `pnpm` directly, without a shell, as `nr` from `@antfu/ni` does [#​14447](https://github.com/pnpm/pnpm/issues/14447). - Fixed `pnpm docs @​` ignoring the requested version. It now opens the selected version's homepage and reports a missing version instead of opening the package-level homepage [pnpm/pnpm#14428](https://github.com/pnpm/pnpm/issues/14428). - Sped up installs in large workspaces. `pnpm-lock.yaml` is now read while the workspace projects are being discovered [#​14352](https://github.com/pnpm/pnpm/issues/14352). - Fixed filtered and recursive `pnpm run` and `pnpm exec` hanging when a script reads from the terminal. Interactive prompts work again in a script that pnpm never runs alongside another one, such as a single `--filter`ed project, `--workspace-concurrency=1`, a dependency chain, or a task declaring `concurrency: 1` [#​14397](https://github.com/pnpm/pnpm/issues/14397). - Fixed false unmet peer errors for auto-installed peers in linked workspace packages. - Fixed npm global installs on Windows so the PowerShell shims invoke `pnpm.exe`. - Fixed `pnpm with current ` when global options precede it, such as `pnpm --workspace-root with current --version` [pnpm/pnpm#14413](https://github.com/pnpm/pnpm/issues/14413). A short-option cluster that mixes a global flag with an option owned by the command, such as `pnpm -ro dist pack-app`, is now parsed like the same options written after the command. An option written before the command name is now reported as an unknown option unless that command accepts it, instead of being taken for the command to run. `pnpm -P exec echo` and `pnpm -z exec echo` fail the way `pnpm --tag next exec echo` does. - Apply pure insertions in zero-context patches at the correct line instead of one line early. - Improved peer dependency resolution performance when many packages reuse the same peer ranges. - `pnpm outdated` and `pnpm update` now follow local actions and reusable workflows referenced with GitHub's self-repository syntax (`uses: $/.github/actions/setup`) when looking for outdated GitHub Actions, the same way they follow `./` references. - The `pnpm install --help` descriptions of `--prod` and `--dev` no longer claim that the flags take precedence over `NODE_ENV`. pnpm does not read `NODE_ENV` when selecting which dependency groups to install [#​14445](https://github.com/pnpm/pnpm/issues/14445). - Sped up installs in large workspaces. The check that decides whether the lockfile needs updating no longer compares every project against every lockfile entry [#​14352](https://github.com/pnpm/pnpm/issues/14352). - Sped up dependency resolution in large workspaces that use `link:` dependencies [#​14352](https://github.com/pnpm/pnpm/issues/14352). - On Linux, pnpm now resolves registry hostnames through the system resolver (`getaddrinfo`), as it already does on macOS and Windows and as pnpm 11 did. Previously, an `/etc/resolv.conf` containing an option the bundled pure-Rust resolver did not recognize, such as `options no_tld_query`, made pnpm ignore the configured nameservers and silently query Google's public DNS instead [#​14469](https://github.com/pnpm/pnpm/issues/14469). - Sped up dependency resolution in large workspaces. The resolver builds fewer lookup keys for each dependency [#​14352](https://github.com/pnpm/pnpm/issues/14352). - `catalogMode` and `--save-catalog` no longer move a local path, tarball, or `workspace:` specifier into a catalog. Such a specifier is resolved against the project that declares it, so one catalog entry cannot mean the same directory for every project that references it [#​14437](https://github.com/pnpm/pnpm/issues/14437). - Sped up installs in large workspaces. The workspace dependency graph is now built once per run instead of twice [#​14352](https://github.com/pnpm/pnpm/issues/14352). - Sped up writing `pnpm-lock.yaml` in large workspaces [#​14352](https://github.com/pnpm/pnpm/issues/14352). - Fixed non-frozen installs through a pnpr server failing instead of regenerating a conflicted lockfile. - `pnpm update --interactive` renders its checklist the way pnpm 11 does. Group headings and column headers are separators the cursor skips instead of checkboxes that select nothing. The columns of one group line up with the next. `a` toggles all and `i` inverts the selection. The confirmed selection is echoed as a list of package names [#​14423](https://github.com/pnpm/pnpm/issues/14423). - Fixed `pnpm config` commands targeting global configuration to skip project package manager version switching, allowing registry authentication to be configured before pnpm downloads a project-pinned version [pnpm/pnpm#14463](https://github.com/pnpm/pnpm/issues/14463). - Fixed pnpm retaining the surrounding quotes in `.npmrc` values, including auth tokens expanded from environment variables. This restores authentication with registries configured using `:_authToken="${TOKEN}"` [pnpm/pnpm#14427](https://github.com/pnpm/pnpm/issues/14427). - Fetch and tarball errors no longer print the secrets of the URL they name. Inline `user:pass@` credentials and the query string or fragment of a signed URL are hidden, so a failed install or `pnpm add ` cannot leak them into terminal scrollback or CI logs. - When `dist-tags.latest` names a version whose manifest pnpm cannot read, the error now names that version and the field it could not decode, instead of reporting the tag as empty. - Retry transient Windows file-lock errors, including sharing violations, while linking dependencies with the default (isolated) `nodeLinker`. This fixes [pnpm/pnpm#14407](https://github.com/pnpm/pnpm/issues/14407). - `pnpm run`, `pnpm exec`, `pnpm rebuild`, and the script shortcuts such as `pnpm test` now load the pnpmfile, so `updateConfig` hook settings such as `extraEnv` and `extraBinPaths` reach the scripts they spawn [#​14433](https://github.com/pnpm/pnpm/issues/14433). - The `pnpm` executable of the npm package now works when the package was installed without running its install scripts, as under `--ignore-scripts` or the default build-script block of pnpm and Bun [#​14346](https://github.com/pnpm/pnpm/issues/14346). In that case it runs through Node.js and, in a terminal, says how to switch to the native binary. - Sped up installs in large workspaces. The resolver no longer copies the whole lockfile before resolving [#​14352](https://github.com/pnpm/pnpm/issues/14352). - `minimumReleaseAgeStrict` now defaults to `true` when `minimumReleaseAge` is explicitly configured, whether in `pnpm-workspace.yaml`, the global `config.yaml`, a `PNPM_CONFIG_*` variable, or a CLI flag. The built-in 1440-minute default stays non-strict. Previously an explicit cutoff was treated as non-strict, so immature versions were silently added to `minimumReleaseAgeExclude` instead of being gated with a prompt [#​14409](https://github.com/pnpm/pnpm/issues/14409). - Preserve environment variables whose names are not valid shell identifiers when launching Node.js installed by `pnpm runtime set node --global` on Unix [pnpm/pnpm#14417](https://github.com/pnpm/pnpm/issues/14417). - Fixed `pnpm repo` and `pnpm docs` failing to open the Windows browser from WSL [pnpm/pnpm#14467](https://github.com/pnpm/pnpm/issues/14467). - `pnpm link`, `pnpm outdated`, and `pnpm import` now apply pnpmfile `updateConfig` hooks before resolving dependencies. - Fixed standalone installations to preserve the bundled `node-gyp` files used to build native dependencies. - Fixed resolution against registries whose version manifests carry `_npmUser`, `dist.attestations`, `dist.unpackedSize`, `dist.fileCount`, or `peerDependenciesMeta` in a shape npm does not use. Such a version was skipped as though it had never been published, so `pnpm add` could fail with "no version found for the latest tag" even though the registry served it. - `pnpm unpublish` now completes the two-factor authentication a registry asks for instead of failing with `ERR_PNPM_UNAUTHORIZED` while logged in. A 401 that is an OTP challenge starts the web-based authentication flow, or prompts for a classic one-time password. The obtained password is reused by every request of the run [#​14464](https://github.com/pnpm/pnpm/issues/14464). - On Windows, pnpm now resolves host names through the system resolver instead of its own DNS client. The built-in client bound a UDP socket for every lookup, which made Windows Defender Firewall ask to allow `pnpm.exe` again after every `pnpm self-update` [#​14405](https://github.com/pnpm/pnpm/issues/14405). #### Platinum Sponsors
Bit OpenAI Notion
#### Gold Sponsors
Sanity Discord Vite
SerpApi CodeRabbit Stackblitz
Workleap Nx Latitude
HiDeoo/starlight-openapi (starlight-openapi) ### [`v0.26.2`](https://github.com/HiDeoo/starlight-openapi/blob/HEAD/packages/starlight-openapi/CHANGELOG.md#0262) [Compare Source](https://github.com/HiDeoo/starlight-openapi/compare/starlight-openapi@0.26.1...starlight-openapi@0.26.2) ##### Patch Changes - [#​176](https://github.com/HiDeoo/starlight-openapi/pull/176) [`a4342e6`](https://github.com/HiDeoo/starlight-openapi/commit/a4342e6250ac0509b625e9b2569bff0603a94eec) Thanks [@​HiDeoo](https://github.com/HiDeoo)! - Fixes custom Expressive Code configuration being overwritten.
--- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - Between 12:00 AM and 03:59 AM, only on Monday (`* 0-3 * * 1`) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://github.com/renovatebot/renovate). Preview: https://pr-546.docs-gitea-com.pages.dev --------- Co-authored-by: silverwind <2021+silverwind@noreply.gitea.com> Co-authored-by: silverwind Co-authored-by: Lunny Xiao Reviewed-on: https://gitea.com/gitea/docs/pulls/546 Reviewed-by: silverwind <2021+silverwind@noreply.gitea.com> Co-authored-by: Renovate Bot --- package.json | 2 +- pnpm-lock.yaml | 1877 +++--------------------------- sites/docs/astro.config.mjs | 2 +- sites/docs/package.json | 8 +- sites/docs/src/styles/custom.css | 2 +- 5 files changed, 176 insertions(+), 1715 deletions(-) diff --git a/package.json b/package.json index fe83a0f9..40ef98fa 100644 --- a/package.json +++ b/package.json @@ -13,5 +13,5 @@ "engines": { "node": ">=22" }, - "packageManager": "pnpm@12.2.1" + "packageManager": "pnpm@12.4.0" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index eded0cdf..8d525f57 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7,96 +7,153 @@ importers: configDependencies: {} packageManagerDependencies: pnpm: - specifier: 12.2.1 - version: 12.2.1 + specifier: 12.4.0 + version: 12.4.0 packages: - '@pnpm/exe.darwin-arm64@12.2.1': - resolution: {integrity: sha512-efC1yfz2xbyHiMLrQAYtnoo5XP20LeAiYYcyL1962qQagZrMXIB0BoQYeZoPTLggLh0Q4MD7jpZUInU5fWxCgQ==} + '@pnpm/exe.android-arm64@12.4.0': + resolution: {integrity: sha512-sAwslzCw74OpqK2P9l39cgdrRWHSqf5wEjB58JEzeVX6wdLvaHyg9i/GeRK5Ou6PZNA3AkD4yLO3c/y7UqOf8w==} + cpu: [arm64] + os: [android] + + '@pnpm/exe.android-x64@12.4.0': + resolution: {integrity: sha512-Ps3Gz0OrqYjuRfhzeNqcvIow6QmNrU3BSzMxJu5rUCSl7inVUUFX2gZbNL9naQsNLoorKCdxUf4N+WI9Mr1WBg==} + cpu: [x64] + os: [android] + + '@pnpm/exe.darwin-arm64@12.4.0': + resolution: {integrity: sha512-75EYiF8GuiTsnvP4cbZsviMBjohXUYtg2zjD4gdfhqxlU1y9Nj+KdEsbH4jfgB/FgyJSYPB2rqfmvvgLnRlVug==} cpu: [arm64] os: [darwin] - '@pnpm/exe.darwin-x64@12.2.1': - resolution: {integrity: sha512-0bloFmxrvYY5LYex5V6SZySwg+egBk0pOW+YUeOm9fiG2U1wv+qRVLBOUvIzLAeJE7vBlAzxUwXkQAYtr12n+Q==} + '@pnpm/exe.darwin-x64@12.4.0': + resolution: {integrity: sha512-b74TzBg8lxl0lqZImGOXpRbAGcqVKX+UMckl3wG+KH52yYHI86VBJP86HbJX30HJ/EFeC6Tgbz2E4b5hhKRvdA==} cpu: [x64] os: [darwin] - '@pnpm/exe.linux-arm64-musl@12.2.1': - resolution: {integrity: sha512-AZl7apVZC4TV1/vTp/bS16XUsHeqx9AHsU4V55joiGR+iR6vl+WF0WlGvGCTjqjICS4q/kThpgNrtG8aqQ9seQ==} + '@pnpm/exe.freebsd-x64@12.4.0': + resolution: {integrity: sha512-A45d6axdQIFNyNTYZAC64wh5+6LJ6dNKhNAoNMNi/EC5y9CRfv0GL3ZYDBqpkmsN9KMAkVsFWizq/Ng6xtjnhw==} + cpu: [x64] + os: [freebsd] + + '@pnpm/exe.linux-arm64-musl@12.4.0': + resolution: {integrity: sha512-yS6DNel7twfEUoW1yka1hpQrnhRe/s1JZ1MThVfgrmNQrNaPyHxQvAihm/GtL2CM6OeMV6z5532H/W/yDjQp5g==} cpu: [arm64] os: [linux] libc: [musl] - '@pnpm/exe.linux-arm64@12.2.1': - resolution: {integrity: sha512-S36+tMEGrPz3nwtfFU9kYxbHoi8sV7WJfMO9njEL4jRaShTNaLRERMAqyI2DUCiA5QCr6/a50lt4+pKCV2mCvw==} + '@pnpm/exe.linux-arm64@12.4.0': + resolution: {integrity: sha512-6npQUwq3D/WXbTgR4evApEKQ9ITznZ6Iz/dptcjBzA7+wSLTaYkK98Od2wsHCoPmEFb9tGtM+cvG82+wy0o9uA==} cpu: [arm64] os: [linux] libc: [glibc] - '@pnpm/exe.linux-x64-musl@12.2.1': - resolution: {integrity: sha512-4MQClkAk1em55LFZJpeIqb7j+gEqCgX8yC42j9DFWL42q1uMX1e1tvTy2Dtd4NoWQqgdkLxOStZ+D9CYC+28ow==} + '@pnpm/exe.linux-ppc64@12.4.0': + resolution: {integrity: sha512-7shJ4WytyvBEdjrbIDqx2gDAH7sr0HBDooTmnNQ7DlzcLeeGi7Yqir7gJjOTm6s9S1cVnT56IwmqnnwQMP1HTQ==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@pnpm/exe.linux-riscv64@12.4.0': + resolution: {integrity: sha512-q03EGUFoe/oOU/67E3sEAePr3qjFu8xrsX+WOXTodcFXfO5FondC6TPs7BSwhTiV27j3jeDP56qhJP05pXn+vw==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@pnpm/exe.linux-s390x@12.4.0': + resolution: {integrity: sha512-GZ5YellCtNnaLe9zVj9l3avlw9CbSzExUFDh7v+tVbLfOOfkkRLpx2lsw1ytJ/nFWvxF2TO6M6Q9JDT7q8svRg==} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@pnpm/exe.linux-x64-musl@12.4.0': + resolution: {integrity: sha512-c8YyjVL39L48tRg9i3iw3d90fN6q84UjxlgWBhplcBOpzCgmglDVkPMtEAVDC+t9iobvYzs2hJnmTqLaA87MVA==} cpu: [x64] os: [linux] libc: [musl] - '@pnpm/exe.linux-x64@12.2.1': - resolution: {integrity: sha512-A/AlR71Leph7qgB3ThSU9yU/vLfre4HmP6nbt3/qt51fzAjQ0xuq7j+cw0f1yDskzOsGzmo5uD6ruefCwLK5uQ==} + '@pnpm/exe.linux-x64@12.4.0': + resolution: {integrity: sha512-SQVgRkcR4Xyqf8+VNbtY0rtcEnfDq48RhH30HWo2/UfqKEfle2rOMyGZOmN1DbMw4ZzG5mWYoC81O7ZqHFZcPw==} cpu: [x64] os: [linux] libc: [glibc] - '@pnpm/exe.win32-arm64@12.2.1': - resolution: {integrity: sha512-TEGUmroT6NGfo2O2+tHK9Zr1lhP1zLzpwx+QAQV19l8V4ljUoMfz8Os5V9zzNCtIpzyKcK7SuG7fkVbxFgRMzg==} + '@pnpm/exe.win32-arm64@12.4.0': + resolution: {integrity: sha512-ZamXPhx0X6APZJAIkcH+K9KAsKcTYwxEgOyTQ/NXE+2UHBT9bRnSQ91sBeY6ELNd58V5cmMAkXSW5xmU+2ry+w==} cpu: [arm64] os: [win32] - '@pnpm/exe.win32-x64@12.2.1': - resolution: {integrity: sha512-V2Q+AF8fCsw8/CC3bWF8kopOmH0aAjgk9m7H7uAQNulOYIJs9YJBiAlgByswmt+igV9axc4dBI//ZlK2NKpDcw==} + '@pnpm/exe.win32-x64@12.4.0': + resolution: {integrity: sha512-b8bLaprnpYi/2zN0M3H9RDAHuxCP3fmV5agPPwdp9fIdjNSUkV7V/RC3L4oWwbZvVgYEjjFLx1RuJOdltoKP6g==} cpu: [x64] os: [win32] - pnpm@12.2.1: - resolution: {integrity: sha512-9Vymiqy561q2nGb4KKmK+JoyKGcDrvH42hMcp+q01nfzS/qF4YZGepGcB5nfi29KokD33CkZszsycxkBBBYmFg==} + pnpm@12.4.0: + resolution: {integrity: sha512-N1NsJu1Aq0E0tlEeCfayfz67RWh0aPJAbKOAUnmk5coVjBkxNQrZd01qshCNcbPbrrOZQxWSlDdeTQU+jgVoXA==} engines: {node: '>=18.*'} hasBin: true snapshots: - '@pnpm/exe.darwin-arm64@12.2.1': + '@pnpm/exe.android-arm64@12.4.0': optional: true - '@pnpm/exe.darwin-x64@12.2.1': + '@pnpm/exe.android-x64@12.4.0': optional: true - '@pnpm/exe.linux-arm64-musl@12.2.1': + '@pnpm/exe.darwin-arm64@12.4.0': optional: true - '@pnpm/exe.linux-arm64@12.2.1': + '@pnpm/exe.darwin-x64@12.4.0': optional: true - '@pnpm/exe.linux-x64-musl@12.2.1': + '@pnpm/exe.freebsd-x64@12.4.0': optional: true - '@pnpm/exe.linux-x64@12.2.1': + '@pnpm/exe.linux-arm64-musl@12.4.0': optional: true - '@pnpm/exe.win32-arm64@12.2.1': + '@pnpm/exe.linux-arm64@12.4.0': optional: true - '@pnpm/exe.win32-x64@12.2.1': + '@pnpm/exe.linux-ppc64@12.4.0': optional: true - pnpm@12.2.1: + '@pnpm/exe.linux-riscv64@12.4.0': + optional: true + + '@pnpm/exe.linux-s390x@12.4.0': + optional: true + + '@pnpm/exe.linux-x64-musl@12.4.0': + optional: true + + '@pnpm/exe.linux-x64@12.4.0': + optional: true + + '@pnpm/exe.win32-arm64@12.4.0': + optional: true + + '@pnpm/exe.win32-x64@12.4.0': + optional: true + + pnpm@12.4.0: optionalDependencies: - '@pnpm/exe.darwin-arm64': 12.2.1 - '@pnpm/exe.darwin-x64': 12.2.1 - '@pnpm/exe.linux-arm64': 12.2.1 - '@pnpm/exe.linux-arm64-musl': 12.2.1 - '@pnpm/exe.linux-x64': 12.2.1 - '@pnpm/exe.linux-x64-musl': 12.2.1 - '@pnpm/exe.win32-arm64': 12.2.1 - '@pnpm/exe.win32-x64': 12.2.1 + '@pnpm/exe.android-arm64': 12.4.0 + '@pnpm/exe.android-x64': 12.4.0 + '@pnpm/exe.darwin-arm64': 12.4.0 + '@pnpm/exe.darwin-x64': 12.4.0 + '@pnpm/exe.freebsd-x64': 12.4.0 + '@pnpm/exe.linux-arm64': 12.4.0 + '@pnpm/exe.linux-arm64-musl': 12.4.0 + '@pnpm/exe.linux-ppc64': 12.4.0 + '@pnpm/exe.linux-riscv64': 12.4.0 + '@pnpm/exe.linux-s390x': 12.4.0 + '@pnpm/exe.linux-x64': 12.4.0 + '@pnpm/exe.linux-x64-musl': 12.4.0 + '@pnpm/exe.win32-arm64': 12.4.0 + '@pnpm/exe.win32-x64': 12.4.0 --- lockfileVersion: '9.0' @@ -113,7 +170,7 @@ importers: dependencies: astro: specifier: ^7.0.2 - version: 7.2.10(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0) + version: 7.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0) tinyglobby: specifier: 0.2.17 version: 0.2.17 @@ -124,11 +181,11 @@ importers: sites/docs: dependencies: '@astrojs/starlight': - specifier: 0.41.11 - version: 0.41.11(astro@7.2.10(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(supports-color@7.2.0)(typescript@6.0.3) + specifier: 0.42.0 + version: 0.42.0(astro@7.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(supports-color@7.2.0)(typescript@6.0.3) '@astrojs/starlight-docsearch': - specifier: 0.7.0 - version: 0.7.0(@algolia/client-search@5.56.0)(@astrojs/starlight@0.41.11(astro@7.2.10(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(supports-color@7.2.0)(typescript@6.0.3))(search-insights@2.17.3) + specifier: 0.8.0 + version: 0.8.0(@algolia/client-search@5.56.0)(@astrojs/starlight@0.42.0(astro@7.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(supports-color@7.2.0)(typescript@6.0.3))(astro@7.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(search-insights@2.17.3) '@gitea-docs/content-loader': specifier: workspace:* version: link:../../packages/content-loader @@ -136,14 +193,14 @@ importers: specifier: 1.5.2 version: 1.5.2 astro: - specifier: 7.2.10 - version: 7.2.10(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0) + specifier: 7.3.2 + version: 7.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0) sharp: specifier: 0.35.4 version: 0.35.4(@types/node@24.13.3) starlight-openapi: - specifier: 0.26.1 - version: 0.26.1(@astrojs/markdown-satteri@0.4.0)(@astrojs/starlight@0.41.11(astro@7.2.10(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(supports-color@7.2.0)(typescript@6.0.3))(astro@7.2.10(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(openapi-types@12.1.3) + specifier: 0.26.2 + version: 0.26.2(@astrojs/markdown-satteri@0.4.1)(@astrojs/starlight@0.42.0(astro@7.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(supports-color@7.2.0)(typescript@6.0.3))(astro@7.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(openapi-types@12.1.3) devDependencies: '@astrojs/check': specifier: 0.9.10 @@ -240,37 +297,18 @@ packages: peerDependencies: typescript: ^5.0.0 || ^6.0.0 - '@astrojs/compiler-binding-darwin-arm64@0.3.2': - resolution: {integrity: sha512-MM8tn8CSimcfytaOla4b6acN8mKWiL/rlAA1fpT3/Wl7dNGSE4y8FjTN/zJVNnb63CsLWG5zZwCt01TXtDKh9g==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [darwin] - '@astrojs/compiler-binding-darwin-arm64@0.4.0': resolution: {integrity: sha512-ZVUwHundaQyFNjE6uoa0usaC0WOCitDCLS/4mdb4rOiJXwVUuKJBMxI5WMzXLWmamsXtK/Z//ifLXvV5Yeh4Hw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@astrojs/compiler-binding-darwin-x64@0.3.2': - resolution: {integrity: sha512-2lXOlzf8xb7jLomRsf/aswh61/NnGusynB2OwFkK6k4pmOtpfXMYnG0PLfXrEvxXYj69NdCnmUYXtHDd+JOOag==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [darwin] - '@astrojs/compiler-binding-darwin-x64@0.4.0': resolution: {integrity: sha512-FI6G8AY8u6fR1SI/QRR5yGMwtvZwP34CDmZpZ5HwJGa50UM1VISTLhqkhV4a476pmgd25X1Aur2dqw6hUnrlKA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@astrojs/compiler-binding-linux-arm64-gnu@0.3.2': - resolution: {integrity: sha512-BmU3kWj7qnLrd4vzm49zFEPJ5oFnn1tCT4Vt9hZbqdU5Cmb8GZl7fn6VFsnNfe7B18a2gIFtVzbLINtYl5kBjQ==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [linux] - libc: [glibc] - '@astrojs/compiler-binding-linux-arm64-gnu@0.4.0': resolution: {integrity: sha512-lB9gLFJK7m82EnjaU8nlRBEfcwGNeHidW3sSjODTUjMNaoewVuUz9fwwdY5M4jiSXIqWLH3yl6TX8FTDKA74Sw==} engines: {node: ^20.19.0 || >=22.12.0} @@ -278,13 +316,6 @@ packages: os: [linux] libc: [glibc] - '@astrojs/compiler-binding-linux-arm64-musl@0.3.2': - resolution: {integrity: sha512-f0heT9ZZEseSu5bHCeb80eL2DH07ArE6U9xi1WT/PEusNjzPmEr3GJsjG1tRLo5VYUUYX7h3ScaqGmGrMOVGmw==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [linux] - libc: [musl] - '@astrojs/compiler-binding-linux-arm64-musl@0.4.0': resolution: {integrity: sha512-HPbvWqbxFxyaoQJhLxCaSjtYBx9KBo7JGVzEFZCmMl968a2PsSH0UfiODYgYPXofTOIsIH2aoCcrHXML0IA3ig==} engines: {node: ^20.19.0 || >=22.12.0} @@ -292,13 +323,6 @@ packages: os: [linux] libc: [musl] - '@astrojs/compiler-binding-linux-x64-gnu@0.3.2': - resolution: {integrity: sha512-M8fOUt0itRpqiGyoEA/ij184s8O+hqbCz3+YozRusOOM3osgGljpDThhbKAJjqh82wOo6FioQ4w8PBvU1XMD5Q==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [linux] - libc: [glibc] - '@astrojs/compiler-binding-linux-x64-gnu@0.4.0': resolution: {integrity: sha512-tQKolMxoJ/+0AmLWm1PmJ/i+z3i10ZU1bNuVjEDulCf48azEMtUNjTZgHJ5MPtpYRNc7dlETr8QujUfduzoC7Q==} engines: {node: ^20.19.0 || >=22.12.0} @@ -306,13 +330,6 @@ packages: os: [linux] libc: [glibc] - '@astrojs/compiler-binding-linux-x64-musl@0.3.2': - resolution: {integrity: sha512-/Kebk8sO6HnLeSd691JkaAPfN7CqR9/KEXmWvyNPkaKNGmj8rTZ/lf2uXtnPu92Lan84UrKdIKVPy1fSo2encQ==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [linux] - libc: [musl] - '@astrojs/compiler-binding-linux-x64-musl@0.4.0': resolution: {integrity: sha512-5v5YymudsxMHp3NBLCS8BUlu5CRqeLtWD9cKS/4nIhIEHCbpz9okmVV6I0HWqmBAPhWYcDa3vw/vltYPrOQCTA==} engines: {node: ^20.19.0 || >=22.12.0} @@ -320,52 +337,27 @@ packages: os: [linux] libc: [musl] - '@astrojs/compiler-binding-wasm32-wasi@0.3.2': - resolution: {integrity: sha512-pUA6xbcOSB7DhfzIArB8BCAkFfAIqriiR7zl5zOStd6oU2G0kIKj+GUdGnyXyhfiv881Hffyk5tC0mR18sDjDw==} - engines: {node: '>=14.0.0'} - cpu: [wasm32] - '@astrojs/compiler-binding-wasm32-wasi@0.4.0': resolution: {integrity: sha512-m/phuH3x3PREvv1OnkM44NoPh4MatUadix1fB1u5SvMLCyDTUZykDJbKnWf1cjnYmHdlB8HcjTjl6JrCqAIXcw==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@astrojs/compiler-binding-win32-arm64-msvc@0.3.2': - resolution: {integrity: sha512-ESruf+6Qkl1trHUFxI6GSf6t52j8yN2kCNSzMWdzt7V/T09tFHrYzrVaJQohb2C9bJUH76pNvX6Zb51+xCQc9Q==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [win32] - '@astrojs/compiler-binding-win32-arm64-msvc@0.4.0': resolution: {integrity: sha512-B9zYf3okEY83kM8gydlpH2BHP00w4ifxPqlYlWrgTwuD6wnkrJDCwBlgy1q31cERjCJRXN1lrE2VmkLvFjv/6g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@astrojs/compiler-binding-win32-x64-msvc@0.3.2': - resolution: {integrity: sha512-wzzVrEbOwbsLWOdEbocskjMRx2aZPxJ7ZbmL+jnpBamFwmigm+2M/wzuM6JWncocgYwLic1csSpalBh96kQKXA==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [win32] - '@astrojs/compiler-binding-win32-x64-msvc@0.4.0': resolution: {integrity: sha512-zB0Nrv0dGc0zZWPGDRmmETTPhDRqyZjAjk+gWMlVrJX5U89obpB3VUUE1ZiHxOCN5LQojeLK6O8L/dnoHolvNQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] - '@astrojs/compiler-binding@0.3.2': - resolution: {integrity: sha512-8w/9CWmYrAJJ8N0SY3O43ws2BgxoW6u3QsD8u2mE140lMYAlwh+tlNoUeSBq22wVheFuiBbR212l6ixZ2IIgCQ==} - engines: {node: ^20.19.0 || >=22.12.0} - '@astrojs/compiler-binding@0.4.0': resolution: {integrity: sha512-x2RjDUuWfwLNtc3mjAdSRInwqh/rqbLar9cm/5FOMbHvmYZB7yfKewzSclAxWjIZsypJDXv1lhaP2WG+P8TK3g==} engines: {node: ^20.19.0 || >=22.12.0} - '@astrojs/compiler-rs@0.3.2': - resolution: {integrity: sha512-xlx/T7JovIKduu4ucbTQUxQ5+Q8wxkHxhLjnZk3VlJbhbQ9RLvvuDk1p2YYFYFQ5y14dVm3FGGO4isQXa4F+Tg==} - engines: {node: '>=22.12.0'} - '@astrojs/compiler-rs@0.4.0': resolution: {integrity: sha512-koVikeon1kreEy+/JzLQRy3vzHHQVOjycs4degg4vFufKApZOwMZvSSAEztYNhmcQVfNVsVZZI4cEge3cexAbQ==} engines: {node: '>=22.12.0'} @@ -373,12 +365,6 @@ packages: '@astrojs/compiler@2.13.1': resolution: {integrity: sha512-f3FN83d2G/v32ipNClRKgYv30onQlMZX1vCeZMjPsMMPl1mDpmbl0+N5BYo4S/ofzqJyS5hvwacEo0CCVDn/Qg==} - '@astrojs/internal-helpers@0.10.2': - resolution: {integrity: sha512-yt7fMgPYqSM4Tmr+taTW6Per+hjJ8Pk6lA1PAcDyqzOt8HzJ6Kje5WzCxA2Sd+9wsUW7uhkLeoTMK0cXPwH9rQ==} - - '@astrojs/internal-helpers@0.10.3': - resolution: {integrity: sha512-HIx/t1NywcqSTFaVwZh15n8JsC3YQdCaJZDaTS/aurYTEvNiWDXUGS3Z9uQX3bFB+B1pCgN/nljckkzYTpHZ2w==} - '@astrojs/internal-helpers@0.11.0': resolution: {integrity: sha512-3rzxJ+xbo0+8YyqOzLziIN32wmsHdCjEVz2sGOpRxJ+Ben/KiLph4ItxBy1abEL+E8fkRzqjg0rfXmaHJGw9JA==} @@ -394,23 +380,18 @@ packages: prettier-plugin-astro: optional: true - '@astrojs/markdown-remark@7.2.2': - resolution: {integrity: sha512-FGfmK84zSNcrsBd0dl1gXE9JvZYElp8EXQa2jpHVAxG4deGKAp43wspxFupjADJX7MSsMRHwYCnfT6EyVmgeFQ==} + '@astrojs/markdown-satteri@0.4.1': + resolution: {integrity: sha512-EniHbFNa6SQHDih7JnpPos3NWXO6hdt4raBcOosfGmlfc3gP9CI/sESA3VOf1PgJZ7SFfewlZW9Livn0JugEZg==} - '@astrojs/markdown-satteri@0.3.6': - resolution: {integrity: sha512-kkeWP4Lh6Do/qz2R0DIAtPWCh6WPr1J4UrzDItVmHMK1HwyLHxG4JxM8uBNavhD7ivGOO9BUTsAP5D7ppa68CA==} - - '@astrojs/markdown-satteri@0.4.0': - resolution: {integrity: sha512-wykOOW9KsUVcZweOpY/CeXpdKcCKZy6fQbdcteWFuI75+sQCiqxYM7VKsGa5b+aGl3cYQscFY37rsbbyal5MRw==} - - '@astrojs/mdx@7.0.5': - resolution: {integrity: sha512-wEM/HH1RiEntyPVagdiF+yArzfcYLKBB0C1RZspVidKZ97rRMbaqP1Nbl/GR0sJs8zwaceqxRymw8aOKKJRdYw==} + '@astrojs/mdx@8.0.1': + resolution: {integrity: sha512-VKodp/f3+XE6L0950K+ZOAolY47vdt0R78Ao+L2RdJ1hfAdYffL7IEjc/MsoyuS7CPVvCsd5/I3RP0ZyAIewdQ==} engines: {node: '>=22.12.0'} peerDependencies: - '@astrojs/markdown-satteri': ^0.3.1 - astro: ^7.0.0 + '@astrojs/markdown-remark': ^7.3.0 + '@astrojs/markdown-satteri': ^0.4.0 + astro: ^7.2.6 peerDependenciesMeta: - '@astrojs/markdown-satteri': + '@astrojs/markdown-remark': optional: true '@astrojs/prism@4.0.2': @@ -420,16 +401,17 @@ packages: '@astrojs/sitemap@3.7.3': resolution: {integrity: sha512-f8euLVsyeAmAkSm/1M2Kb8sL8byQmfgbvBNaHFItCheTj/IpiJYSEWVcqDHZ/yEHxiS7+w87mQkzwZaPHmk5GA==} - '@astrojs/starlight-docsearch@0.7.0': - resolution: {integrity: sha512-/RwUQE4u61EXNKITvb6PxHBC8FA1xrUaB48+0QWoVomHqCUCMnVRwt69NWScFpQZITY5NZKrgSYOsvpzwZg0Ng==} + '@astrojs/starlight-docsearch@0.8.0': + resolution: {integrity: sha512-XBaN1NYe0xlV4Un9lH8cV3eOaZPJX99x7EWWcHeDZCM9G/DmyYGx652DziqqeY2TPFMrykBLVFuSN9CVgxpqgQ==} peerDependencies: '@astrojs/starlight': '>=0.38.0' + astro: ^6.0.0 || ^7.0.0 - '@astrojs/starlight@0.41.11': - resolution: {integrity: sha512-hM95Mbsl4l60SBwaNQA/HTxpOLGfeB5EfR9qY3kr0SsAVKUspCssjO0RVBsLiPAE6EA5xuORcCoz/Q6DTX+MuQ==} + '@astrojs/starlight@0.42.0': + resolution: {integrity: sha512-EVsGnyGJ6rRNwGRZFYmGABo0qTQ55F7OSmfSL0VK+5lsqD+u6GWcB8tFqXETcUvP8kyn90W+QBLSL2aer9jNJQ==} peerDependencies: - '@astrojs/markdown-remark': ^7.2.0 - astro: ^7.0.2 + '@astrojs/markdown-remark': ^7.3.0 + astro: ^7.2.10 peerDependenciesMeta: '@astrojs/markdown-remark': optional: true @@ -471,99 +453,50 @@ packages: cpu: [arm64] os: [darwin] - '@bruits/satteri-darwin-arm64@0.9.5': - resolution: {integrity: sha512-iw4nZgx9v30lWo/MTngQqi1pI78KI0DnkSm+lVJGYdmPLgAyDNJigVhpG42/Iq55A6c1Ll8q66ljyyRiQUxwow==} - cpu: [arm64] - os: [darwin] - '@bruits/satteri-darwin-x64@0.10.5': resolution: {integrity: sha512-IjnLe3nKspq6qaeqGgjT7MT8VrTV74yWRlaag7ZdNsI8TDAYZ0iPxMCo+9KQZHUk5EyVB+reBI/PFWL5KuFw9Q==} cpu: [x64] os: [darwin] - '@bruits/satteri-darwin-x64@0.9.5': - resolution: {integrity: sha512-6T26Z5Kf3cFW2PSlk9p7zT7yVxvuBSiJvYyz9u8KjYwMTqZyIDOj2wDyNpxKV4+6yUVG7rddq2QwvG/8LJA2+Q==} - cpu: [x64] - os: [darwin] - '@bruits/satteri-linux-arm64-gnu@0.10.5': resolution: {integrity: sha512-glkYXZCJywjP13v67eAyAMSJdF+ncvEbYvgi/wOtffL9tQ27lr/zsyzUfgs+ovjJ9d8JNQKiXeiArJcX8PJL9w==} cpu: [arm64] os: [linux] libc: [glibc] - '@bruits/satteri-linux-arm64-gnu@0.9.5': - resolution: {integrity: sha512-u51id17uJwNEMK9nBlICsq6U31c+XVqQueVBkwRIzZG+gMpS8TOJctt5h5Wz33Z8xnMdTd+adtACVz0yHgGuOA==} - cpu: [arm64] - os: [linux] - libc: [glibc] - '@bruits/satteri-linux-arm64-musl@0.10.5': resolution: {integrity: sha512-yWdgG1g17Nh2QyGVlFUxGRa3FEFwiMcpZEyMNWkbM3deC94cmVc+/i9OuyFpdKuWo3GkgoCtYVOoxk1uCnCZIA==} cpu: [arm64] os: [linux] libc: [musl] - '@bruits/satteri-linux-arm64-musl@0.9.5': - resolution: {integrity: sha512-v39HxiwGC5Rqm01HksP6+5Y+xKLPlsuVFgIgpEAo+SiQ22c+mJVhS3u7Z6ePAKdhL5NJoK1xq70kLz3L13AhpQ==} - cpu: [arm64] - os: [linux] - libc: [musl] - '@bruits/satteri-linux-x64-gnu@0.10.5': resolution: {integrity: sha512-FVaLoPT1fBgGl0J+AYebyyXJYBachGl8Oyyrf1lye4RTqCB4S0Gwkj1uM9RJyThUOvx5VUmAT1CnNh1SFHA+kw==} cpu: [x64] os: [linux] libc: [glibc] - '@bruits/satteri-linux-x64-gnu@0.9.5': - resolution: {integrity: sha512-F3uO8uFp3pAP5ZGXttwvh57GS7s0lL953tnNdyI2gRyP4kOOkp6pyGojNJzCjkDvWI2Cvb9iNrKok3aqQPauAw==} - cpu: [x64] - os: [linux] - libc: [glibc] - '@bruits/satteri-linux-x64-musl@0.10.5': resolution: {integrity: sha512-EHpVAx2bqW3GINHTKkljtxVfQmVDGWIuwOYOP5YghTj+0PkBa2o8oKPRtQ9Kbsr1Fye8jtUcDjhwj2jMNugZKg==} cpu: [x64] os: [linux] libc: [musl] - '@bruits/satteri-linux-x64-musl@0.9.5': - resolution: {integrity: sha512-bicEqglLlz++mWyADaZoP0JY20s4vDfLjaPYgQqC+NI4zZLTOOg1T4GB8aqtc822Pqji8SQBmSrTb7CrP8i08Q==} - cpu: [x64] - os: [linux] - libc: [musl] - '@bruits/satteri-wasm32-wasi@0.10.5': resolution: {integrity: sha512-ypz8c/Zmipxp4IoeDa228Gstv6TLzVmNs3yC6wKCoNSOjx1iwpgzu87Y3hTkXFdwChVGU85qeUDuOIarGUZQLw==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@bruits/satteri-wasm32-wasi@0.9.5': - resolution: {integrity: sha512-zauAuMwfPnKPUkd4AFixRFpXdgKwP2mKgxrIIo2gJzW0/ZneF9dbHnLkojSpaBnCCp7VUL1hIi5WWZvB1CqmAQ==} - engines: {node: '>=14.0.0'} - cpu: [wasm32] - '@bruits/satteri-win32-arm64-msvc@0.10.5': resolution: {integrity: sha512-siTV88nb0LRqNpkL2gXboqCwVdq95sLtzMHS1/3eONV2gLbB3NAK46wmSMvCO/yquBvI2lvaFIfd8P12ecsxBw==} cpu: [arm64] os: [win32] - '@bruits/satteri-win32-arm64-msvc@0.9.5': - resolution: {integrity: sha512-SrfE7NEsgZjBvU3c+RR6oQRu0ToXY5uVJEbieXEF0YTctIV2zAVlbaMjWLts074QCgh3a+XHWkR/lWh2VH2LUg==} - cpu: [arm64] - os: [win32] - '@bruits/satteri-win32-x64-msvc@0.10.5': resolution: {integrity: sha512-C3IfPvfvMXmlzBxaMPKFS1XiuV9pu2mC7YqkPk7PSvTgPZ8gbdASIpHpztDLvTTQjqZ0z1Ol8tK5X+V6XXC0wQ==} cpu: [x64] os: [win32] - '@bruits/satteri-win32-x64-msvc@0.9.5': - resolution: {integrity: sha512-5Kw9ZAtTGS8WHizyn+CJhjjfIQrw+7jcZodpmpXJjefnO15M8UexIi6JR2E5thyvsmHyhL6ZDDMUNR4bKJPd4g==} - cpu: [x64] - os: [win32] - '@capsizecss/unpack@4.0.1': resolution: {integrity: sha512-CuNiSqg7+e1cO/GjffyMOm5Tt2jUF9CWHHnvQ/UkqvtkGfHdgwEC0wpmq7fkN3gxwpRnrAN0WzO3vREKmNolMQ==} engines: {node: '>=18'} @@ -812,163 +745,81 @@ packages: resolution: {integrity: sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==} engines: {node: '>=18'} - '@img/sharp-darwin-arm64@0.35.3': - resolution: {integrity: sha512-RMnFX7YQsMoh7lWfcM4NEHHymBX/rLuKNPVM84XE9ONPcaSCDgE7CHIHpSgPcO2xcRthgBy1HfNO319mwhIAkg==} - engines: {node: '>=20.9.0'} - cpu: [arm64] - os: [darwin] - '@img/sharp-darwin-arm64@0.35.4': resolution: {integrity: sha512-Uhfl4V4lhP2nbUVF9+hyH1+luj86f1gUFeo8ALYxFoULoU+G87D43BfeMP8XHsk9boxAnCY/bf2EHwhA7MuGsA==} engines: {node: '>=20.9.0'} cpu: [arm64] os: [darwin] - '@img/sharp-darwin-x64@0.35.3': - resolution: {integrity: sha512-Xo+5uFBtLN0BKqieTxiFzFPQAUlBbbH5iBKyRX/z1JrbnYsHTfKJnUfL8+p2TPXr1pXqao4eeL4Rl144uDpK9w==} - engines: {node: '>=20.9.0'} - cpu: [x64] - os: [darwin] - '@img/sharp-darwin-x64@0.35.4': resolution: {integrity: sha512-hWniXY3bG5qKpkKrAwPe4y+VTPmf086YQAnkxWh7uA1YrlRouWGa0M0Mxj3ZjnXFkv7/TD1bTy9lGUK26vRvWw==} engines: {node: '>=20.9.0'} cpu: [x64] os: [darwin] - '@img/sharp-freebsd-wasm32@0.35.3': - resolution: {integrity: sha512-lUxcqWIj2wMQ9BrwNjngcr1gWUr5xgaGThBRqPPalIC2n67Cqj1uPh8NnA/ZhAg8hUbKl+kVHKwgUIwe6ZYPrg==} - engines: {node: '>=20.9.0'} - os: [freebsd] - '@img/sharp-freebsd-wasm32@0.35.4': resolution: {integrity: sha512-lIsKw/BU+kjB4eZjxrYrZmwOJYi3Ajrv66iAlBmUPyKc3HpnloevB1g3wxGD9P/5BbQ1brBGl65VRRrCvQDEqA==} engines: {node: '>=20.9.0'} os: [freebsd] - '@img/sharp-libvips-darwin-arm64@1.3.2': - resolution: {integrity: sha512-9J6ypZFpQBj4YnePGoq/S38w6nz+vqg5WZLrLGY4YuSemdMq47GMLBPO42MzwdGwpg/agZ7xzZcFHa48xlywfg==} - cpu: [arm64] - os: [darwin] - '@img/sharp-libvips-darwin-arm64@1.3.3': resolution: {integrity: sha512-suTBPTDGrI9WodccaDdwZItTSaBYASlBk1NSfElSHrUfzu3szG6lvIF58+WiFvnfzuK8ZBFS5zE00PxqxnRiPg==} cpu: [arm64] os: [darwin] - '@img/sharp-libvips-darwin-x64@1.3.2': - resolution: {integrity: sha512-m2pW1n6cns9VaubNwsZ+c3CRYjxNQWgJ5gPlnL1nbBcpkBvFm6SCFN5o0psFHI8w9n11NKhFkeEDns98tiqbEw==} - cpu: [x64] - os: [darwin] - '@img/sharp-libvips-darwin-x64@1.3.3': resolution: {integrity: sha512-FVJZ5mITMobmXIz/hPDTw0EintTW5H3WfrxwLqEqjiIihlu+hVRyGrFQ60xl0Lxn7Bt3zdpevPaQi0HEzqz9fw==} cpu: [x64] os: [darwin] - '@img/sharp-libvips-linux-arm64@1.3.2': - resolution: {integrity: sha512-dqVSFynCox4C/J8kT16V7SIFAns0IjgLwkvYT7p8LQVmJ5OS5b6tI9IGflxTeuBS//zXeFIUbwt5dwxyZ17cnA==} - cpu: [arm64] - os: [linux] - libc: [glibc] - '@img/sharp-libvips-linux-arm64@1.3.3': resolution: {integrity: sha512-0DaL0A6Xu6sQSQFwe4iVCrKWU2cCTItnRsYsCdxAMm9NF6twAA9BKnoqy4hqz4+azQ0JHuA26qiUKsf1XJ/v5A==} cpu: [arm64] os: [linux] libc: [glibc] - '@img/sharp-libvips-linux-arm@1.3.2': - resolution: {integrity: sha512-1eMLzy92I4J6rmi4mAT8yC3HxOtniyGELlzGbNMLLeqe052ahFQ0h6LFq+lh5DsDIdYViIDst08abvSbcEdLXQ==} - cpu: [arm] - os: [linux] - libc: [glibc] - '@img/sharp-libvips-linux-arm@1.3.3': resolution: {integrity: sha512-3rbU4vqXXc3hY/OiXdl52xZvT0F1yEngWfvqudtPJg/KkyiaQw2DRsFrNzpmLvfavbwOq3qXn36GP8obHRULQA==} cpu: [arm] os: [linux] libc: [glibc] - '@img/sharp-libvips-linux-ppc64@1.3.2': - resolution: {integrity: sha512-3z0NHDxD6n5I9gc05U1eW1AyRm+Gznzq3naMrthPNqE6oYykcogW0l/jfpJdjYnuNl8R7yI9pNbE1XiUeyq0Aw==} - cpu: [ppc64] - os: [linux] - libc: [glibc] - '@img/sharp-libvips-linux-ppc64@1.3.3': resolution: {integrity: sha512-cdn1OvUBwsXhbC0zSzJnNzf5MZ/mTrobawDvNXBTxe8VtqKAm0sRuEY2Evzovb/w9JMk4TvRxqt1mekSuJz64w==} cpu: [ppc64] os: [linux] libc: [glibc] - '@img/sharp-libvips-linux-riscv64@1.3.2': - resolution: {integrity: sha512-bsb4rI+NldGOsXuej2r8OdSS8+zXDVaCWxyWrcv6kneTOlgAHtZABRzBBCwdsPiD90J4myNJuHpg6kA20ImW/w==} - cpu: [riscv64] - os: [linux] - libc: [glibc] - '@img/sharp-libvips-linux-riscv64@1.3.3': resolution: {integrity: sha512-HjPVx7yKz+0lqdhDlTw1tt90wamBoxhiXpvl1XZpJLiHH4RCJ5yDTqH+VlYPv2fwFs89JFw4c1IexYOcQUi4IQ==} cpu: [riscv64] os: [linux] libc: [glibc] - '@img/sharp-libvips-linux-s390x@1.3.2': - resolution: {integrity: sha512-/ABshyj8gCpyIrNXnHn4LorDJ0HHm1VhXPBlxZ8zAtfVPAaSafXPGn+sUSIRiwaSBy0mmFjSjiXI5mkcwdChKQ==} - cpu: [s390x] - os: [linux] - libc: [glibc] - '@img/sharp-libvips-linux-s390x@1.3.3': resolution: {integrity: sha512-neWLh+3yCNThxnfy3c4BbVBeGgt9aftno+XbT56iK28RgeDs3UOFWviLWlUu0bArYVYJaFDK+RRohbicUNCm8Q==} cpu: [s390x] os: [linux] libc: [glibc] - '@img/sharp-libvips-linux-x64@1.3.2': - resolution: {integrity: sha512-ITPEtgffGJ0S6G9dRyw/366tJQqFRcHWPHhC+Stpg3Z8AEMrDrTr2lhdz4f/Y/HMbRh//7Z5mBzEpVdi62Oc3w==} - cpu: [x64] - os: [linux] - libc: [glibc] - '@img/sharp-libvips-linux-x64@1.3.3': resolution: {integrity: sha512-4vKmvAst9nrowcqquKFAyZJUDolUaIp8uRiN0mWFguJ1IplC9/pitXtlnnlU4aa/eJw3J7i67V+pwUL+wZGdsA==} cpu: [x64] os: [linux] libc: [glibc] - '@img/sharp-libvips-linuxmusl-arm64@1.3.2': - resolution: {integrity: sha512-zE9EdiUzUmg5mDT5a1rk5fYJ6GWPloTwWBYDS14naqHsL+EaMpDj1AWnpLgh3u0YCORv2Tt50wrcrpYqkP97Kw==} - cpu: [arm64] - os: [linux] - libc: [musl] - '@img/sharp-libvips-linuxmusl-arm64@1.3.3': resolution: {integrity: sha512-Y9kQaLMuNoB0bPYOOdcZMaseNrFpPodIWWMrx+CZyydf2xn68j9WYc6sWWRrDwNkzCQjKYfc68L7jKjGlHMibw==} cpu: [arm64] os: [linux] libc: [musl] - '@img/sharp-libvips-linuxmusl-x64@1.3.2': - resolution: {integrity: sha512-m0lrLiUt+lBYnCFr8qV/65yMR4E/c7/wf78I5eKTdkEakFAlZ9QlzEM3QIhhAwVeUhLAHLcCq7a7Vszq/oFNZQ==} - cpu: [x64] - os: [linux] - libc: [musl] - '@img/sharp-libvips-linuxmusl-x64@1.3.3': resolution: {integrity: sha512-fj8Mv0HHfD1Rr+4I68+3agJynxDWtBFgicTbSOb9Bke6pIwzGcJ+RX/yHjmiEGFMCavY/dxvem7MyNaJF+wDiw==} cpu: [x64] os: [linux] libc: [musl] - '@img/sharp-linux-arm64@0.35.3': - resolution: {integrity: sha512-QgKDspHPnrU+GQ55XPhGwyhC8acLVOOSyAvo1oVfFmrIXLkDNmGWzAfDZ4xK8oSA1qBQrALcHX0G5UZni/SuFQ==} - engines: {node: '>=20.9.0'} - cpu: [arm64] - os: [linux] - libc: [glibc] - '@img/sharp-linux-arm64@0.35.4': resolution: {integrity: sha512-De4jpEnAU8Hd5oT0j1G3uL4ZvTuipVMn7YC6vPaJhy6/7EwEae0SVAoBrUMYQbkLGDm85taVWwuPc1a44LTzCQ==} engines: {node: '>=20.9.0'} @@ -976,13 +827,6 @@ packages: os: [linux] libc: [glibc] - '@img/sharp-linux-arm@0.35.3': - resolution: {integrity: sha512-affVWCTLooy8TSxbDx2qkzuDeaWLNVBA+P//FNBirHsXpP2fuBhk5AuboYUnrDnzoXes8GFjpTx0SBFOCRg+FA==} - engines: {node: '>=20.9.0'} - cpu: [arm] - os: [linux] - libc: [glibc] - '@img/sharp-linux-arm@0.35.4': resolution: {integrity: sha512-7OAS8gI0EReKGVN2HssHlM6umJgxF5VI3xN0p9FA91p/YO+ou5hiNghLdZ5BEHztwaaK5+bLKRf8x/o2L2nk9A==} engines: {node: '>=20.9.0'} @@ -990,13 +834,6 @@ packages: os: [linux] libc: [glibc] - '@img/sharp-linux-ppc64@0.35.3': - resolution: {integrity: sha512-sMd8rDxmpLOwv/7N44klFjOD5DUO7FLdjiXDI0hoxYaf7Ar262dQIEkosE98bps+5HPLtp/EvNqeqQtOycP/IA==} - engines: {node: '>=20.9.0'} - cpu: [ppc64] - os: [linux] - libc: [glibc] - '@img/sharp-linux-ppc64@0.35.4': resolution: {integrity: sha512-2oYZJeIl4kCcMGk4ouZVjnkCtFrpQFlNEtJ6GbxzhHQchwH0NH/qEb9ykmOl29dqwMq+JhFdZn+1ak2FKhI9fQ==} engines: {node: '>=20.9.0'} @@ -1004,13 +841,6 @@ packages: os: [linux] libc: [glibc] - '@img/sharp-linux-riscv64@0.35.3': - resolution: {integrity: sha512-0Eob78yjlYPfL5vMNWAW55l3R9Y6BQS/gOfe0ZcP9mEz9ohhKSt4im1hayiknXgf8AWrFqMvJcKIdmLmEe7yeQ==} - engines: {node: '>=20.9.0'} - cpu: [riscv64] - os: [linux] - libc: [glibc] - '@img/sharp-linux-riscv64@0.35.4': resolution: {integrity: sha512-cPbNChoRURAWdebDIHSenxRpgEdy7JkPydSnUxRm9VvKD7m0/xVaR/8Fzlu81pk5nHEvHH87UZUA7cTtwnbJSA==} engines: {node: '>=20.9.0'} @@ -1018,13 +848,6 @@ packages: os: [linux] libc: [glibc] - '@img/sharp-linux-s390x@0.35.3': - resolution: {integrity: sha512-KgAxQ0DxpNOq1rG2t5cgTgShJFGSuU7XO45cqC+1NVOuZnP6tlgZRuSYOfNupGkHID0o3cJOsw4DVeJpMovcGw==} - engines: {node: '>=20.9.0'} - cpu: [s390x] - os: [linux] - libc: [glibc] - '@img/sharp-linux-s390x@0.35.4': resolution: {integrity: sha512-RY0JFY8Fd6RonCBtHz+DvadaPkXDSI1AUn6yWL9TipqkZ1vY8w8evqdgyDFnkm4/K1ve1TvZiaePP5oSd4+WVQ==} engines: {node: '>=20.9.0'} @@ -1032,13 +855,6 @@ packages: os: [linux] libc: [glibc] - '@img/sharp-linux-x64@0.35.3': - resolution: {integrity: sha512-8pqvxubL2PGdhlPy6GLqzDYMUjyRmKAwKHYKixpdJYBUK7PJ0C029XdsnpFIdgRZG68fZiGdHVWcKPvtiPB4cA==} - engines: {node: '>=20.9.0'} - cpu: [x64] - os: [linux] - libc: [glibc] - '@img/sharp-linux-x64@0.35.4': resolution: {integrity: sha512-9qvvEAuk8k89TfWUoX2htWjbAMX8p+NxCppjpcg5k6xMsjhBQPTsoIh36h9Qde4WRuGpJeYnOjdosDn/cnv+OA==} engines: {node: '>=20.9.0'} @@ -1046,13 +862,6 @@ packages: os: [linux] libc: [glibc] - '@img/sharp-linuxmusl-arm64@0.35.3': - resolution: {integrity: sha512-Vz0iQjzzcSX3HCbfwFfCSG/9SCIqyO0mH2sXyiHaAYfBk0cRsCWXRyQYX0ovCK/PAQBbTzQ0dsPQHh5MAFL59w==} - engines: {node: '>=20.9.0'} - cpu: [arm64] - os: [linux] - libc: [musl] - '@img/sharp-linuxmusl-arm64@0.35.4': resolution: {integrity: sha512-KB5jxpfWQTr0nc3xdHtWChdbifHrBGsd2SM62Eyxrl8afikm+f5qGBU75SJIZBT/S1MC8XyacdlXBMSWq6OURA==} engines: {node: '>=20.9.0'} @@ -1060,13 +869,6 @@ packages: os: [linux] libc: [musl] - '@img/sharp-linuxmusl-x64@0.35.3': - resolution: {integrity: sha512-6O1NPKcDVj9QEdg7Hx549EX8U0rp6yXQERqru6yRN7fGBn32UvIRJUlWnk+8xDCiG76hXVBbX82NZ/ZKr0euIg==} - engines: {node: '>=20.9.0'} - cpu: [x64] - os: [linux] - libc: [musl] - '@img/sharp-linuxmusl-x64@0.35.4': resolution: {integrity: sha512-f+eZJZIQNEEd26RPSW+76chwOf1XtA2Y/O+5ocVyLliHkeih3e+jhLVBdNTd2rS3IbNXK8+ug93Vf5ZXtF5Lxg==} engines: {node: '>=20.9.0'} @@ -1074,72 +876,35 @@ packages: os: [linux] libc: [musl] - '@img/sharp-wasm32@0.35.3': - resolution: {integrity: sha512-cZ0XkcYGpHZkqW6iCkqTcmUC0CD9DhD5d/qeZlZkfRBn6GnHniZXLUo5+9xw8Iv76YE6LQFN9YNBlKREcCG76w==} - engines: {node: '>=20.9.0'} - '@img/sharp-wasm32@0.35.4': resolution: {integrity: sha512-zQnl4Kwp7Q6NHsENtU2T/00Zi+w3AQNwz3+UaTyVBy2FpXrzXzGjndpK61onhZjRtRpQXxCTeqw19bVyXOh7jA==} engines: {node: '>=20.9.0'} - '@img/sharp-webcontainers-wasm32@0.35.3': - resolution: {integrity: sha512-2rnq7bX3NzeR2T4YWgz8qiG4h3TSdMe+vN1iQXpJleSJ3SM5zQ8Fy2SyyXAWlbxpEZ2Y+Z4u1BePgJEYbSy80Q==} - engines: {node: '>=20.9.0'} - cpu: [wasm32] - '@img/sharp-webcontainers-wasm32@0.35.4': resolution: {integrity: sha512-ESfNkywmCfPNyaZjxooddJQiQ+l/nTpGEOGthxiLnIHXC/CmcBixnfwUleX9mCz9ovrUUvKMap/pm8RYbzfwaA==} engines: {node: '>=20.9.0'} cpu: [wasm32] - '@img/sharp-win32-arm64@0.35.3': - resolution: {integrity: sha512-4bPwFdMbeC4JQ8L8LOyWp6nsHcboP5fxkp6iPOXz2Vg49R42TuMs2whkJ5OAP4/Ul035qOzy0AecOF9VOscn4w==} - engines: {node: '>=20.9.0'} - cpu: [arm64] - os: [win32] - '@img/sharp-win32-arm64@0.35.4': resolution: {integrity: sha512-iNdlBX9gLVvqe2I3uIJSIKTq6wckP/DYxZtcqxm09x5Gi24DnFBmPAWZmr60ZyYMG0xlzo6goG3670ar+RXvRw==} engines: {node: '>=20.9.0'} cpu: [arm64] os: [win32] - '@img/sharp-win32-ia32@0.35.3': - resolution: {integrity: sha512-r53mXsBN6lFUDiST764SvgwUdHAqM4rPAiDzAmf4fLoB6X/rkfyTrLCg6+g17wJJiCmB3JYgHuUldCWUIRFSXw==} - engines: {node: ^20.9.0} - cpu: [ia32] - os: [win32] - '@img/sharp-win32-ia32@0.35.4': resolution: {integrity: sha512-kqRsbaa5CS6KHlpxnN7WhE6vAAugXyZButpRdvDWetlv6Qv4N9WTcrWzF7tXfB9T7MsoadqdI8hmwLq6UlLvtw==} engines: {node: ^20.9.0} cpu: [ia32] os: [win32] - '@img/sharp-win32-x64@0.35.3': - resolution: {integrity: sha512-D4y1vNeZrIIJCN+uHaWVtH86B+aCrdMYYjicy9pXHvbGZeGYLLSd3wdVuC37FxVXlU1ARsk84eKWfWMXGYEqvA==} - engines: {node: '>=20.9.0'} - cpu: [x64] - os: [win32] - '@img/sharp-win32-x64@0.35.4': resolution: {integrity: sha512-XtmnYhBcrORsJ4XJngyzr/EWP0hRZLAZRFaApdKuviyqF78+ylxh2y06ZmtULAMOnObJ3ucpN0AcwSWnMowTRg==} engines: {node: '>=20.9.0'} cpu: [x64] os: [win32] - '@jridgewell/sourcemap-codec@1.5.5': - resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} - - '@mdx-js/mdx@3.1.1': - resolution: {integrity: sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ==} - - '@napi-rs/wasm-runtime@1.2.2': - resolution: {integrity: sha512-JfB4kuJQjaoHuCTseIINHtHWeJnvgEcxjwA5t/Y00ZgaOO1Crz3fjT/p8kT28zA/Caz7oiUMn3d6H2yOVCVwuw==} - engines: {node: ^20.19.0 || ^22.13.0 || >=23.5.0} - peerDependencies: - '@emnapi/core': ^1.7.1 || ^2.0.0-alpha.3 - '@emnapi/runtime': ^1.7.1 || ^2.0.0-alpha.3 + '@jridgewell/sourcemap-codec@1.6.0': + resolution: {integrity: sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw==} '@napi-rs/wasm-runtime@1.2.3': resolution: {integrity: sha512-UMduMbqO5s5zF2NkNacMT/yK5Y5QiKvWr2+50bzIIxFDwVJ2h49b+oyjaCGPhJxd2/gC2x39EHv/gHVuu36x2Q==} @@ -1356,9 +1121,6 @@ packages: '@types/mdast@4.0.4': resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} - '@types/mdx@2.0.14': - resolution: {integrity: sha512-T48PeuJtvLosNTPVhfnIp3i/n3a4g4Bad7YCq5k64D4u7NwDrAotikQ+5+sjtUvBmxCMlbo3dVL+C2dP0rWHzg==} - '@types/ms@2.1.0': resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} @@ -1421,16 +1183,6 @@ packages: '@vscode/l10n@0.0.18': resolution: {integrity: sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ==} - acorn-jsx@5.3.2: - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - - acorn@8.18.0: - resolution: {integrity: sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==} - engines: {node: '>=0.4.0'} - hasBin: true - ajv-draft-04@1.0.0: resolution: {integrity: sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==} peerDependencies: @@ -1485,20 +1237,13 @@ packages: resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} engines: {node: '>= 0.4'} - array-iterate@2.0.1: - resolution: {integrity: sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==} - - astring@1.9.0: - resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==} - hasBin: true - astro-expressive-code@0.44.1: resolution: {integrity: sha512-DT1LnCqbHasBKlvzJ3m6LR4VI94wwx3W9EV/YbP1te4rqjOHsvsezHYuqb5MeLWLftXms/1FA9QBbwCo43DnJQ==} peerDependencies: astro: ^4.0.0-beta || ^5.0.0-beta || ^3.3.0 || ^6.0.0-beta || ^7.0.0 - astro@7.2.10: - resolution: {integrity: sha512-uPtD+nK6kQXugyq4kiMPwj9OI3Sae6HSerA5X+fuv2CPaDwxmokFPPFlGRKIAXH0QAKu+zot2q6yrLG61wFmqg==} + astro@7.3.2: + resolution: {integrity: sha512-ysTcdpGP61XZpHoMRYC/CK19DQ94qkBvzXMtXEo0gEqPNkmOU/Tv++CtWmzaI4nF2Ck8RXFdiWvdlTWa2oOr9w==} engines: {node: '>=22.12.0', npm: '>=9.6.5', pnpm: '>=7.1.0'} hasBin: true peerDependencies: @@ -1507,16 +1252,6 @@ packages: '@astrojs/markdown-remark': optional: true - astro@7.2.3: - resolution: {integrity: sha512-CDf55Cw2nOev5BAM72yn7JQMpK/ByTY5tLSybbHbtZNSiMKk0OeyvCjA2foEUXfHXbATpHQQPBgfuXL8PdofcA==} - engines: {node: '>=22.12.0', npm: '>=9.6.5', pnpm: '>=7.1.0'} - hasBin: true - peerDependencies: - '@astrojs/markdown-remark': 7.2.3 - peerDependenciesMeta: - '@astrojs/markdown-remark': - optional: true - asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} @@ -1583,9 +1318,6 @@ packages: resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} engines: {node: '>=6'} - collapse-white-space@2.1.0: - resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==} - color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} @@ -1604,10 +1336,6 @@ packages: resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} engines: {node: '>=16'} - commander@14.0.3: - resolution: {integrity: sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==} - engines: {node: '>=20'} - common-ancestor-path@2.0.0: resolution: {integrity: sha512-dnN3ibLeoRf2HNC+OlCiNc5d2zxbLJXOtiZUudNFSXZrNSydxcCsSpRzXwfu7BBWCIfHPw+xTayeBvJCP/D8Ng==} engines: {node: '>= 18'} @@ -1685,10 +1413,6 @@ packages: devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} - diff@8.0.4: - resolution: {integrity: sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==} - engines: {node: '>=0.3.1'} - diff@9.0.0: resolution: {integrity: sha512-svtcdpS8CgJyqAjEQIXdb3OjhFVVYjzGAPO8WGCmRbrml64SPw/jJD4GoE98aR7r25A0XcgrK3F02yw9R/vhQw==} engines: {node: '>=0.3.1'} @@ -1734,10 +1458,6 @@ packages: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} - entities@6.0.1: - resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} - engines: {node: '>=0.12'} - es-define-property@1.0.1: resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} engines: {node: '>= 0.4'} @@ -1757,12 +1477,6 @@ packages: resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} engines: {node: '>= 0.4'} - esast-util-from-estree@2.0.0: - resolution: {integrity: sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==} - - esast-util-from-js@2.0.1: - resolution: {integrity: sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==} - esbuild@0.28.2: resolution: {integrity: sha512-HKVLS8dvII+xoKW9kmqxbRKrnWEXfJJr/FZhhJmiqIB0e053QNYFqOBouTMO/k5sID4MvCiUCvv8b9M4h32wIA==} engines: {node: '>=18'} @@ -1772,31 +1486,6 @@ packages: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} - escape-string-regexp@5.0.0: - resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} - engines: {node: '>=12'} - - estree-util-attach-comments@3.0.0: - resolution: {integrity: sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==} - - estree-util-build-jsx@3.0.1: - resolution: {integrity: sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==} - - estree-util-is-identifier-name@3.0.0: - resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} - - estree-util-scope@1.0.0: - resolution: {integrity: sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ==} - - estree-util-to-js@2.0.0: - resolution: {integrity: sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==} - - estree-util-visit@2.0.0: - resolution: {integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==} - - estree-walker@3.0.3: - resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} - event-stream@4.0.1: resolution: {integrity: sha512-qACXdu/9VHPBzcyhdOWR5/IahhGMf0roTeZJfzz077GwylcDd90yOHLouhmv7GJ5XzPi6ekaQWd8AvPP2nOvpA==} @@ -1837,10 +1526,6 @@ packages: resolution: {integrity: sha512-OaOpEYv2PiQ7SQ5LIrl+deA1XaWcxEjnpM6VuWXTUvn+teIXxeFTLDmu18/zDQpFmHN4o3oDBX+BT0AGwEhemg==} engines: {node: ^20.19.0 || >=22.12.0} - find-process@2.1.1: - resolution: {integrity: sha512-SrQDx3QhlmHM90iqn9rdjCQcw/T+WlpOkHFsjoRgB+zTpDfltNA1VSNYeYELwhUTJy12UFxqjWhmhOrJc+o4sA==} - hasBin: true - flattie@1.1.1: resolution: {integrity: sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==} engines: {node: '>=8'} @@ -1925,12 +1610,6 @@ packages: hast-util-format@1.1.0: resolution: {integrity: sha512-yY1UDz6bC9rDvCWHpx12aIBGRG7krurX0p0Fm6pT547LwDIZZiNr8a+IHDogorAdreULSEzP82Nlv5SZkHZcjA==} - hast-util-from-html@2.0.3: - resolution: {integrity: sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==} - - hast-util-from-parse5@8.0.3: - resolution: {integrity: sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==} - hast-util-has-property@3.0.0: resolution: {integrity: sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==} @@ -1949,24 +1628,12 @@ packages: hast-util-phrasing@3.0.1: resolution: {integrity: sha512-6h60VfI3uBQUxHqTyMymMZnEbNl1XmEGtOxxKYL7stY2o601COo62AWAYBQR9lZbYXYSBoxag8UpPRXK+9fqSQ==} - hast-util-raw@9.1.0: - resolution: {integrity: sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw==} - hast-util-select@6.0.4: resolution: {integrity: sha512-RqGS1ZgI0MwxLaKLDxjprynNzINEkRHY2i8ln4DDjgv9ZhcYVIHN9rlpiYsqtFwrgpYU361SyWDQcGNIBVu3lw==} - hast-util-to-estree@3.1.3: - resolution: {integrity: sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==} - hast-util-to-html@9.0.5: resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==} - hast-util-to-jsx-runtime@2.3.6: - resolution: {integrity: sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==} - - hast-util-to-parse5@8.0.1: - resolution: {integrity: sha512-MlWT6Pjt4CG9lFCjiz4BH7l9wmrMkfkJYCxFwKQic8+RTZgWPuWxwAfjJElsXkex7DJjfSJsQIt931ilUgmwdA==} - hast-util-to-string@3.0.1: resolution: {integrity: sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==} @@ -2004,9 +1671,6 @@ packages: typescript: optional: true - inline-style-parser@0.2.7: - resolution: {integrity: sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==} - iron-webcrypto@1.2.1: resolution: {integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==} @@ -2149,10 +1813,6 @@ packages: resolution: {integrity: sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==} engines: {node: '>= 12.0.0'} - loglevel@1.9.2: - resolution: {integrity: sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==} - engines: {node: '>= 0.6.0'} - longest-streak@3.1.0: resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} @@ -2160,11 +1820,8 @@ packages: resolution: {integrity: sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==} engines: {node: 20 || >=22} - magic-string@0.30.21: - resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} - - magic-string@1.1.0: - resolution: {integrity: sha512-kS3VHe0nEPST2saQV4Rbkchcd3UBRkVTQHo1D3h/ZTwFDhai/mfKkmtPAtD129EOI7K3HlHIsFOt0WrI2/oU9g==} + magic-string@1.3.1: + resolution: {integrity: sha512-rm91zr2Ou+XueDTohjQQjdQEcYM6zVi8KVUCG8Ec3vHwUEKrhSdCNyfuIywkA6hcCAteIn0ZOtAHA6eGpiX+Pg==} magicast@0.5.4: resolution: {integrity: sha512-llBEhWm1SacoRwgHUoQJYtwp4PBLF4faQi5TCpIGyGs9n4y5+juI0tDgyKIfpqxckRHaHzouUEph3THklWh03w==} @@ -2172,59 +1829,16 @@ packages: map-stream@0.0.7: resolution: {integrity: sha512-C0X0KQmGm3N2ftbTGBhSyuydQ+vV1LC3f3zPvT3RXHXNZrvfPZcoXp/N5DOa8vedX/rTMm2CjTtivFg2STJMRQ==} - markdown-extensions@2.0.0: - resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} - engines: {node: '>=16'} - - markdown-table@3.0.4: - resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} - math-intrinsics@1.1.0: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} - mdast-util-definitions@6.0.0: - resolution: {integrity: sha512-scTllyX6pnYNZH/AIp/0ePz6s4cZtARxImwoPJ7kS42n+MnVsI4XbnG6d4ibehRIldYMWM2LD7ImQblVhUejVQ==} - mdast-util-directive@3.1.0: resolution: {integrity: sha512-I3fNFt+DHmpWCYAT7quoM6lHf9wuqtI+oCOfvILnoicNIqjh5E3dEJWiXuYME2gNe8vl1iMQwyUHa7bgFmak6Q==} - mdast-util-find-and-replace@3.0.2: - resolution: {integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==} - mdast-util-from-markdown@2.0.3: resolution: {integrity: sha512-W4mAWTvSlKvf8L6J+VN9yLSqQ9AOAAvHuoDAmPkz4dHf553m5gVj2ejadHJhoJmcmxEnOv6Pa8XJhpxE93kb8Q==} - mdast-util-gfm-autolink-literal@2.0.1: - resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==} - - mdast-util-gfm-footnote@2.1.0: - resolution: {integrity: sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==} - - mdast-util-gfm-strikethrough@2.0.0: - resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} - - mdast-util-gfm-table@2.0.0: - resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} - - mdast-util-gfm-task-list-item@2.0.0: - resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} - - mdast-util-gfm@3.1.0: - resolution: {integrity: sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==} - - mdast-util-mdx-expression@2.0.1: - resolution: {integrity: sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==} - - mdast-util-mdx-jsx@3.2.0: - resolution: {integrity: sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==} - - mdast-util-mdx@3.0.0: - resolution: {integrity: sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==} - - mdast-util-mdxjs-esm@2.0.1: - resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} - mdast-util-phrasing@4.1.0: resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} @@ -2249,51 +1863,12 @@ packages: micromark-extension-directive@4.0.0: resolution: {integrity: sha512-/C2nqVmXXmiseSSuCdItCMho7ybwwop6RrrRPk0KbOHW21JKoCldC+8rFOaundDoRBUWBnJJcxeA/Kvi34WQXg==} - micromark-extension-gfm-autolink-literal@2.1.0: - resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==} - - micromark-extension-gfm-footnote@2.1.0: - resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==} - - micromark-extension-gfm-strikethrough@2.1.0: - resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==} - - micromark-extension-gfm-table@2.1.1: - resolution: {integrity: sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==} - - micromark-extension-gfm-tagfilter@2.0.0: - resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} - - micromark-extension-gfm-task-list-item@2.1.0: - resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==} - - micromark-extension-gfm@3.0.0: - resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} - - micromark-extension-mdx-expression@3.0.1: - resolution: {integrity: sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q==} - - micromark-extension-mdx-jsx@3.0.2: - resolution: {integrity: sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ==} - - micromark-extension-mdx-md@2.0.0: - resolution: {integrity: sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==} - - micromark-extension-mdxjs-esm@3.0.0: - resolution: {integrity: sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==} - - micromark-extension-mdxjs@3.0.0: - resolution: {integrity: sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==} - micromark-factory-destination@2.0.1: resolution: {integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==} micromark-factory-label@2.0.1: resolution: {integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==} - micromark-factory-mdx-expression@2.0.3: - resolution: {integrity: sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==} - micromark-factory-space@2.0.1: resolution: {integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==} @@ -2324,9 +1899,6 @@ packages: micromark-util-encode@2.0.1: resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} - micromark-util-events-to-acorn@2.0.3: - resolution: {integrity: sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==} - micromark-util-html-tag-name@2.0.1: resolution: {integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==} @@ -2435,12 +2007,6 @@ packages: parse-entities@4.0.2: resolution: {integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==} - parse-latin@7.0.0: - resolution: {integrity: sha512-mhHgobPPua5kZ98EF4HWiH167JWBfl4pvAIXXdbaVohtK7a6YBOy56kvhCqduqyo/f3yrHFWmqmiMg/BkBkYYQ==} - - parse5@7.3.0: - resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} - path-browserify@1.0.1: resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} @@ -2510,20 +2076,6 @@ packages: resolution: {integrity: sha512-Kko+Y5XQ6fM+Ce3dq3m9YGxnacYZYl9cA1wZjaF3Vbry2L3i1qVg8+CAgNPsXRArPMUMCaOR7oa9Nqntc43JKA==} engines: {node: '>= 20.19.0'} - recma-build-jsx@1.0.0: - resolution: {integrity: sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==} - - recma-jsx@1.0.1: - resolution: {integrity: sha512-huSIy7VU2Z5OLv6oFLosQGGDqPqdO1iq6bWNAdhzMxSJP7RAso4fCZ1cKu8j9YHCZf3TPrq4dw3okhrylgcd7w==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - - recma-parse@1.0.0: - resolution: {integrity: sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ==} - - recma-stringify@1.0.0: - resolution: {integrity: sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==} - regex-recursion@6.0.2: resolution: {integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==} @@ -2536,46 +2088,9 @@ packages: rehype-expressive-code@0.44.1: resolution: {integrity: sha512-+VZgs7Evw4LXRN3owpoBNSTpYuW6GeOdjqcUT1TuY8o/4MGPtbd0EU7Bgrju7X8KrQ6SslOBAuGWJ5fV5TriJQ==} - rehype-format@5.0.1: - resolution: {integrity: sha512-zvmVru9uB0josBVpr946OR8ui7nJEdzZobwLOOqHb/OOD88W0Vk2SqLwoVOj0fM6IPCCO6TaV9CvQvJMWwukFQ==} - - rehype-parse@9.0.1: - resolution: {integrity: sha512-ksCzCD0Fgfh7trPDxr2rSylbwq9iYDkSn8TCDmEJ49ljEUBxDVCzCHv7QNzZOfODanX4+bWQ4WZqLCRWYLfhag==} - - rehype-raw@7.0.0: - resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==} - - rehype-recma@1.0.0: - resolution: {integrity: sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw==} - - rehype-stringify@10.0.1: - resolution: {integrity: sha512-k9ecfXHmIPuFVI61B9DeLPN0qFHfawM6RsuX48hoqlaKSF61RskNjSm1lI8PhBEM0MRdLxVVm4WmTqJQccH9mA==} - - rehype@13.0.2: - resolution: {integrity: sha512-j31mdaRFrwFRUIlxGeuPXXKWQxet52RBQRvCmzl5eCefn/KGbomK5GMHNMsOJf55fgo3qw5tST5neDuarDYR2A==} - remark-directive@4.0.0: resolution: {integrity: sha512-7sxn4RfF1o3izevPV1DheyGDD6X4c9hrGpfdUpm7uC++dqrnJxIZVkk7CoKqcLm0VUMAuOol7Mno3m6g8cfMuA==} - remark-gfm@4.0.1: - resolution: {integrity: sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==} - - remark-mdx@3.1.1: - resolution: {integrity: sha512-Pjj2IYlUY3+D8x00UJsIOg5BEvfMyeI+2uLPn9VO9Wg4MEtN/VTIq2NEJQfde9PnX15KgtHyl9S0BcTnWrIuWg==} - - remark-parse@11.0.0: - resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} - - remark-rehype@11.1.2: - resolution: {integrity: sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==} - - remark-smartypants@3.0.3: - resolution: {integrity: sha512-gCaK+ndZ0hYezlqFegHFCVh2CQemsi0Npdh1qVM9bxlUFknjkbP6VmojWhddOCrbK0PbbacmYLWfTULRiT1eWA==} - engines: {node: '>=16.0.0'} - - remark-stringify@11.0.0: - resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} - request-light@0.5.8: resolution: {integrity: sha512-3Zjgh+8b5fhRJBQZoy+zbVKpAQGLyka0MPgW3zruTF4dFFJ8Fqcfu9YsAvi/rvdcaTeWG3MkbZv4WKxAn/84Lg==} @@ -2593,18 +2108,9 @@ packages: resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - retext-latin@4.0.0: - resolution: {integrity: sha512-hv9woG7Fy0M9IlRQloq/N6atV82NxLGveq+3H2WOi79dtIYWN8OaxogDm77f8YnVXJL2VD3bbqowu5E3EMhBYA==} - retext-smartypants@6.2.0: resolution: {integrity: sha512-kk0jOU7+zGv//kfjXEBjdIryL1Acl4i9XNkHxtM7Tm5lFiCog576fjNC9hjoR7LTKQ0DsPWy09JummSsH1uqfQ==} - retext-stringify@4.0.0: - resolution: {integrity: sha512-rtfN/0o8kL1e+78+uxPTqu1Klt0yPzKuQ2BfWwwfgIUSayyzxpM1PJzkKt4V8803uB9qSy32MvI7Xep9khTpiA==} - - retext@9.0.0: - resolution: {integrity: sha512-sbMDcpHCNjvlheSgMfEcVrZko3cDzdbe1x/e7G66dFp0Ff7Mldvi2uv6JkJQzdRcvLYE8CA8Oe8siQx8ZOgTcA==} - rolldown@1.2.3: resolution: {integrity: sha512-rn9wpmxplLf7NLNyCk9FyWh3FM43DbY8jOzCdEPzH7uflhTftRbCEpqi6Ly2osgoU8OwObtmavMbWLaWy4LX7A==} engines: {node: ^20.19.0 || >=22.12.0} @@ -2613,9 +2119,6 @@ packages: satteri@0.10.5: resolution: {integrity: sha512-Ao1LKpAEa9Wdg0otgbVKViZHEq9ebdXe4DMrp3s9vQAU0HNIuHnFEuMuOcm0ZIXyV0Yzxj91NvhLpvXZJO/5ZQ==} - satteri@0.9.5: - resolution: {integrity: sha512-ZuWVl+vnM64y+/TtX8Kosv2c00W+hLQiiwnEL6H0UKVVrxFqMw4D2CJHHQaouVd89OAhtBBfjWLqhKi3TVUV4w==} - sax@1.6.1: resolution: {integrity: sha512-42tBVwLWnaQvW5zc4HbZrTuWccECCZfBi92FDuwtqxasH+JbPB3/FOKb1m222K42R4WxuxzzMsTswfzgtSu64Q==} engines: {node: '>=11.0.0'} @@ -2628,15 +2131,6 @@ packages: engines: {node: '>=10'} hasBin: true - sharp@0.35.3: - resolution: {integrity: sha512-ej0zVHuZGHCiABXcNxeYhpRnPNPAcvbG8RMdBAhDAxLKkCRVSpK3Iyu7qbqw3JMzoj0REeM6f3tJLtVwl0023Q==} - engines: {node: '>=20.9.0'} - peerDependencies: - '@types/node': '*' - peerDependenciesMeta: - '@types/node': - optional: true - sharp@0.35.4: resolution: {integrity: sha512-n++8XWcj+jCOr2IOl7h8LbKnGBDY4aPbmprMONBNFdn0ImXqpGVv5zliDs0V9HbmbCQLpbuo2ej9rAoOQTvMDA==} engines: {node: '>=20.9.0'} @@ -2666,18 +2160,14 @@ packages: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} - source-map@0.7.6: - resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} - engines: {node: '>= 12'} - space-separated-tokens@2.0.2: resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} split@1.0.1: resolution: {integrity: sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==} - starlight-openapi@0.26.1: - resolution: {integrity: sha512-HYrUPL0feeIBbtEXUUtr7xPiz5vcenYXTMn4EFKR7vswfoBIjK6r10EB5F4+AFLfgXFVLUIkQk3EYtf+wzMHjw==} + starlight-openapi@0.26.2: + resolution: {integrity: sha512-nW5IwWNXq/cfl4z+9i7o6PWZf372g74SlksHHtRL2wn6RixnGksg3PB+vgvqPFeMLFvzPE5DQ9pSLzItJwtNBw==} engines: {node: '>=22.12.0'} peerDependencies: '@astrojs/markdown-satteri': '>=0.3.2' @@ -2717,12 +2207,6 @@ packages: resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==} engines: {node: '>=12'} - style-to-js@1.1.21: - resolution: {integrity: sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==} - - style-to-object@1.0.14: - resolution: {integrity: sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==} - supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} @@ -2798,24 +2282,12 @@ packages: unist-util-is@6.0.1: resolution: {integrity: sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==} - unist-util-modify-children@4.0.0: - resolution: {integrity: sha512-+tdN5fGNddvsQdIzUF3Xx82CU9sMM+fA0dLgR9vOmT0oPT2jH+P1nd5lSqfCfXAw+93NhcXNY2qqvTUtE4cQkw==} - - unist-util-position-from-estree@2.0.0: - resolution: {integrity: sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==} - unist-util-position@5.0.0: resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} - unist-util-remove-position@5.0.0: - resolution: {integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==} - unist-util-stringify-position@4.0.0: resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} - unist-util-visit-children@3.0.0: - resolution: {integrity: sha512-RgmdTfSBOg04sdPcpTSD1jzoNBjt9a80/ZCzp5cI9n1qPzLZWF9YdvWGN2zmTumP1HWhXKdUWexjy/Wy/lJ7tA==} - unist-util-visit-parents@6.0.2: resolution: {integrity: sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==} @@ -2895,9 +2367,6 @@ packages: util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - vfile-location@5.0.3: - resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==} - vfile-message@4.0.3: resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==} @@ -3063,9 +2532,6 @@ packages: vscode-uri@3.1.0: resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==} - web-namespaces@2.0.1: - resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==} - wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} @@ -3115,8 +2581,8 @@ packages: resolution: {integrity: sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==} engines: {node: '>=12.20'} - zod@4.4.3: - resolution: {integrity: sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==} + zod@4.6.5: + resolution: {integrity: sha512-v5l/aFXZQeai4awLbOpSoHecE9UiMrnfx75tEXLjNonXVARxQ5mOeipTjROUchszUNCqnE+hqAMujRsRHsut2Q==} zwitch@2.0.4: resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} @@ -3251,76 +2717,38 @@ snapshots: - prettier - prettier-plugin-astro - '@astrojs/compiler-binding-darwin-arm64@0.3.2': {} - '@astrojs/compiler-binding-darwin-arm64@0.4.0': optional: true - '@astrojs/compiler-binding-darwin-x64@0.3.2': {} - '@astrojs/compiler-binding-darwin-x64@0.4.0': optional: true - '@astrojs/compiler-binding-linux-arm64-gnu@0.3.2': {} - '@astrojs/compiler-binding-linux-arm64-gnu@0.4.0': optional: true - '@astrojs/compiler-binding-linux-arm64-musl@0.3.2': {} - '@astrojs/compiler-binding-linux-arm64-musl@0.4.0': optional: true - '@astrojs/compiler-binding-linux-x64-gnu@0.3.2': {} - '@astrojs/compiler-binding-linux-x64-gnu@0.4.0': optional: true - '@astrojs/compiler-binding-linux-x64-musl@0.3.2': {} - '@astrojs/compiler-binding-linux-x64-musl@0.4.0': optional: true - '@astrojs/compiler-binding-wasm32-wasi@0.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)': - dependencies: - '@napi-rs/wasm-runtime': 1.2.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3) - transitivePeerDependencies: - - '@emnapi/core' - - '@emnapi/runtime' - '@astrojs/compiler-binding-wasm32-wasi@0.4.0(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)': dependencies: - '@napi-rs/wasm-runtime': 1.2.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3) + '@napi-rs/wasm-runtime': 1.2.3(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3) transitivePeerDependencies: - '@emnapi/core' - '@emnapi/runtime' optional: true - '@astrojs/compiler-binding-win32-arm64-msvc@0.3.2': {} - '@astrojs/compiler-binding-win32-arm64-msvc@0.4.0': optional: true - '@astrojs/compiler-binding-win32-x64-msvc@0.3.2': {} - '@astrojs/compiler-binding-win32-x64-msvc@0.4.0': optional: true - '@astrojs/compiler-binding@0.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)': - optionalDependencies: - '@astrojs/compiler-binding-darwin-arm64': 0.3.2 - '@astrojs/compiler-binding-darwin-x64': 0.3.2 - '@astrojs/compiler-binding-linux-arm64-gnu': 0.3.2 - '@astrojs/compiler-binding-linux-arm64-musl': 0.3.2 - '@astrojs/compiler-binding-linux-x64-gnu': 0.3.2 - '@astrojs/compiler-binding-linux-x64-musl': 0.3.2 - '@astrojs/compiler-binding-wasm32-wasi': 0.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3) - '@astrojs/compiler-binding-win32-arm64-msvc': 0.3.2 - '@astrojs/compiler-binding-win32-x64-msvc': 0.3.2 - transitivePeerDependencies: - - '@emnapi/core' - - '@emnapi/runtime' - '@astrojs/compiler-binding@0.4.0(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)': optionalDependencies: '@astrojs/compiler-binding-darwin-arm64': 0.4.0 @@ -3336,13 +2764,6 @@ snapshots: - '@emnapi/core' - '@emnapi/runtime' - '@astrojs/compiler-rs@0.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)': - dependencies: - '@astrojs/compiler-binding': 0.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3) - transitivePeerDependencies: - - '@emnapi/core' - - '@emnapi/runtime' - '@astrojs/compiler-rs@0.4.0(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)': dependencies: '@astrojs/compiler-binding': 0.4.0(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3) @@ -3352,28 +2773,6 @@ snapshots: '@astrojs/compiler@2.13.1': {} - '@astrojs/internal-helpers@0.10.2': - dependencies: - '@types/hast': 3.0.5 - '@types/mdast': 4.0.4 - js-yaml: 4.3.1 - picomatch: 4.0.5 - retext-smartypants: 6.2.0 - shiki: 4.4.2 - smol-toml: 1.7.1 - unified: 11.0.5 - - '@astrojs/internal-helpers@0.10.3': - dependencies: - '@types/hast': 3.0.5 - '@types/mdast': 4.0.4 - js-yaml: 4.3.1 - picomatch: 4.0.5 - retext-smartypants: 6.2.0 - shiki: 4.4.2 - smol-toml: 1.7.1 - unified: 11.0.5 - '@astrojs/internal-helpers@0.11.0': dependencies: '@types/hast': 3.0.5 @@ -3389,7 +2788,7 @@ snapshots: dependencies: '@astrojs/compiler': 2.13.1 '@astrojs/yaml2ts': 0.2.4 - '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/sourcemap-codec': 1.6.0 '@volar/kit': 2.4.28(typescript@6.0.3) '@volar/language-core': 2.4.28 '@volar/language-server': 2.4.28(typescript@6.0.3) @@ -3410,64 +2809,19 @@ snapshots: transitivePeerDependencies: - typescript - '@astrojs/markdown-remark@7.2.2(supports-color@7.2.0)': - dependencies: - '@astrojs/internal-helpers': 0.10.2 - '@astrojs/prism': 4.0.2 - github-slugger: 2.0.0 - hast-util-from-html: 2.0.3 - hast-util-to-text: 4.0.2 - mdast-util-definitions: 6.0.0 - rehype-raw: 7.0.0 - rehype-stringify: 10.0.1 - remark-gfm: 4.0.1(supports-color@7.2.0) - remark-parse: 11.0.0(supports-color@7.2.0) - remark-rehype: 11.1.2 - remark-smartypants: 3.0.3 - unified: 11.0.5 - unist-util-remove-position: 5.0.0 - unist-util-visit: 5.1.0 - unist-util-visit-parents: 6.0.2 - vfile: 6.0.3 - transitivePeerDependencies: - - supports-color - - '@astrojs/markdown-satteri@0.3.6': - dependencies: - '@astrojs/internal-helpers': 0.10.3 - '@astrojs/prism': 4.0.2 - github-slugger: 2.0.0 - hast-util-from-html: 2.0.3 - satteri: 0.9.5 - - '@astrojs/markdown-satteri@0.4.0': + '@astrojs/markdown-satteri@0.4.1': dependencies: '@astrojs/internal-helpers': 0.11.0 '@astrojs/prism': 4.0.2 github-slugger: 2.0.0 satteri: 0.10.5 - '@astrojs/mdx@7.0.5(@astrojs/markdown-satteri@0.3.6)(astro@7.2.10(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(supports-color@7.2.0)': + '@astrojs/mdx@8.0.1(@astrojs/markdown-satteri@0.4.1)(astro@7.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))': dependencies: - '@astrojs/internal-helpers': 0.10.2 - '@astrojs/markdown-remark': 7.2.2(supports-color@7.2.0) - '@mdx-js/mdx': 3.1.1(supports-color@7.2.0) - acorn: 8.18.0 - astro: 7.2.10(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0) + '@astrojs/internal-helpers': 0.11.0 + '@astrojs/markdown-satteri': 0.4.1 + astro: 7.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0) es-module-lexer: 2.3.1 - estree-util-visit: 2.0.0 - hast-util-to-html: 9.0.5 - piccolore: 0.1.3 - rehype-raw: 7.0.0 - remark-gfm: 4.0.1(supports-color@7.2.0) - remark-smartypants: 3.0.3 - source-map: 0.7.6 - unist-util-visit: 5.1.0 - vfile: 6.0.3 - optionalDependencies: - '@astrojs/markdown-satteri': 0.3.6 - transitivePeerDependencies: - - supports-color '@astrojs/prism@4.0.2': dependencies: @@ -3477,13 +2831,14 @@ snapshots: dependencies: sitemap: 9.0.1 stream-replace-string: 2.0.0 - zod: 4.4.3 + zod: 4.6.5 - '@astrojs/starlight-docsearch@0.7.0(@algolia/client-search@5.56.0)(@astrojs/starlight@0.41.11(astro@7.2.10(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(supports-color@7.2.0)(typescript@6.0.3))(search-insights@2.17.3)': + '@astrojs/starlight-docsearch@0.8.0(@algolia/client-search@5.56.0)(@astrojs/starlight@0.42.0(astro@7.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(supports-color@7.2.0)(typescript@6.0.3))(astro@7.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(search-insights@2.17.3)': dependencies: - '@astrojs/starlight': 0.41.11(astro@7.2.10(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(supports-color@7.2.0)(typescript@6.0.3) + '@astrojs/starlight': 0.42.0(astro@7.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(supports-color@7.2.0)(typescript@6.0.3) '@docsearch/css': 3.9.0 '@docsearch/js': 3.9.0(@algolia/client-search@5.56.0)(search-insights@2.17.3) + astro: 7.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0) transitivePeerDependencies: - '@algolia/client-search' - '@types/react' @@ -3492,34 +2847,33 @@ snapshots: - react-dom - search-insights - '@astrojs/starlight@0.41.11(astro@7.2.10(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(supports-color@7.2.0)(typescript@6.0.3)': + '@astrojs/starlight@0.42.0(astro@7.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(supports-color@7.2.0)(typescript@6.0.3)': dependencies: - '@astrojs/markdown-satteri': 0.3.6 - '@astrojs/mdx': 7.0.5(@astrojs/markdown-satteri@0.3.6)(astro@7.2.10(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(supports-color@7.2.0) + '@astrojs/markdown-satteri': 0.4.1 + '@astrojs/mdx': 8.0.1(@astrojs/markdown-satteri@0.4.1)(astro@7.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0)) '@astrojs/sitemap': 3.7.3 '@pagefind/default-ui': 1.5.2 '@types/hast': 3.0.5 '@types/js-yaml': 4.0.9 '@types/mdast': 4.0.4 - astro: 7.2.10(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0) - astro-expressive-code: 0.44.1(astro@7.2.10(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0)) + astro: 7.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0) + astro-expressive-code: 0.44.1(astro@7.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0)) bcp-47: 2.1.1 - hast-util-from-html: 2.0.3 + hast-util-format: 1.1.0 hast-util-select: 6.0.4 + hast-util-to-html: 9.0.5 hast-util-to-string: 3.0.1 hastscript: 9.0.1 i18next: 26.3.6(typescript@6.0.3) js-yaml: 4.3.1 klona: 2.0.6 - magic-string: 0.30.21 + magic-string: 1.3.1 mdast-util-directive: 3.1.0(supports-color@7.2.0) mdast-util-to-markdown: 2.1.2 mdast-util-to-string: 4.0.0 pagefind: 1.5.2 - rehype: 13.0.2 - rehype-format: 5.0.1 remark-directive: 4.0.0(supports-color@7.2.0) - satteri: 0.9.5 + satteri: 0.10.5 ultrahtml: 1.7.0 unified: 11.0.5 unist-util-visit: 5.1.0 @@ -3563,39 +2917,21 @@ snapshots: '@bruits/satteri-darwin-arm64@0.10.5': optional: true - '@bruits/satteri-darwin-arm64@0.9.5': - optional: true - '@bruits/satteri-darwin-x64@0.10.5': optional: true - '@bruits/satteri-darwin-x64@0.9.5': - optional: true - '@bruits/satteri-linux-arm64-gnu@0.10.5': optional: true - '@bruits/satteri-linux-arm64-gnu@0.9.5': - optional: true - '@bruits/satteri-linux-arm64-musl@0.10.5': optional: true - '@bruits/satteri-linux-arm64-musl@0.9.5': - optional: true - '@bruits/satteri-linux-x64-gnu@0.10.5': optional: true - '@bruits/satteri-linux-x64-gnu@0.9.5': - optional: true - '@bruits/satteri-linux-x64-musl@0.10.5': optional: true - '@bruits/satteri-linux-x64-musl@0.9.5': - optional: true - '@bruits/satteri-wasm32-wasi@0.10.5': dependencies: '@emnapi/core': 1.11.1 @@ -3603,25 +2939,12 @@ snapshots: '@napi-rs/wasm-runtime': 1.2.3(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) optional: true - '@bruits/satteri-wasm32-wasi@0.9.5': - dependencies: - '@emnapi/core': 1.11.1 - '@emnapi/runtime': 1.11.1 - '@napi-rs/wasm-runtime': 1.2.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) - optional: true - '@bruits/satteri-win32-arm64-msvc@0.10.5': optional: true - '@bruits/satteri-win32-arm64-msvc@0.9.5': - optional: true - '@bruits/satteri-win32-x64-msvc@0.10.5': optional: true - '@bruits/satteri-win32-x64-msvc@0.9.5': - optional: true - '@capsizecss/unpack@4.0.1': dependencies: fontkitten: 1.0.3 @@ -3816,233 +3139,111 @@ snapshots: '@img/colour@1.1.0': {} - '@img/sharp-darwin-arm64@0.35.3': - optionalDependencies: - '@img/sharp-libvips-darwin-arm64': 1.3.2 - '@img/sharp-darwin-arm64@0.35.4': optionalDependencies: '@img/sharp-libvips-darwin-arm64': 1.3.3 optional: true - '@img/sharp-darwin-x64@0.35.3': - optionalDependencies: - '@img/sharp-libvips-darwin-x64': 1.3.2 - '@img/sharp-darwin-x64@0.35.4': optionalDependencies: '@img/sharp-libvips-darwin-x64': 1.3.3 optional: true - '@img/sharp-freebsd-wasm32@0.35.3': - dependencies: - '@img/sharp-wasm32': 0.35.3 - '@img/sharp-freebsd-wasm32@0.35.4': dependencies: '@img/sharp-wasm32': 0.35.4 optional: true - '@img/sharp-libvips-darwin-arm64@1.3.2': {} - '@img/sharp-libvips-darwin-arm64@1.3.3': optional: true - '@img/sharp-libvips-darwin-x64@1.3.2': {} - '@img/sharp-libvips-darwin-x64@1.3.3': optional: true - '@img/sharp-libvips-linux-arm64@1.3.2': {} - '@img/sharp-libvips-linux-arm64@1.3.3': optional: true - '@img/sharp-libvips-linux-arm@1.3.2': {} - '@img/sharp-libvips-linux-arm@1.3.3': optional: true - '@img/sharp-libvips-linux-ppc64@1.3.2': {} - '@img/sharp-libvips-linux-ppc64@1.3.3': optional: true - '@img/sharp-libvips-linux-riscv64@1.3.2': {} - '@img/sharp-libvips-linux-riscv64@1.3.3': optional: true - '@img/sharp-libvips-linux-s390x@1.3.2': {} - '@img/sharp-libvips-linux-s390x@1.3.3': optional: true - '@img/sharp-libvips-linux-x64@1.3.2': {} - '@img/sharp-libvips-linux-x64@1.3.3': optional: true - '@img/sharp-libvips-linuxmusl-arm64@1.3.2': {} - '@img/sharp-libvips-linuxmusl-arm64@1.3.3': optional: true - '@img/sharp-libvips-linuxmusl-x64@1.3.2': {} - '@img/sharp-libvips-linuxmusl-x64@1.3.3': optional: true - '@img/sharp-linux-arm64@0.35.3': - optionalDependencies: - '@img/sharp-libvips-linux-arm64': 1.3.2 - '@img/sharp-linux-arm64@0.35.4': optionalDependencies: '@img/sharp-libvips-linux-arm64': 1.3.3 optional: true - '@img/sharp-linux-arm@0.35.3': - optionalDependencies: - '@img/sharp-libvips-linux-arm': 1.3.2 - '@img/sharp-linux-arm@0.35.4': optionalDependencies: '@img/sharp-libvips-linux-arm': 1.3.3 optional: true - '@img/sharp-linux-ppc64@0.35.3': - optionalDependencies: - '@img/sharp-libvips-linux-ppc64': 1.3.2 - '@img/sharp-linux-ppc64@0.35.4': optionalDependencies: '@img/sharp-libvips-linux-ppc64': 1.3.3 optional: true - '@img/sharp-linux-riscv64@0.35.3': - optionalDependencies: - '@img/sharp-libvips-linux-riscv64': 1.3.2 - '@img/sharp-linux-riscv64@0.35.4': optionalDependencies: '@img/sharp-libvips-linux-riscv64': 1.3.3 optional: true - '@img/sharp-linux-s390x@0.35.3': - optionalDependencies: - '@img/sharp-libvips-linux-s390x': 1.3.2 - '@img/sharp-linux-s390x@0.35.4': optionalDependencies: '@img/sharp-libvips-linux-s390x': 1.3.3 optional: true - '@img/sharp-linux-x64@0.35.3': - optionalDependencies: - '@img/sharp-libvips-linux-x64': 1.3.2 - '@img/sharp-linux-x64@0.35.4': optionalDependencies: '@img/sharp-libvips-linux-x64': 1.3.3 optional: true - '@img/sharp-linuxmusl-arm64@0.35.3': - optionalDependencies: - '@img/sharp-libvips-linuxmusl-arm64': 1.3.2 - '@img/sharp-linuxmusl-arm64@0.35.4': optionalDependencies: '@img/sharp-libvips-linuxmusl-arm64': 1.3.3 optional: true - '@img/sharp-linuxmusl-x64@0.35.3': - optionalDependencies: - '@img/sharp-libvips-linuxmusl-x64': 1.3.2 - '@img/sharp-linuxmusl-x64@0.35.4': optionalDependencies: '@img/sharp-libvips-linuxmusl-x64': 1.3.3 optional: true - '@img/sharp-wasm32@0.35.3': - dependencies: - '@emnapi/runtime': 1.11.3 - '@img/sharp-wasm32@0.35.4': dependencies: '@emnapi/runtime': 1.11.3 optional: true - '@img/sharp-webcontainers-wasm32@0.35.3': - dependencies: - '@img/sharp-wasm32': 0.35.3 - '@img/sharp-webcontainers-wasm32@0.35.4': dependencies: '@img/sharp-wasm32': 0.35.4 optional: true - '@img/sharp-win32-arm64@0.35.3': {} - '@img/sharp-win32-arm64@0.35.4': optional: true - '@img/sharp-win32-ia32@0.35.3': {} - '@img/sharp-win32-ia32@0.35.4': optional: true - '@img/sharp-win32-x64@0.35.3': {} - '@img/sharp-win32-x64@0.35.4': optional: true - '@jridgewell/sourcemap-codec@1.5.5': {} - - '@mdx-js/mdx@3.1.1(supports-color@7.2.0)': - dependencies: - '@types/estree': 1.0.9 - '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.5 - '@types/mdx': 2.0.14 - acorn: 8.18.0 - collapse-white-space: 2.1.0 - devlop: 1.1.0 - estree-util-is-identifier-name: 3.0.0 - estree-util-scope: 1.0.0 - estree-walker: 3.0.3 - hast-util-to-jsx-runtime: 2.3.6(supports-color@7.2.0) - markdown-extensions: 2.0.0 - recma-build-jsx: 1.0.0 - recma-jsx: 1.0.1(acorn@8.18.0) - recma-stringify: 1.0.0 - rehype-recma: 1.0.0(supports-color@7.2.0) - remark-mdx: 3.1.1(supports-color@7.2.0) - remark-parse: 11.0.0(supports-color@7.2.0) - remark-rehype: 11.1.2 - source-map: 0.7.6 - unified: 11.0.5 - unist-util-position-from-estree: 2.0.0 - unist-util-stringify-position: 4.0.0 - unist-util-visit: 5.1.0 - vfile: 6.0.3 - transitivePeerDependencies: - - supports-color - - '@napi-rs/wasm-runtime@1.2.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)': - dependencies: - '@emnapi/core': 1.11.1 - '@emnapi/runtime': 1.11.1 - '@tybys/wasm-util': 0.10.3 - optional: true - - '@napi-rs/wasm-runtime@1.2.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)': - dependencies: - '@emnapi/core': 1.11.1 - '@emnapi/runtime': 1.11.3 - '@tybys/wasm-util': 0.10.3 - optional: true + '@jridgewell/sourcemap-codec@1.6.0': {} '@napi-rs/wasm-runtime@1.2.3(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)': dependencies: @@ -4051,6 +3252,13 @@ snapshots: '@tybys/wasm-util': 0.10.3 optional: true + '@napi-rs/wasm-runtime@1.2.3(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)': + dependencies: + '@emnapi/core': 1.11.1 + '@emnapi/runtime': 1.11.3 + '@tybys/wasm-util': 0.10.3 + optional: true + '@oslojs/encoding@1.1.0': {} '@oxc-project/types@0.143.0': {} @@ -4211,8 +3419,6 @@ snapshots: dependencies: '@types/unist': 3.0.3 - '@types/mdx@2.0.14': {} - '@types/ms@2.1.0': {} '@types/nlcst@2.0.3': @@ -4289,12 +3495,6 @@ snapshots: '@vscode/l10n@0.0.18': {} - acorn-jsx@5.3.2(acorn@8.18.0): - dependencies: - acorn: 8.18.0 - - acorn@8.18.0: {} - ajv-draft-04@1.0.0(ajv@8.20.0): optionalDependencies: ajv: 8.20.0 @@ -4352,21 +3552,17 @@ snapshots: aria-query@5.3.2: {} - array-iterate@2.0.1: {} - - astring@1.9.0: {} - - astro-expressive-code@0.44.1(astro@7.2.10(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0)): + astro-expressive-code@0.44.1(astro@7.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0)): dependencies: - astro: 7.2.10(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0) + astro: 7.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0) rehype-expressive-code: 0.44.1 url-extras: 0.1.0 - astro@7.2.10(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0): + astro@7.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0): dependencies: '@astrojs/compiler-rs': 0.4.0(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3) '@astrojs/internal-helpers': 0.11.0 - '@astrojs/markdown-satteri': 0.4.0 + '@astrojs/markdown-satteri': 0.4.1 '@astrojs/telemetry': 3.3.3 '@capsizecss/unpack': 4.0.1 '@clack/prompts': 1.7.0 @@ -4392,7 +3588,7 @@ snapshots: http-cache-semantics: 4.2.0 js-yaml: 4.3.1 jsonc-parser: 3.3.1 - magic-string: 1.1.0 + magic-string: 1.3.1 magicast: 0.5.4 mrmime: 2.0.1 neotraverse: 1.0.1 @@ -4416,7 +3612,7 @@ snapshots: vitefu: 1.1.3(vite@8.2.1(@types/node@24.13.3)(esbuild@0.28.2)(yaml@2.9.0)) xxhash-wasm: 1.1.0 yargs-parser: 22.0.0 - zod: 4.4.3 + zod: 4.6.5 optionalDependencies: sharp: 0.35.4(@types/node@24.13.3) transitivePeerDependencies: @@ -4453,97 +3649,6 @@ snapshots: - uploadthing - yaml - astro@7.2.3(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0): - dependencies: - '@astrojs/compiler-rs': 0.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3) - '@astrojs/internal-helpers': 0.10.3 - '@astrojs/markdown-satteri': 0.3.6 - '@astrojs/telemetry': 3.3.3 - '@capsizecss/unpack': 4.0.1 - '@clack/prompts': 1.7.0 - '@oslojs/encoding': 1.1.0 - am-i-vibing: 0.4.0 - aria-query: 5.3.2 - axobject-query: 4.1.0 - ci-info: 4.4.0 - clsx: 2.1.1 - common-ancestor-path: 2.0.0 - cookie: 2.0.1 - devalue: 5.9.0 - diff: 8.0.4 - dset: 3.1.4 - es-module-lexer: 2.3.1 - esbuild: 0.28.2 - find-process: 2.1.1 - flattie: 1.1.1 - fontace: 0.4.1 - get-tsconfig: 5.0.0-beta.4 - github-slugger: 2.0.0 - html-escaper: 3.0.3 - http-cache-semantics: 4.2.0 - js-yaml: 4.3.1 - jsonc-parser: 3.3.1 - magic-string: 1.1.0 - magicast: 0.5.4 - mrmime: 2.0.1 - neotraverse: 1.0.1 - obug: 2.1.4 - p-limit: 7.3.1 - p-queue: 9.3.3 - package-manager-detector: 1.8.0 - piccolore: 0.1.3 - picomatch: 4.0.5 - semver: 7.8.5 - shiki: 4.4.2 - smol-toml: 1.7.1 - svgo: 4.0.2 - tinyclip: 0.1.15 - tinyexec: 1.3.0 - tinyglobby: 0.2.17 - ultrahtml: 1.7.0 - unifont: 0.7.5 - unstorage: 1.17.5 - vite: 8.2.1(@types/node@24.13.3)(esbuild@0.28.2)(yaml@2.9.0) - vitefu: 1.1.3(vite@8.2.1(@types/node@24.13.3)(esbuild@0.28.2)(yaml@2.9.0)) - xxhash-wasm: 1.1.0 - yargs-parser: 22.0.0 - zod: 4.4.3 - optionalDependencies: - sharp: 0.35.3(@types/node@24.13.3) - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@deno/kv' - - '@emnapi/core' - - '@emnapi/runtime' - - '@netlify/blobs' - - '@planetscale/database' - - '@types/node' - - '@upstash/redis' - - '@vercel/blob' - - '@vercel/functions' - - '@vercel/kv' - - '@vitejs/devtools' - - aws4fetch - - db0 - - idb-keyval - - ioredis - - jiti - - less - - sass - - sass-embedded - - stylus - - sugarss - - terser - - tsx - - uploadthing - - yaml - asynckit@0.4.0: {} axobject-query@4.1.0: {} @@ -4604,8 +3709,6 @@ snapshots: clsx@2.1.1: {} - collapse-white-space@2.1.0: {} - color-convert@2.0.1: dependencies: color-name: 1.1.4 @@ -4620,8 +3723,6 @@ snapshots: commander@11.1.0: {} - commander@14.0.3: {} - common-ancestor-path@2.0.0: {} cookie-es@1.2.3: {} @@ -4686,8 +3787,6 @@ snapshots: dependencies: dequal: 2.0.3 - diff@8.0.4: {} - diff@9.0.0: {} direction@2.0.1: {} @@ -4731,8 +3830,6 @@ snapshots: entities@4.5.0: {} - entities@6.0.1: {} - es-define-property@1.0.1: {} es-errors@1.3.0: {} @@ -4750,20 +3847,6 @@ snapshots: has-tostringtag: 1.0.2 hasown: 2.0.4 - esast-util-from-estree@2.0.0: - dependencies: - '@types/estree-jsx': 1.0.5 - devlop: 1.1.0 - estree-util-visit: 2.0.0 - unist-util-position-from-estree: 2.0.0 - - esast-util-from-js@2.0.1: - dependencies: - '@types/estree-jsx': 1.0.5 - acorn: 8.18.0 - esast-util-from-estree: 2.0.0 - vfile-message: 4.0.3 - esbuild@0.28.2: optionalDependencies: '@esbuild/aix-ppc64': 0.28.2 @@ -4795,41 +3878,6 @@ snapshots: escalade@3.2.0: {} - escape-string-regexp@5.0.0: {} - - estree-util-attach-comments@3.0.0: - dependencies: - '@types/estree': 1.0.9 - - estree-util-build-jsx@3.0.1: - dependencies: - '@types/estree-jsx': 1.0.5 - devlop: 1.1.0 - estree-util-is-identifier-name: 3.0.0 - estree-walker: 3.0.3 - - estree-util-is-identifier-name@3.0.0: {} - - estree-util-scope@1.0.0: - dependencies: - '@types/estree': 1.0.9 - devlop: 1.1.0 - - estree-util-to-js@2.0.0: - dependencies: - '@types/estree-jsx': 1.0.5 - astring: 1.9.0 - source-map: 0.7.6 - - estree-util-visit@2.0.0: - dependencies: - '@types/estree-jsx': 1.0.5 - '@types/unist': 3.0.3 - - estree-walker@3.0.3: - dependencies: - '@types/estree': 1.0.9 - event-stream@4.0.1: dependencies: duplexer: 0.1.2 @@ -4871,12 +3919,6 @@ snapshots: find-proc@0.1.0: {} - find-process@2.1.1: - dependencies: - chalk: 4.1.2 - commander: 14.0.3 - loglevel: 1.9.2 - flattie@1.1.1: {} fontace@0.4.1: @@ -4975,26 +4017,6 @@ snapshots: html-whitespace-sensitive-tag-names: 3.0.1 unist-util-visit-parents: 6.0.2 - hast-util-from-html@2.0.3: - dependencies: - '@types/hast': 3.0.5 - devlop: 1.1.0 - hast-util-from-parse5: 8.0.3 - parse5: 7.3.0 - vfile: 6.0.3 - vfile-message: 4.0.3 - - hast-util-from-parse5@8.0.3: - dependencies: - '@types/hast': 3.0.5 - '@types/unist': 3.0.3 - devlop: 1.1.0 - hastscript: 9.0.1 - property-information: 7.2.0 - vfile: 6.0.3 - vfile-location: 5.0.3 - web-namespaces: 2.0.1 - hast-util-has-property@3.0.0: dependencies: '@types/hast': 3.0.5 @@ -5027,22 +4049,6 @@ snapshots: hast-util-is-body-ok-link: 3.0.1 hast-util-is-element: 3.0.0 - hast-util-raw@9.1.0: - dependencies: - '@types/hast': 3.0.5 - '@types/unist': 3.0.3 - '@ungap/structured-clone': 1.3.3 - hast-util-from-parse5: 8.0.3 - hast-util-to-parse5: 8.0.1 - html-void-elements: 3.0.0 - mdast-util-to-hast: 13.2.1 - parse5: 7.3.0 - unist-util-position: 5.0.0 - unist-util-visit: 5.1.0 - vfile: 6.0.3 - web-namespaces: 2.0.1 - zwitch: 2.0.4 - hast-util-select@6.0.4: dependencies: '@types/hast': 3.0.5 @@ -5061,27 +4067,6 @@ snapshots: unist-util-visit: 5.1.0 zwitch: 2.0.4 - hast-util-to-estree@3.1.3(supports-color@7.2.0): - dependencies: - '@types/estree': 1.0.9 - '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.5 - comma-separated-tokens: 2.0.3 - devlop: 1.1.0 - estree-util-attach-comments: 3.0.0 - estree-util-is-identifier-name: 3.0.0 - hast-util-whitespace: 3.0.0 - mdast-util-mdx-expression: 2.0.1(supports-color@7.2.0) - mdast-util-mdx-jsx: 3.2.0(supports-color@7.2.0) - mdast-util-mdxjs-esm: 2.0.1(supports-color@7.2.0) - property-information: 7.2.0 - space-separated-tokens: 2.0.2 - style-to-js: 1.1.21 - unist-util-position: 5.0.0 - zwitch: 2.0.4 - transitivePeerDependencies: - - supports-color - hast-util-to-html@9.0.5: dependencies: '@types/hast': 3.0.5 @@ -5096,36 +4081,6 @@ snapshots: stringify-entities: 4.0.4 zwitch: 2.0.4 - hast-util-to-jsx-runtime@2.3.6(supports-color@7.2.0): - dependencies: - '@types/estree': 1.0.9 - '@types/hast': 3.0.5 - '@types/unist': 3.0.3 - comma-separated-tokens: 2.0.3 - devlop: 1.1.0 - estree-util-is-identifier-name: 3.0.0 - hast-util-whitespace: 3.0.0 - mdast-util-mdx-expression: 2.0.1(supports-color@7.2.0) - mdast-util-mdx-jsx: 3.2.0(supports-color@7.2.0) - mdast-util-mdxjs-esm: 2.0.1(supports-color@7.2.0) - property-information: 7.2.0 - space-separated-tokens: 2.0.2 - style-to-js: 1.1.21 - unist-util-position: 5.0.0 - vfile-message: 4.0.3 - transitivePeerDependencies: - - supports-color - - hast-util-to-parse5@8.0.1: - dependencies: - '@types/hast': 3.0.5 - comma-separated-tokens: 2.0.3 - devlop: 1.1.0 - property-information: 7.2.0 - space-separated-tokens: 2.0.2 - web-namespaces: 2.0.1 - zwitch: 2.0.4 - hast-util-to-string@3.0.1: dependencies: '@types/hast': 3.0.5 @@ -5170,8 +4125,6 @@ snapshots: optionalDependencies: typescript: 6.0.3 - inline-style-parser@0.2.7: {} - iron-webcrypto@1.2.1: {} is-alphabetical@2.0.1: {} @@ -5264,19 +4217,13 @@ snapshots: lightningcss-win32-arm64-msvc: 1.33.0 lightningcss-win32-x64-msvc: 1.33.0 - loglevel@1.9.2: {} - longest-streak@3.1.0: {} lru-cache@11.5.2: {} - magic-string@0.30.21: + magic-string@1.3.1: dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 - - magic-string@1.1.0: - dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/sourcemap-codec': 1.6.0 magicast@0.5.4: dependencies: @@ -5286,18 +4233,8 @@ snapshots: map-stream@0.0.7: {} - markdown-extensions@2.0.0: {} - - markdown-table@3.0.4: {} - math-intrinsics@1.1.0: {} - mdast-util-definitions@6.0.0: - dependencies: - '@types/mdast': 4.0.4 - '@types/unist': 3.0.3 - unist-util-visit: 5.1.0 - mdast-util-directive@3.1.0(supports-color@7.2.0): dependencies: '@types/mdast': 4.0.4 @@ -5312,13 +4249,6 @@ snapshots: transitivePeerDependencies: - supports-color - mdast-util-find-and-replace@3.0.2: - dependencies: - '@types/mdast': 4.0.4 - escape-string-regexp: 5.0.0 - unist-util-is: 6.0.1 - unist-util-visit-parents: 6.0.2 - mdast-util-from-markdown@2.0.3(supports-color@7.2.0): dependencies: '@types/mdast': 4.0.4 @@ -5336,112 +4266,6 @@ snapshots: transitivePeerDependencies: - supports-color - mdast-util-gfm-autolink-literal@2.0.1: - dependencies: - '@types/mdast': 4.0.4 - ccount: 2.0.1 - devlop: 1.1.0 - mdast-util-find-and-replace: 3.0.2 - micromark-util-character: 2.1.1 - - mdast-util-gfm-footnote@2.1.0(supports-color@7.2.0): - dependencies: - '@types/mdast': 4.0.4 - devlop: 1.1.0 - mdast-util-from-markdown: 2.0.3(supports-color@7.2.0) - mdast-util-to-markdown: 2.1.2 - micromark-util-normalize-identifier: 2.0.1 - transitivePeerDependencies: - - supports-color - - mdast-util-gfm-strikethrough@2.0.0(supports-color@7.2.0): - dependencies: - '@types/mdast': 4.0.4 - mdast-util-from-markdown: 2.0.3(supports-color@7.2.0) - mdast-util-to-markdown: 2.1.2 - transitivePeerDependencies: - - supports-color - - mdast-util-gfm-table@2.0.0(supports-color@7.2.0): - dependencies: - '@types/mdast': 4.0.4 - devlop: 1.1.0 - markdown-table: 3.0.4 - mdast-util-from-markdown: 2.0.3(supports-color@7.2.0) - mdast-util-to-markdown: 2.1.2 - transitivePeerDependencies: - - supports-color - - mdast-util-gfm-task-list-item@2.0.0(supports-color@7.2.0): - dependencies: - '@types/mdast': 4.0.4 - devlop: 1.1.0 - mdast-util-from-markdown: 2.0.3(supports-color@7.2.0) - mdast-util-to-markdown: 2.1.2 - transitivePeerDependencies: - - supports-color - - mdast-util-gfm@3.1.0(supports-color@7.2.0): - dependencies: - mdast-util-from-markdown: 2.0.3(supports-color@7.2.0) - mdast-util-gfm-autolink-literal: 2.0.1 - mdast-util-gfm-footnote: 2.1.0(supports-color@7.2.0) - mdast-util-gfm-strikethrough: 2.0.0(supports-color@7.2.0) - mdast-util-gfm-table: 2.0.0(supports-color@7.2.0) - mdast-util-gfm-task-list-item: 2.0.0(supports-color@7.2.0) - mdast-util-to-markdown: 2.1.2 - transitivePeerDependencies: - - supports-color - - mdast-util-mdx-expression@2.0.1(supports-color@7.2.0): - dependencies: - '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.5 - '@types/mdast': 4.0.4 - devlop: 1.1.0 - mdast-util-from-markdown: 2.0.3(supports-color@7.2.0) - mdast-util-to-markdown: 2.1.2 - transitivePeerDependencies: - - supports-color - - mdast-util-mdx-jsx@3.2.0(supports-color@7.2.0): - dependencies: - '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.5 - '@types/mdast': 4.0.4 - '@types/unist': 3.0.3 - ccount: 2.0.1 - devlop: 1.1.0 - mdast-util-from-markdown: 2.0.3(supports-color@7.2.0) - mdast-util-to-markdown: 2.1.2 - parse-entities: 4.0.2 - stringify-entities: 4.0.4 - unist-util-stringify-position: 4.0.0 - vfile-message: 4.0.3 - transitivePeerDependencies: - - supports-color - - mdast-util-mdx@3.0.0(supports-color@7.2.0): - dependencies: - mdast-util-from-markdown: 2.0.3(supports-color@7.2.0) - mdast-util-mdx-expression: 2.0.1(supports-color@7.2.0) - mdast-util-mdx-jsx: 3.2.0(supports-color@7.2.0) - mdast-util-mdxjs-esm: 2.0.1(supports-color@7.2.0) - mdast-util-to-markdown: 2.1.2 - transitivePeerDependencies: - - supports-color - - mdast-util-mdxjs-esm@2.0.1(supports-color@7.2.0): - dependencies: - '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.5 - '@types/mdast': 4.0.4 - devlop: 1.1.0 - mdast-util-from-markdown: 2.0.3(supports-color@7.2.0) - mdast-util-to-markdown: 2.1.2 - transitivePeerDependencies: - - supports-color - mdast-util-phrasing@4.1.0: dependencies: '@types/mdast': 4.0.4 @@ -5508,115 +4332,6 @@ snapshots: micromark-util-types: 2.0.2 parse-entities: 4.0.2 - micromark-extension-gfm-autolink-literal@2.1.0: - dependencies: - micromark-util-character: 2.1.1 - micromark-util-sanitize-uri: 2.0.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-extension-gfm-footnote@2.1.0: - dependencies: - devlop: 1.1.0 - micromark-core-commonmark: 2.0.3 - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-normalize-identifier: 2.0.1 - micromark-util-sanitize-uri: 2.0.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-extension-gfm-strikethrough@2.1.0: - dependencies: - devlop: 1.1.0 - micromark-util-chunked: 2.0.1 - micromark-util-classify-character: 2.0.1 - micromark-util-resolve-all: 2.0.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-extension-gfm-table@2.1.1: - dependencies: - devlop: 1.1.0 - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-extension-gfm-tagfilter@2.0.0: - dependencies: - micromark-util-types: 2.0.2 - - micromark-extension-gfm-task-list-item@2.1.0: - dependencies: - devlop: 1.1.0 - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-extension-gfm@3.0.0: - dependencies: - micromark-extension-gfm-autolink-literal: 2.1.0 - micromark-extension-gfm-footnote: 2.1.0 - micromark-extension-gfm-strikethrough: 2.1.0 - micromark-extension-gfm-table: 2.1.1 - micromark-extension-gfm-tagfilter: 2.0.0 - micromark-extension-gfm-task-list-item: 2.1.0 - micromark-util-combine-extensions: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-extension-mdx-expression@3.0.1: - dependencies: - '@types/estree': 1.0.9 - devlop: 1.1.0 - micromark-factory-mdx-expression: 2.0.3 - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-events-to-acorn: 2.0.3 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-extension-mdx-jsx@3.0.2: - dependencies: - '@types/estree': 1.0.9 - devlop: 1.1.0 - estree-util-is-identifier-name: 3.0.0 - micromark-factory-mdx-expression: 2.0.3 - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-events-to-acorn: 2.0.3 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - vfile-message: 4.0.3 - - micromark-extension-mdx-md@2.0.0: - dependencies: - micromark-util-types: 2.0.2 - - micromark-extension-mdxjs-esm@3.0.0: - dependencies: - '@types/estree': 1.0.9 - devlop: 1.1.0 - micromark-core-commonmark: 2.0.3 - micromark-util-character: 2.1.1 - micromark-util-events-to-acorn: 2.0.3 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - unist-util-position-from-estree: 2.0.0 - vfile-message: 4.0.3 - - micromark-extension-mdxjs@3.0.0: - dependencies: - acorn: 8.18.0 - acorn-jsx: 5.3.2(acorn@8.18.0) - micromark-extension-mdx-expression: 3.0.1 - micromark-extension-mdx-jsx: 3.0.2 - micromark-extension-mdx-md: 2.0.0 - micromark-extension-mdxjs-esm: 3.0.0 - micromark-util-combine-extensions: 2.0.1 - micromark-util-types: 2.0.2 - micromark-factory-destination@2.0.1: dependencies: micromark-util-character: 2.1.1 @@ -5630,18 +4345,6 @@ snapshots: micromark-util-symbol: 2.0.1 micromark-util-types: 2.0.2 - micromark-factory-mdx-expression@2.0.3: - dependencies: - '@types/estree': 1.0.9 - devlop: 1.1.0 - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-events-to-acorn: 2.0.3 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - unist-util-position-from-estree: 2.0.0 - vfile-message: 4.0.3 - micromark-factory-space@2.0.1: dependencies: micromark-util-character: 2.1.1 @@ -5694,16 +4397,6 @@ snapshots: micromark-util-encode@2.0.1: {} - micromark-util-events-to-acorn@2.0.3: - dependencies: - '@types/estree': 1.0.9 - '@types/unist': 3.0.3 - devlop: 1.1.0 - estree-util-visit: 2.0.0 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - vfile-message: 4.0.3 - micromark-util-html-tag-name@2.0.1: {} micromark-util-normalize-identifier@2.0.1: @@ -5836,19 +4529,6 @@ snapshots: is-decimal: 2.0.1 is-hexadecimal: 2.0.1 - parse-latin@7.0.0: - dependencies: - '@types/nlcst': 2.0.3 - '@types/unist': 3.0.3 - nlcst-to-string: 4.0.0 - unist-util-modify-children: 4.0.0 - unist-util-visit-children: 3.0.0 - vfile: 6.0.3 - - parse5@7.3.0: - dependencies: - entities: 6.0.1 - path-browserify@1.0.1: {} pause-stream@0.0.11: @@ -5895,35 +4575,6 @@ snapshots: readdirp@5.1.1: {} - recma-build-jsx@1.0.0: - dependencies: - '@types/estree': 1.0.9 - estree-util-build-jsx: 3.0.1 - vfile: 6.0.3 - - recma-jsx@1.0.1(acorn@8.18.0): - dependencies: - acorn: 8.18.0 - acorn-jsx: 5.3.2(acorn@8.18.0) - estree-util-to-js: 2.0.0 - recma-parse: 1.0.0 - recma-stringify: 1.0.0 - unified: 11.0.5 - - recma-parse@1.0.0: - dependencies: - '@types/estree': 1.0.9 - esast-util-from-js: 2.0.1 - unified: 11.0.5 - vfile: 6.0.3 - - recma-stringify@1.0.0: - dependencies: - '@types/estree': 1.0.9 - estree-util-to-js: 2.0.0 - unified: 11.0.5 - vfile: 6.0.3 - regex-recursion@6.0.2: dependencies: regex-utilities: 2.3.0 @@ -5938,44 +4589,6 @@ snapshots: dependencies: expressive-code: 0.44.1 - rehype-format@5.0.1: - dependencies: - '@types/hast': 3.0.5 - hast-util-format: 1.1.0 - - rehype-parse@9.0.1: - dependencies: - '@types/hast': 3.0.5 - hast-util-from-html: 2.0.3 - unified: 11.0.5 - - rehype-raw@7.0.0: - dependencies: - '@types/hast': 3.0.5 - hast-util-raw: 9.1.0 - vfile: 6.0.3 - - rehype-recma@1.0.0(supports-color@7.2.0): - dependencies: - '@types/estree': 1.0.9 - '@types/hast': 3.0.5 - hast-util-to-estree: 3.1.3(supports-color@7.2.0) - transitivePeerDependencies: - - supports-color - - rehype-stringify@10.0.1: - dependencies: - '@types/hast': 3.0.5 - hast-util-to-html: 9.0.5 - unified: 11.0.5 - - rehype@13.0.2: - dependencies: - '@types/hast': 3.0.5 - rehype-parse: 9.0.1 - rehype-stringify: 10.0.1 - unified: 11.0.5 - remark-directive@4.0.0(supports-color@7.2.0): dependencies: '@types/mdast': 4.0.4 @@ -5985,54 +4598,6 @@ snapshots: transitivePeerDependencies: - supports-color - remark-gfm@4.0.1(supports-color@7.2.0): - dependencies: - '@types/mdast': 4.0.4 - mdast-util-gfm: 3.1.0(supports-color@7.2.0) - micromark-extension-gfm: 3.0.0 - remark-parse: 11.0.0(supports-color@7.2.0) - remark-stringify: 11.0.0 - unified: 11.0.5 - transitivePeerDependencies: - - supports-color - - remark-mdx@3.1.1(supports-color@7.2.0): - dependencies: - mdast-util-mdx: 3.0.0(supports-color@7.2.0) - micromark-extension-mdxjs: 3.0.0 - transitivePeerDependencies: - - supports-color - - remark-parse@11.0.0(supports-color@7.2.0): - dependencies: - '@types/mdast': 4.0.4 - mdast-util-from-markdown: 2.0.3(supports-color@7.2.0) - micromark-util-types: 2.0.2 - unified: 11.0.5 - transitivePeerDependencies: - - supports-color - - remark-rehype@11.1.2: - dependencies: - '@types/hast': 3.0.5 - '@types/mdast': 4.0.4 - mdast-util-to-hast: 13.2.1 - unified: 11.0.5 - vfile: 6.0.3 - - remark-smartypants@3.0.3: - dependencies: - retext: 9.0.0 - retext-smartypants: 6.2.0 - unified: 11.0.5 - unist-util-visit: 5.1.0 - - remark-stringify@11.0.0: - dependencies: - '@types/mdast': 4.0.4 - mdast-util-to-markdown: 2.1.2 - unified: 11.0.5 - request-light@0.5.8: {} request-light@0.7.0: {} @@ -6043,31 +4608,12 @@ snapshots: resolve-pkg-maps@1.0.0: {} - retext-latin@4.0.0: - dependencies: - '@types/nlcst': 2.0.3 - parse-latin: 7.0.0 - unified: 11.0.5 - retext-smartypants@6.2.0: dependencies: '@types/nlcst': 2.0.3 nlcst-to-string: 4.0.0 unist-util-visit: 5.1.0 - retext-stringify@4.0.0: - dependencies: - '@types/nlcst': 2.0.3 - nlcst-to-string: 4.0.0 - unified: 11.0.5 - - retext@9.0.0: - dependencies: - '@types/nlcst': 2.0.3 - retext-latin: 4.0.0 - retext-stringify: 4.0.0 - unified: 11.0.5 - rolldown@1.2.3: dependencies: '@oxc-project/types': 0.143.0 @@ -6105,62 +4651,12 @@ snapshots: '@bruits/satteri-win32-arm64-msvc': 0.10.5 '@bruits/satteri-win32-x64-msvc': 0.10.5 - satteri@0.9.5: - dependencies: - '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.5 - '@types/mdast': 4.0.4 - '@types/unist': 3.0.3 - optionalDependencies: - '@bruits/satteri-darwin-arm64': 0.9.5 - '@bruits/satteri-darwin-x64': 0.9.5 - '@bruits/satteri-linux-arm64-gnu': 0.9.5 - '@bruits/satteri-linux-arm64-musl': 0.9.5 - '@bruits/satteri-linux-x64-gnu': 0.9.5 - '@bruits/satteri-linux-x64-musl': 0.9.5 - '@bruits/satteri-wasm32-wasi': 0.9.5 - '@bruits/satteri-win32-arm64-msvc': 0.9.5 - '@bruits/satteri-win32-x64-msvc': 0.9.5 - sax@1.6.1: {} search-insights@2.17.3: {} semver@7.8.5: {} - sharp@0.35.3(@types/node@24.13.3): - dependencies: - '@img/colour': 1.1.0 - detect-libc: 2.1.2 - semver: 7.8.5 - optionalDependencies: - '@img/sharp-darwin-arm64': 0.35.3 - '@img/sharp-darwin-x64': 0.35.3 - '@img/sharp-freebsd-wasm32': 0.35.3 - '@img/sharp-libvips-darwin-arm64': 1.3.2 - '@img/sharp-libvips-darwin-x64': 1.3.2 - '@img/sharp-libvips-linux-arm': 1.3.2 - '@img/sharp-libvips-linux-arm64': 1.3.2 - '@img/sharp-libvips-linux-ppc64': 1.3.2 - '@img/sharp-libvips-linux-riscv64': 1.3.2 - '@img/sharp-libvips-linux-s390x': 1.3.2 - '@img/sharp-libvips-linux-x64': 1.3.2 - '@img/sharp-libvips-linuxmusl-arm64': 1.3.2 - '@img/sharp-libvips-linuxmusl-x64': 1.3.2 - '@img/sharp-linux-arm': 0.35.3 - '@img/sharp-linux-arm64': 0.35.3 - '@img/sharp-linux-ppc64': 0.35.3 - '@img/sharp-linux-riscv64': 0.35.3 - '@img/sharp-linux-s390x': 0.35.3 - '@img/sharp-linux-x64': 0.35.3 - '@img/sharp-linuxmusl-arm64': 0.35.3 - '@img/sharp-linuxmusl-x64': 0.35.3 - '@img/sharp-webcontainers-wasm32': 0.35.3 - '@img/sharp-win32-arm64': 0.35.3 - '@img/sharp-win32-ia32': 0.35.3 - '@img/sharp-win32-x64': 0.35.3 - '@types/node': 24.13.3 - sharp@0.35.4(@types/node@24.13.3): dependencies: '@img/colour': 1.1.0 @@ -6218,20 +4714,18 @@ snapshots: source-map-js@1.2.1: {} - source-map@0.7.6: {} - space-separated-tokens@2.0.2: {} split@1.0.1: dependencies: through: 2.3.8 - starlight-openapi@0.26.1(@astrojs/markdown-satteri@0.4.0)(@astrojs/starlight@0.41.11(astro@7.2.10(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(supports-color@7.2.0)(typescript@6.0.3))(astro@7.2.10(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(openapi-types@12.1.3): + starlight-openapi@0.26.2(@astrojs/markdown-satteri@0.4.1)(@astrojs/starlight@0.42.0(astro@7.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(supports-color@7.2.0)(typescript@6.0.3))(astro@7.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(openapi-types@12.1.3): dependencies: - '@astrojs/markdown-satteri': 0.4.0 - '@astrojs/starlight': 0.41.11(astro@7.2.10(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(supports-color@7.2.0)(typescript@6.0.3) + '@astrojs/markdown-satteri': 0.4.1 + '@astrojs/starlight': 0.42.0(astro@7.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(supports-color@7.2.0)(typescript@6.0.3) '@readme/openapi-parser': 4.1.2(openapi-types@12.1.3) - astro: 7.2.10(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0) + astro: 7.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0) github-slugger: 2.0.0 httpsnippet: 3.0.10 url-template: 3.1.1 @@ -6281,14 +4775,6 @@ snapshots: dependencies: ansi-regex: 6.2.2 - style-to-js@1.1.21: - dependencies: - style-to-object: 1.0.14 - - style-to-object@1.0.14: - dependencies: - inline-style-parser: 0.2.7 - supports-color@7.2.0: dependencies: has-flag: 4.0.0 @@ -6366,32 +4852,14 @@ snapshots: dependencies: '@types/unist': 3.0.3 - unist-util-modify-children@4.0.0: - dependencies: - '@types/unist': 3.0.3 - array-iterate: 2.0.1 - - unist-util-position-from-estree@2.0.0: - dependencies: - '@types/unist': 3.0.3 - unist-util-position@5.0.0: dependencies: '@types/unist': 3.0.3 - unist-util-remove-position@5.0.0: - dependencies: - '@types/unist': 3.0.3 - unist-util-visit: 5.1.0 - unist-util-stringify-position@4.0.0: dependencies: '@types/unist': 3.0.3 - unist-util-visit-children@3.0.0: - dependencies: - '@types/unist': 3.0.3 - unist-util-visit-parents@6.0.2: dependencies: '@types/unist': 3.0.3 @@ -6420,11 +4888,6 @@ snapshots: util-deprecate@1.0.2: {} - vfile-location@5.0.3: - dependencies: - '@types/unist': 3.0.3 - vfile: 6.0.3 - vfile-message@4.0.3: dependencies: '@types/unist': 3.0.3 @@ -6560,8 +5023,6 @@ snapshots: vscode-uri@3.1.0: {} - web-namespaces@2.0.1: {} - wrap-ansi@7.0.0: dependencies: ansi-styles: 4.3.0 @@ -6622,6 +5083,6 @@ snapshots: yocto-queue@1.2.2: {} - zod@4.4.3: {} + zod@4.6.5: {} zwitch@2.0.4: {} diff --git a/sites/docs/astro.config.mjs b/sites/docs/astro.config.mjs index e8208c10..1939f68f 100644 --- a/sites/docs/astro.config.mjs +++ b/sites/docs/astro.config.mjs @@ -61,7 +61,7 @@ export default defineConfig({ if ( !useDocSearch && source === '@pagefind/default-ui' && - importer?.includes('starlight/components/Search.astro') + importer?.includes('starlight/dist/components/Search.astro') ) { pagefindUiRedirected = true; return path.join(repoRoot, 'sites/docs/src/lib/pagefind-ui.ts'); diff --git a/sites/docs/package.json b/sites/docs/package.json index 5c43b68b..0ca25b1f 100644 --- a/sites/docs/package.json +++ b/sites/docs/package.json @@ -11,13 +11,13 @@ "check": "astro check" }, "dependencies": { - "@astrojs/starlight": "0.41.11", - "@astrojs/starlight-docsearch": "0.7.0", + "@astrojs/starlight": "0.42.0", + "@astrojs/starlight-docsearch": "0.8.0", "@gitea-docs/content-loader": "workspace:*", "@pagefind/default-ui": "1.5.2", - "astro": "7.2.10", + "astro": "7.3.2", "sharp": "0.35.4", - "starlight-openapi": "0.26.1" + "starlight-openapi": "0.26.2" }, "devDependencies": { "@astrojs/check": "0.9.10", diff --git a/sites/docs/src/styles/custom.css b/sites/docs/src/styles/custom.css index 68c664a7..c152f904 100644 --- a/sites/docs/src/styles/custom.css +++ b/sites/docs/src/styles/custom.css @@ -51,7 +51,7 @@ /* Centre the mobile menu button on the navigation row instead of on the whole header bar, which the announcement strip made taller. */ -starlight-menu-button button { +.sl-menu-button { top: calc( var(--gitea-announcement-height) + (var(--gitea-nav-row-height) - var(--sl-menu-button-size)) / 2 ); From 779acd1cb99dbc932a5ed996dcf74620c9249d39 Mon Sep 17 00:00:00 2001 From: silverwind Date: Fri, 18 Sep 2026 23:53:53 +0000 Subject: [PATCH 14/22] docs: document NOTICE_ON_SUCCESS for every cron task (#552) Several cron tasks in the cheat sheet listed `ENABLE_SUCCESS_NOTICE` or `NO_SUCCESS_NOTICE`. Gitea reads neither, only `NOTICE_ON_SUCCESS`. `NO_SUCCESS_NOTICE` was removed in https://github.com/go-gitea/gitea/pull/19221. 1. Replace both dead keys with `NOTICE_ON_SUCCESS` (default `false`). 2. Fix "Notice if not success" descriptions, which inverted the key's meaning. 3. List the key for `cleanup_hook_task_table`, `cleanup_actions`, `cleanup_action_runs` and `gc_lfs`, which honor it but omitted it. Matches https://github.com/go-gitea/gitea/pull/39352. Written by Claude. Reviewed-on: https://gitea.com/gitea/docs/pulls/552 Reviewed-by: Lunny Xiao Co-authored-by: silverwind --- docs/administration/config-cheat-sheet.md | 28 +++++++++++-------- .../administration/config-cheat-sheet.md | 14 +++++----- .../administration/config-cheat-sheet.md | 2 +- .../administration/config-cheat-sheet.md | 2 +- .../administration/config-cheat-sheet.md | 2 +- .../administration/config-cheat-sheet.md | 2 +- .../administration/config-cheat-sheet.md | 14 +++++----- .../administration/config-cheat-sheet.md | 14 +++++----- .../administration/config-cheat-sheet.md | 14 +++++----- .../administration/config-cheat-sheet.md | 2 +- .../administration/config-cheat-sheet.md | 2 +- .../administration/config-cheat-sheet.md | 2 +- .../administration/config-cheat-sheet.md | 14 +++++----- .../administration/config-cheat-sheet.md | 14 +++++----- .../administration/config-cheat-sheet.md | 17 ++++++----- .../administration/config-cheat-sheet.md | 16 ++++++----- .../administration/config-cheat-sheet.md | 17 ++++++----- .../administration/config-cheat-sheet.md | 17 ++++++----- .../administration/config-cheat-sheet.md | 27 ++++++++++-------- .../administration/config-cheat-sheet.md | 27 ++++++++++-------- 20 files changed, 134 insertions(+), 113 deletions(-) diff --git a/docs/administration/config-cheat-sheet.md b/docs/administration/config-cheat-sheet.md index 0b21d18a..e866eca0 100644 --- a/docs/administration/config-cheat-sheet.md +++ b/docs/administration/config-cheat-sheet.md @@ -1047,7 +1047,7 @@ Release attachment has its own config options in `[repository.release]` section. - `ENABLED`: **true**: Enable running Update mirrors task periodically. - `SCHEDULE`: **@every 10m**: Cron syntax for scheduling update mirrors, e.g. `@every 3h`. - `RUN_AT_START`: **false**: Run Update mirrors task when Gitea starts. -- `NOTICE_ON_SUCCESS`: **false**: Notice if not success +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `PULL_LIMIT`: **50**: Limit the number of mirrors added to the queue to this number (negative values mean no limit, 0 will result in no mirrors being queued effectively disabling pull mirror updating). - `PUSH_LIMIT`: **50**: Limit the number of mirrors added to the queue to this number (negative values mean no limit, 0 will result in no mirrors being queued effectively disabling push mirror updating). @@ -1056,7 +1056,7 @@ Release attachment has its own config options in `[repository.release]` section. - `ENABLED`: **true**: Enable running repository health check task periodically. - `SCHEDULE`: **@midnight**: Cron syntax for scheduling repository health check. - `RUN_AT_START`: **false**: Run repository health check task when Gitea starts. -- `NOTICE_ON_SUCCESS`: **false**: Notice if not success +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `TIMEOUT`: **60s**: Time duration syntax for health check execution timeout. - `ARGS`: **_empty_**: Arguments for command `git fsck`, e.g. `--unreachable --tags`. See more on http://git-scm.com/docs/git-fsck @@ -1065,12 +1065,13 @@ Release attachment has its own config options in `[repository.release]` section. - `SCHEDULE`: **@midnight**: Cron syntax for scheduling repository statistics check. - `ENABLED`: **true**: Enable running repository statistics check task periodically. - `RUN_AT_START`: **true**: Run repository statistics check task when Gitea starts. -- `NOTICE_ON_SUCCESS`: **false**: Notice if not success +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. #### Cron - Cleanup hook_task Table (`cron.cleanup_hook_task_table`) - `ENABLED`: **true**: Enable cleanup hook_task job. - `RUN_AT_START`: **false**: Run cleanup hook_task at start time (if ENABLED). +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `SCHEDULE`: **@midnight**: Cron syntax for cleaning hook_task table. - `CLEANUP_TYPE` **OlderThan** OlderThan or PerWebhook Method to cleanup hook_task, either by age (i.e. how long ago hook_task record was delivered) or by the number to keep per webhook (i.e. keep most recent x deliveries per webhook). - `OLDER_THAN`: **168h**: If CLEANUP_TYPE is set to OlderThan, then any delivered hook_task records older than this expression will be deleted. @@ -1090,7 +1091,7 @@ Update migrated repositories' issues and comments' posterid, it will always atte - `ENABLED`: **true**: Enable update migration poster id job. - `RUN_AT_START`: **true**: Update migrated repositories' issues and comments' posterid when starting server -- `NOTICE_ON_SUCCESS`: **false**: Notice if not success +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `SCHEDULE`: **@midnight** : Interval as a duration between each synchronization, it will always attempt synchronization when the instance starts. #### Cron - Sync External Users (`cron.sync_external_users`) @@ -1099,7 +1100,7 @@ Synchronize external user data (only LDAP user synchronization is supported) - `ENABLED`: **true**: Enable synchronize external user data job - `RUN_AT_START`: **false**: Synchronize external user data when starting server -- `NOTICE_ON_SUCCESS`: **false**: Notice if not success +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `SCHEDULE`: **@midnight** : Interval as a duration between each synchronization, it will always attempt synchronization when the instance starts. - `UPDATE_EXISTING`: **true**: Create new users, update existing user data and disable users that are not in external source anymore (default) or only create new users if UPDATE_EXISTING is set to false. @@ -1107,12 +1108,14 @@ Synchronize external user data (only LDAP user synchronization is supported) - `ENABLED`: **true**: Enable cleanup expired actions assets job. - `RUN_AT_START`: **true**: Run job at start time (if ENABLED). +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `SCHEDULE`: **@midnight** : Cron syntax for the job. #### Cron - Delete Old Action Runs (`cron.cleanup_action_runs`) - `ENABLED`: **true**: Enable the job deleting action runs older than `RUN_RETENTION_DAYS`. Deletes nothing while that is 0. - `RUN_AT_START`: **false**: Run job at start time (if ENABLED). +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `SCHEDULE`: **@midnight**: Cron syntax for the job. #### Cron - Cleanup Deleted Branches (`cron.deleted_branches_cleanup`) @@ -1202,7 +1205,7 @@ Synchronize external user data (only LDAP user synchronization is supported) - `ENABLED`: **true**: Enable service. - `RUN_AT_START`: **false**: Run tasks at start up time (if ENABLED). -- `ENABLE_SUCCESS_NOTICE`: **true**: Set to false to switch off success notices. +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `SCHEDULE`: **@every 168h**: Cron syntax for scheduling a work, e.g. `@every 168h`. - `HTTP_ENDPOINT`: **https://dl.gitea.com/gitea/version.json**: the endpoint that Gitea will check for newer versions @@ -1210,7 +1213,7 @@ Synchronize external user data (only LDAP user synchronization is supported) - `ENABLED`: **false**: Enable service. - `RUN_AT_START`: **false**: Run tasks at start up time (if ENABLED). -- `NO_SUCCESS_NOTICE`: **false**: Set to true to switch off success notices. +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `SCHEDULE`: **@every 168h**: Cron syntax to set how often to check. - `OLDER_THAN`: **8760h**: any system notice older than this expression will be deleted from database. @@ -1218,6 +1221,7 @@ Synchronize external user data (only LDAP user synchronization is supported) - `ENABLED`: **false**: Enable service. - `RUN_AT_START`: **false**: Run tasks at start up time (if ENABLED). +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `SCHEDULE`: **@every 24h**: Cron syntax to set how often to check. - `OLDER_THAN`: **168h**: Only attempt to garbage collect LFSMetaObjects older than this (default 7 days) - `LAST_UPDATED_MORE_THAN_AGO`: **72h**: Only attempt to garbage collect LFSMetaObjects that have not been attempted to be garbage collected for this long (default 3 days) @@ -1230,35 +1234,35 @@ Synchronize external user data (only LDAP user synchronization is supported) - `ENABLED`: **true**: Enable service. - `RUN_AT_START`: **true**: Run tasks at start up time (if ENABLED). -- `NO_SUCCESS_NOTICE`: **false**: Set to true to switch off success notices. +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `SCHEDULE`: **@annually**: Cron syntax to set how often to rebuild #### Cron - Stop running tasks which haven't been updated for a long time (`cron.stop_zombie_tasks`) - `ENABLED`: **true**: Enable service. - `RUN_AT_START`: **true**: Run tasks at start up time (if ENABLED). -- `NO_SUCCESS_NOTICE`: **false**: Set to true to switch off success notices. +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `SCHEDULE`: **@every 5m**: Cron syntax to set how often tasks to run the check #### Cron - Stop running tasks which have running status and continuous updates but don't end for a long time (`cron.stop_endless_tasks`) - `ENABLED`: **true**: Enable service. - `RUN_AT_START`: **true**: Run tasks at start up time (if ENABLED). -- `NO_SUCCESS_NOTICE`: **false**: Set to true to switch off success notices. +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `SCHEDULE`: **@every 30m**: Cron syntax to set how often to run the check. #### Cron - Cancel jobs which haven't been picked up for a long time (`cron.cancel_abandoned_jobs`) - `ENABLED`: **true**: Enable service. - `RUN_AT_START`: **false**: Run tasks at start up time (if ENABLED). -- `NO_SUCCESS_NOTICE`: **false**: Set to true to switch off success notices. +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `SCHEDULE`: **@every 6h**: Cron syntax to set how often to run the check. #### Cron - Start cron based actions (`cron.start_schedule_tasks`) - `ENABLED`: **true**: Enable service. - `RUN_AT_START`: **false**: Run tasks at start up time (if ENABLED). -- `NO_SUCCESS_NOTICE`: **false**: Set to true to switch off success notices. +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `SCHEDULE`: **@every 1m**: Cron syntax to set how often to schedule tasks ## Git (`git`) diff --git a/i18n/zh-cn/docusaurus-plugin-content-docs/current/administration/config-cheat-sheet.md b/i18n/zh-cn/docusaurus-plugin-content-docs/current/administration/config-cheat-sheet.md index 99a710af..c9a8c9a5 100644 --- a/i18n/zh-cn/docusaurus-plugin-content-docs/current/administration/config-cheat-sheet.md +++ b/i18n/zh-cn/docusaurus-plugin-content-docs/current/administration/config-cheat-sheet.md @@ -1074,7 +1074,7 @@ In-Reply-To = - `ENABLED`: **true**: 启用服务。 - `RUN_AT_START`: **false**: 在启动时运行任务(如果启用)。 -- `ENABLE_SUCCESS_NOTICE`: **true**: 设置为 false 以关闭成功通知。 +- `NOTICE_ON_SUCCESS`: **false**: 设置为 true 以打开成功通知。 - `SCHEDULE`: **@every 168h**: Cron 语法,用于安排任务,例如 `@every 168h`。 - `HTTP_ENDPOINT`: **https://dl.gitea.com/gitea/version.json**: Gitea 用于检查新版本的端点。 @@ -1082,7 +1082,7 @@ In-Reply-To = - `ENABLED`: **false**: 启用服务。 - `RUN_AT_START`: **false**: 在启动时运行任务(如果启用)。 -- `NO_SUCCESS_NOTICE`: **false**: 设置为 true 以关闭成功通知。 +- `NOTICE_ON_SUCCESS`: **false**: 设置为 true 以打开成功通知。 - `SCHEDULE`: **@every 168h**: Cron 语法,用于设置多长时间进行检查。 - `OLDER_THAN`: **8760h**: 早于此表达式的任何系统通知都将从数据库中删除。 @@ -1102,35 +1102,35 @@ In-Reply-To = - `ENABLED`: **true**: 启用服务。 - `RUN_AT_START`: **true**: 在启动时运行任务(如果启用)。 -- `NO_SUCCESS_NOTICE`: **false**: 设置为 true 以关闭成功通知。 +- `NOTICE_ON_SUCCESS`: **false**: 设置为 true 以打开成功通知。 - `SCHEDULE`: **@annually**: Cron 语法,用于设置重建索引的频率。 #### Cron - 停止长时间未更新的运行中任务 (`cron.stop_zombie_tasks`) - `ENABLED`: **true**: 启用服务。 - `RUN_AT_START`: **true**: 在启动时运行任务(如果启用)。 -- `NO_SUCCESS_NOTICE`: **false**: 设置为 true 以关闭成功通知。 +- `NOTICE_ON_SUCCESS`: **false**: 设置为 true 以打开成功通知。 - `SCHEDULE`: **@every 5m**: Cron 语法,用于设置检查的频率。 #### Cron - 停止持续更新但长时间未结束的运行中任务 (`cron.stop_endless_tasks`) - `ENABLED`: **true**: 启用服务。 - `RUN_AT_START`: **true**: 在启动时运行任务(如果启用)。 -- `NO_SUCCESS_NOTICE`: **false**: 设置为 true 以关闭成功通知。 +- `NOTICE_ON_SUCCESS`: **false**: 设置为 true 以打开成功通知。 - `SCHEDULE`: **@every 30m**: Cron 语法,用于设置检查的频率。 #### Cron - 取消长时间未被领取的任务 (`cron.cancel_abandoned_jobs`) - `ENABLED`: **true**: 启用服务。 - `RUN_AT_START`: **false**: 在启动时运行任务(如果启用)。 -- `NO_SUCCESS_NOTICE`: **false**: 设置为 true 以关闭成功通知。 +- `NOTICE_ON_SUCCESS`: **false**: 设置为 true 以打开成功通知。 - `SCHEDULE`: **@every 6h**: Cron 语法,用于设置检查的频率。 #### Cron - 启动基于定时的 Actions (`cron.start_schedule_tasks`) - `ENABLED`: **true**: 启用服务。 - `RUN_AT_START`: **false**: 在启动时运行任务(如果启用)。 -- `NO_SUCCESS_NOTICE`: **false**: 设置为 true 以关闭成功通知。 +- `NOTICE_ON_SUCCESS`: **false**: 设置为 true 以打开成功通知。 - `SCHEDULE`: **@every 1m**: Cron 语法,用于设置调度任务的频率。 ## Git (`git`) diff --git a/i18n/zh-cn/docusaurus-plugin-content-docs/version-1.22/administration/config-cheat-sheet.md b/i18n/zh-cn/docusaurus-plugin-content-docs/version-1.22/administration/config-cheat-sheet.md index 1ad6363b..8c785531 100644 --- a/i18n/zh-cn/docusaurus-plugin-content-docs/version-1.22/administration/config-cheat-sheet.md +++ b/i18n/zh-cn/docusaurus-plugin-content-docs/version-1.22/administration/config-cheat-sheet.md @@ -969,7 +969,7 @@ Gitea 创建以下非唯一队列: - `ENABLED`: **false**: 启用服务。 - `RUN_AT_START`: **false**: 在启动时运行任务(如果启用)。 -- `NO_SUCCESS_NOTICE`: **false**: 设置为 true 以关闭成功通知。 +- `NOTICE_ON_SUCCESS`: **false**: 设置为 true 以打开成功通知。 - `SCHEDULE`: **@every 168h**: Cron 语法,用于设置多长时间进行检查。 - `OLDER_THAN`: **8760h**: 早于此表达式的任何系统通知都将从数据库中删除。 diff --git a/i18n/zh-cn/docusaurus-plugin-content-docs/version-1.23/administration/config-cheat-sheet.md b/i18n/zh-cn/docusaurus-plugin-content-docs/version-1.23/administration/config-cheat-sheet.md index 669292f1..75db3c79 100644 --- a/i18n/zh-cn/docusaurus-plugin-content-docs/version-1.23/administration/config-cheat-sheet.md +++ b/i18n/zh-cn/docusaurus-plugin-content-docs/version-1.23/administration/config-cheat-sheet.md @@ -975,7 +975,7 @@ Gitea 创建以下非唯一队列: - `ENABLED`: **false**: 启用服务。 - `RUN_AT_START`: **false**: 在启动时运行任务(如果启用)。 -- `NO_SUCCESS_NOTICE`: **false**: 设置为 true 以关闭成功通知。 +- `NOTICE_ON_SUCCESS`: **false**: 设置为 true 以打开成功通知。 - `SCHEDULE`: **@every 168h**: Cron 语法,用于设置多长时间进行检查。 - `OLDER_THAN`: **8760h**: 早于此表达式的任何系统通知都将从数据库中删除。 diff --git a/i18n/zh-cn/docusaurus-plugin-content-docs/version-1.24/administration/config-cheat-sheet.md b/i18n/zh-cn/docusaurus-plugin-content-docs/version-1.24/administration/config-cheat-sheet.md index ce3e64bd..225549a1 100644 --- a/i18n/zh-cn/docusaurus-plugin-content-docs/version-1.24/administration/config-cheat-sheet.md +++ b/i18n/zh-cn/docusaurus-plugin-content-docs/version-1.24/administration/config-cheat-sheet.md @@ -990,7 +990,7 @@ Gitea 创建以下非唯一队列: - `ENABLED`: **false**: 启用服务。 - `RUN_AT_START`: **false**: 在启动时运行任务(如果启用)。 -- `NO_SUCCESS_NOTICE`: **false**: 设置为 true 以关闭成功通知。 +- `NOTICE_ON_SUCCESS`: **false**: 设置为 true 以打开成功通知。 - `SCHEDULE`: **@every 168h**: Cron 语法,用于设置多长时间进行检查。 - `OLDER_THAN`: **8760h**: 早于此表达式的任何系统通知都将从数据库中删除。 diff --git a/i18n/zh-cn/docusaurus-plugin-content-docs/version-1.25/administration/config-cheat-sheet.md b/i18n/zh-cn/docusaurus-plugin-content-docs/version-1.25/administration/config-cheat-sheet.md index ce3e64bd..225549a1 100644 --- a/i18n/zh-cn/docusaurus-plugin-content-docs/version-1.25/administration/config-cheat-sheet.md +++ b/i18n/zh-cn/docusaurus-plugin-content-docs/version-1.25/administration/config-cheat-sheet.md @@ -990,7 +990,7 @@ Gitea 创建以下非唯一队列: - `ENABLED`: **false**: 启用服务。 - `RUN_AT_START`: **false**: 在启动时运行任务(如果启用)。 -- `NO_SUCCESS_NOTICE`: **false**: 设置为 true 以关闭成功通知。 +- `NOTICE_ON_SUCCESS`: **false**: 设置为 true 以打开成功通知。 - `SCHEDULE`: **@every 168h**: Cron 语法,用于设置多长时间进行检查。 - `OLDER_THAN`: **8760h**: 早于此表达式的任何系统通知都将从数据库中删除。 diff --git a/i18n/zh-cn/docusaurus-plugin-content-docs/version-1.26/administration/config-cheat-sheet.md b/i18n/zh-cn/docusaurus-plugin-content-docs/version-1.26/administration/config-cheat-sheet.md index 5af1752b..e548165f 100644 --- a/i18n/zh-cn/docusaurus-plugin-content-docs/version-1.26/administration/config-cheat-sheet.md +++ b/i18n/zh-cn/docusaurus-plugin-content-docs/version-1.26/administration/config-cheat-sheet.md @@ -1101,7 +1101,7 @@ In-Reply-To = - `ENABLED`: **true**: 启用服务。 - `RUN_AT_START`: **false**: 在启动时运行任务(如果启用)。 -- `ENABLE_SUCCESS_NOTICE`: **true**: 设置为 false 以关闭成功通知。 +- `NOTICE_ON_SUCCESS`: **false**: 设置为 true 以打开成功通知。 - `SCHEDULE`: **@every 168h**: Cron 语法,用于安排任务,例如 `@every 168h`。 - `HTTP_ENDPOINT`: **https://dl.gitea.com/gitea/version.json**: Gitea 用于检查新版本的端点。 @@ -1109,7 +1109,7 @@ In-Reply-To = - `ENABLED`: **false**: 启用服务。 - `RUN_AT_START`: **false**: 在启动时运行任务(如果启用)。 -- `NO_SUCCESS_NOTICE`: **false**: 设置为 true 以关闭成功通知。 +- `NOTICE_ON_SUCCESS`: **false**: 设置为 true 以打开成功通知。 - `SCHEDULE`: **@every 168h**: Cron 语法,用于设置多长时间进行检查。 - `OLDER_THAN`: **8760h**: 早于此表达式的任何系统通知都将从数据库中删除。 @@ -1129,35 +1129,35 @@ In-Reply-To = - `ENABLED`: **true**: 启用服务。 - `RUN_AT_START`: **true**: 在启动时运行任务(如果启用)。 -- `NO_SUCCESS_NOTICE`: **false**: 设置为 true 以关闭成功通知。 +- `NOTICE_ON_SUCCESS`: **false**: 设置为 true 以打开成功通知。 - `SCHEDULE`: **@annually**: Cron 语法,用于设置重建索引的频率。 #### Cron - 停止长时间未更新的运行中任务 (`cron.stop_zombie_tasks`) - `ENABLED`: **true**: 启用服务。 - `RUN_AT_START`: **true**: 在启动时运行任务(如果启用)。 -- `NO_SUCCESS_NOTICE`: **false**: 设置为 true 以关闭成功通知。 +- `NOTICE_ON_SUCCESS`: **false**: 设置为 true 以打开成功通知。 - `SCHEDULE`: **@every 5m**: Cron 语法,用于设置检查的频率。 #### Cron - 停止持续更新但长时间未结束的运行中任务 (`cron.stop_endless_tasks`) - `ENABLED`: **true**: 启用服务。 - `RUN_AT_START`: **true**: 在启动时运行任务(如果启用)。 -- `NO_SUCCESS_NOTICE`: **false**: 设置为 true 以关闭成功通知。 +- `NOTICE_ON_SUCCESS`: **false**: 设置为 true 以打开成功通知。 - `SCHEDULE`: **@every 30m**: Cron 语法,用于设置检查的频率。 #### Cron - 取消长时间未被领取的任务 (`cron.cancel_abandoned_jobs`) - `ENABLED`: **true**: 启用服务。 - `RUN_AT_START`: **false**: 在启动时运行任务(如果启用)。 -- `NO_SUCCESS_NOTICE`: **false**: 设置为 true 以关闭成功通知。 +- `NOTICE_ON_SUCCESS`: **false**: 设置为 true 以打开成功通知。 - `SCHEDULE`: **@every 6h**: Cron 语法,用于设置检查的频率。 #### Cron - 启动基于定时的 Actions (`cron.start_schedule_tasks`) - `ENABLED`: **true**: 启用服务。 - `RUN_AT_START`: **false**: 在启动时运行任务(如果启用)。 -- `NO_SUCCESS_NOTICE`: **false**: 设置为 true 以关闭成功通知。 +- `NOTICE_ON_SUCCESS`: **false**: 设置为 true 以打开成功通知。 - `SCHEDULE`: **@every 1m**: Cron 语法,用于设置调度任务的频率。 ## Git (`git`) diff --git a/i18n/zh-cn/docusaurus-plugin-content-docs/version-1.27/administration/config-cheat-sheet.md b/i18n/zh-cn/docusaurus-plugin-content-docs/version-1.27/administration/config-cheat-sheet.md index 65441063..62e257bb 100644 --- a/i18n/zh-cn/docusaurus-plugin-content-docs/version-1.27/administration/config-cheat-sheet.md +++ b/i18n/zh-cn/docusaurus-plugin-content-docs/version-1.27/administration/config-cheat-sheet.md @@ -1106,7 +1106,7 @@ In-Reply-To = - `ENABLED`: **true**: 启用服务。 - `RUN_AT_START`: **false**: 在启动时运行任务(如果启用)。 -- `ENABLE_SUCCESS_NOTICE`: **true**: 设置为 false 以关闭成功通知。 +- `NOTICE_ON_SUCCESS`: **false**: 设置为 true 以打开成功通知。 - `SCHEDULE`: **@every 168h**: Cron 语法,用于安排任务,例如 `@every 168h`。 - `HTTP_ENDPOINT`: **https://dl.gitea.com/gitea/version.json**: Gitea 用于检查新版本的端点。 @@ -1114,7 +1114,7 @@ In-Reply-To = - `ENABLED`: **false**: 启用服务。 - `RUN_AT_START`: **false**: 在启动时运行任务(如果启用)。 -- `NO_SUCCESS_NOTICE`: **false**: 设置为 true 以关闭成功通知。 +- `NOTICE_ON_SUCCESS`: **false**: 设置为 true 以打开成功通知。 - `SCHEDULE`: **@every 168h**: Cron 语法,用于设置多长时间进行检查。 - `OLDER_THAN`: **8760h**: 早于此表达式的任何系统通知都将从数据库中删除。 @@ -1134,35 +1134,35 @@ In-Reply-To = - `ENABLED`: **true**: 启用服务。 - `RUN_AT_START`: **true**: 在启动时运行任务(如果启用)。 -- `NO_SUCCESS_NOTICE`: **false**: 设置为 true 以关闭成功通知。 +- `NOTICE_ON_SUCCESS`: **false**: 设置为 true 以打开成功通知。 - `SCHEDULE`: **@annually**: Cron 语法,用于设置重建索引的频率。 #### Cron - 停止长时间未更新的运行中任务 (`cron.stop_zombie_tasks`) - `ENABLED`: **true**: 启用服务。 - `RUN_AT_START`: **true**: 在启动时运行任务(如果启用)。 -- `NO_SUCCESS_NOTICE`: **false**: 设置为 true 以关闭成功通知。 +- `NOTICE_ON_SUCCESS`: **false**: 设置为 true 以打开成功通知。 - `SCHEDULE`: **@every 5m**: Cron 语法,用于设置检查的频率。 #### Cron - 停止持续更新但长时间未结束的运行中任务 (`cron.stop_endless_tasks`) - `ENABLED`: **true**: 启用服务。 - `RUN_AT_START`: **true**: 在启动时运行任务(如果启用)。 -- `NO_SUCCESS_NOTICE`: **false**: 设置为 true 以关闭成功通知。 +- `NOTICE_ON_SUCCESS`: **false**: 设置为 true 以打开成功通知。 - `SCHEDULE`: **@every 30m**: Cron 语法,用于设置检查的频率。 #### Cron - 取消长时间未被领取的任务 (`cron.cancel_abandoned_jobs`) - `ENABLED`: **true**: 启用服务。 - `RUN_AT_START`: **false**: 在启动时运行任务(如果启用)。 -- `NO_SUCCESS_NOTICE`: **false**: 设置为 true 以关闭成功通知。 +- `NOTICE_ON_SUCCESS`: **false**: 设置为 true 以打开成功通知。 - `SCHEDULE`: **@every 6h**: Cron 语法,用于设置检查的频率。 #### Cron - 启动基于定时的 Actions (`cron.start_schedule_tasks`) - `ENABLED`: **true**: 启用服务。 - `RUN_AT_START`: **false**: 在启动时运行任务(如果启用)。 -- `NO_SUCCESS_NOTICE`: **false**: 设置为 true 以关闭成功通知。 +- `NOTICE_ON_SUCCESS`: **false**: 设置为 true 以打开成功通知。 - `SCHEDULE`: **@every 1m**: Cron 语法,用于设置调度任务的频率。 ## Git (`git`) diff --git a/i18n/zh-tw/docusaurus-plugin-content-docs/current/administration/config-cheat-sheet.md b/i18n/zh-tw/docusaurus-plugin-content-docs/current/administration/config-cheat-sheet.md index 261370b5..13083e94 100644 --- a/i18n/zh-tw/docusaurus-plugin-content-docs/current/administration/config-cheat-sheet.md +++ b/i18n/zh-tw/docusaurus-plugin-content-docs/current/administration/config-cheat-sheet.md @@ -1079,7 +1079,7 @@ In-Reply-To = - `ENABLED`: **true**: 啟用服務。 - `RUN_AT_START`: **false**: 在啟動時運行任務(如果啟用)。 -- `ENABLE_SUCCESS_NOTICE`: **true**: 設定為 false 以關閉成功通知。 +- `NOTICE_ON_SUCCESS`: **false**: 設定為 true 以打開成功通知。 - `SCHEDULE`: **@every 168h**: Cron 語法,用於安排任務,例如 `@every 168h`。 - `HTTP_ENDPOINT`: **https://dl.gitea.com/gitea/version.json**: Gitea 用於檢查新版本的端點。 @@ -1087,7 +1087,7 @@ In-Reply-To = - `ENABLED`: **false**: 啟用服務。 - `RUN_AT_START`: **false**: 在啟動時運行任務(如果啟用)。 -- `NO_SUCCESS_NOTICE`: **false**: 設定為 true 以關閉成功通知。 +- `NOTICE_ON_SUCCESS`: **false**: 設定為 true 以打開成功通知。 - `SCHEDULE`: **@every 168h**: Cron 語法,用於設定多長時間進行檢查。 - `OLDER_THAN`: **8760h**: 早於此表達式的任何系統通知都將從資料庫中刪除。 @@ -1108,35 +1108,35 @@ In-Reply-To = - `ENABLED`: **true**: 啟用服務。 - `RUN_AT_START`: **true**: 在啟動時運行任務(如果啟用)。 -- `NO_SUCCESS_NOTICE`: **false**: 設定為 true 以關閉成功通知。 +- `NOTICE_ON_SUCCESS`: **false**: 設定為 true 以打開成功通知。 - `SCHEDULE`: **@annually**: Cron 語法,用於設定重建索引的頻率。 #### Cron - 停止長時間未更新的運行中任務 (`cron.stop_zombie_tasks`) - `ENABLED`: **true**: 啟用服務。 - `RUN_AT_START`: **true**: 在啟動時運行任務(如果啟用)。 -- `NO_SUCCESS_NOTICE`: **false**: 設定為 true 以關閉成功通知。 +- `NOTICE_ON_SUCCESS`: **false**: 設定為 true 以打開成功通知。 - `SCHEDULE`: **@every 5m**: Cron 語法,用於設定檢查的頻率。 #### Cron - 停止持續更新但長時間未結束的運行中任務 (`cron.stop_endless_tasks`) - `ENABLED`: **true**: 啟用服務。 - `RUN_AT_START`: **true**: 在啟動時運行任務(如果啟用)。 -- `NO_SUCCESS_NOTICE`: **false**: 設定為 true 以關閉成功通知。 +- `NOTICE_ON_SUCCESS`: **false**: 設定為 true 以打開成功通知。 - `SCHEDULE`: **@every 30m**: Cron 語法,用於設定檢查的頻率。 #### Cron - 取消長時間未被領取的任務 (`cron.cancel_abandoned_jobs`) - `ENABLED`: **true**: 啟用服務。 - `RUN_AT_START`: **false**: 在啟動時運行任務(如果啟用)。 -- `NO_SUCCESS_NOTICE`: **false**: 設定為 true 以關閉成功通知。 +- `NOTICE_ON_SUCCESS`: **false**: 設定為 true 以打開成功通知。 - `SCHEDULE`: **@every 6h**: Cron 語法,用於設定檢查的頻率。 #### Cron - 啟動基於定時的 Actions (`cron.start_schedule_tasks`) - `ENABLED`: **true**: 啟用服務。 - `RUN_AT_START`: **false**: 在啟動時運行任務(如果啟用)。 -- `NO_SUCCESS_NOTICE`: **false**: 設定為 true 以關閉成功通知。 +- `NOTICE_ON_SUCCESS`: **false**: 設定為 true 以打開成功通知。 - `SCHEDULE`: **@every 1m**: Cron 語法,用於設定調度任務的頻率。 ## Git (`git`) diff --git a/i18n/zh-tw/docusaurus-plugin-content-docs/version-1.22/administration/config-cheat-sheet.md b/i18n/zh-tw/docusaurus-plugin-content-docs/version-1.22/administration/config-cheat-sheet.md index b1b02548..d0b58138 100644 --- a/i18n/zh-tw/docusaurus-plugin-content-docs/version-1.22/administration/config-cheat-sheet.md +++ b/i18n/zh-tw/docusaurus-plugin-content-docs/version-1.22/administration/config-cheat-sheet.md @@ -974,7 +974,7 @@ Gitea 建立以下非唯一隊列: - `ENABLED`: **false**: 啟用服務。 - `RUN_AT_START`: **false**: 在啟動時運行任務(如果啟用)。 -- `NO_SUCCESS_NOTICE`: **false**: 設定為 true 以關閉成功通知。 +- `NOTICE_ON_SUCCESS`: **false**: 設定為 true 以打開成功通知。 - `SCHEDULE`: **@every 168h**: Cron 語法,用於設定多長時間進行檢查。 - `OLDER_THAN`: **8760h**: 早於此表達式的任何系統通知都將從資料庫中刪除。 diff --git a/i18n/zh-tw/docusaurus-plugin-content-docs/version-1.24/administration/config-cheat-sheet.md b/i18n/zh-tw/docusaurus-plugin-content-docs/version-1.24/administration/config-cheat-sheet.md index 2dc2eecd..a107bda1 100644 --- a/i18n/zh-tw/docusaurus-plugin-content-docs/version-1.24/administration/config-cheat-sheet.md +++ b/i18n/zh-tw/docusaurus-plugin-content-docs/version-1.24/administration/config-cheat-sheet.md @@ -990,7 +990,7 @@ Gitea 建立以下非唯一隊列: - `ENABLED`: **false**: 啟用服務。 - `RUN_AT_START`: **false**: 在啟動時運行任務(如果啟用)。 -- `NO_SUCCESS_NOTICE`: **false**: 設定為 true 以關閉成功通知。 +- `NOTICE_ON_SUCCESS`: **false**: 設定為 true 以打開成功通知。 - `SCHEDULE`: **@every 168h**: Cron 語法,用於設定多長時間進行檢查。 - `OLDER_THAN`: **8760h**: 早於此表達式的任何系統通知都將從資料庫中刪除。 diff --git a/i18n/zh-tw/docusaurus-plugin-content-docs/version-1.25/administration/config-cheat-sheet.md b/i18n/zh-tw/docusaurus-plugin-content-docs/version-1.25/administration/config-cheat-sheet.md index 6ed6c7a7..9c28aa86 100644 --- a/i18n/zh-tw/docusaurus-plugin-content-docs/version-1.25/administration/config-cheat-sheet.md +++ b/i18n/zh-tw/docusaurus-plugin-content-docs/version-1.25/administration/config-cheat-sheet.md @@ -991,7 +991,7 @@ Gitea 建立以下非唯一隊列: - `ENABLED`: **false**: 啟用服務。 - `RUN_AT_START`: **false**: 在啟動時運行任務(如果啟用)。 -- `NO_SUCCESS_NOTICE`: **false**: 設定為 true 以關閉成功通知。 +- `NOTICE_ON_SUCCESS`: **false**: 設定為 true 以打開成功通知。 - `SCHEDULE`: **@every 168h**: Cron 語法,用於設定多長時間進行檢查。 - `OLDER_THAN`: **8760h**: 早於此表達式的任何系統通知都將從資料庫中刪除。 diff --git a/i18n/zh-tw/docusaurus-plugin-content-docs/version-1.26/administration/config-cheat-sheet.md b/i18n/zh-tw/docusaurus-plugin-content-docs/version-1.26/administration/config-cheat-sheet.md index 720ed923..93528b33 100644 --- a/i18n/zh-tw/docusaurus-plugin-content-docs/version-1.26/administration/config-cheat-sheet.md +++ b/i18n/zh-tw/docusaurus-plugin-content-docs/version-1.26/administration/config-cheat-sheet.md @@ -1106,7 +1106,7 @@ In-Reply-To = - `ENABLED`: **true**: 啟用服務。 - `RUN_AT_START`: **false**: 在啟動時運行任務(如果啟用)。 -- `ENABLE_SUCCESS_NOTICE`: **true**: 設定為 false 以關閉成功通知。 +- `NOTICE_ON_SUCCESS`: **false**: 設定為 true 以打開成功通知。 - `SCHEDULE`: **@every 168h**: Cron 語法,用於安排任務,例如 `@every 168h`。 - `HTTP_ENDPOINT`: **https://dl.gitea.com/gitea/version.json**: Gitea 用於檢查新版本的端點。 @@ -1114,7 +1114,7 @@ In-Reply-To = - `ENABLED`: **false**: 啟用服務。 - `RUN_AT_START`: **false**: 在啟動時運行任務(如果啟用)。 -- `NO_SUCCESS_NOTICE`: **false**: 設定為 true 以關閉成功通知。 +- `NOTICE_ON_SUCCESS`: **false**: 設定為 true 以打開成功通知。 - `SCHEDULE`: **@every 168h**: Cron 語法,用於設定多長時間進行檢查。 - `OLDER_THAN`: **8760h**: 早於此表達式的任何系統通知都將從資料庫中刪除。 @@ -1135,35 +1135,35 @@ In-Reply-To = - `ENABLED`: **true**: 啟用服務。 - `RUN_AT_START`: **true**: 在啟動時運行任務(如果啟用)。 -- `NO_SUCCESS_NOTICE`: **false**: 設定為 true 以關閉成功通知。 +- `NOTICE_ON_SUCCESS`: **false**: 設定為 true 以打開成功通知。 - `SCHEDULE`: **@annually**: Cron 語法,用於設定重建索引的頻率。 #### Cron - 停止長時間未更新的運行中任務 (`cron.stop_zombie_tasks`) - `ENABLED`: **true**: 啟用服務。 - `RUN_AT_START`: **true**: 在啟動時運行任務(如果啟用)。 -- `NO_SUCCESS_NOTICE`: **false**: 設定為 true 以關閉成功通知。 +- `NOTICE_ON_SUCCESS`: **false**: 設定為 true 以打開成功通知。 - `SCHEDULE`: **@every 5m**: Cron 語法,用於設定檢查的頻率。 #### Cron - 停止持續更新但長時間未結束的運行中任務 (`cron.stop_endless_tasks`) - `ENABLED`: **true**: 啟用服務。 - `RUN_AT_START`: **true**: 在啟動時運行任務(如果啟用)。 -- `NO_SUCCESS_NOTICE`: **false**: 設定為 true 以關閉成功通知。 +- `NOTICE_ON_SUCCESS`: **false**: 設定為 true 以打開成功通知。 - `SCHEDULE`: **@every 30m**: Cron 語法,用於設定檢查的頻率。 #### Cron - 取消長時間未被領取的任務 (`cron.cancel_abandoned_jobs`) - `ENABLED`: **true**: 啟用服務。 - `RUN_AT_START`: **false**: 在啟動時運行任務(如果啟用)。 -- `NO_SUCCESS_NOTICE`: **false**: 設定為 true 以關閉成功通知。 +- `NOTICE_ON_SUCCESS`: **false**: 設定為 true 以打開成功通知。 - `SCHEDULE`: **@every 6h**: Cron 語法,用於設定檢查的頻率。 #### Cron - 啟動基於定時的 Actions (`cron.start_schedule_tasks`) - `ENABLED`: **true**: 啟用服務。 - `RUN_AT_START`: **false**: 在啟動時運行任務(如果啟用)。 -- `NO_SUCCESS_NOTICE`: **false**: 設定為 true 以關閉成功通知。 +- `NOTICE_ON_SUCCESS`: **false**: 設定為 true 以打開成功通知。 - `SCHEDULE`: **@every 1m**: Cron 語法,用於設定調度任務的頻率。 ## Git (`git`) diff --git a/i18n/zh-tw/docusaurus-plugin-content-docs/version-1.27/administration/config-cheat-sheet.md b/i18n/zh-tw/docusaurus-plugin-content-docs/version-1.27/administration/config-cheat-sheet.md index c98f5570..73fa42c7 100644 --- a/i18n/zh-tw/docusaurus-plugin-content-docs/version-1.27/administration/config-cheat-sheet.md +++ b/i18n/zh-tw/docusaurus-plugin-content-docs/version-1.27/administration/config-cheat-sheet.md @@ -1111,7 +1111,7 @@ In-Reply-To = - `ENABLED`: **true**: 啟用服務。 - `RUN_AT_START`: **false**: 在啟動時運行任務(如果啟用)。 -- `ENABLE_SUCCESS_NOTICE`: **true**: 設定為 false 以關閉成功通知。 +- `NOTICE_ON_SUCCESS`: **false**: 設定為 true 以打開成功通知。 - `SCHEDULE`: **@every 168h**: Cron 語法,用於安排任務,例如 `@every 168h`。 - `HTTP_ENDPOINT`: **https://dl.gitea.com/gitea/version.json**: Gitea 用於檢查新版本的端點。 @@ -1119,7 +1119,7 @@ In-Reply-To = - `ENABLED`: **false**: 啟用服務。 - `RUN_AT_START`: **false**: 在啟動時運行任務(如果啟用)。 -- `NO_SUCCESS_NOTICE`: **false**: 設定為 true 以關閉成功通知。 +- `NOTICE_ON_SUCCESS`: **false**: 設定為 true 以打開成功通知。 - `SCHEDULE`: **@every 168h**: Cron 語法,用於設定多長時間進行檢查。 - `OLDER_THAN`: **8760h**: 早於此表達式的任何系統通知都將從資料庫中刪除。 @@ -1140,35 +1140,35 @@ In-Reply-To = - `ENABLED`: **true**: 啟用服務。 - `RUN_AT_START`: **true**: 在啟動時運行任務(如果啟用)。 -- `NO_SUCCESS_NOTICE`: **false**: 設定為 true 以關閉成功通知。 +- `NOTICE_ON_SUCCESS`: **false**: 設定為 true 以打開成功通知。 - `SCHEDULE`: **@annually**: Cron 語法,用於設定重建索引的頻率。 #### Cron - 停止長時間未更新的運行中任務 (`cron.stop_zombie_tasks`) - `ENABLED`: **true**: 啟用服務。 - `RUN_AT_START`: **true**: 在啟動時運行任務(如果啟用)。 -- `NO_SUCCESS_NOTICE`: **false**: 設定為 true 以關閉成功通知。 +- `NOTICE_ON_SUCCESS`: **false**: 設定為 true 以打開成功通知。 - `SCHEDULE`: **@every 5m**: Cron 語法,用於設定檢查的頻率。 #### Cron - 停止持續更新但長時間未結束的運行中任務 (`cron.stop_endless_tasks`) - `ENABLED`: **true**: 啟用服務。 - `RUN_AT_START`: **true**: 在啟動時運行任務(如果啟用)。 -- `NO_SUCCESS_NOTICE`: **false**: 設定為 true 以關閉成功通知。 +- `NOTICE_ON_SUCCESS`: **false**: 設定為 true 以打開成功通知。 - `SCHEDULE`: **@every 30m**: Cron 語法,用於設定檢查的頻率。 #### Cron - 取消長時間未被領取的任務 (`cron.cancel_abandoned_jobs`) - `ENABLED`: **true**: 啟用服務。 - `RUN_AT_START`: **false**: 在啟動時運行任務(如果啟用)。 -- `NO_SUCCESS_NOTICE`: **false**: 設定為 true 以關閉成功通知。 +- `NOTICE_ON_SUCCESS`: **false**: 設定為 true 以打開成功通知。 - `SCHEDULE`: **@every 6h**: Cron 語法,用於設定檢查的頻率。 #### Cron - 啟動基於定時的 Actions (`cron.start_schedule_tasks`) - `ENABLED`: **true**: 啟用服務。 - `RUN_AT_START`: **false**: 在啟動時運行任務(如果啟用)。 -- `NO_SUCCESS_NOTICE`: **false**: 設定為 true 以關閉成功通知。 +- `NOTICE_ON_SUCCESS`: **false**: 設定為 true 以打開成功通知。 - `SCHEDULE`: **@every 1m**: Cron 語法,用於設定調度任務的頻率。 ## Git (`git`) diff --git a/versioned_docs/version-1.22/administration/config-cheat-sheet.md b/versioned_docs/version-1.22/administration/config-cheat-sheet.md index ed67de3b..dedfba79 100644 --- a/versioned_docs/version-1.22/administration/config-cheat-sheet.md +++ b/versioned_docs/version-1.22/administration/config-cheat-sheet.md @@ -942,7 +942,7 @@ Default templates for project boards: - `ENABLED`: **true**: Enable running Update mirrors task periodically. - `SCHEDULE`: **@every 10m**: Cron syntax for scheduling update mirrors, e.g. `@every 3h`. - `RUN_AT_START`: **false**: Run Update mirrors task when Gitea starts. -- `NOTICE_ON_SUCCESS`: **false**: Notice if not success +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `PULL_LIMIT`: **50**: Limit the number of mirrors added to the queue to this number (negative values mean no limit, 0 will result in no mirrors being queued effectively disabling pull mirror updating). - `PUSH_LIMIT`: **50**: Limit the number of mirrors added to the queue to this number (negative values mean no limit, 0 will result in no mirrors being queued effectively disabling push mirror updating). @@ -951,7 +951,7 @@ Default templates for project boards: - `ENABLED`: **true**: Enable running Update mirrors task periodically. - `SCHEDULE`: **@midnight**: Cron syntax for scheduling repository health check. - `RUN_AT_START`: **false**: Run Update mirrors task when Gitea starts. -- `NOTICE_ON_SUCCESS`: **false**: Notice if not success +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `TIMEOUT`: **60s**: Time duration syntax for health check execution timeout. - `ARGS`: **_empty_**: Arguments for command `git fsck`, e.g. `--unreachable --tags`. See more on http://git-scm.com/docs/git-fsck @@ -960,12 +960,13 @@ Default templates for project boards: - `SCHEDULE`: **@midnight**: Cron syntax for scheduling repository statistics check. - `ENABLED`: **true**: Enable running Update mirrors task periodically. - `RUN_AT_START`: **true**: Run Update mirrors task when Gitea starts. -- `NOTICE_ON_SUCCESS`: **false**: Notice if not success +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. #### Cron - Cleanup hook_task Table (`cron.cleanup_hook_task_table`) - `ENABLED`: **true**: Enable cleanup hook_task job. - `RUN_AT_START`: **false**: Run cleanup hook_task at start time (if ENABLED). +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `SCHEDULE`: **@midnight**: Cron syntax for cleaning hook_task table. - `CLEANUP_TYPE` **OlderThan** OlderThan or PerWebhook Method to cleanup hook_task, either by age (i.e. how long ago hook_task record was delivered) or by the number to keep per webhook (i.e. keep most recent x deliveries per webhook). - `OLDER_THAN`: **168h**: If CLEANUP_TYPE is set to OlderThan, then any delivered hook_task records older than this expression will be deleted. @@ -985,7 +986,7 @@ Update migrated repositories' issues and comments' posterid, it will always atte - `ENABLED`: **true**: Enable update migration poster id job. - `RUN_AT_START`: **true**: Update migrated repositories' issues and comments' posterid when starting server -- `NOTICE_ON_SUCCESS`: **false**: Notice if not success +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `SCHEDULE`: **@midnight** : Interval as a duration between each synchronization, it will always attempt synchronization when the instance starts. #### Cron - Sync External Users (`cron.sync_external_users`) @@ -994,7 +995,7 @@ Synchronize external user data (only LDAP user synchronization is supported) - `ENABLED`: **true**: Enable synchronize external user data job - `RUN_AT_START`: **false**: Synchronize external user data when starting server -- `NOTICE_ON_SUCCESS`: **false**: Notice if not success +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `SCHEDULE`: **@midnight** : Interval as a duration between each synchronization, it will always attempt synchronization when the instance starts. - `UPDATE_EXISTING`: **true**: Create new users, update existing user data and disable users that are not in external source anymore (default) or only create new users if UPDATE_EXISTING is set to false. @@ -1002,6 +1003,7 @@ Synchronize external user data (only LDAP user synchronization is supported) - `ENABLED`: **true**: Enable cleanup expired actions assets job. - `RUN_AT_START`: **true**: Run job at start time (if ENABLED). +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `SCHEDULE`: **@midnight** : Cron syntax for the job. #### Cron - Cleanup Deleted Branches (`cron.deleted_branches_cleanup`) @@ -1070,7 +1072,7 @@ Synchronize external user data (only LDAP user synchronization is supported) - `ENABLED`: **true**: Enable service. - `RUN_AT_START`: **false**: Run tasks at start up time (if ENABLED). -- `ENABLE_SUCCESS_NOTICE`: **true**: Set to false to switch off success notices. +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `SCHEDULE`: **@every 168h**: Cron syntax for scheduling a work, e.g. `@every 168h`. - `HTTP_ENDPOINT`: **https://dl.gitea.com/gitea/version.json**: the endpoint that Gitea will check for newer versions @@ -1078,7 +1080,7 @@ Synchronize external user data (only LDAP user synchronization is supported) - `ENABLED`: **false**: Enable service. - `RUN_AT_START`: **false**: Run tasks at start up time (if ENABLED). -- `NO_SUCCESS_NOTICE`: **false**: Set to true to switch off success notices. +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `SCHEDULE`: **@every 168h**: Cron syntax to set how often to check. - `OLDER_THAN`: **8760h**: any system notice older than this expression will be deleted from database. @@ -1086,6 +1088,7 @@ Synchronize external user data (only LDAP user synchronization is supported) - `ENABLED`: **false**: Enable service. - `RUN_AT_START`: **false**: Run tasks at start up time (if ENABLED). +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `SCHEDULE`: **@every 24h**: Cron syntax to set how often to check. - `OLDER_THAN`: **168h**: Only attempt to garbage collect LFSMetaObjects older than this (default 7 days) - `LAST_UPDATED_MORE_THAN_AGO`: **72h**: Only attempt to garbage collect LFSMetaObjects that have not been attempted to be garbage collected for this long (default 3 days) diff --git a/versioned_docs/version-1.23/administration/config-cheat-sheet.md b/versioned_docs/version-1.23/administration/config-cheat-sheet.md index e66f92e7..cac288f7 100644 --- a/versioned_docs/version-1.23/administration/config-cheat-sheet.md +++ b/versioned_docs/version-1.23/administration/config-cheat-sheet.md @@ -992,7 +992,7 @@ Default templates for project board view: - `ENABLED`: **true**: Enable running Update mirrors task periodically. - `SCHEDULE`: **@every 10m**: Cron syntax for scheduling update mirrors, e.g. `@every 3h`. - `RUN_AT_START`: **false**: Run Update mirrors task when Gitea starts. -- `NOTICE_ON_SUCCESS`: **false**: Notice if not success +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `PULL_LIMIT`: **50**: Limit the number of mirrors added to the queue to this number (negative values mean no limit, 0 will result in no mirrors being queued effectively disabling pull mirror updating). - `PUSH_LIMIT`: **50**: Limit the number of mirrors added to the queue to this number (negative values mean no limit, 0 will result in no mirrors being queued effectively disabling push mirror updating). @@ -1001,7 +1001,7 @@ Default templates for project board view: - `ENABLED`: **true**: Enable running Update mirrors task periodically. - `SCHEDULE`: **@midnight**: Cron syntax for scheduling repository health check. - `RUN_AT_START`: **false**: Run Update mirrors task when Gitea starts. -- `NOTICE_ON_SUCCESS`: **false**: Notice if not success +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `TIMEOUT`: **60s**: Time duration syntax for health check execution timeout. - `ARGS`: **_empty_**: Arguments for command `git fsck`, e.g. `--unreachable --tags`. See more on http://git-scm.com/docs/git-fsck @@ -1010,12 +1010,13 @@ Default templates for project board view: - `SCHEDULE`: **@midnight**: Cron syntax for scheduling repository statistics check. - `ENABLED`: **true**: Enable running Update mirrors task periodically. - `RUN_AT_START`: **true**: Run Update mirrors task when Gitea starts. -- `NOTICE_ON_SUCCESS`: **false**: Notice if not success +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. #### Cron - Cleanup hook_task Table (`cron.cleanup_hook_task_table`) - `ENABLED`: **true**: Enable cleanup hook_task job. - `RUN_AT_START`: **false**: Run cleanup hook_task at start time (if ENABLED). +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `SCHEDULE`: **@midnight**: Cron syntax for cleaning hook_task table. - `CLEANUP_TYPE` **OlderThan** OlderThan or PerWebhook Method to cleanup hook_task, either by age (i.e. how long ago hook_task record was delivered) or by the number to keep per webhook (i.e. keep most recent x deliveries per webhook). - `OLDER_THAN`: **168h**: If CLEANUP_TYPE is set to OlderThan, then any delivered hook_task records older than this expression will be deleted. @@ -1035,7 +1036,7 @@ Update migrated repositories' issues and comments' posterid, it will always atte - `ENABLED`: **true**: Enable update migration poster id job. - `RUN_AT_START`: **true**: Update migrated repositories' issues and comments' posterid when starting server -- `NOTICE_ON_SUCCESS`: **false**: Notice if not success +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `SCHEDULE`: **@midnight** : Interval as a duration between each synchronization, it will always attempt synchronization when the instance starts. #### Cron - Sync External Users (`cron.sync_external_users`) @@ -1044,7 +1045,7 @@ Synchronize external user data (only LDAP user synchronization is supported) - `ENABLED`: **true**: Enable synchronize external user data job - `RUN_AT_START`: **false**: Synchronize external user data when starting server -- `NOTICE_ON_SUCCESS`: **false**: Notice if not success +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `SCHEDULE`: **@midnight** : Interval as a duration between each synchronization, it will always attempt synchronization when the instance starts. - `UPDATE_EXISTING`: **true**: Create new users, update existing user data and disable users that are not in external source anymore (default) or only create new users if UPDATE_EXISTING is set to false. @@ -1113,7 +1114,7 @@ Synchronize external user data (only LDAP user synchronization is supported) - `ENABLED`: **true**: Enable service. - `RUN_AT_START`: **false**: Run tasks at start up time (if ENABLED). -- `ENABLE_SUCCESS_NOTICE`: **true**: Set to false to switch off success notices. +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `SCHEDULE`: **@every 168h**: Cron syntax for scheduling a work, e.g. `@every 168h`. - `HTTP_ENDPOINT`: **https://dl.gitea.com/gitea/version.json**: the endpoint that Gitea will check for newer versions @@ -1121,7 +1122,7 @@ Synchronize external user data (only LDAP user synchronization is supported) - `ENABLED`: **false**: Enable service. - `RUN_AT_START`: **false**: Run tasks at start up time (if ENABLED). -- `NO_SUCCESS_NOTICE`: **false**: Set to true to switch off success notices. +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `SCHEDULE`: **@every 168h**: Cron syntax to set how often to check. - `OLDER_THAN`: **8760h**: any system notice older than this expression will be deleted from database. @@ -1129,6 +1130,7 @@ Synchronize external user data (only LDAP user synchronization is supported) - `ENABLED`: **false**: Enable service. - `RUN_AT_START`: **false**: Run tasks at start up time (if ENABLED). +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `SCHEDULE`: **@every 24h**: Cron syntax to set how often to check. - `OLDER_THAN`: **168h**: Only attempt to garbage collect LFSMetaObjects older than this (default 7 days) - `LAST_UPDATED_MORE_THAN_AGO`: **72h**: Only attempt to garbage collect LFSMetaObjects that have not been attempted to be garbage collected for this long (default 3 days) diff --git a/versioned_docs/version-1.24/administration/config-cheat-sheet.md b/versioned_docs/version-1.24/administration/config-cheat-sheet.md index 1fdcc826..6eb030dc 100644 --- a/versioned_docs/version-1.24/administration/config-cheat-sheet.md +++ b/versioned_docs/version-1.24/administration/config-cheat-sheet.md @@ -1024,7 +1024,7 @@ Default templates for project board view: - `ENABLED`: **true**: Enable running Update mirrors task periodically. - `SCHEDULE`: **@every 10m**: Cron syntax for scheduling update mirrors, e.g. `@every 3h`. - `RUN_AT_START`: **false**: Run Update mirrors task when Gitea starts. -- `NOTICE_ON_SUCCESS`: **false**: Notice if not success +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `PULL_LIMIT`: **50**: Limit the number of mirrors added to the queue to this number (negative values mean no limit, 0 will result in no mirrors being queued effectively disabling pull mirror updating). - `PUSH_LIMIT`: **50**: Limit the number of mirrors added to the queue to this number (negative values mean no limit, 0 will result in no mirrors being queued effectively disabling push mirror updating). @@ -1033,7 +1033,7 @@ Default templates for project board view: - `ENABLED`: **true**: Enable running Update mirrors task periodically. - `SCHEDULE`: **@midnight**: Cron syntax for scheduling repository health check. - `RUN_AT_START`: **false**: Run Update mirrors task when Gitea starts. -- `NOTICE_ON_SUCCESS`: **false**: Notice if not success +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `TIMEOUT`: **60s**: Time duration syntax for health check execution timeout. - `ARGS`: **_empty_**: Arguments for command `git fsck`, e.g. `--unreachable --tags`. See more on http://git-scm.com/docs/git-fsck @@ -1042,12 +1042,13 @@ Default templates for project board view: - `SCHEDULE`: **@midnight**: Cron syntax for scheduling repository statistics check. - `ENABLED`: **true**: Enable running Update mirrors task periodically. - `RUN_AT_START`: **true**: Run Update mirrors task when Gitea starts. -- `NOTICE_ON_SUCCESS`: **false**: Notice if not success +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. #### Cron - Cleanup hook_task Table (`cron.cleanup_hook_task_table`) - `ENABLED`: **true**: Enable cleanup hook_task job. - `RUN_AT_START`: **false**: Run cleanup hook_task at start time (if ENABLED). +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `SCHEDULE`: **@midnight**: Cron syntax for cleaning hook_task table. - `CLEANUP_TYPE` **OlderThan** OlderThan or PerWebhook Method to cleanup hook_task, either by age (i.e. how long ago hook_task record was delivered) or by the number to keep per webhook (i.e. keep most recent x deliveries per webhook). - `OLDER_THAN`: **168h**: If CLEANUP_TYPE is set to OlderThan, then any delivered hook_task records older than this expression will be deleted. @@ -1067,7 +1068,7 @@ Update migrated repositories' issues and comments' posterid, it will always atte - `ENABLED`: **true**: Enable update migration poster id job. - `RUN_AT_START`: **true**: Update migrated repositories' issues and comments' posterid when starting server -- `NOTICE_ON_SUCCESS`: **false**: Notice if not success +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `SCHEDULE`: **@midnight** : Interval as a duration between each synchronization, it will always attempt synchronization when the instance starts. #### Cron - Sync External Users (`cron.sync_external_users`) @@ -1076,7 +1077,7 @@ Synchronize external user data (only LDAP user synchronization is supported) - `ENABLED`: **true**: Enable synchronize external user data job - `RUN_AT_START`: **false**: Synchronize external user data when starting server -- `NOTICE_ON_SUCCESS`: **false**: Notice if not success +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `SCHEDULE`: **@midnight** : Interval as a duration between each synchronization, it will always attempt synchronization when the instance starts. - `UPDATE_EXISTING`: **true**: Create new users, update existing user data and disable users that are not in external source anymore (default) or only create new users if UPDATE_EXISTING is set to false. @@ -1084,6 +1085,7 @@ Synchronize external user data (only LDAP user synchronization is supported) - `ENABLED`: **true**: Enable cleanup expired actions assets job. - `RUN_AT_START`: **true**: Run job at start time (if ENABLED). +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `SCHEDULE`: **@midnight** : Cron syntax for the job. #### Cron - Cleanup Deleted Branches (`cron.deleted_branches_cleanup`) @@ -1159,7 +1161,7 @@ Synchronize external user data (only LDAP user synchronization is supported) - `ENABLED`: **true**: Enable service. - `RUN_AT_START`: **false**: Run tasks at start up time (if ENABLED). -- `ENABLE_SUCCESS_NOTICE`: **true**: Set to false to switch off success notices. +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `SCHEDULE`: **@every 168h**: Cron syntax for scheduling a work, e.g. `@every 168h`. - `HTTP_ENDPOINT`: **https://dl.gitea.com/gitea/version.json**: the endpoint that Gitea will check for newer versions @@ -1167,7 +1169,7 @@ Synchronize external user data (only LDAP user synchronization is supported) - `ENABLED`: **false**: Enable service. - `RUN_AT_START`: **false**: Run tasks at start up time (if ENABLED). -- `NO_SUCCESS_NOTICE`: **false**: Set to true to switch off success notices. +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `SCHEDULE`: **@every 168h**: Cron syntax to set how often to check. - `OLDER_THAN`: **8760h**: any system notice older than this expression will be deleted from database. @@ -1175,6 +1177,7 @@ Synchronize external user data (only LDAP user synchronization is supported) - `ENABLED`: **false**: Enable service. - `RUN_AT_START`: **false**: Run tasks at start up time (if ENABLED). +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `SCHEDULE`: **@every 24h**: Cron syntax to set how often to check. - `OLDER_THAN`: **168h**: Only attempt to garbage collect LFSMetaObjects older than this (default 7 days) - `LAST_UPDATED_MORE_THAN_AGO`: **72h**: Only attempt to garbage collect LFSMetaObjects that have not been attempted to be garbage collected for this long (default 3 days) diff --git a/versioned_docs/version-1.25/administration/config-cheat-sheet.md b/versioned_docs/version-1.25/administration/config-cheat-sheet.md index d67f15ef..ac26df05 100644 --- a/versioned_docs/version-1.25/administration/config-cheat-sheet.md +++ b/versioned_docs/version-1.25/administration/config-cheat-sheet.md @@ -1026,7 +1026,7 @@ Default templates for project board view: - `ENABLED`: **true**: Enable running Update mirrors task periodically. - `SCHEDULE`: **@every 10m**: Cron syntax for scheduling update mirrors, e.g. `@every 3h`. - `RUN_AT_START`: **false**: Run Update mirrors task when Gitea starts. -- `NOTICE_ON_SUCCESS`: **false**: Notice if not success +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `PULL_LIMIT`: **50**: Limit the number of mirrors added to the queue to this number (negative values mean no limit, 0 will result in no mirrors being queued effectively disabling pull mirror updating). - `PUSH_LIMIT`: **50**: Limit the number of mirrors added to the queue to this number (negative values mean no limit, 0 will result in no mirrors being queued effectively disabling push mirror updating). @@ -1035,7 +1035,7 @@ Default templates for project board view: - `ENABLED`: **true**: Enable running Update mirrors task periodically. - `SCHEDULE`: **@midnight**: Cron syntax for scheduling repository health check. - `RUN_AT_START`: **false**: Run Update mirrors task when Gitea starts. -- `NOTICE_ON_SUCCESS`: **false**: Notice if not success +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `TIMEOUT`: **60s**: Time duration syntax for health check execution timeout. - `ARGS`: **_empty_**: Arguments for command `git fsck`, e.g. `--unreachable --tags`. See more on http://git-scm.com/docs/git-fsck @@ -1044,12 +1044,13 @@ Default templates for project board view: - `SCHEDULE`: **@midnight**: Cron syntax for scheduling repository statistics check. - `ENABLED`: **true**: Enable running Update mirrors task periodically. - `RUN_AT_START`: **true**: Run Update mirrors task when Gitea starts. -- `NOTICE_ON_SUCCESS`: **false**: Notice if not success +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. #### Cron - Cleanup hook_task Table (`cron.cleanup_hook_task_table`) - `ENABLED`: **true**: Enable cleanup hook_task job. - `RUN_AT_START`: **false**: Run cleanup hook_task at start time (if ENABLED). +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `SCHEDULE`: **@midnight**: Cron syntax for cleaning hook_task table. - `CLEANUP_TYPE` **OlderThan** OlderThan or PerWebhook Method to cleanup hook_task, either by age (i.e. how long ago hook_task record was delivered) or by the number to keep per webhook (i.e. keep most recent x deliveries per webhook). - `OLDER_THAN`: **168h**: If CLEANUP_TYPE is set to OlderThan, then any delivered hook_task records older than this expression will be deleted. @@ -1069,7 +1070,7 @@ Update migrated repositories' issues and comments' posterid, it will always atte - `ENABLED`: **true**: Enable update migration poster id job. - `RUN_AT_START`: **true**: Update migrated repositories' issues and comments' posterid when starting server -- `NOTICE_ON_SUCCESS`: **false**: Notice if not success +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `SCHEDULE`: **@midnight** : Interval as a duration between each synchronization, it will always attempt synchronization when the instance starts. #### Cron - Sync External Users (`cron.sync_external_users`) @@ -1078,7 +1079,7 @@ Synchronize external user data (only LDAP user synchronization is supported) - `ENABLED`: **true**: Enable synchronize external user data job - `RUN_AT_START`: **false**: Synchronize external user data when starting server -- `NOTICE_ON_SUCCESS`: **false**: Notice if not success +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `SCHEDULE`: **@midnight** : Interval as a duration between each synchronization, it will always attempt synchronization when the instance starts. - `UPDATE_EXISTING`: **true**: Create new users, update existing user data and disable users that are not in external source anymore (default) or only create new users if UPDATE_EXISTING is set to false. @@ -1086,6 +1087,7 @@ Synchronize external user data (only LDAP user synchronization is supported) - `ENABLED`: **true**: Enable cleanup expired actions assets job. - `RUN_AT_START`: **true**: Run job at start time (if ENABLED). +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `SCHEDULE`: **@midnight** : Cron syntax for the job. #### Cron - Cleanup Deleted Branches (`cron.deleted_branches_cleanup`) @@ -1161,7 +1163,7 @@ Synchronize external user data (only LDAP user synchronization is supported) - `ENABLED`: **true**: Enable service. - `RUN_AT_START`: **false**: Run tasks at start up time (if ENABLED). -- `ENABLE_SUCCESS_NOTICE`: **true**: Set to false to switch off success notices. +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `SCHEDULE`: **@every 168h**: Cron syntax for scheduling a work, e.g. `@every 168h`. - `HTTP_ENDPOINT`: **https://dl.gitea.com/gitea/version.json**: the endpoint that Gitea will check for newer versions @@ -1169,7 +1171,7 @@ Synchronize external user data (only LDAP user synchronization is supported) - `ENABLED`: **false**: Enable service. - `RUN_AT_START`: **false**: Run tasks at start up time (if ENABLED). -- `NO_SUCCESS_NOTICE`: **false**: Set to true to switch off success notices. +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `SCHEDULE`: **@every 168h**: Cron syntax to set how often to check. - `OLDER_THAN`: **8760h**: any system notice older than this expression will be deleted from database. @@ -1177,6 +1179,7 @@ Synchronize external user data (only LDAP user synchronization is supported) - `ENABLED`: **false**: Enable service. - `RUN_AT_START`: **false**: Run tasks at start up time (if ENABLED). +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `SCHEDULE`: **@every 24h**: Cron syntax to set how often to check. - `OLDER_THAN`: **168h**: Only attempt to garbage collect LFSMetaObjects older than this (default 7 days) - `LAST_UPDATED_MORE_THAN_AGO`: **72h**: Only attempt to garbage collect LFSMetaObjects that have not been attempted to be garbage collected for this long (default 3 days) diff --git a/versioned_docs/version-1.26/administration/config-cheat-sheet.md b/versioned_docs/version-1.26/administration/config-cheat-sheet.md index 74feb237..0dcb638b 100644 --- a/versioned_docs/version-1.26/administration/config-cheat-sheet.md +++ b/versioned_docs/version-1.26/administration/config-cheat-sheet.md @@ -1056,7 +1056,7 @@ Default templates for project board view: - `ENABLED`: **true**: Enable running Update mirrors task periodically. - `SCHEDULE`: **@every 10m**: Cron syntax for scheduling update mirrors, e.g. `@every 3h`. - `RUN_AT_START`: **false**: Run Update mirrors task when Gitea starts. -- `NOTICE_ON_SUCCESS`: **false**: Notice if not success +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `PULL_LIMIT`: **50**: Limit the number of mirrors added to the queue to this number (negative values mean no limit, 0 will result in no mirrors being queued effectively disabling pull mirror updating). - `PUSH_LIMIT`: **50**: Limit the number of mirrors added to the queue to this number (negative values mean no limit, 0 will result in no mirrors being queued effectively disabling push mirror updating). @@ -1065,7 +1065,7 @@ Default templates for project board view: - `ENABLED`: **true**: Enable running Update mirrors task periodically. - `SCHEDULE`: **@midnight**: Cron syntax for scheduling repository health check. - `RUN_AT_START`: **false**: Run Update mirrors task when Gitea starts. -- `NOTICE_ON_SUCCESS`: **false**: Notice if not success +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `TIMEOUT`: **60s**: Time duration syntax for health check execution timeout. - `ARGS`: **_empty_**: Arguments for command `git fsck`, e.g. `--unreachable --tags`. See more on http://git-scm.com/docs/git-fsck @@ -1074,12 +1074,13 @@ Default templates for project board view: - `SCHEDULE`: **@midnight**: Cron syntax for scheduling repository statistics check. - `ENABLED`: **true**: Enable running Update mirrors task periodically. - `RUN_AT_START`: **true**: Run Update mirrors task when Gitea starts. -- `NOTICE_ON_SUCCESS`: **false**: Notice if not success +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. #### Cron - Cleanup hook_task Table (`cron.cleanup_hook_task_table`) - `ENABLED`: **true**: Enable cleanup hook_task job. - `RUN_AT_START`: **false**: Run cleanup hook_task at start time (if ENABLED). +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `SCHEDULE`: **@midnight**: Cron syntax for cleaning hook_task table. - `CLEANUP_TYPE` **OlderThan** OlderThan or PerWebhook Method to cleanup hook_task, either by age (i.e. how long ago hook_task record was delivered) or by the number to keep per webhook (i.e. keep most recent x deliveries per webhook). - `OLDER_THAN`: **168h**: If CLEANUP_TYPE is set to OlderThan, then any delivered hook_task records older than this expression will be deleted. @@ -1099,7 +1100,7 @@ Update migrated repositories' issues and comments' posterid, it will always atte - `ENABLED`: **true**: Enable update migration poster id job. - `RUN_AT_START`: **true**: Update migrated repositories' issues and comments' posterid when starting server -- `NOTICE_ON_SUCCESS`: **false**: Notice if not success +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `SCHEDULE`: **@midnight** : Interval as a duration between each synchronization, it will always attempt synchronization when the instance starts. #### Cron - Sync External Users (`cron.sync_external_users`) @@ -1108,7 +1109,7 @@ Synchronize external user data (only LDAP user synchronization is supported) - `ENABLED`: **true**: Enable synchronize external user data job - `RUN_AT_START`: **false**: Synchronize external user data when starting server -- `NOTICE_ON_SUCCESS`: **false**: Notice if not success +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `SCHEDULE`: **@midnight** : Interval as a duration between each synchronization, it will always attempt synchronization when the instance starts. - `UPDATE_EXISTING`: **true**: Create new users, update existing user data and disable users that are not in external source anymore (default) or only create new users if UPDATE_EXISTING is set to false. @@ -1116,6 +1117,7 @@ Synchronize external user data (only LDAP user synchronization is supported) - `ENABLED`: **true**: Enable cleanup expired actions assets job. - `RUN_AT_START`: **true**: Run job at start time (if ENABLED). +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `SCHEDULE`: **@midnight** : Cron syntax for the job. #### Cron - Cleanup Deleted Branches (`cron.deleted_branches_cleanup`) @@ -1205,7 +1207,7 @@ Synchronize external user data (only LDAP user synchronization is supported) - `ENABLED`: **true**: Enable service. - `RUN_AT_START`: **false**: Run tasks at start up time (if ENABLED). -- `ENABLE_SUCCESS_NOTICE`: **true**: Set to false to switch off success notices. +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `SCHEDULE`: **@every 168h**: Cron syntax for scheduling a work, e.g. `@every 168h`. - `HTTP_ENDPOINT`: **https://dl.gitea.com/gitea/version.json**: the endpoint that Gitea will check for newer versions @@ -1213,7 +1215,7 @@ Synchronize external user data (only LDAP user synchronization is supported) - `ENABLED`: **false**: Enable service. - `RUN_AT_START`: **false**: Run tasks at start up time (if ENABLED). -- `NO_SUCCESS_NOTICE`: **false**: Set to true to switch off success notices. +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `SCHEDULE`: **@every 168h**: Cron syntax to set how often to check. - `OLDER_THAN`: **8760h**: any system notice older than this expression will be deleted from database. @@ -1221,6 +1223,7 @@ Synchronize external user data (only LDAP user synchronization is supported) - `ENABLED`: **false**: Enable service. - `RUN_AT_START`: **false**: Run tasks at start up time (if ENABLED). +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `SCHEDULE`: **@every 24h**: Cron syntax to set how often to check. - `OLDER_THAN`: **168h**: Only attempt to garbage collect LFSMetaObjects older than this (default 7 days) - `LAST_UPDATED_MORE_THAN_AGO`: **72h**: Only attempt to garbage collect LFSMetaObjects that have not been attempted to be garbage collected for this long (default 3 days) @@ -1233,35 +1236,35 @@ Synchronize external user data (only LDAP user synchronization is supported) - `ENABLED`: **true**: Enable service. - `RUN_AT_START`: **true**: Run tasks at start up time (if ENABLED). -- `NO_SUCCESS_NOTICE`: **false**: Set to true to switch off success notices. +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `SCHEDULE`: **@annually**: Cron syntax to set how often to rebuild #### Cron - Stop running tasks which haven't been updated for a long time (`cron.stop_zombie_tasks`) - `ENABLED`: **true**: Enable service. - `RUN_AT_START`: **true**: Run tasks at start up time (if ENABLED). -- `NO_SUCCESS_NOTICE`: **false**: Set to true to switch off success notices. +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `SCHEDULE`: **@every 5m**: Cron syntax to set how often tasks to run the check #### Cron - Stop running tasks which have running status and continuous updates but don't end for a long time (`cron.stop_endless_tasks`) - `ENABLED`: **true**: Enable service. - `RUN_AT_START`: **true**: Run tasks at start up time (if ENABLED). -- `NO_SUCCESS_NOTICE`: **false**: Set to true to switch off success notices. +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `SCHEDULE`: **@every 30m**: Cron syntax to set how often to run the check. #### Cron - Cancel jobs which haven't been picked up for a long time (`cron.cancel_abandoned_jobs`) - `ENABLED`: **true**: Enable service. - `RUN_AT_START`: **false**: Run tasks at start up time (if ENABLED). -- `NO_SUCCESS_NOTICE`: **false**: Set to true to switch off success notices. +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `SCHEDULE`: **@every 6h**: Cron syntax to set how often to run the check. #### Cron - Start cron based actions (`cron.start_schedule_tasks`) - `ENABLED`: **true**: Enable service. - `RUN_AT_START`: **false**: Run tasks at start up time (if ENABLED). -- `NO_SUCCESS_NOTICE`: **false**: Set to true to switch off success notices. +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `SCHEDULE`: **@every 1m**: Cron syntax to set how often to schedule tasks ## Git (`git`) diff --git a/versioned_docs/version-1.27/administration/config-cheat-sheet.md b/versioned_docs/version-1.27/administration/config-cheat-sheet.md index 5b518873..0d8f80bb 100644 --- a/versioned_docs/version-1.27/administration/config-cheat-sheet.md +++ b/versioned_docs/version-1.27/administration/config-cheat-sheet.md @@ -1069,7 +1069,7 @@ Release attachment has its own config options in `[repository.release]` section. - `ENABLED`: **true**: Enable running Update mirrors task periodically. - `SCHEDULE`: **@every 10m**: Cron syntax for scheduling update mirrors, e.g. `@every 3h`. - `RUN_AT_START`: **false**: Run Update mirrors task when Gitea starts. -- `NOTICE_ON_SUCCESS`: **false**: Notice if not success +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `PULL_LIMIT`: **50**: Limit the number of mirrors added to the queue to this number (negative values mean no limit, 0 will result in no mirrors being queued effectively disabling pull mirror updating). - `PUSH_LIMIT`: **50**: Limit the number of mirrors added to the queue to this number (negative values mean no limit, 0 will result in no mirrors being queued effectively disabling push mirror updating). @@ -1078,7 +1078,7 @@ Release attachment has its own config options in `[repository.release]` section. - `ENABLED`: **true**: Enable running Update mirrors task periodically. - `SCHEDULE`: **@midnight**: Cron syntax for scheduling repository health check. - `RUN_AT_START`: **false**: Run Update mirrors task when Gitea starts. -- `NOTICE_ON_SUCCESS`: **false**: Notice if not success +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `TIMEOUT`: **60s**: Time duration syntax for health check execution timeout. - `ARGS`: **_empty_**: Arguments for command `git fsck`, e.g. `--unreachable --tags`. See more on http://git-scm.com/docs/git-fsck @@ -1087,12 +1087,13 @@ Release attachment has its own config options in `[repository.release]` section. - `SCHEDULE`: **@midnight**: Cron syntax for scheduling repository statistics check. - `ENABLED`: **true**: Enable running Update mirrors task periodically. - `RUN_AT_START`: **true**: Run Update mirrors task when Gitea starts. -- `NOTICE_ON_SUCCESS`: **false**: Notice if not success +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. #### Cron - Cleanup hook_task Table (`cron.cleanup_hook_task_table`) - `ENABLED`: **true**: Enable cleanup hook_task job. - `RUN_AT_START`: **false**: Run cleanup hook_task at start time (if ENABLED). +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `SCHEDULE`: **@midnight**: Cron syntax for cleaning hook_task table. - `CLEANUP_TYPE` **OlderThan** OlderThan or PerWebhook Method to cleanup hook_task, either by age (i.e. how long ago hook_task record was delivered) or by the number to keep per webhook (i.e. keep most recent x deliveries per webhook). - `OLDER_THAN`: **168h**: If CLEANUP_TYPE is set to OlderThan, then any delivered hook_task records older than this expression will be deleted. @@ -1112,7 +1113,7 @@ Update migrated repositories' issues and comments' posterid, it will always atte - `ENABLED`: **true**: Enable update migration poster id job. - `RUN_AT_START`: **true**: Update migrated repositories' issues and comments' posterid when starting server -- `NOTICE_ON_SUCCESS`: **false**: Notice if not success +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `SCHEDULE`: **@midnight** : Interval as a duration between each synchronization, it will always attempt synchronization when the instance starts. #### Cron - Sync External Users (`cron.sync_external_users`) @@ -1121,7 +1122,7 @@ Synchronize external user data (only LDAP user synchronization is supported) - `ENABLED`: **true**: Enable synchronize external user data job - `RUN_AT_START`: **false**: Synchronize external user data when starting server -- `NOTICE_ON_SUCCESS`: **false**: Notice if not success +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `SCHEDULE`: **@midnight** : Interval as a duration between each synchronization, it will always attempt synchronization when the instance starts. - `UPDATE_EXISTING`: **true**: Create new users, update existing user data and disable users that are not in external source anymore (default) or only create new users if UPDATE_EXISTING is set to false. @@ -1129,6 +1130,7 @@ Synchronize external user data (only LDAP user synchronization is supported) - `ENABLED`: **true**: Enable cleanup expired actions assets job. - `RUN_AT_START`: **true**: Run job at start time (if ENABLED). +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `SCHEDULE`: **@midnight** : Cron syntax for the job. #### Cron - Cleanup Deleted Branches (`cron.deleted_branches_cleanup`) @@ -1218,7 +1220,7 @@ Synchronize external user data (only LDAP user synchronization is supported) - `ENABLED`: **true**: Enable service. - `RUN_AT_START`: **false**: Run tasks at start up time (if ENABLED). -- `ENABLE_SUCCESS_NOTICE`: **true**: Set to false to switch off success notices. +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `SCHEDULE`: **@every 168h**: Cron syntax for scheduling a work, e.g. `@every 168h`. - `HTTP_ENDPOINT`: **https://dl.gitea.com/gitea/version.json**: the endpoint that Gitea will check for newer versions @@ -1226,7 +1228,7 @@ Synchronize external user data (only LDAP user synchronization is supported) - `ENABLED`: **false**: Enable service. - `RUN_AT_START`: **false**: Run tasks at start up time (if ENABLED). -- `NO_SUCCESS_NOTICE`: **false**: Set to true to switch off success notices. +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `SCHEDULE`: **@every 168h**: Cron syntax to set how often to check. - `OLDER_THAN`: **8760h**: any system notice older than this expression will be deleted from database. @@ -1234,6 +1236,7 @@ Synchronize external user data (only LDAP user synchronization is supported) - `ENABLED`: **false**: Enable service. - `RUN_AT_START`: **false**: Run tasks at start up time (if ENABLED). +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `SCHEDULE`: **@every 24h**: Cron syntax to set how often to check. - `OLDER_THAN`: **168h**: Only attempt to garbage collect LFSMetaObjects older than this (default 7 days) - `LAST_UPDATED_MORE_THAN_AGO`: **72h**: Only attempt to garbage collect LFSMetaObjects that have not been attempted to be garbage collected for this long (default 3 days) @@ -1246,35 +1249,35 @@ Synchronize external user data (only LDAP user synchronization is supported) - `ENABLED`: **true**: Enable service. - `RUN_AT_START`: **true**: Run tasks at start up time (if ENABLED). -- `NO_SUCCESS_NOTICE`: **false**: Set to true to switch off success notices. +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `SCHEDULE`: **@annually**: Cron syntax to set how often to rebuild #### Cron - Stop running tasks which haven't been updated for a long time (`cron.stop_zombie_tasks`) - `ENABLED`: **true**: Enable service. - `RUN_AT_START`: **true**: Run tasks at start up time (if ENABLED). -- `NO_SUCCESS_NOTICE`: **false**: Set to true to switch off success notices. +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `SCHEDULE`: **@every 5m**: Cron syntax to set how often tasks to run the check #### Cron - Stop running tasks which have running status and continuous updates but don't end for a long time (`cron.stop_endless_tasks`) - `ENABLED`: **true**: Enable service. - `RUN_AT_START`: **true**: Run tasks at start up time (if ENABLED). -- `NO_SUCCESS_NOTICE`: **false**: Set to true to switch off success notices. +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `SCHEDULE`: **@every 30m**: Cron syntax to set how often to run the check. #### Cron - Cancel jobs which haven't been picked up for a long time (`cron.cancel_abandoned_jobs`) - `ENABLED`: **true**: Enable service. - `RUN_AT_START`: **false**: Run tasks at start up time (if ENABLED). -- `NO_SUCCESS_NOTICE`: **false**: Set to true to switch off success notices. +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `SCHEDULE`: **@every 6h**: Cron syntax to set how often to run the check. #### Cron - Start cron based actions (`cron.start_schedule_tasks`) - `ENABLED`: **true**: Enable service. - `RUN_AT_START`: **false**: Run tasks at start up time (if ENABLED). -- `NO_SUCCESS_NOTICE`: **false**: Set to true to switch off success notices. +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. - `SCHEDULE`: **@every 1m**: Cron syntax to set how often to schedule tasks ## Git (`git`) From 9f58fd3d2827ad41bc06526a1778444b403169b2 Mon Sep 17 00:00:00 2001 From: Gitea Bot Date: Sat, 19 Sep 2026 00:12:35 +0000 Subject: [PATCH 15/22] Update the latest api documents (#551) Automated update of static/swagger-latest.json and static/openapi3-latest.json from the gitea main branch, opened by the "update api spec files" scheduled workflow. Preview: https://pr-551.docs-gitea-com.pages.dev Reviewed-on: https://gitea.com/gitea/docs/pulls/551 Reviewed-by: Lunny Xiao Co-authored-by: Gitea Bot --- static/openapi3-latest.json | 27 +++++++++++++++++++++++++++ static/swagger-latest.json | 25 +++++++++++++++++++++++++ 2 files changed, 52 insertions(+) diff --git a/static/openapi3-latest.json b/static/openapi3-latest.json index 536091d0..eb3b86ef 100644 --- a/static/openapi3-latest.json +++ b/static/openapi3-latest.json @@ -6311,6 +6311,14 @@ "type": "integer", "x-go-name": "SourceID" }, + "type": { + "allOf": [ + { + "$ref": "#/components/schemas/UserTypeString" + } + ], + "description": "The user type" + }, "visibility": { "allOf": [ { @@ -10722,6 +10730,14 @@ "type": "integer", "x-go-name": "StarredRepos" }, + "type": { + "allOf": [ + { + "$ref": "#/components/schemas/UserTypeString" + } + ], + "description": "the user type" + }, "visibility": { "allOf": [ { @@ -10878,6 +10894,14 @@ "type": "object", "x-go-package": "gitea.dev/modules/structs" }, + "UserTypeString": { + "enum": [ + "User", + "Organization", + "Bot" + ], + "type": "string" + }, "VisibilityString": { "enum": [ "public", @@ -27155,6 +27179,9 @@ }, "404": { "$ref": "#/components/responses/notFound" + }, + "409": { + "$ref": "#/components/responses/error" } }, "summary": "Merge a branch from upstream", diff --git a/static/swagger-latest.json b/static/swagger-latest.json index 0ea47a14..e6a45ad8 100644 --- a/static/swagger-latest.json +++ b/static/swagger-latest.json @@ -14997,6 +14997,9 @@ }, "404": { "$ref": "#/responses/notFound" + }, + "409": { + "$ref": "#/responses/error" } } } @@ -29389,6 +29392,17 @@ "format": "int64", "x-go-name": "SourceID" }, + "type": { + "description": "The user type", + "type": "string", + "enum": [ + "User", + "Organization", + "Bot" + ], + "x-go-enum-desc": "User UserTypeStringUser\nOrganization UserTypeStringOrganization\nBot UserTypeStringBot", + "x-go-name": "Type" + }, "visibility": { "description": "User visibility level: public, limited, or private", "type": "string", @@ -33751,6 +33765,17 @@ "format": "int64", "x-go-name": "StarredRepos" }, + "type": { + "description": "the user type", + "type": "string", + "enum": [ + "User", + "Organization", + "Bot" + ], + "x-go-enum-desc": "User UserTypeStringUser\nOrganization UserTypeStringOrganization\nBot UserTypeStringBot", + "x-go-name": "Type" + }, "visibility": { "description": "User visibility level option: public, limited, private", "type": "string", From 8404944fbbd5762a1ccce9a3180c7775ad121a54 Mon Sep 17 00:00:00 2001 From: bircni Date: Sat, 19 Sep 2026 12:54:16 +0000 Subject: [PATCH 16/22] docs: Document audit logging (#544) Co-authored-by: Lunny Xiao Co-authored-by: silverwind Reviewed-on: https://gitea.com/gitea/docs/pulls/544 Reviewed-by: Lunny Xiao Reviewed-by: silverwind <2021+silverwind@noreply.gitea.com> Co-authored-by: bircni --- docs/administration/audit-logging.md | 153 ++++++++++++++++++++++ docs/administration/config-cheat-sheet.md | 15 +++ docs/administration/logging-config.md | 2 + docs/index.md | 2 +- docs/installation/comparison.md | 1 + 5 files changed, 172 insertions(+), 1 deletion(-) create mode 100644 docs/administration/audit-logging.md diff --git a/docs/administration/audit-logging.md b/docs/administration/audit-logging.md new file mode 100644 index 00000000..fc135eed --- /dev/null +++ b/docs/administration/audit-logging.md @@ -0,0 +1,153 @@ +--- +date: "2026-09-12T00:00:00+00:00" +slug: "audit-logging" +sidebar_position: 41 +aliases: + - /en-us/audit-logging +--- + +# Audit Logging + +Gitea can record security-relevant events as structured audit records: each +event has an `action`, `actor`, `scope`, `origin`, `message` and a JSON +`metadata` blob. Recording is **off by default** and does not change request +behavior when it is disabled. + +This is separate from the application, router and access logs described in +[Logging Configuration](logging-config.md). Those logs are for operations and +debugging. The audit log is a durable trail of who changed what. + +## Enable recording + +Set `[audit].RECORD_OUTPUT` to `database` in `app.ini` and restart Gitea: + +```ini +[audit] +RECORD_OUTPUT = database +RETENTION_DAYS = 30 +``` + +Invalid values of `RECORD_OUTPUT` fall back to `disabled`. See the +[configuration cheat sheet](config-cheat-sheet.md#audit-audit) for every option. + +With Docker, the same settings can be applied as +`GITEA__audit__RECORD_OUTPUT=database` and `GITEA__audit__RETENTION_DAYS=30` +before Gitea writes them into `app.ini`. + +## View events + +The Audit Log pages are always available and still list any events that were +stored earlier. When recording is disabled, the site administration page also +shows a warning. + +| Audience | Location | Events shown | +| --- | --- | --- | +| Site administrators | Site administration → Monitoring → Audit Log (`/-/admin/monitor/audit_logs`) | Every event | +| Signed-in users | User settings → Audit Log (`/user/settings/audit_logs`) | Events scoped to that user | +| Organization owners | Organization settings → Audit Log (`//settings/audit_logs`) | Events scoped to that organization | +| Repository administrators | Repository settings → Audit Log (`///settings/audit_logs`) | Events scoped to that repository | + +Each listing can be filtered by actor (username), action and origin, and sorted +by timestamp. The actor filter does not match the +[system actors](#actors-and-origins). Action filters accept an exact action or +a family prefix such as `user:impersonation` or `repository:webhook`. + +Site administrators can download the current filtered result as JSONL +(newline-delimited JSON) from **Export JSONL**. The file name is +`gitea-audit-log-.jsonl`. + +## Event shape + +A recorded event contains: + +- **Action**: a stable, colon-separated identifier such as `repository:archive` + or `user:accesstoken:add`. +- **Actor**: the user who performed the action. Actions taken while impersonating + a user record both the impersonator and the impersonated user. +- **Actor credential**: when the request authenticated with a named credential, + the event stores its kind and id, never the secret. Typical values: + `access-token:`, `oauth2-grant:`, `gitea-actions:`, + `deploy-key:`. +- **Scope**: the affected unit — `user`, `organization`, `repository` or + `system` (instance-wide). +- **Origin**: how the action was initiated — `ui`, `api`, `cli` or `system`. +- **Message**: a human-readable sentence rendered from a per-action template. +- **Metadata**: extra fields that fill the message template (token name, new + visibility, and so on). Secrets and token values are not stored. +- **IP address**: the client address of the request, when one exists. Events + triggered by a git push record the SSH client address for SSH pushes and + `127.0.0.1` for HTTP pushes. +- **Timestamp**: when the event was recorded. + +An exported JSONL line looks like: + +```json +{"action":"repository:archive","actor":{"type":"user","id":1,"name":"alice"},"scope":{"type":"repository","id":42,"name":"org/repo"},"message":"Archived repository org/repo.","time":"2026-09-12T11:00:00Z","ip_address":"203.0.113.10","origin":"ui"} +``` + +The `system:startup` message is kept stable across Gitea versions so operators +can parse it: `System started [Gitea {version}]`. + +## Actors and origins + +Most web and API requests pick up the signed-in user automatically. + +Other entry points record a system actor: + +- `(gitea-cli)` for `gitea admin` commands and the `system:startup` and + `system:shutdown` events +- `(gitea-auth-source)` for authentication-source syncs and for users an + authentication source creates or updates at sign-in +- `gitea-actions` for Gitea Actions tasks +- `(deploy-key)` for pushes with a deploy key +- `(Cron)` for scheduled cron tasks +- `Unknown` when no actor can be resolved + +Events of the `(gitea-cli)` actor use origin `cli`. Cron tasks, git hooks and +other background work use origin `system`. + +## What is recorded + +Events cover security-relevant changes, grouped by action family: + +- **User**: create and delete, admin, restricted and active status, name, + password and password reset requests, visibility, emails, authentication + source, 2FA, WebAuthn, OpenID, external logins, access tokens, OAuth2 + applications and grants, SSH/GPG/principal keys, secrets, webhooks, + impersonation, failed two-factor authentication +- **Organization**: create and delete, name, visibility, members, teams, + OAuth2 applications, secrets, webhooks +- **Repository**: create, fork, archive, delete, rename, visibility, transfer, + mirrors, signing verification, collaborators and teams, default branch, + branch and tag protection, deploy keys, webhooks, secrets +- **Issues and pull requests**: create, delete, comments and merges +- **Projects and wiki pages**: create, update and delete +- **Actions**: enable, disable and dispatch a workflow +- **System**: startup and shutdown, instance-wide webhooks, authentication + sources, instance-wide OAuth2 applications + +Recording never fails the request that triggered it. A write error is logged +and the original operation continues. + +## What is not recorded + +- Read-only access such as browsing, clone, fetch or API GET requests +- Logins, successful or failed, other than failed two-factor authentication + (use the [access log](logging-config.md) and + [Fail2ban Setup](fail2ban-setup.md) for authentication traffic) +- Edits to issues and pull requests +- Token or secret values +- Which SSH key a real user pushed with (deploy keys are named; ordinary SSH + user pushes are not) + +## Retention + +`RETENTION_DAYS` (default **30**) is the age after which recorded events are +eligible for deletion. Set it to `0` to keep events forever. + +Cleanup is performed by the `cron.delete_old_audit_events` task (`SCHEDULE` +defaults to `@every 24h`, `OLDER_THAN` defaults to `[audit].RETENTION_DAYS`). +The task is registered only while `RECORD_OUTPUT` records events **and** +`RETENTION_DAYS` is greater than `0`. Turning recording off therefore also +stops pruning; existing rows stay until you delete them or turn recording back +on. diff --git a/docs/administration/config-cheat-sheet.md b/docs/administration/config-cheat-sheet.md index e866eca0..53a9deda 100644 --- a/docs/administration/config-cheat-sheet.md +++ b/docs/administration/config-cheat-sheet.md @@ -656,6 +656,11 @@ And the following unique queues: - CIDR list: `1.2.3.0/8` for IPv4 and `2001:db8::/32` for IPv6 - Wildcard hosts: `*.mydomain.com`, `192.168.100.*` +## Audit (`audit`) + +- `RECORD_OUTPUT`: **disabled**: Where security-relevant events are recorded. `disabled` records nothing. `database` writes events to the `audit_event` table and shows them in the admin, organization, repository and user settings. Invalid values fall back to `disabled`. See [Audit Logging](audit-logging.md). +- `RETENTION_DAYS`: **30**: Days to keep recorded events. `0` keeps them forever. Pruning is done by `cron.delete_old_audit_events`. That task is only registered while `RECORD_OUTPUT` records events and `RETENTION_DAYS` is greater than `0`. + ## Camo (`camo`) - `ENABLED`: **false**: Enable media proxy, we support images only at the moment. @@ -1201,6 +1206,16 @@ Synchronize external user data (only LDAP user synchronization is supported) - `SCHEDULE`: **@every 168h**: Cron syntax to set how often to check. - `OLDER_THAN`: **8760h**: any action older than this expression will be deleted from database, suggest using `8760h` (1 year) because that's the max length of heatmap. +#### Cron - Delete old audit events (`cron.delete_old_audit_events`) + +Deletes audit events older than the retention period. The task is only registered when `[audit].RECORD_OUTPUT` records events and `[audit].RETENTION_DAYS` is greater than `0`. See [Audit Logging](audit-logging.md). + +- `ENABLED`: **true**: Enable service. +- `RUN_AT_START`: **false**: Run tasks at start up time (if ENABLED). +- `NOTICE_ON_SUCCESS`: **false**: Set to true to switch on success notices. +- `SCHEDULE`: **@every 24h**: Cron syntax to set how often to check. +- `OLDER_THAN`: **720h**: any audit event older than this expression will be deleted from the database. Defaults to `[audit].RETENTION_DAYS`. + #### Cron - Check for new Gitea versions (`cron.update_checker`) - `ENABLED`: **true**: Enable service. diff --git a/docs/administration/logging-config.md b/docs/administration/logging-config.md index 4f9991cb..5696792e 100644 --- a/docs/administration/logging-config.md +++ b/docs/administration/logging-config.md @@ -16,6 +16,8 @@ The logging configuration of Gitea mainly consists of 3 types of components: There is a fully functional log output by default, so it is not necessary to define one. +Security-relevant events (repository transfers, token changes, impersonation, and similar) are recorded separately. See [Audit Logging](audit-logging.md). + ## Collecting Logs for Help To collect logs for help and issue report, see [Support Options](help/support.md). diff --git a/docs/index.md b/docs/index.md index 15879749..37c33364 100644 --- a/docs/index.md +++ b/docs/index.md @@ -43,7 +43,7 @@ You can try it out using [the online demo](https://demo.gitea.com). - **Security** - Gitea places a strong emphasis on security, offering features such as user permission management, access control lists, and more to ensure the security of code and data. + Gitea places a strong emphasis on security, offering features such as user permission management, access control lists, [audit logging](administration/audit-logging.md), and more to ensure the security of code and data. - **Code Review** diff --git a/docs/installation/comparison.md b/docs/installation/comparison.md index 8ec1fb3d..3dc87205 100644 --- a/docs/installation/comparison.md +++ b/docs/installation/comparison.md @@ -34,6 +34,7 @@ _Symbols used in table:_ | Telemetry | **✘** | ✓ | ✓ | ✓ | ✓ | ✘ | ✘ | | Third-party render tool support | ✓ | ✘ | ✘ | ✘ | ✓ | ✘ | ✘ | | WebAuthn (2FA) | ✓ | ✓ | ✓ | ✓ | ✓ | ✘ | ✓ | +| Audit log | ✓ | ✓ | ⁄ | ✓ | ✓ | ? | ? | | Extensive API | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | Built-in Package/Container Registry | ✓ | ✓ | ✓ | ✓ | ✘ | ✘ | ✘ | | Sync commits to an external repo (push mirror) | ✓ | ✘ | ✓ | ✓ | ✘ | ✓ | ✓ | From c5fdf2eb18a44b3d2d9c4fefaaed2e31b5633521 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Sun, 20 Sep 2026 16:46:22 +0000 Subject: [PATCH 17/22] docs: use the maintained main-nightly docker tags (#550) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes https://github.com/go-gitea/gitea/issues/39310 The docker install pages tell readers to use `:nightly` / `:nightless-rootless` for the latest development version, but those tags are no longer published — the registry only carries `main-nightly` and `main-nightly-rootless` (plus the per-release-branch `1.x-nightly` tags): ``` $ curl -s https://docker.gitea.com/v2/gitea/tags/list?n=1000 | tr ',' '\n' | grep -E '"(main-)?nightly(-rootless)?"' "main-nightly" "main-nightly-rootless" ``` Anyone who followed the rootless page has been pinned to an image that has not been rebuilt since 2025-08-23. Changes: - point the docker and rootless docker install pages at `:main-nightly` / `:main-nightly-rootless`, in English and in the zh-cn/zh-tw translations - use `1.27-nightly` instead of the long gone `1.16-nightly` as the release branch example (the oldest one still published is `1.19-nightly`) - fix the zh-cn/zh-tw claim that `:latest` installs a development version, and mention the nightly tags there the way the English page does - render `@dockerVersion@` as `main-nightly` for the next version, so the compose snippets on the unreleased docs no longer reference `gitea:nightly` Not touched: the 1.22–1.26 versioned docs carry the same stale tag, but those versions are already out of maintenance — happy to include them if preferred. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Preview: https://pr-550.docs-gitea-com.pages.dev --------- Co-authored-by: bircni Reviewed-on: https://gitea.com/gitea/docs/pulls/550 Reviewed-by: silverwind <2021+silverwind@noreply.gitea.com> Co-authored-by: Lunny Xiao --- docs/installation/with-docker-rootless.md | 2 +- docs/installation/with-docker.md | 2 +- .../current/installation/with-docker-rootless.md | 2 +- .../current/installation/with-docker.md | 2 +- .../version-1.27/installation/with-docker-rootless.md | 2 +- .../version-1.27/installation/with-docker.md | 2 +- .../current/installation/with-docker-rootless.md | 2 +- .../current/installation/with-docker.md | 2 +- .../version-1.27/installation/with-docker-rootless.md | 2 +- .../version-1.27/installation/with-docker.md | 2 +- packages/content-loader/src/products.ts | 2 +- .../version-1.27/installation/with-docker-rootless.md | 2 +- versioned_docs/version-1.27/installation/with-docker.md | 2 +- 13 files changed, 13 insertions(+), 13 deletions(-) diff --git a/docs/installation/with-docker-rootless.md b/docs/installation/with-docker-rootless.md index d2bfc0e6..2d5e7a03 100644 --- a/docs/installation/with-docker-rootless.md +++ b/docs/installation/with-docker-rootless.md @@ -66,7 +66,7 @@ server-1 | 2026-03-11T12:57:50.796198843Z /var/lib/gitea/git is not writable server-1 | 2026-03-11T12:57:50.796235667Z docker setup failed ``` -For a stable release you could use `:latest-rootless`, `:1-rootless` or specify a certain release like `:@dockerVersion@-rootless`, but if you'd like to use the latest development version then `:nightly-rootless` would be an appropriate tag. If you'd like to run the latest commit from a release branch you can use the `:1.x-nightly-rootless` tag, where x is the minor version of Gitea. (e.g. `:1.16-nightly-rootless`) +For a stable release you could use `:latest-rootless`, `:1-rootless` or specify a certain release like `:@dockerVersion@-rootless`, but if you'd like to use the latest development version then `:main-nightly-rootless` would be an appropriate tag. If you'd like to run the latest commit from a release branch you can use the `:1.x-nightly-rootless` tag, where x is the minor version of Gitea. (e.g. `:1.27-nightly-rootless`) ## Named volumes diff --git a/docs/installation/with-docker.md b/docs/installation/with-docker.md index c3cf946c..895e6797 100644 --- a/docs/installation/with-docker.md +++ b/docs/installation/with-docker.md @@ -30,7 +30,7 @@ image as a service. Since there is no database available, one can be initialized Create a directory like `gitea` and paste the following content into a file named `docker-compose.yml`. Note that the volume should be owned by the user/group with the UID/GID specified in the config file. If you don't give the volume correct permissions, the container may not start. -For a stable release you can use `:latest`, `:1` or specify a certain release like `:@dockerVersion@`, but if you'd like to use the latest development version of Gitea then you could use the `:nightly` tag. If you'd like to run the latest commit from a release branch you can use the `:1.x-nightly` tag, where x is the minor version of Gitea. (e.g. `:1.16-nightly`) +For a stable release you can use `:latest`, `:1` or specify a certain release like `:@dockerVersion@`, but if you'd like to use the latest development version of Gitea then you could use the `:main-nightly` tag. If you'd like to run the latest commit from a release branch you can use the `:1.x-nightly` tag, where x is the minor version of Gitea. (e.g. `:1.27-nightly`) ```yaml networks: diff --git a/i18n/zh-cn/docusaurus-plugin-content-docs/current/installation/with-docker-rootless.md b/i18n/zh-cn/docusaurus-plugin-content-docs/current/installation/with-docker-rootless.md index be04d7e4..0823127d 100644 --- a/i18n/zh-cn/docusaurus-plugin-content-docs/current/installation/with-docker-rootless.md +++ b/i18n/zh-cn/docusaurus-plugin-content-docs/current/installation/with-docker-rootless.md @@ -53,7 +53,7 @@ sudo chown 1000:1000 config/ data/ > 如果未为卷设置正确的权限,容器可能无法启动。 -对于稳定版本,您可以使用 `:latest-rootless`、`:1-rootless`,或指定特定的版本,如: `@dockerVersion@-rootless`。如果您想使用最新的开发版本,则可以使用 `:dev-rootless` 标签。如果您想运行发布分支的最新提交,可以使用 `:1.x-dev-rootless` 标签,其中 x 是 Gitea 的次要版本号(例如:`1.16-dev-rootless`)。 +对于稳定版本,您可以使用 `:latest-rootless`、`:1-rootless`,或指定特定的版本,如: `@dockerVersion@-rootless`。如果您想使用最新的开发版本,则可以使用 `:main-nightly-rootless` 标签。如果您想运行发布分支的最新提交,可以使用 `:1.x-nightly-rootless` 标签,其中 x 是 Gitea 的次要版本号(例如:`1.27-nightly-rootless`)。 ## 自定义端口 diff --git a/i18n/zh-cn/docusaurus-plugin-content-docs/current/installation/with-docker.md b/i18n/zh-cn/docusaurus-plugin-content-docs/current/installation/with-docker.md index 06bdc285..812d73cb 100644 --- a/i18n/zh-cn/docusaurus-plugin-content-docs/current/installation/with-docker.md +++ b/i18n/zh-cn/docusaurus-plugin-content-docs/current/installation/with-docker.md @@ -14,7 +14,7 @@ Gitea 在其 Docker Hub 组织内提供自动更新的 Docker 镜像。可以始 ## 基本 -最简单的设置只是创建一个卷和一个网络,然后将 `docker.gitea.com/gitea:latest` 镜像作为服务启动。由于没有可用的数据库,因此可以使用 SQLite3 初始化数据库。创建一个类似 `gitea` 的目录,并将以下内容粘贴到名为 `docker-compose.yml` 的文件中。请注意,该卷应由配置文件中指定的 UID/GID 的用户/组拥有。如果您不授予卷正确的权限,则容器可能无法启动。另请注意,标签 `:latest` 将安装当前的开发版本。对于稳定的发行版,您可以使用 `:1` 或指定某个发行版,例如 `@dockerVersion@`。 +最简单的设置只是创建一个卷和一个网络,然后将 `docker.gitea.com/gitea:latest` 镜像作为服务启动。由于没有可用的数据库,因此可以使用 SQLite3 初始化数据库。创建一个类似 `gitea` 的目录,并将以下内容粘贴到名为 `docker-compose.yml` 的文件中。请注意,该卷应由配置文件中指定的 UID/GID 的用户/组拥有。如果您不授予卷正确的权限,则容器可能无法启动。另请注意,标签 `:latest` 安装的是最新的稳定版本。对于稳定的发行版,您也可以使用 `:1` 或指定某个发行版,例如 `@dockerVersion@`。如果您想使用最新的开发版本,则可以使用 `:main-nightly` 标签;如果您想运行发布分支的最新提交,可以使用 `:1.x-nightly` 标签,其中 x 是 Gitea 的次要版本号(例如:`1.27-nightly`)。 ```yaml version: "3" diff --git a/i18n/zh-cn/docusaurus-plugin-content-docs/version-1.27/installation/with-docker-rootless.md b/i18n/zh-cn/docusaurus-plugin-content-docs/version-1.27/installation/with-docker-rootless.md index be04d7e4..0823127d 100644 --- a/i18n/zh-cn/docusaurus-plugin-content-docs/version-1.27/installation/with-docker-rootless.md +++ b/i18n/zh-cn/docusaurus-plugin-content-docs/version-1.27/installation/with-docker-rootless.md @@ -53,7 +53,7 @@ sudo chown 1000:1000 config/ data/ > 如果未为卷设置正确的权限,容器可能无法启动。 -对于稳定版本,您可以使用 `:latest-rootless`、`:1-rootless`,或指定特定的版本,如: `@dockerVersion@-rootless`。如果您想使用最新的开发版本,则可以使用 `:dev-rootless` 标签。如果您想运行发布分支的最新提交,可以使用 `:1.x-dev-rootless` 标签,其中 x 是 Gitea 的次要版本号(例如:`1.16-dev-rootless`)。 +对于稳定版本,您可以使用 `:latest-rootless`、`:1-rootless`,或指定特定的版本,如: `@dockerVersion@-rootless`。如果您想使用最新的开发版本,则可以使用 `:main-nightly-rootless` 标签。如果您想运行发布分支的最新提交,可以使用 `:1.x-nightly-rootless` 标签,其中 x 是 Gitea 的次要版本号(例如:`1.27-nightly-rootless`)。 ## 自定义端口 diff --git a/i18n/zh-cn/docusaurus-plugin-content-docs/version-1.27/installation/with-docker.md b/i18n/zh-cn/docusaurus-plugin-content-docs/version-1.27/installation/with-docker.md index 06bdc285..812d73cb 100644 --- a/i18n/zh-cn/docusaurus-plugin-content-docs/version-1.27/installation/with-docker.md +++ b/i18n/zh-cn/docusaurus-plugin-content-docs/version-1.27/installation/with-docker.md @@ -14,7 +14,7 @@ Gitea 在其 Docker Hub 组织内提供自动更新的 Docker 镜像。可以始 ## 基本 -最简单的设置只是创建一个卷和一个网络,然后将 `docker.gitea.com/gitea:latest` 镜像作为服务启动。由于没有可用的数据库,因此可以使用 SQLite3 初始化数据库。创建一个类似 `gitea` 的目录,并将以下内容粘贴到名为 `docker-compose.yml` 的文件中。请注意,该卷应由配置文件中指定的 UID/GID 的用户/组拥有。如果您不授予卷正确的权限,则容器可能无法启动。另请注意,标签 `:latest` 将安装当前的开发版本。对于稳定的发行版,您可以使用 `:1` 或指定某个发行版,例如 `@dockerVersion@`。 +最简单的设置只是创建一个卷和一个网络,然后将 `docker.gitea.com/gitea:latest` 镜像作为服务启动。由于没有可用的数据库,因此可以使用 SQLite3 初始化数据库。创建一个类似 `gitea` 的目录,并将以下内容粘贴到名为 `docker-compose.yml` 的文件中。请注意,该卷应由配置文件中指定的 UID/GID 的用户/组拥有。如果您不授予卷正确的权限,则容器可能无法启动。另请注意,标签 `:latest` 安装的是最新的稳定版本。对于稳定的发行版,您也可以使用 `:1` 或指定某个发行版,例如 `@dockerVersion@`。如果您想使用最新的开发版本,则可以使用 `:main-nightly` 标签;如果您想运行发布分支的最新提交,可以使用 `:1.x-nightly` 标签,其中 x 是 Gitea 的次要版本号(例如:`1.27-nightly`)。 ```yaml version: "3" diff --git a/i18n/zh-tw/docusaurus-plugin-content-docs/current/installation/with-docker-rootless.md b/i18n/zh-tw/docusaurus-plugin-content-docs/current/installation/with-docker-rootless.md index 42f7e9c3..15a99fa6 100644 --- a/i18n/zh-tw/docusaurus-plugin-content-docs/current/installation/with-docker-rootless.md +++ b/i18n/zh-tw/docusaurus-plugin-content-docs/current/installation/with-docker-rootless.md @@ -53,7 +53,7 @@ sudo chown 1000:1000 config/ data/ > 如果未為卷設定正確的權限,容器可能無法啟動。 -對於穩定版本,您可以使用 `:latest-rootless`、`:1-rootless`,或指定特定的版本,如: `@dockerVersion@-rootless`。如果您想使用最新的開發版本,則可以使用 `:dev-rootless` 標籤。如果您想運行發佈分支的最新提交,可以使用 `:1.x-dev-rootless` 標籤,其中 x 是 Gitea 的次要版本號(例如:`1.16-dev-rootless`)。 +對於穩定版本,您可以使用 `:latest-rootless`、`:1-rootless`,或指定特定的版本,如: `@dockerVersion@-rootless`。如果您想使用最新的開發版本,則可以使用 `:main-nightly-rootless` 標籤。如果您想運行發佈分支的最新提交,可以使用 `:1.x-nightly-rootless` 標籤,其中 x 是 Gitea 的次要版本號(例如:`1.27-nightly-rootless`)。 ## 自訂端口 diff --git a/i18n/zh-tw/docusaurus-plugin-content-docs/current/installation/with-docker.md b/i18n/zh-tw/docusaurus-plugin-content-docs/current/installation/with-docker.md index 189a7840..2faec3bf 100644 --- a/i18n/zh-tw/docusaurus-plugin-content-docs/current/installation/with-docker.md +++ b/i18n/zh-tw/docusaurus-plugin-content-docs/current/installation/with-docker.md @@ -14,7 +14,7 @@ Gitea 在其 Docker Hub 組織內提供自動更新的 Docker 鏡像。可以始 ## 基本 -最簡單的設定只是建立一個卷和一個網路,然後將 `docker.gitea.com/gitea:latest` 鏡像作為服務啟動。由於沒有可用的資料庫,因此可以使用 SQLite3 初始化資料庫。建立一個類似 `gitea` 的目錄,並將以下內容粘貼到名為 `docker-compose.yml` 的文件中。請注意,該卷應由設定文件中指定的 UID/GID 的使用者/組擁有。如果您不授予卷正確的權限,則容器可能無法啟動。另請注意,標籤 `:latest` 將安裝當前的開發版本。對於穩定的發行版,您可以使用 `:1` 或指定某個發行版,例如 `@dockerVersion@`。 +最簡單的設定只是建立一個卷和一個網路,然後將 `docker.gitea.com/gitea:latest` 鏡像作為服務啟動。由於沒有可用的資料庫,因此可以使用 SQLite3 初始化資料庫。建立一個類似 `gitea` 的目錄,並將以下內容粘貼到名為 `docker-compose.yml` 的文件中。請注意,該卷應由設定文件中指定的 UID/GID 的使用者/組擁有。如果您不授予卷正確的權限,則容器可能無法啟動。另請注意,標籤 `:latest` 安裝的是最新的穩定版本。對於穩定的發行版,您也可以使用 `:1` 或指定某個發行版,例如 `@dockerVersion@`。如果您想使用最新的開發版本,則可以使用 `:main-nightly` 標籤;如果您想運行發佈分支的最新提交,可以使用 `:1.x-nightly` 標籤,其中 x 是 Gitea 的次要版本號(例如:`1.27-nightly`)。 ```yaml version: "3" diff --git a/i18n/zh-tw/docusaurus-plugin-content-docs/version-1.27/installation/with-docker-rootless.md b/i18n/zh-tw/docusaurus-plugin-content-docs/version-1.27/installation/with-docker-rootless.md index 42f7e9c3..15a99fa6 100644 --- a/i18n/zh-tw/docusaurus-plugin-content-docs/version-1.27/installation/with-docker-rootless.md +++ b/i18n/zh-tw/docusaurus-plugin-content-docs/version-1.27/installation/with-docker-rootless.md @@ -53,7 +53,7 @@ sudo chown 1000:1000 config/ data/ > 如果未為卷設定正確的權限,容器可能無法啟動。 -對於穩定版本,您可以使用 `:latest-rootless`、`:1-rootless`,或指定特定的版本,如: `@dockerVersion@-rootless`。如果您想使用最新的開發版本,則可以使用 `:dev-rootless` 標籤。如果您想運行發佈分支的最新提交,可以使用 `:1.x-dev-rootless` 標籤,其中 x 是 Gitea 的次要版本號(例如:`1.16-dev-rootless`)。 +對於穩定版本,您可以使用 `:latest-rootless`、`:1-rootless`,或指定特定的版本,如: `@dockerVersion@-rootless`。如果您想使用最新的開發版本,則可以使用 `:main-nightly-rootless` 標籤。如果您想運行發佈分支的最新提交,可以使用 `:1.x-nightly-rootless` 標籤,其中 x 是 Gitea 的次要版本號(例如:`1.27-nightly-rootless`)。 ## 自訂端口 diff --git a/i18n/zh-tw/docusaurus-plugin-content-docs/version-1.27/installation/with-docker.md b/i18n/zh-tw/docusaurus-plugin-content-docs/version-1.27/installation/with-docker.md index 189a7840..2faec3bf 100644 --- a/i18n/zh-tw/docusaurus-plugin-content-docs/version-1.27/installation/with-docker.md +++ b/i18n/zh-tw/docusaurus-plugin-content-docs/version-1.27/installation/with-docker.md @@ -14,7 +14,7 @@ Gitea 在其 Docker Hub 組織內提供自動更新的 Docker 鏡像。可以始 ## 基本 -最簡單的設定只是建立一個卷和一個網路,然後將 `docker.gitea.com/gitea:latest` 鏡像作為服務啟動。由於沒有可用的資料庫,因此可以使用 SQLite3 初始化資料庫。建立一個類似 `gitea` 的目錄,並將以下內容粘貼到名為 `docker-compose.yml` 的文件中。請注意,該卷應由設定文件中指定的 UID/GID 的使用者/組擁有。如果您不授予卷正確的權限,則容器可能無法啟動。另請注意,標籤 `:latest` 將安裝當前的開發版本。對於穩定的發行版,您可以使用 `:1` 或指定某個發行版,例如 `@dockerVersion@`。 +最簡單的設定只是建立一個卷和一個網路,然後將 `docker.gitea.com/gitea:latest` 鏡像作為服務啟動。由於沒有可用的資料庫,因此可以使用 SQLite3 初始化資料庫。建立一個類似 `gitea` 的目錄,並將以下內容粘貼到名為 `docker-compose.yml` 的文件中。請注意,該卷應由設定文件中指定的 UID/GID 的使用者/組擁有。如果您不授予卷正確的權限,則容器可能無法啟動。另請注意,標籤 `:latest` 安裝的是最新的穩定版本。對於穩定的發行版,您也可以使用 `:1` 或指定某個發行版,例如 `@dockerVersion@`。如果您想使用最新的開發版本,則可以使用 `:main-nightly` 標籤;如果您想運行發佈分支的最新提交,可以使用 `:1.x-nightly` 標籤,其中 x 是 Gitea 的次要版本號(例如:`1.27-nightly`)。 ```yaml version: "3" diff --git a/packages/content-loader/src/products.ts b/packages/content-loader/src/products.ts index d283bde8..c6fa1922 100644 --- a/packages/content-loader/src/products.ts +++ b/packages/content-loader/src/products.ts @@ -82,7 +82,7 @@ const variables: Record = { version: 'main-nightly', sourceVersion: 'main', sourceBranch: 'main', - dockerVersion: 'nightly', + dockerVersion: 'main-nightly', displayVersion: '1.28-dev', }, '1.27': { diff --git a/versioned_docs/version-1.27/installation/with-docker-rootless.md b/versioned_docs/version-1.27/installation/with-docker-rootless.md index d2bfc0e6..2d5e7a03 100644 --- a/versioned_docs/version-1.27/installation/with-docker-rootless.md +++ b/versioned_docs/version-1.27/installation/with-docker-rootless.md @@ -66,7 +66,7 @@ server-1 | 2026-03-11T12:57:50.796198843Z /var/lib/gitea/git is not writable server-1 | 2026-03-11T12:57:50.796235667Z docker setup failed ``` -For a stable release you could use `:latest-rootless`, `:1-rootless` or specify a certain release like `:@dockerVersion@-rootless`, but if you'd like to use the latest development version then `:nightly-rootless` would be an appropriate tag. If you'd like to run the latest commit from a release branch you can use the `:1.x-nightly-rootless` tag, where x is the minor version of Gitea. (e.g. `:1.16-nightly-rootless`) +For a stable release you could use `:latest-rootless`, `:1-rootless` or specify a certain release like `:@dockerVersion@-rootless`, but if you'd like to use the latest development version then `:main-nightly-rootless` would be an appropriate tag. If you'd like to run the latest commit from a release branch you can use the `:1.x-nightly-rootless` tag, where x is the minor version of Gitea. (e.g. `:1.27-nightly-rootless`) ## Named volumes diff --git a/versioned_docs/version-1.27/installation/with-docker.md b/versioned_docs/version-1.27/installation/with-docker.md index 3bf86067..46ac850f 100644 --- a/versioned_docs/version-1.27/installation/with-docker.md +++ b/versioned_docs/version-1.27/installation/with-docker.md @@ -30,7 +30,7 @@ image as a service. Since there is no database available, one can be initialized Create a directory like `gitea` and paste the following content into a file named `docker-compose.yml`. Note that the volume should be owned by the user/group with the UID/GID specified in the config file. If you don't give the volume correct permissions, the container may not start. -For a stable release you can use `:latest`, `:1` or specify a certain release like `:@dockerVersion@`, but if you'd like to use the latest development version of Gitea then you could use the `:nightly` tag. If you'd like to run the latest commit from a release branch you can use the `:1.x-nightly` tag, where x is the minor version of Gitea. (e.g. `:1.16-nightly`) +For a stable release you can use `:latest`, `:1` or specify a certain release like `:@dockerVersion@`, but if you'd like to use the latest development version of Gitea then you could use the `:main-nightly` tag. If you'd like to run the latest commit from a release branch you can use the `:1.x-nightly` tag, where x is the minor version of Gitea. (e.g. `:1.27-nightly`) ```yaml networks: From f95a3347778fa36d184dc6f36c0815c48c005d47 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Mon, 21 Sep 2026 17:20:52 +0000 Subject: [PATCH 18/22] chore(deps): update dependencies (#554) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [@astrojs/starlight](https://starlight.astro.build) ([source](https://github.com/withastro/starlight/tree/HEAD/packages/starlight)) | [`0.42.0` → `0.42.1`](https://renovatebot.com/diffs/npm/@astrojs%2fstarlight/0.42.0/0.42.1) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@astrojs%2fstarlight/0.42.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@astrojs%2fstarlight/0.42.0/0.42.1?slim=true) | | [pnpm](https://github.com/pnpm/pnpm/tree/main/pnpm) ([source](https://github.com/pnpm/pnpm/tree/HEAD/pnpm/npm/pnpm)) | [`12.4.0` → `12.4.2`](https://renovatebot.com/diffs/npm/pnpm/12.4.0/12.4.2) | ![age](https://developer.mend.io/api/mc/badges/age/npm/pnpm/12.4.2?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/pnpm/12.4.0/12.4.2?slim=true) | | [yaml](https://eemeli.org/yaml/) ([source](https://github.com/eemeli/yaml)) | [`2.9.0` → `2.9.1`](https://renovatebot.com/diffs/npm/yaml/2.9.0/2.9.1) | ![age](https://developer.mend.io/api/mc/badges/age/npm/yaml/2.9.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/yaml/2.9.0/2.9.1?slim=true) | --- ### Release Notes
withastro/starlight (@​astrojs/starlight) ### [`v0.42.1`](https://github.com/withastro/starlight/blob/HEAD/packages/starlight/CHANGELOG.md#0421) [Compare Source](https://github.com/withastro/starlight/compare/@astrojs/starlight@0.42.0...@astrojs/starlight@0.42.1) ##### Patch Changes - [#​4198](https://github.com/withastro/starlight/pull/4198) [`96a44d4`](https://github.com/withastro/starlight/commit/96a44d4f296b512febc6e631a587103ec5297872) Thanks [@​mayank99](https://github.com/mayank99)! - Removes the `popover` attribute from the sidebar pane on desktop viewports. This ensures the desktop sidebar doesn't stay in a "hidden" popover visibility state.
pnpm/pnpm (pnpm) ### [`v12.4.2`](https://github.com/pnpm/pnpm/releases/tag/v12.4.2): pnpm 12.4.2 [Compare Source](https://github.com/pnpm/pnpm/compare/v12.4.1...v12.4.2) pnpm 12.4.2 includes security fixes for executable shims and GitHub Actions links, more reliable installs, faster peer dependency checks in workspaces, and Python lockfiles that work across compatible targets. #### Patch Changes ##### Security - Dependency executables can no longer take over another package's POSIX bin shim through its shell helpers. Reinstall dependencies to replace existing shims [#​14837](https://github.com/pnpm/pnpm/issues/14837). On Cygwin, MSYS2, and WSL, shims still use `PATH` for Windows path conversion, so dependency executables can still redirect them there. - GitHub Actions homepage links no longer expose server credentials. GitHub server URLs now require HTTPS, with HTTP allowed only for loopback hosts. ##### Installing packages - pnpm no longer crashes at startup on FreeBSD and other Unix-like platforms. Platforms other than Windows and macOS use `~/.local/share/pnpm/store` by default [#​14859](https://github.com/pnpm/pnpm/issues/14859). - `pnpm install` on Windows no longer fails with `ERR_PNPM_PACKAGE_MANAGER_REMOVE_MODULES_DIR` when clearing `node_modules` containing linked dependencies, such as when changing `nodeLinker` [#​14790](https://github.com/pnpm/pnpm/issues/14790). - `pnpm install ` now accepts `--prod` and `--dev`, including `--prod=false` [#​14868](https://github.com/pnpm/pnpm/issues/14868). - `pnpm install` and `pnpm update` now honor `--ignore-workspace` in nested projects excluded from the surrounding workspace. The flag also skips that workspace's settings during the `packageManager` check [#​14809](https://github.com/pnpm/pnpm/issues/14809). - `pnpm install` on macOS no longer reuses stale files for `file:` tarball or git-hosted tarball dependencies. - `pnpm install` in a single-project directory now detects `package.json` edits made while the previous install was finishing [#​14890](https://github.com/pnpm/pnpm/issues/14890). - `pnpm install --frozen-lockfile` now removes packages no longer reachable from any project in `pnpm-lock.yaml`. This also prevents repeated lifecycle script execution and unnecessary installs before `pnpm run` and `pnpm exec` with `verifyDepsBeforeRun` [#​14891](https://github.com/pnpm/pnpm/issues/14891). ##### Resolving and updating dependencies - Node.js runtime resolution now reports network failures from unofficial-builds.nodejs.org. These failures previously omitted musl builds from `pnpm-lock.yaml`, making its contents depend on network access [#​14813](https://github.com/pnpm/pnpm/issues/14813). - `pnpm install` now rejects invalid `peerDependencies` specifiers with `ERR_PNPM_INVALID_PEER_DEPENDENCY_SPECIFICATION`. A value such as `"foo": "foo@1.0.0"` previously created a broken directory link [#​14791](https://github.com/pnpm/pnpm/issues/14791). - `pnpm deploy` now writes plain registry versions in the deployed `package.json`, without peer dependency suffixes. The lockfile retains peer bindings, and npm aliases retain their target package names [#​14873](https://github.com/pnpm/pnpm/issues/14873). - `pnpm add ` now names repositories without a `package.json` as `@owner/repo`, allowing dependencies on equally named repositories from different owners [#​14870](https://github.com/pnpm/pnpm/issues/14870). - Peer dependency resolution now deduplicates packages whose child dependency resolves an optional peer in only some workspace projects, such as `next` with `styled-jsx`'s optional `babel-plugin-macros` peer [#​14800](https://github.com/pnpm/pnpm/issues/14800). - `pnpm update` now settles the lockfile in one run when an upgrade removes the package providing an optional peer dependency [#​14895](https://github.com/pnpm/pnpm/issues/14895). - `pnpm update --no-save` now preserves override-applied specifiers for dependencies it is not updating, preventing subsequent frozen installs from failing with `ERR_PNPM_OUTDATED_LOCKFILE` [#​14836](https://github.com/pnpm/pnpm/issues/14836). - `pnpm update --no-save` now succeeds under `minimumReleaseAgeStrict` when every resolved version is old enough [#​14835](https://github.com/pnpm/pnpm/issues/14835). ##### Performance - Workspace installs and `pnpm peers check` are faster when projects depend on each other, fixing a slowdown introduced in 12.3.0. Unmet peer dependencies of workspace packages are now reported only under projects that link them directly [#​14906](https://github.com/pnpm/pnpm/issues/14906). - Hoisted installs use less memory when packages are cached. Frozen-lockfile hoisted installs on macOS are also faster when reusable package directories are cached. ##### Python projects - `pnpm install --frozen-lockfile` now reuses `pylock.toml` across compatible Python targets, including after kernel updates. Reuse requires unchanged requirements, index, and `requires-python`, compatible wheels, and a locked dependency graph matching the target's markers [#​14843](https://github.com/pnpm/pnpm/issues/14843). The lockfile's `environments` marker now includes only the interpreter version and marker variables used by the dependency graph. Without `--frozen-lockfile`, pnpm warns and resolves again when the locked graph no longer matches the target. - Python resolution no longer fails on malformed `Requires-Python` values, such as the trailing comma in `openpyxl` 3.0.x. pnpm treats these releases as declaring no interpreter range [#​14910](https://github.com/pnpm/pnpm/issues/14910). - `pnpm add pypi:...` now rejects unsupported `--save-prefix` values before editing the manifest or resolving dependencies. ##### Workspaces and scripts - Scripts listed in `syncInjectedDepsAfterScripts` no longer fail with `ERR_PNPM_INJECTED_DEPS_SYNC_READ_DIR` when the lockfile contains an injected package copy that no project depends on. - `shellEmulator` now expands `${VAR}`, `${VAR:-default}`, and `${VAR:+alternative}` in scripts [#​14814](https://github.com/pnpm/pnpm/issues/14814). - Cargo and Python project discovery now honors `!` exclusions in `pnpm-workspace.yaml` `packages`, skipping both parsing and generated source configuration for excluded projects [#​14844](https://github.com/pnpm/pnpm/issues/14844). - `pnpm --filter "./packages/{app,lib}"` now selects either alternative. Brace alternatives can nest, span path separators, and combine with other wildcards. - GitHub Actions updates now stop if an action reference changes during version resolution, and preserve unrelated workflow edits. ##### CLI and output - `pn`, `pnpx`, and `pnx` now run the pnpm installed alongside them, even when that directory is absent from `PATH` or another pnpm comes first [#​14803](https://github.com/pnpm/pnpm/issues/14803). - `pnpm --version` now reports failures to install or record a project's pinned pnpm, then prints the running CLI's version. It also honors `--store-dir` and `--store` [#​14831](https://github.com/pnpm/pnpm/issues/14831). - `pnpm self-update` no longer reinstalls the active version when it was installed by the standalone installation script [#​14823](https://github.com/pnpm/pnpm/issues/14823). - `pnpm t` and `pnpm tst` work again as aliases for `pnpm test`. - `pnpm sbom` now emits valid repository URLs in CycloneDX `externalReferences[].url` and SPDX `homepage`. Shorthands such as `vercel/ms` become `git+https` URLs, embedded credentials are removed, and invalid repository values are omitted [#​14773](https://github.com/pnpm/pnpm/issues/14773). #### Platinum Sponsors
Bit OpenAI Notion
CodeRabbit
#### Gold Sponsors
Sanity Discord Vite
SerpApi Stackblitz Workleap
Nx Latitude
### [`v12.4.1`](https://github.com/pnpm/pnpm/releases/tag/v12.4.1): pnpm 12.4.1 [Compare Source](https://github.com/pnpm/pnpm/compare/v12.4.0...v12.4.1) pnpm 12.4.1 fixes installs that failed on filesystems refusing hard links or clones, on Android, and under `nodeLinker: hoisted`. Repeat installs are faster. #### Patch Changes ##### Installing packages - `pnpm install` no longer fails with `Operation not permitted` when the filesystem refuses a hard link or a copy-on-write clone [#​14722](https://github.com/pnpm/pnpm/issues/14722). Under `packageImportMethod: auto` and `clone-or-copy`, pnpm copies the file instead. EdenFS checkouts, which have no hard links, and rootless containers, which refuse the clone syscall, both hit this. An explicit `packageImportMethod: hardlink` or `clone` still reports the error. pnpm also copies a package file whose store entry has reached the filesystem's limit on names for one file, 1024 on NTFS and 65000 on ext4. Such a file failed the install under `packageImportMethod: hardlink`, and under `auto` it stopped pnpm hard linking for the rest of the install. - `pnpm install` no longer writes a package file through a symlink left at the path it is importing to. Copying such a file overwrote whatever the link pointed at, and created that file when the link pointed nowhere. An executable package file also made the link's target executable. - Fixed `pnpm install` and `pnpm dlx` on Android. Registry requests crashed because pnpm found no system CA certificates, so pnpm uses bundled ones there [#​14777](https://github.com/pnpm/pnpm/issues/14777). Imports also failed with "Permission denied" on filesystems that deny hard links and reflinks, and now fall back to copying [#​14780](https://github.com/pnpm/pnpm/issues/14780). - `pnpm install` no longer fails with "Invalid cross-device link" while preserving a package's nested `node_modules` directory during a Docker build [#​14758](https://github.com/pnpm/pnpm/issues/14758). - `pnpm install` no longer fails on a package tarball that carries a file at the archive root, such as the `._*` entries macOS `tar` adds [#​14701](https://github.com/pnpm/pnpm/issues/14701). The file is installed at the root of the package. A `file:` tarball packed without the usual `package/` directory is now recorded under the name and version from its own `package.json`. It was recorded under the alias the dependency was given, at version 0.0.0. - Under `nodeLinker: hoisted`, `pnpm install` no longer re-imports packages that are already in place. A repeat install replaced the whole `node_modules` tree and reported `Packages: +N`. A package is still imported when its directory is missing, when its `package.json` no longer carries the installed version, when it is a `file:` dependency, and when it is patched. Lifecycle scripts no longer run again for a package left in place, and `pnpm rebuild` and a change to `allowBuilds` still reach it. - `pnpm install` now runs a dependency's build scripts again when its side-effects cache entry has no files to restore [#​14717](https://github.com/pnpm/pnpm/issues/14717). Such builds were skipped and nothing was put in their place, so a script whose whole effect lands outside its own package directory, such as a git hook installer, never took effect. pnpm no longer publishes empty artifacts to the shared side-effects cache either. ##### Resolving and linking dependencies - `pnpm install`, `pnpm add`, and `pnpm dedupe` now apply `ignoredOptionalDependencies` [#​14729](https://github.com/pnpm/pnpm/issues/14729). Matching optional dependencies are left out of the lockfile and are not installed. pnpm 12 installed them whenever it resolved dependencies from scratch. - `pnpm install` no longer links a transitive dependency to a workspace package when `linkWorkspacePackages` is `true` and the dependency is declared with a plain version range [#​14781](https://github.com/pnpm/pnpm/issues/14781). Enabling `preferWorkspacePackages` does not change this. Set `linkWorkspacePackages: deep` to link them. - `pnpm install` no longer leaves dangling dependency links in workspace packages located above the workspace root [#​14726](https://github.com/pnpm/pnpm/issues/14726). - `pnpm install` and `pnpm add` no longer leave a dangling symlink in `node_modules` when a project starts depending directly on a package that the lockfile holds only as a transitive dependency with resolved peer dependencies [#​14714](https://github.com/pnpm/pnpm/issues/14714). - `pnpm dedupe` now keeps a compatible auto-installed peer when another workspace project depends on a newer major [#​14697](https://github.com/pnpm/pnpm/issues/14697). Repeated runs alternated between compatible and incompatible peer versions. - `pnpm peers check` no longer reports a peer dependency declared as `workspace:^`, `workspace:~`, or a bare `workspace:` as unmet [#​14770](https://github.com/pnpm/pnpm/issues/14770). pnpm reported these as unmet whatever version the linked workspace project supplied. ##### Performance - Sped up repeat installs [#​14540](https://github.com/pnpm/pnpm/issues/14540). pnpm checks the store's files only for the packages it links into `node_modules`, instead of every package in the lockfile. Creating the command shims in `node_modules/.bin` makes about 1,500 fewer filesystem calls in a 76 project workspace. Installs that use the global virtual store read their slot paths from the cache directory instead of deriving them every time. Verifying a large lockfile also allocates less memory. - Sped up `pnpm install` in Cargo workspaces with many member crates. Repeated installs reuse verified Cargo checksum metadata. - Installing several packages from the same Git repository and commit now downloads the source once per install [#​14725](https://github.com/pnpm/pnpm/issues/14725). Each package still runs its prepare scripts in its own copy of the checkout. ##### Running scripts and tasks - pnpm now passes Ctrl+C on to the script or command it started and waits for it to shut down [#​14723](https://github.com/pnpm/pnpm/issues/14723). pnpm exited first, so a script that was still writing landed on the shell prompt. - `pnpm run "/pattern/" --no-bail` now lets every matched script finish after one of them fails [#​14718](https://github.com/pnpm/pnpm/issues/14718). The command exits with `ERR_PNPM_RUN_FAILED`, and its message lists the scripts that failed in the order they were selected. - `pnpm pipeline` no longer fails on a project that tracks a symlink, such as a `CLAUDE.md` pointing at `AGENTS.md` [#​14692](https://github.com/pnpm/pnpm/issues/14692). Changing a symlinked input's target invalidates that task's cache, and `pnpm pipeline --no-cache` no longer hashes task inputs. ##### Commands - `pnpm add -g`, `pnpm update -g`, and `pnpm remove -g` no longer change global bins or install directories after reading only part of an installed package group [#​13796](https://github.com/pnpm/pnpm/issues/13796). If any declared package manifest is missing, malformed, or unreadable, pnpm now fails before it activates or removes anything and leaves the existing global installation intact. - `pnpm dedupe` now processes every workspace project by default, including workspaces that keep a separate lockfile per project [#​14732](https://github.com/pnpm/pnpm/issues/14732). Workspace filters select which projects it processes, and `--fail-if-no-match` exits with an error when no project matches. - `pnpm update @​` now keeps the range operator the manifest declares [#​14745](https://github.com/pnpm/pnpm/issues/14745). Running `pnpm update react@19.3.0` on `"react": "^19.2.8"` writes `"react": "^19.3.0"`. A `jsr:` entry keeps its `jsr:` prefix, and a plain `pnpm update` now moves a `jsr:` range the way it moves an npm range. - `pnpm --filter` directory selectors now support `?` wildcards and character classes such as `[ab]`. A `*` or `?` wildcard no longer selects a directory whose name starts with a dot, as on pnpm 11. - `pnpm deploy --legacy` now prefers the dependency versions pinned in the source workspace lockfile when they still satisfy the deployed project's range [#​13857](https://github.com/pnpm/pnpm/issues/13857). - `pnpm sbom` now leaves out a package's author field when the manifest author name is empty or contains only whitespace [#​14685](https://github.com/pnpm/pnpm/issues/14685). In a filtered or split workspace run, only a project with no `author` field inherits the workspace root's author. `pnpm sbom --sbom-format spdx` now writes `creationInfo.created` with whole seconds, such as `2026-09-08T10:38:21Z` [#​14684](https://github.com/pnpm/pnpm/issues/14684). The fractional seconds it carried were rejected by strict SPDX consumers. ##### Configuration - The `updateConfig` pnpmfile hook now receives the resolved configuration, including settings that came from `.npmrc`, the command line, or a default [#​14676](https://github.com/pnpm/pnpm/issues/14676). Scoped registries are reported under `registriesByScope`, and a hook may rewrite that map to change where packages are fetched from. Registry credentials are reported under `configByUri`, as pnpm 11 reports them. An unset setting is left out rather than reported as `null`. - `pnpm audit --fix` and the `minimumReleaseAgeStrict` approval prompt now keep the comments in `minimumReleaseAgeExclude` when they append an entry to it in `pnpm-workspace.yaml`. The rest of the list is left as written, and the `trustPolicyExcludePrune` and `minimumReleaseAgeExcludePrune` cleanups keep the comments of the entries they retain. `pnpm install` and `pnpm dedupe` now run those cleanups too [#​14759](https://github.com/pnpm/pnpm/issues/14759). Only `pnpm add`, `pnpm update`, and `pnpm remove` pruned the entries that the freshly written lockfile no longer resolves. - `pnpm config set --global node-download-mirrors` no longer rejects the key [#​13611](https://github.com/pnpm/pnpm/issues/13611). The global config file already accepted `nodeDownloadMirrors`, but the command refused to write it. - `NO_PROXY` entries that start with a dot, such as `.npmjs.org`, now bypass the proxy for the domain and its subdomains [#​14686](https://github.com/pnpm/pnpm/issues/14686). - pnpm no longer creates a project `pnpm-lock.yaml` when `devEngines.packageManager.onFail` is `download` and lockfile writing is off through `lockfile: false` or `--no-lockfile` [#​14728](https://github.com/pnpm/pnpm/issues/14728). pnpm still switches to the pinned version. - pnpm now writes `node_modules/.package-map.json` only when `nodeExperimentalPackageMap` is enabled. Nothing reads the file without that setting, and an install that stops writing the map removes the one a previous install left. ##### Windows - `pnpm pipeline` no longer fails with intermittent access denied errors when concurrent tasks save their cache entries on Windows. - Windows filesystem operations now retry permission errors for up to one second [#​14682](https://github.com/pnpm/pnpm/issues/14682). A permanent permission error delayed the failure by a minute. Sharing and lock violations keep their one minute retry budget. ##### Messages and output - pnpm now warns when the root `package.json` declares a non-empty `workspaces` array and the project has no `pnpm-workspace.yaml` [#​2255](https://github.com/pnpm/pnpm/issues/2255). Such an install linked no project and said nothing about why. - `ERR_PNPM_PACKAGE_MANAGER_REMOVE_MODULES_DIR` now names the file or directory in `node_modules` that pnpm could not clean up. It reported only the underlying OS error, such as "Access is denied (os error 5)". - `pnpm --help` no longer describes pnpm as experimental. #### Platinum Sponsors
Bit OpenAI Notion
CodeRabbit
#### Gold Sponsors
Sanity Discord Vite
SerpApi Stackblitz Workleap
Nx Latitude
eemeli/yaml (yaml) ### [`v2.9.1`](https://github.com/eemeli/yaml/releases/tag/v2.9.1) [Compare Source](https://github.com/eemeli/yaml/compare/v2.9.0...v2.9.1) - Limit recursive merge aliases ([#​685](https://github.com/eemeli/yaml/issues/685), [#​713](https://github.com/eemeli/yaml/issues/713)) - Simplify line unfolding during quoted string parsing ([#​714](https://github.com/eemeli/yaml/issues/714))
--- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - Between 12:00 AM and 03:59 AM, only on Monday (`* 0-3 * * 1`) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://github.com/renovatebot/renovate). Preview: https://pr-554.docs-gitea-com.pages.dev Reviewed-on: https://gitea.com/gitea/docs/pulls/554 Reviewed-by: silverwind <2021+silverwind@noreply.gitea.com> Co-authored-by: Renovate Bot --- package.json | 2 +- packages/content-loader/package.json | 2 +- pnpm-lock.yaml | 270 +++++++++++++++++++-------- sites/docs/package.json | 2 +- 4 files changed, 196 insertions(+), 80 deletions(-) diff --git a/package.json b/package.json index 40ef98fa..d62dd050 100644 --- a/package.json +++ b/package.json @@ -13,5 +13,5 @@ "engines": { "node": ">=22" }, - "packageManager": "pnpm@12.4.0" + "packageManager": "pnpm@12.4.2" } diff --git a/packages/content-loader/package.json b/packages/content-loader/package.json index 9ea4f42b..2c1352ca 100644 --- a/packages/content-loader/package.json +++ b/packages/content-loader/package.json @@ -11,7 +11,7 @@ }, "dependencies": { "tinyglobby": "0.2.17", - "yaml": "2.9.0" + "yaml": "2.9.1" }, "peerDependencies": { "astro": "^7.0.2" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8d525f57..25a47b8a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7,153 +7,153 @@ importers: configDependencies: {} packageManagerDependencies: pnpm: - specifier: 12.4.0 - version: 12.4.0 + specifier: 12.4.2 + version: 12.4.2 packages: - '@pnpm/exe.android-arm64@12.4.0': - resolution: {integrity: sha512-sAwslzCw74OpqK2P9l39cgdrRWHSqf5wEjB58JEzeVX6wdLvaHyg9i/GeRK5Ou6PZNA3AkD4yLO3c/y7UqOf8w==} + '@pnpm/exe.android-arm64@12.4.2': + resolution: {integrity: sha512-E255MbcQ0V1577M2BV0ajWuP7KmTPYA0jqZnk3rK6Lq3kTvZWulMMb7iqRmnLsQbyWTkMEB2CfyM70loVDA8xg==} cpu: [arm64] os: [android] - '@pnpm/exe.android-x64@12.4.0': - resolution: {integrity: sha512-Ps3Gz0OrqYjuRfhzeNqcvIow6QmNrU3BSzMxJu5rUCSl7inVUUFX2gZbNL9naQsNLoorKCdxUf4N+WI9Mr1WBg==} + '@pnpm/exe.android-x64@12.4.2': + resolution: {integrity: sha512-J1pSeCUwuKxMG70ZzpWn8JzElxiEa8NN/3N0SlZRtU2xbztChaJCKF3HaBNIj9yPfeofWzJo/lwNvDDjraQuZw==} cpu: [x64] os: [android] - '@pnpm/exe.darwin-arm64@12.4.0': - resolution: {integrity: sha512-75EYiF8GuiTsnvP4cbZsviMBjohXUYtg2zjD4gdfhqxlU1y9Nj+KdEsbH4jfgB/FgyJSYPB2rqfmvvgLnRlVug==} + '@pnpm/exe.darwin-arm64@12.4.2': + resolution: {integrity: sha512-A0WDo8iErfZBXgrLseQxw8i8Y9ctUpOEl/Uu+cubnTzpD8tT9ykIB548L8YTM2WD4OS+ZOHSxy8aGZcvKq8PaQ==} cpu: [arm64] os: [darwin] - '@pnpm/exe.darwin-x64@12.4.0': - resolution: {integrity: sha512-b74TzBg8lxl0lqZImGOXpRbAGcqVKX+UMckl3wG+KH52yYHI86VBJP86HbJX30HJ/EFeC6Tgbz2E4b5hhKRvdA==} + '@pnpm/exe.darwin-x64@12.4.2': + resolution: {integrity: sha512-MSgJdovBWHcb5DEOvfPH9yNi/T5O1Xa4ess+E1ESGo/5yuty7S4JoiIjami+fsNXfnoQMlwsMUqYU4zAvBcNCw==} cpu: [x64] os: [darwin] - '@pnpm/exe.freebsd-x64@12.4.0': - resolution: {integrity: sha512-A45d6axdQIFNyNTYZAC64wh5+6LJ6dNKhNAoNMNi/EC5y9CRfv0GL3ZYDBqpkmsN9KMAkVsFWizq/Ng6xtjnhw==} + '@pnpm/exe.freebsd-x64@12.4.2': + resolution: {integrity: sha512-h2YumlQSNvgbRPv+RXwABohX65f9bOBZn+jMIt7bFDISZPCzQ+Nvpt6Awbp4ip5PwQgYxbu5iREJ1fHE39Fm8A==} cpu: [x64] os: [freebsd] - '@pnpm/exe.linux-arm64-musl@12.4.0': - resolution: {integrity: sha512-yS6DNel7twfEUoW1yka1hpQrnhRe/s1JZ1MThVfgrmNQrNaPyHxQvAihm/GtL2CM6OeMV6z5532H/W/yDjQp5g==} + '@pnpm/exe.linux-arm64-musl@12.4.2': + resolution: {integrity: sha512-LwSEtSEDTv6S51YLs3YvSkPyun/QmfMic1UGICUkPWFu6ByP43RdMlkKvmVkfGhAYCpnxO057vrmyJqtfZrPCA==} cpu: [arm64] os: [linux] libc: [musl] - '@pnpm/exe.linux-arm64@12.4.0': - resolution: {integrity: sha512-6npQUwq3D/WXbTgR4evApEKQ9ITznZ6Iz/dptcjBzA7+wSLTaYkK98Od2wsHCoPmEFb9tGtM+cvG82+wy0o9uA==} + '@pnpm/exe.linux-arm64@12.4.2': + resolution: {integrity: sha512-2dSiDXyhx+RTHsewxex8f/jVjqQXWJ2oow4kCVHEWdZKeBpgMxvZ6fHkTAUBJXgqhbKIDHvuNlZBP7gJfUWL5A==} cpu: [arm64] os: [linux] libc: [glibc] - '@pnpm/exe.linux-ppc64@12.4.0': - resolution: {integrity: sha512-7shJ4WytyvBEdjrbIDqx2gDAH7sr0HBDooTmnNQ7DlzcLeeGi7Yqir7gJjOTm6s9S1cVnT56IwmqnnwQMP1HTQ==} + '@pnpm/exe.linux-ppc64@12.4.2': + resolution: {integrity: sha512-8Itc+jQk+MTz04LS9D1RcH+VctAWmzM4l1cJQ+Sx7pAJNo7EKHdRMbC0Tok1jyQ7eEHNJZD5EleYneZqWfZM+g==} cpu: [ppc64] os: [linux] libc: [glibc] - '@pnpm/exe.linux-riscv64@12.4.0': - resolution: {integrity: sha512-q03EGUFoe/oOU/67E3sEAePr3qjFu8xrsX+WOXTodcFXfO5FondC6TPs7BSwhTiV27j3jeDP56qhJP05pXn+vw==} + '@pnpm/exe.linux-riscv64@12.4.2': + resolution: {integrity: sha512-hleOeqhTVpH+z9RVMGnxvU4ZnrkBUClWjCbHD9u6kwyqhGSpevoU1wTGish+CBRhmIgMAy9pAfFpqhbAKOKNfw==} cpu: [riscv64] os: [linux] libc: [glibc] - '@pnpm/exe.linux-s390x@12.4.0': - resolution: {integrity: sha512-GZ5YellCtNnaLe9zVj9l3avlw9CbSzExUFDh7v+tVbLfOOfkkRLpx2lsw1ytJ/nFWvxF2TO6M6Q9JDT7q8svRg==} + '@pnpm/exe.linux-s390x@12.4.2': + resolution: {integrity: sha512-LAsQRRdP9aToENR6dtcIJ9l+e1zMYOX0tQcLGpRyLPVBQcYRLlvAPcmDshsiIHQjp05SDa9FI0czX1ZQ1a7a/A==} cpu: [s390x] os: [linux] libc: [glibc] - '@pnpm/exe.linux-x64-musl@12.4.0': - resolution: {integrity: sha512-c8YyjVL39L48tRg9i3iw3d90fN6q84UjxlgWBhplcBOpzCgmglDVkPMtEAVDC+t9iobvYzs2hJnmTqLaA87MVA==} + '@pnpm/exe.linux-x64-musl@12.4.2': + resolution: {integrity: sha512-kzfzH2/0BWdTABK14Yj5a1xsdkTEQUp2eXEPNakaD9jKL025lq3hyaKHIz/gIZaPDMe/1bFFK/En4ztFlbBJxw==} cpu: [x64] os: [linux] libc: [musl] - '@pnpm/exe.linux-x64@12.4.0': - resolution: {integrity: sha512-SQVgRkcR4Xyqf8+VNbtY0rtcEnfDq48RhH30HWo2/UfqKEfle2rOMyGZOmN1DbMw4ZzG5mWYoC81O7ZqHFZcPw==} + '@pnpm/exe.linux-x64@12.4.2': + resolution: {integrity: sha512-/pbt0UVTa8NMDhzOWLQRfZ6G9ROKXlJPZtx845BqyWfc7hCrWXhTLBd70yO2y8+E+IWN3oHM1s/JsIQNGk1yvg==} cpu: [x64] os: [linux] libc: [glibc] - '@pnpm/exe.win32-arm64@12.4.0': - resolution: {integrity: sha512-ZamXPhx0X6APZJAIkcH+K9KAsKcTYwxEgOyTQ/NXE+2UHBT9bRnSQ91sBeY6ELNd58V5cmMAkXSW5xmU+2ry+w==} + '@pnpm/exe.win32-arm64@12.4.2': + resolution: {integrity: sha512-PsW19e4dAUNpZ0cS9flaxFuAmpt2dKlH/Vvi8TZ4qyJjjQzue/CEsWm+6wKVP4CJ7IT8RdL4qh+soOPWIgF2Zw==} cpu: [arm64] os: [win32] - '@pnpm/exe.win32-x64@12.4.0': - resolution: {integrity: sha512-b8bLaprnpYi/2zN0M3H9RDAHuxCP3fmV5agPPwdp9fIdjNSUkV7V/RC3L4oWwbZvVgYEjjFLx1RuJOdltoKP6g==} + '@pnpm/exe.win32-x64@12.4.2': + resolution: {integrity: sha512-+xGoeE0g55ztWvl8i5QqdmNfW3nIrTVcoQrNshEOwxthm9Ag48oXton3uxOA3/SANyz5AXexEjj2KO20NnOrEw==} cpu: [x64] os: [win32] - pnpm@12.4.0: - resolution: {integrity: sha512-N1NsJu1Aq0E0tlEeCfayfz67RWh0aPJAbKOAUnmk5coVjBkxNQrZd01qshCNcbPbrrOZQxWSlDdeTQU+jgVoXA==} + pnpm@12.4.2: + resolution: {integrity: sha512-CK3GYTGAJ1x8ntraOdzwjJxhrU5+rzMKTzRh8QKw+QdCNFTRF/mOctR/7wYWBwZE17/8lzpqV/UJCm18NosHyQ==} engines: {node: '>=18.*'} hasBin: true snapshots: - '@pnpm/exe.android-arm64@12.4.0': + '@pnpm/exe.android-arm64@12.4.2': optional: true - '@pnpm/exe.android-x64@12.4.0': + '@pnpm/exe.android-x64@12.4.2': optional: true - '@pnpm/exe.darwin-arm64@12.4.0': + '@pnpm/exe.darwin-arm64@12.4.2': optional: true - '@pnpm/exe.darwin-x64@12.4.0': + '@pnpm/exe.darwin-x64@12.4.2': optional: true - '@pnpm/exe.freebsd-x64@12.4.0': + '@pnpm/exe.freebsd-x64@12.4.2': optional: true - '@pnpm/exe.linux-arm64-musl@12.4.0': + '@pnpm/exe.linux-arm64-musl@12.4.2': optional: true - '@pnpm/exe.linux-arm64@12.4.0': + '@pnpm/exe.linux-arm64@12.4.2': optional: true - '@pnpm/exe.linux-ppc64@12.4.0': + '@pnpm/exe.linux-ppc64@12.4.2': optional: true - '@pnpm/exe.linux-riscv64@12.4.0': + '@pnpm/exe.linux-riscv64@12.4.2': optional: true - '@pnpm/exe.linux-s390x@12.4.0': + '@pnpm/exe.linux-s390x@12.4.2': optional: true - '@pnpm/exe.linux-x64-musl@12.4.0': + '@pnpm/exe.linux-x64-musl@12.4.2': optional: true - '@pnpm/exe.linux-x64@12.4.0': + '@pnpm/exe.linux-x64@12.4.2': optional: true - '@pnpm/exe.win32-arm64@12.4.0': + '@pnpm/exe.win32-arm64@12.4.2': optional: true - '@pnpm/exe.win32-x64@12.4.0': + '@pnpm/exe.win32-x64@12.4.2': optional: true - pnpm@12.4.0: + pnpm@12.4.2: optionalDependencies: - '@pnpm/exe.android-arm64': 12.4.0 - '@pnpm/exe.android-x64': 12.4.0 - '@pnpm/exe.darwin-arm64': 12.4.0 - '@pnpm/exe.darwin-x64': 12.4.0 - '@pnpm/exe.freebsd-x64': 12.4.0 - '@pnpm/exe.linux-arm64': 12.4.0 - '@pnpm/exe.linux-arm64-musl': 12.4.0 - '@pnpm/exe.linux-ppc64': 12.4.0 - '@pnpm/exe.linux-riscv64': 12.4.0 - '@pnpm/exe.linux-s390x': 12.4.0 - '@pnpm/exe.linux-x64': 12.4.0 - '@pnpm/exe.linux-x64-musl': 12.4.0 - '@pnpm/exe.win32-arm64': 12.4.0 - '@pnpm/exe.win32-x64': 12.4.0 + '@pnpm/exe.android-arm64': 12.4.2 + '@pnpm/exe.android-x64': 12.4.2 + '@pnpm/exe.darwin-arm64': 12.4.2 + '@pnpm/exe.darwin-x64': 12.4.2 + '@pnpm/exe.freebsd-x64': 12.4.2 + '@pnpm/exe.linux-arm64': 12.4.2 + '@pnpm/exe.linux-arm64-musl': 12.4.2 + '@pnpm/exe.linux-ppc64': 12.4.2 + '@pnpm/exe.linux-riscv64': 12.4.2 + '@pnpm/exe.linux-s390x': 12.4.2 + '@pnpm/exe.linux-x64': 12.4.2 + '@pnpm/exe.linux-x64-musl': 12.4.2 + '@pnpm/exe.win32-arm64': 12.4.2 + '@pnpm/exe.win32-x64': 12.4.2 --- lockfileVersion: '9.0' @@ -170,22 +170,22 @@ importers: dependencies: astro: specifier: ^7.0.2 - version: 7.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0) + version: 7.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.1) tinyglobby: specifier: 0.2.17 version: 0.2.17 yaml: - specifier: 2.9.0 - version: 2.9.0 + specifier: 2.9.1 + version: 2.9.1 sites/docs: dependencies: '@astrojs/starlight': - specifier: 0.42.0 - version: 0.42.0(astro@7.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(supports-color@7.2.0)(typescript@6.0.3) + specifier: 0.42.1 + version: 0.42.1(astro@7.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(supports-color@7.2.0)(typescript@6.0.3) '@astrojs/starlight-docsearch': specifier: 0.8.0 - version: 0.8.0(@algolia/client-search@5.56.0)(@astrojs/starlight@0.42.0(astro@7.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(supports-color@7.2.0)(typescript@6.0.3))(astro@7.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(search-insights@2.17.3) + version: 0.8.0(@algolia/client-search@5.56.0)(@astrojs/starlight@0.42.1(astro@7.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(supports-color@7.2.0)(typescript@6.0.3))(astro@7.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(search-insights@2.17.3) '@gitea-docs/content-loader': specifier: workspace:* version: link:../../packages/content-loader @@ -200,7 +200,7 @@ importers: version: 0.35.4(@types/node@24.13.3) starlight-openapi: specifier: 0.26.2 - version: 0.26.2(@astrojs/markdown-satteri@0.4.1)(@astrojs/starlight@0.42.0(astro@7.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(supports-color@7.2.0)(typescript@6.0.3))(astro@7.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(openapi-types@12.1.3) + version: 0.26.2(@astrojs/markdown-satteri@0.4.1)(@astrojs/starlight@0.42.1(astro@7.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(supports-color@7.2.0)(typescript@6.0.3))(astro@7.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(openapi-types@12.1.3) devDependencies: '@astrojs/check': specifier: 0.9.10 @@ -407,8 +407,8 @@ packages: '@astrojs/starlight': '>=0.38.0' astro: ^6.0.0 || ^7.0.0 - '@astrojs/starlight@0.42.0': - resolution: {integrity: sha512-EVsGnyGJ6rRNwGRZFYmGABo0qTQ55F7OSmfSL0VK+5lsqD+u6GWcB8tFqXETcUvP8kyn90W+QBLSL2aer9jNJQ==} + '@astrojs/starlight@0.42.1': + resolution: {integrity: sha512-ABS/A0IfbJeMbuhCKVkrAcO3EWxhpeLveFuL28+7+BQje7ZHa9OXZbUoiLXdYUhH7XFaiAQjAg44RiF2uuZPJw==} peerDependencies: '@astrojs/markdown-remark': ^7.3.0 astro: ^7.2.10 @@ -2561,6 +2561,11 @@ packages: engines: {node: '>= 14.6'} hasBin: true + yaml@2.9.1: + resolution: {integrity: sha512-3NxN8+78OdzbT7C/WjGsyfPAtJaN3FNDsWxv7Y7mcDsT/oOmgW8BpyQQFFBnvZE3j9Y2Sdz1ULFLezL7Eb2yFw==} + engines: {node: '>= 14.6'} + hasBin: true + yargs-parser@21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} @@ -2833,9 +2838,9 @@ snapshots: stream-replace-string: 2.0.0 zod: 4.6.5 - '@astrojs/starlight-docsearch@0.8.0(@algolia/client-search@5.56.0)(@astrojs/starlight@0.42.0(astro@7.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(supports-color@7.2.0)(typescript@6.0.3))(astro@7.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(search-insights@2.17.3)': + '@astrojs/starlight-docsearch@0.8.0(@algolia/client-search@5.56.0)(@astrojs/starlight@0.42.1(astro@7.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(supports-color@7.2.0)(typescript@6.0.3))(astro@7.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(search-insights@2.17.3)': dependencies: - '@astrojs/starlight': 0.42.0(astro@7.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(supports-color@7.2.0)(typescript@6.0.3) + '@astrojs/starlight': 0.42.1(astro@7.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(supports-color@7.2.0)(typescript@6.0.3) '@docsearch/css': 3.9.0 '@docsearch/js': 3.9.0(@algolia/client-search@5.56.0)(search-insights@2.17.3) astro: 7.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0) @@ -2847,7 +2852,7 @@ snapshots: - react-dom - search-insights - '@astrojs/starlight@0.42.0(astro@7.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(supports-color@7.2.0)(typescript@6.0.3)': + '@astrojs/starlight@0.42.1(astro@7.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(supports-color@7.2.0)(typescript@6.0.3)': dependencies: '@astrojs/markdown-satteri': 0.4.1 '@astrojs/mdx': 8.0.1(@astrojs/markdown-satteri@0.4.1)(astro@7.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0)) @@ -2891,7 +2896,7 @@ snapshots: '@astrojs/yaml2ts@0.2.4': dependencies: - yaml: 2.9.0 + yaml: 2.9.1 '@babel/code-frame@7.29.7': dependencies: @@ -3649,6 +3654,97 @@ snapshots: - uploadthing - yaml + astro@7.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.1): + dependencies: + '@astrojs/compiler-rs': 0.4.0(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3) + '@astrojs/internal-helpers': 0.11.0 + '@astrojs/markdown-satteri': 0.4.1 + '@astrojs/telemetry': 3.3.3 + '@capsizecss/unpack': 4.0.1 + '@clack/prompts': 1.7.0 + '@oslojs/encoding': 1.1.0 + am-i-vibing: 0.4.0 + aria-query: 5.3.2 + axobject-query: 4.1.0 + ci-info: 4.4.0 + clsx: 2.1.1 + common-ancestor-path: 2.0.0 + cookie: 2.0.1 + devalue: 5.9.0 + diff: 9.0.0 + dset: 3.1.4 + es-module-lexer: 2.3.1 + esbuild: 0.28.2 + find-proc: 0.1.0 + flattie: 1.1.1 + fontace: 0.4.1 + get-tsconfig: 5.0.0-beta.4 + github-slugger: 2.0.0 + html-escaper: 3.0.3 + http-cache-semantics: 4.2.0 + js-yaml: 4.3.1 + jsonc-parser: 3.3.1 + magic-string: 1.3.1 + magicast: 0.5.4 + mrmime: 2.0.1 + neotraverse: 1.0.1 + obug: 2.1.4 + p-limit: 7.3.1 + p-queue: 9.3.3 + package-manager-detector: 1.8.0 + piccolore: 0.1.3 + picomatch: 4.0.5 + semver: 7.8.5 + shiki: 4.4.2 + smol-toml: 1.7.1 + svgo: 4.0.2 + tinyclip: 0.1.15 + tinyexec: 1.3.0 + tinyglobby: 0.2.17 + ultrahtml: 1.7.0 + unifont: 0.7.5 + unstorage: 1.17.5 + vite: 8.2.1(@types/node@24.13.3)(esbuild@0.28.2)(yaml@2.9.1) + vitefu: 1.1.3(vite@8.2.1(@types/node@24.13.3)(esbuild@0.28.2)(yaml@2.9.1)) + xxhash-wasm: 1.1.0 + yargs-parser: 22.0.0 + zod: 4.6.5 + optionalDependencies: + sharp: 0.35.4(@types/node@24.13.3) + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@emnapi/core' + - '@emnapi/runtime' + - '@netlify/blobs' + - '@planetscale/database' + - '@types/node' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - '@vitejs/devtools' + - aws4fetch + - db0 + - idb-keyval + - ioredis + - jiti + - less + - sass + - sass-embedded + - stylus + - sugarss + - terser + - tsx + - uploadthing + - yaml + asynckit@0.4.0: {} axobject-query@4.1.0: {} @@ -4720,10 +4816,10 @@ snapshots: dependencies: through: 2.3.8 - starlight-openapi@0.26.2(@astrojs/markdown-satteri@0.4.1)(@astrojs/starlight@0.42.0(astro@7.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(supports-color@7.2.0)(typescript@6.0.3))(astro@7.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(openapi-types@12.1.3): + starlight-openapi@0.26.2(@astrojs/markdown-satteri@0.4.1)(@astrojs/starlight@0.42.1(astro@7.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(supports-color@7.2.0)(typescript@6.0.3))(astro@7.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(openapi-types@12.1.3): dependencies: '@astrojs/markdown-satteri': 0.4.1 - '@astrojs/starlight': 0.42.0(astro@7.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(supports-color@7.2.0)(typescript@6.0.3) + '@astrojs/starlight': 0.42.1(astro@7.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0))(supports-color@7.2.0)(typescript@6.0.3) '@readme/openapi-parser': 4.1.2(openapi-types@12.1.3) astro: 7.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.3)(@types/node@24.13.3)(yaml@2.9.0) github-slugger: 2.0.0 @@ -4911,10 +5007,27 @@ snapshots: fsevents: 2.3.3 yaml: 2.9.0 + vite@8.2.1(@types/node@24.13.3)(esbuild@0.28.2)(yaml@2.9.1): + dependencies: + lightningcss: 1.33.0 + picomatch: 4.0.5 + postcss: 8.5.26 + rolldown: 1.2.3 + tinyglobby: 0.2.17 + optionalDependencies: + '@types/node': 24.13.3 + esbuild: 0.28.2 + fsevents: 2.3.3 + yaml: 2.9.1 + vitefu@1.1.3(vite@8.2.1(@types/node@24.13.3)(esbuild@0.28.2)(yaml@2.9.0)): optionalDependencies: vite: 8.2.1(@types/node@24.13.3)(esbuild@0.28.2)(yaml@2.9.0) + vitefu@1.1.3(vite@8.2.1(@types/node@24.13.3)(esbuild@0.28.2)(yaml@2.9.1)): + optionalDependencies: + vite: 8.2.1(@types/node@24.13.3)(esbuild@0.28.2)(yaml@2.9.1) + volar-service-css@0.0.71(@volar/language-service@2.4.28(typescript@6.0.3)): dependencies: vscode-css-languageservice: 6.3.10 @@ -5056,7 +5169,10 @@ snapshots: yaml@2.8.3: {} - yaml@2.9.0: {} + yaml@2.9.0: + optional: true + + yaml@2.9.1: {} yargs-parser@21.1.1: {} diff --git a/sites/docs/package.json b/sites/docs/package.json index 0ca25b1f..822bec93 100644 --- a/sites/docs/package.json +++ b/sites/docs/package.json @@ -11,7 +11,7 @@ "check": "astro check" }, "dependencies": { - "@astrojs/starlight": "0.42.0", + "@astrojs/starlight": "0.42.1", "@astrojs/starlight-docsearch": "0.8.0", "@gitea-docs/content-loader": "workspace:*", "@pagefind/default-ui": "1.5.2", From b0b0c5090eaae1b3bc1f297b9f207b83eb2c148a Mon Sep 17 00:00:00 2001 From: Gitea Bot Date: Mon, 21 Sep 2026 19:51:28 +0000 Subject: [PATCH 19/22] Update the runner reference pages (#555) Automated update of the generated runner reference pages from gitea/runner (main for the develop docs, the newest stable tag for every documented series), opened by the "update runner reference" scheduled workflow. --------- Co-authored-by: Lunny Xiao Reviewed-on: https://gitea.com/gitea/docs/pulls/555 Reviewed-by: Lunny Xiao Co-authored-by: Gitea Bot --- runner-docs/reference/config-example.md | 12 +++++++----- .../version-3/reference/config-example.md | 19 +++++++++++-------- 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/runner-docs/reference/config-example.md b/runner-docs/reference/config-example.md index 53b31a66..f1c07be2 100644 --- a/runner-docs/reference/config-example.md +++ b/runner-docs/reference/config-example.md @@ -192,10 +192,11 @@ cache: # A moved tag (e.g. a re-tagged "v6") or an updated branch stays at the cached commit # until its cache entry expires or is manually removed. #offline_mode: false - # Serve the actions cache service v2 API. The actions that use it refuse any host they do not - # take for GitHub, so reaching it means editing that check out of their own bundle, put back - # after the copy into the job. That edit is made either way, this only governs the API - # advertised. A bundle that does not match is left alone. With v2, uploads need a reachable cache. + # Serve the actions cache service v2 API. The actions that use it fall back to v1 on any host + # they do not take for GitHub, so reaching it means editing that check out of their own bundle, + # put back after the copy into the job. That edit is made either way, this only governs the API + # advertised. A bundle that does not match is left alone. With v2, artifact uploads go via the + # cache server unless container jobs cannot reach its Docker network. #v2: true # How the cache server discards entries, ignored when external_server is set since that # server applies its own. Leave a setting out for its default; 0s or 0 turns the three @@ -275,7 +276,8 @@ container: #docker_timeout: 0s # Mount the workspace from a host directory instead of a Docker volume, so jobs # can bind-mount it by its own path into sibling containers (".:/app" in docker - # compose). Not needed when workflows use the GITEA_DOCKER_WORKSPACE variable. + # compose). Not needed when jobs get the Docker proxy or workflows use the + # GITEA_DOCKER_WORKSPACE variable. # The workspace parent directory must be mounted into the runner container. #bind_workdir: false # How long a job waits for a service container that declares a healthcheck to become diff --git a/runner-docs_versioned_docs/version-3/reference/config-example.md b/runner-docs_versioned_docs/version-3/reference/config-example.md index 30cf5b32..f1c07be2 100644 --- a/runner-docs_versioned_docs/version-3/reference/config-example.md +++ b/runner-docs_versioned_docs/version-3/reference/config-example.md @@ -68,11 +68,12 @@ runner: # scratch directories (left behind when a host cleanup delete stalls) older than # this duration. Setting either workdir_cleanup_age or idle_cleanup_interval to 0 # (or any non-positive value) disables stale-directory cleanup entirely, along with - # the docker network cleanup below. + # the docker network and volume cleanup below. #workdir_cleanup_age: 24h # Cadence for the idle cleanup pass. Besides the directories above, on runners that use - # docker it removes the per-job networks of jobs this runner did not live to tear down, - # which would otherwise hold a subnet of the daemon address pool until the host is rebuilt. + # docker it removes the per-job networks and volumes of jobs this runner did not live to + # tear down, which would otherwise hold a subnet of the daemon address pool and the job's + # workspace contents until the host is rebuilt. #idle_cleanup_interval: 10m # The base interval for periodic log flush to the Gitea instance. # Logs may be sent earlier if the buffer reaches log_report_batch_size @@ -191,10 +192,11 @@ cache: # A moved tag (e.g. a re-tagged "v6") or an updated branch stays at the cached commit # until its cache entry expires or is manually removed. #offline_mode: false - # Serve the actions cache service v2 API. The actions that use it refuse any host they do not - # take for GitHub, so reaching it means editing that check out of their own bundle, put back - # after the copy into the job. That edit is made either way, this only governs the API - # advertised. A bundle that does not match is left alone. With v2, uploads need a reachable cache. + # Serve the actions cache service v2 API. The actions that use it fall back to v1 on any host + # they do not take for GitHub, so reaching it means editing that check out of their own bundle, + # put back after the copy into the job. That edit is made either way, this only governs the API + # advertised. A bundle that does not match is left alone. With v2, artifact uploads go via the + # cache server unless container jobs cannot reach its Docker network. #v2: true # How the cache server discards entries, ignored when external_server is set since that # server applies its own. Leave a setting out for its default; 0s or 0 turns the three @@ -274,7 +276,8 @@ container: #docker_timeout: 0s # Mount the workspace from a host directory instead of a Docker volume, so jobs # can bind-mount it by its own path into sibling containers (".:/app" in docker - # compose). Not needed when workflows use the GITEA_DOCKER_WORKSPACE variable. + # compose). Not needed when jobs get the Docker proxy or workflows use the + # GITEA_DOCKER_WORKSPACE variable. # The workspace parent directory must be mounted into the runner container. #bind_workdir: false # How long a job waits for a service container that declares a healthcheck to become From f9124b16db6f651a640987c802dc9ee7e1c6fbf8 Mon Sep 17 00:00:00 2001 From: wxiaoguang <29147+wxiaoguang@noreply.gitea.com> Date: Thu, 24 Sep 2026 09:34:23 +0000 Subject: [PATCH 20/22] Update docs/administration/config-cheat-sheet.md (#556) Preview: https://pr-556.docs-gitea-com.pages.dev Reviewed-on: https://gitea.com/gitea/docs/pulls/556 Reviewed-by: silverwind <2021+silverwind@noreply.gitea.com> Co-authored-by: wxiaoguang <29147+wxiaoguang@noreply.gitea.com> --- docs/administration/config-cheat-sheet.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/docs/administration/config-cheat-sheet.md b/docs/administration/config-cheat-sheet.md index 53a9deda..b7346061 100644 --- a/docs/administration/config-cheat-sheet.md +++ b/docs/administration/config-cheat-sheet.md @@ -348,8 +348,7 @@ The following configuration set `Content-Type: application/vnd.android.package-a - `PROXY_PROTOCOL_TLS_BRIDGING`: **false**: When protocol is https, expect PROXY protocol headers after TLS negotiation. - `PROXY_PROTOCOL_HEADER_TIMEOUT`: **5s**: Timeout to wait for PROXY protocol header (set to 0 to have no timeout) - `PROXY_PROTOCOL_ACCEPT_UNKNOWN`: **false**: Accept PROXY protocol headers with Unknown type. -- `DOMAIN`: **localhost**: Domain name of this server. -- `ROOT_URL`: **`{PROTOCOL}://{DOMAIN}:{HTTP_PORT}/`**: +- `ROOT_URL`: **`{PROTOCOL}://localhost:{HTTP_PORT}/`**: Overwrite the automatically generated public URL. This is useful if the internal and the external URL don't match (e.g. behind a reverse proxy). - `PUBLIC_URL_DETECTION`: **`auto`**: Controls how to generate the public URL. Most instances should use the "auto" behavior, @@ -670,8 +669,8 @@ And the following unique queues: ## OpenID (`openid`) -- `ENABLE_OPENID_SIGNIN`: **true**: Allow authentication in via OpenID. -- `ENABLE_OPENID_SIGNUP`: **! DISABLE\_REGISTRATION**: Allow registering via OpenID. +- `ENABLE_OPENID_SIGNIN`: **false**: Allow authentication in via OpenID. +- `ENABLE_OPENID_SIGNUP`: **false**: Allow registering via OpenID. - `WHITELISTED_URIS`: **_empty_**: If non-empty, list of POSIX regex patterns matching OpenID URI's to permit. - `BLACKLISTED_URIS`: **_empty_**: If non-empty, list of POSIX regex patterns matching From c4caf767ad93b600add65d27703a4e71f5d49d96 Mon Sep 17 00:00:00 2001 From: silverwind <2021+silverwind@noreply.gitea.com> Date: Fri, 25 Sep 2026 02:51:09 +0000 Subject: [PATCH 21/22] docs: document `self:`, `builtin:`, `$/` and runner tracing (#553) Documents the `self:` and `builtin:` action prefixes from https://github.com/go-gitea/gitea/pull/39358, https://gitea.com/gitea/runner/pulls/1233 and https://gitea.com/gitea/runner/pulls/871, workflow-relative `$/` actions, and the runner's OpenTelemetry tracing from https://gitea.com/gitea/runner/pulls/1206. 1. Trims the action resolution and `DEFAULT_ACTIONS_URL` docs to state each fact once. 1. Drops outdated runner content from the FAQ and design pages. 1. Syncs zh-cn and zh-tw, including a port of the token permissions page they now link to. _Written by Claude._ Reviewed-on: https://gitea.com/gitea/docs/pulls/553 Reviewed-by: bircni Co-authored-by: silverwind <2021+silverwind@noreply.gitea.com> --- docs/administration/config-cheat-sheet.md | 15 +-- docs/usage/actions/comparison.md | 74 +++++----- docs/usage/actions/design.md | 8 +- docs/usage/actions/faq.md | 86 +++--------- docs/usage/actions/scoped-workflows.md | 4 +- .../administration/config-cheat-sheet.md | 15 +-- .../current/development/api-usage.md | 1 + .../current/usage/actions/comparison.md | 115 +++++++--------- .../current/usage/actions/design.md | 9 +- .../current/usage/actions/faq.md | 91 +++---------- .../current/usage/actions/scoped-workflows.md | 4 +- .../usage/actions/token-permissions.md | 126 ++++++++++++++++++ .../administration/config-cheat-sheet.md | 15 +-- .../current/usage/actions/comparison.md | 117 +++++++--------- .../current/usage/actions/design.md | 9 +- .../current/usage/actions/faq.md | 91 +++---------- .../current/usage/actions/scoped-workflows.md | 4 +- .../usage/actions/token-permissions.md | 126 ++++++++++++++++++ runner-docs/monitoring.md | 10 ++ 19 files changed, 476 insertions(+), 444 deletions(-) create mode 100644 i18n/zh-cn/docusaurus-plugin-content-docs/current/usage/actions/token-permissions.md create mode 100644 i18n/zh-tw/docusaurus-plugin-content-docs/current/usage/actions/token-permissions.md diff --git a/docs/administration/config-cheat-sheet.md b/docs/administration/config-cheat-sheet.md index b7346061..99faa6d5 100644 --- a/docs/administration/config-cheat-sheet.md +++ b/docs/administration/config-cheat-sheet.md @@ -1702,18 +1702,9 @@ PROXY_HOSTS = *.github.com - `SCOPED_WORKFLOW_DIRS`: **.gitea/scoped_workflows**: Comma-separated list of directories holding [scoped workflows](usage/actions/scoped-workflows.md) (workflows defined in a central source repository that run on other repositories). Must not overlap with `WORKFLOW_DIRS`. Leave empty so no directory is scanned for scoped workflows; none are found or run. - `MAX_RERUN_ATTEMPTS`: **50**: Maximum number of attempts a single workflow run can have (initial run + reruns). Defaults value is 50. Set any positive value that fits your workflow needs. -`DEFAULT_ACTIONS_URL` indicates where the Gitea Actions runners should find the actions with relative path. -For example, `uses: actions/checkout@v4` means `https://github.com/actions/checkout@v4` since the value of `DEFAULT_ACTIONS_URL` is `github`. -And it can be changed to `self` to make it `root_url_of_your_gitea/actions/checkout@v4`. - -Please note that using `self` is not recommended for most cases, as it could make names globally ambiguous. -Additionally, it requires you to mirror all the actions you need to your Gitea instance, which may not be worth it. -Therefore, please use `self` only if you understand what you are doing. - -In earlier versions (`<= 1.19`), `DEFAULT_ACTIONS_URL` could be set to any custom URLs like `https://gitea.com` or `http://your-git-server,https://gitea.com`, and the default value was `https://gitea.com`. -However, later updates removed those options, and now the only options are `github` and `self`, with the default value being `github`. -However, if you want to use actions from other git server, you can use a complete URL in `uses` field, it's supported by Gitea (but not GitHub). -Like `uses: https://gitea.com/actions/checkout@v4` or `uses: http://your-git-server/actions/checkout@v4`. +`DEFAULT_ACTIONS_URL` sets where runners download actions without a host. +With `github`, `uses: actions/checkout@v4` resolves to `https://github.com/actions/checkout@v4`, with `self` to `/actions/checkout@v4`. +`self` requires mirroring every action you use to your instance, so prefer naming the host per action instead: `uses: self:owner/repo@ref` for your instance, or a full URL like `uses: https://gitea.com/actions/checkout@v4` for any other host. ## Other (`other`) diff --git a/docs/usage/actions/comparison.md b/docs/usage/actions/comparison.md index 26477ce0..134f1341 100644 --- a/docs/usage/actions/comparison.md +++ b/docs/usage/actions/comparison.md @@ -6,104 +6,94 @@ sidebar_position: 120 # Compared to GitHub Actions -Even though Gitea Actions is designed to be compatible with GitHub Actions, there are some differences between them. +Gitea Actions is designed to be compatible with GitHub Actions, with the differences below. ## Additional features ### Absolute action URLs -Gitea Actions supports defining actions via absolute URL, which means that you can use actions from any git repository. -Like `uses: https://github.com/actions/checkout@v4` or `uses: http://your_gitea.com/owner/repo@branch`. +`uses:` accepts an absolute URL to any git host, e.g. `uses: https://gitea.com/actions/checkout@v4`. + +### Action prefixes + +`uses:` accepts these prefixes: + +- `self:` references your own Gitea instance, e.g. `uses: self:owner/repo@v1` or `uses: self:owner/repo/.gitea/workflows/build.yml@v1` +- `builtin:` runs an action built into Gitea Runner, which needs no download and no Node in the job image, e.g. `uses: builtin:checkout` + +`builtin:checkout` accepts the `repository`, `ref`, `token`, `path` and `fetch-depth` inputs of `actions/checkout` with the same defaults, and fails on any other input. + +### Workflow-relative actions + +`$/` references the repository and commit of the workflow, or of the enclosing composite action, e.g. `uses: $/.gitea/actions/build`. +Unlike `./`, it needs no checkout first. ### Actions written in Go -Gitea Actions supports writing actions in Go. See [Creating Go Actions](https://blog.gitea.com/creating-go-actions/). ### Support the non-standard syntax @yearly, @monthly, @weekly, @daily, @hourly on schedule -Github Actions doesn't support that. https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#schedule +`schedule` also accepts `@yearly`, `@monthly`, `@weekly`, `@daily` and `@hourly`, which [GitHub does not](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#schedule). ## Unsupported workflows syntax ### `jobs..environment` -See [Workflow syntax for GitHub Actions](https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idenvironment). - -It's ignored by Gitea Actions now. +[`jobs..environment`](https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idenvironment) is ignored. ### Complex `runs-on` -See [Workflow syntax for GitHub Actions](https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idruns-on). +[`runs-on`](https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idruns-on) supports: -Gitea Actions supports: - Static strings: `runs-on: self-hosted` - Arrays of labels: `runs-on: [linux, self-hosted]` - String expressions: `runs-on: ${{ github.event_name == 'push' && 'ubuntu-latest' || 'self-hosted' }}` - Arrays containing expressions: `runs-on: [linux, "${{ github.event_name == 'push' && 'ubuntu-latest' || 'self-hosted' }}"]` - ## Missing features ### Package repository authorization -The `GITEA_TOKEN` for a job running within a repository should be able to publish to the associated package repository (i.e. to upload OCI images). See the "packages" scope for the "default access" in [Automatic token authentication](https://docs.github.com/en/actions/security-for-github-actions/security-guides/automatic-token-authentication#permissions-for-the-github_token). - -This is not implemented in Gitea Actions now. A workaround for Gitea Actions is to use a Personal Access Token (PAT). See this [github issue and comment](https://github.com/go-gitea/gitea/issues/23642#issuecomment-2119876692) for tracking this feature. +`GITEA_TOKEN` cannot publish to the package registry of its repository, e.g. to push OCI images. +Use a personal access token instead, see [this issue](https://github.com/go-gitea/gitea/issues/23642#issuecomment-2119876692). ### Problem Matchers -Problem Matchers are a way to scan the output of actions for a specified regex pattern and surface that information prominently in the UI. -See [Problem matchers](https://github.com/actions/toolkit/blob/main/docs/problem-matchers.md). - -It's ignored by Gitea Actions now. +[Problem matchers](https://github.com/actions/toolkit/blob/main/docs/problem-matchers.md) are ignored. ### Create an error annotation -See [Creating an annotation for an error](https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions#example-creating-an-annotation-for-an-error) - -It's ignored by Gitea Actions now. +[Error annotations](https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions#example-creating-an-annotation-for-an-error) are ignored. ### Expressions -For [expressions](https://docs.github.com/en/actions/learn-github-actions/expressions), Gitea Actions supports standard GitHub functions (e.g. `success()`, `failure()`, `always()`, `cancelled()`, `format()`, `toJSON()`) and context variables (like `github`, `matrix`, `vars`, `env`). +[Expressions](https://docs.github.com/en/actions/learn-github-actions/expressions) support the standard GitHub functions and contexts. ## Missing UI features ### Pre and Post steps -Pre and Post steps don't have their own section in the job log user interface. +Pre and post steps have no section of their own in the job log. ### Services steps -Services steps don't have their own section in the job log user interface. +Service steps have no section of their own in the job log. ## Different behavior ### Job token permissions (`permissions`) -Gitea supports `permissions` and `jobs..permissions` to control the default `GITEA_TOKEN` permissions. - -The effective permissions are clamped by the repository/owner settings and are further restricted for fork pull requests and cross-repository access. -GitHub-only scopes such as `statuses`, `checks`, `deployments`, `id-token`, `security-events`, and `pages` are not supported, while Gitea-specific scopes such as `code`, `releases`, `wiki`, and `projects` are available. - +`permissions` and `jobs..permissions` control the `GITEA_TOKEN` permissions, clamped by the repository and owner settings and further restricted for fork pull requests and cross-repository access. +GitHub-only scopes like `statuses`, `checks`, `deployments`, `id-token`, `security-events` and `pages` are not supported, while Gitea adds `code`, `releases`, `wiki` and `projects`. See [Actions job token permissions](token-permissions.md). ### Downloading actions -Previously (Pre 1.21.0), `[actions].DEFAULT_ACTIONS_URL` defaulted to `https://gitea.com`. -We have since restricted this option to only allow two values (`github` and `self`). -When set to `github`, the new default, Gitea will download non-fully-qualified actions from `https://github.com`. -For example, if you use `uses: actions/checkout@v4`, it will download the checkout repository from `https://github.com/actions/checkout.git`. - -If you want to download an action from another git hoster, you can use an absolute URL, e.g. `uses: https://gitea.com/actions/checkout@v4`. - -If your Gitea instance is in an intranet or a restricted area, you can set the URL to `self` to only download actions from your own instance by default. -Of course, you can still use absolute URLs in workflows. - -More details about the `[actions].DEFAULT_ACTIONS_URL` configuration can be found in the [Configuration Cheat Sheet](../../administration/config-cheat-sheet.md#actions-actions)。 +Actions without a host, like `uses: actions/checkout@v4`, are downloaded from `https://github.com`, or from your own instance when `[actions].DEFAULT_ACTIONS_URL` is `self`. +See the [Configuration Cheat Sheet](../../administration/config-cheat-sheet.md#actions-actions). +For other sources, see [Absolute action URLs](#absolute-action-urls), [Action prefixes](#action-prefixes) and [Workflow-relative actions](#workflow-relative-actions). ### Context availability -Context availability is not checked, so you can use the env context on more places. -See [Context availability](https://docs.github.com/en/actions/learn-github-actions/contexts#context-availability). +[Context availability](https://docs.github.com/en/actions/learn-github-actions/contexts#context-availability) is not checked, so contexts like `env` work in more places. diff --git a/docs/usage/actions/design.md b/docs/usage/actions/design.md index 80a7bc18..ef0f7171 100644 --- a/docs/usage/actions/design.md +++ b/docs/usage/actions/design.md @@ -19,7 +19,7 @@ Additionally, the runner will introduce itself to Gitea and declare what kind of Earlier, we mentioned that `runs-on: ubuntu-latest` in a workflow file means that the job will be run on a runner with the `ubuntu-latest` label. But how does the runner know to run `ubuntu-latest`? The answer lies in mapping the label to an environment. -That's why when you add custom labels during registration, you will need to input some complex content like `my_custom_label:docker://centos:7`. +That's why each label of a runner names an environment, like `my_custom_label:docker://centos:7`. This means that the runner can take the job which needs to run on `my_custom_label`, and it will run it via a docker container with the image `centos:7`. Docker isn't the only option, though. @@ -34,7 +34,6 @@ So, - `my_custom_label:docker://node:18`: Run jobs labeled with `my_custom_label` using the `node:18` Docker image. - `my_custom_label:host`: Run jobs labeled with `my_custom_label` directly on the host. - `my_custom_label`: Same as `my_custom_label:host`. -- `my_custom_label:vm:ubuntu-latest`: (Example only, not implemented) Run jobs labeled with `my_custom_label` using a virtual machine with the `ubuntu-latest` ISO. ## Communication protocol @@ -43,7 +42,7 @@ However, we did not think it was a good idea to have Gitea listen on a new port. Instead, we wanted to reuse the HTTP port, which means we needed a protocol that is compatible with HTTP. We chose to use gRPC over HTTP. -We use [actions-proto-def](https://gitea.com/gitea/actions-proto-def) and [actions-proto-go](https://gitea.com/gitea/actions-proto-go) to wire them up. +The protocol is defined in [actions-proto-def](https://gitea.com/gitea/actions-proto-def), its Go code lives in [actionslib](https://gitea.com/gitea/actionslib). More information about gRPC can be found on [its website](https://grpc.io/). ## Network architecture @@ -71,7 +70,8 @@ However, if a job container tries to fetch code from localhost, it will fail bec ### Connection 3, runner to internet When you use some actions like `actions/checkout@v4`, the runner downloads the scripts, not the job containers. -By default, it downloads from [github.com](http://github.com/), so it requires access to the internet. If you configure the `DEFAULT_ACTIONS_URL` to `self`, then it will download from your Gitea instance by default. Then it will not connect to internet when downloading the action itself. +By default, it downloads them from [github.com](https://github.com/), which requires internet access. +With `DEFAULT_ACTIONS_URL` set to `self`, or with `uses: self:owner/repo@ref`, it downloads them from your Gitea instance instead. It also downloads some docker images from Docker Hub by default, which also requires internet access. However, internet access is not strictly necessary. diff --git a/docs/usage/actions/faq.md b/docs/usage/actions/faq.md index fcf1015c..435ee5e1 100644 --- a/docs/usage/actions/faq.md +++ b/docs/usage/actions/faq.md @@ -27,50 +27,24 @@ Still, this is completely optional since both options have the same effect at th ## Where will the runner download scripts when using actions such as `actions/checkout@v4`? -There are tens of thousands of [actions scripts](https://github.com/marketplace?type=actions) in GitHub, and when you write `uses: actions/checkout@v4`, it downloads the scripts from [github.com/actions/checkout](http://github.com/actions/checkout) by default. -But what if you want to use actions from other places such as gitea.com instead of GitHub? +From `https://github.com` by default, or from your own instance when `[actions].DEFAULT_ACTIONS_URL` is `self`, see the [Configuration Cheat Sheet](../../administration/config-cheat-sheet.md#actions-actions). -The good news is that you can specify the URL prefix to use actions from anywhere. -This is an extra syntax in Gitea Actions. -For example: +To use an action from elsewhere, name its host: -- `uses: https://gitea.com/xxx/xxx@xxx` -- `uses: https://github.com/xxx/xxx@xxx` -- `uses: http://your_gitea_instance.com/xxx@xxx` - -Be careful, the `https://` or `http://` prefix is necessary! - -This is one of the differences from GitHub Actions which supports actions scripts only from GitHub. -But it should allow users much more flexibility in how they run Actions. - -Alternatively, if you want your runners to download actions from your own Gitea instance by default, you can configure it by setting `[actions].DEFAULT_ACTIONS_URL`. -See [Configuration Cheat Sheet](../../administration/config-cheat-sheet.md#actions-actions). +- `uses: https://gitea.com/owner/repo@ref` +- `uses: http://your_gitea_instance.com/owner/repo@ref` +- `uses: self:owner/repo@ref` for your own Gitea instance ## How to limit the permission of the runners? -Runners have no more permissions than simply connecting to your Gitea instance. -When any runner receives a job to run, it will temporarily gain limited permission to the repository associated with the job. -If you want to give more permissions to the runner, allowing it to access more private repositories or external systems, you can pass [secrets](usage/actions/secrets.md) to it. - -Refined permission control to Actions is a complicated job. -In the future, we will add more options to Gitea to make it more configurable, such as allowing more write access to repositories or read access to all repositories in the same organization. +Runners only connect to your Gitea instance. +For each job, a runner gets a `GITEA_TOKEN` limited to the job's repository, see [Actions job token permissions](token-permissions.md). +To give a job access to more private repositories or external systems, pass it [secrets](usage/actions/secrets.md). ## Which operating systems are supported by Gitea Runner? -We released official binaries for Linux, macOS, and Windows. -While other operating systems are theoretically supported if it is supported by golang and docker(docker mode enabled). - -One thing to note is that if you choose to run jobs directly on the host instead of in job containers, the environmental differences between operating systems may cause unexpected failures. - -For example, bash is not available on Windows in most cases, while act tries to use bash to run scripts by default. -Therefore, you need to specify `powershell` as the default shell in your workflow file, see [defaults.run](https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#defaultsrun). - - -```yaml -defaults: - run: - shell: powershell -``` +Official binaries are released for Linux, macOS and Windows. +Other systems supported by Go and Docker work in theory. ## How to avoid being hacked? @@ -99,42 +73,13 @@ It is exciting to be able to reuse them. ## What if it runs on multiple labels, such as `runs-on: [label_a, label_b]`? -This is valid syntax. -It means that it should run on runners that have both the `label_a` **and** `label_b` labels, see [Workflow syntax for GitHub Actions](https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idruns-on). -Unfortunately, the runner does not work this way until v0.2.11. -As mentioned, we map labels to environments: - -- `ubuntu` → `ubuntu:22.04` -- `centos` → `centos:8` - -But we need to map label groups to environments instead, like so: - -- `[ubuntu]` → `ubuntu:22.04` -- `[with-gpu]` → `linux:with-gpu` -- `[ubuntu, with-gpu]` → `ubuntu:22.04_with-gpu` - -We also need to re-design how tasks are assigned to runners. -A runner with `ubuntu`, `centos`, or `with-gpu` does not necessarily indicate that it can accept jobs with `[centos, with-gpu]`. -Therefore, the runner should inform the Gitea instance that it can only accept jobs with `[ubuntu]`, `[centos]`, `[with-gpu]`, and `[ubuntu, with-gpu]`. -This is not a technical problem, it was just overlooked in the early design. -See [runtime.go#L65](https://gitea.com/gitea/runner/src/commit/90b8cc6a7a48f45cc28b5ef9660ebf4061fcb336/runtime/runtime.go#L65). - -Currently, the runner attempts to match everyone in the labels and uses the first match it finds. +The job runs on a runner that has all of the labels, as on [GitHub](https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idruns-on). +The runner uses the environment of the first label it has. ## What is the difference between agent labels and custom labels for a runner? -![labels](/images/usage/actions/labels.png) - -Agent labels are reported to the Gitea instance by the runner during registration. -Custom labels, on the other hand, are added manually by a Gitea administrator or owners of the organization or repository (depending on the level of the runner). - -However, the design here needs improvement, as it currently has some rough edges. -You can add a custom label such as `centos` to a registered runner, which means the runner will receive jobs with `runs-on: centos`. -However, the runner may not know which environment to use for this label, resulting in it using a default image or leading to a logical dead end. -This default may not match user expectations. -See [runtime.go#L71](https://gitea.com/gitea/runner/src/commit/90b8cc6a7a48f45cc28b5ef9660ebf4061fcb336/runtime/runtime.go#L71). - -In the meantime, we suggest that you re-register your runner if you want to change its labels. +Gitea no longer has custom labels. +A runner declares its labels every time it starts, from its `runner.labels` configuration or the labels given at registration, so change them there and restart the runner. ## Will there be more implementations for Gitea Actions runner? @@ -177,3 +122,6 @@ For events supported only by GitHub, see GitHub's [documentation](https://docs.g Go to the repository's **Settings** > **Actions** > **General** page and add collaborative owners. The private repositories of collaborative owners are allowed to access the actions and workflows in the current repository. + +To share within the same user or organization, add the private repositories under its **Settings** > **Actions** > **General** > **Cross-Repository Access** instead. +See [Cross-repository access](token-permissions.md#cross-repository-access). diff --git a/docs/usage/actions/scoped-workflows.md b/docs/usage/actions/scoped-workflows.md index c9e53a89..cf4e3e4b 100644 --- a/docs/usage/actions/scoped-workflows.md +++ b/docs/usage/actions/scoped-workflows.md @@ -102,8 +102,8 @@ Only a workflow that runs on an event that posts a commit status (`push`, `pull_ Scoped workflows can call reusable workflows: -- A **local** reference (`uses: ./...`) resolves against the **source** repository: the repository the calling workflow's content came from, not the consuming repository. -- A **cross-repository** reference (`uses: owner/repo/...@ref`) is resolved with the **consuming repository's** read permission. If it points to a private repository, make sure every consuming repository can read it; otherwise the workflow will fail there. +- A **local** reference (`uses: ./...` or `uses: $/...`) resolves against the **source** repository: the repository the calling workflow's content came from, not the consuming repository. +- A **cross-repository** reference (`uses: owner/repo/...@ref` or `uses: self:owner/repo/...@ref`) is resolved with the **consuming repository's** read permission. If it points to a private repository, make sure every consuming repository can read it; otherwise the workflow will fail there. A reusable workflow can live under `SCOPED_WORKFLOW_DIRS` (or `WORKFLOW_DIRS`) of the source repository. diff --git a/i18n/zh-cn/docusaurus-plugin-content-docs/current/administration/config-cheat-sheet.md b/i18n/zh-cn/docusaurus-plugin-content-docs/current/administration/config-cheat-sheet.md index c9a8c9a5..88ce6de7 100644 --- a/i18n/zh-cn/docusaurus-plugin-content-docs/current/administration/config-cheat-sheet.md +++ b/i18n/zh-cn/docusaurus-plugin-content-docs/current/administration/config-cheat-sheet.md @@ -1541,18 +1541,9 @@ PROXY_HOSTS = *.github.com - `SCOPED_WORKFLOW_DIRS`:**.gitea/scoped_workflows**:以逗号分隔的目录列表,用于存放[作用域工作流](usage/actions/scoped-workflows.md)(在一个中心源仓库中定义、并在其他仓库上运行的工作流)。不得与 `WORKFLOW_DIRS` 重叠。留空则不会扫描任何目录来查找作用域工作流,因此不会找到或运行任何作用域工作流。 - `MAX_RERUN_ATTEMPTS`:**50**:单个工作流运行最多可以有的尝试次数(初始运行 + 重新运行)。默认 50。可根据需要设置为任何正整数。 -`DEFAULT_ACTIONS_URL` 指示 Gitea 操作运行程序应该在哪里找到带有相对路径的操作。 -例如,`uses: actions/checkout@v4` 表示 `https://github.com/actions/checkout@v4`,因为 `DEFAULT_ACTIONS_URL` 的值为 `github`。 -它可以更改为 `self`,以使其成为 `root_url_of_your_gitea/actions/checkout@v4`。 - -请注意,对于大多数情况,不建议使用 `self`,因为它可能使名称在全局范围内产生歧义。 -此外,它要求您将所有所需的操作镜像到您的 Gitea 实例,这可能不值得。 -因此,请仅在您了解自己在做什么的情况下使用 `self`。 - -在早期版本(`<= 1.19`)中,`DEFAULT_ACTIONS_URL` 可以设置为任何自定义 URL,例如 `https://gitea.com` 或 `http://your-git-server,https://gitea.com`,默认值为 `https://gitea.com`。 -然而,后来的更新删除了这些选项,现在唯一的选项是 `github` 和 `self`,默认值为 `github`。 -但是,如果您想要使用其他 Git 服务器中的操作,您可以在 `uses` 字段中使用完整的 URL,Gitea 支持此功能(GitHub 不支持)。 -例如 `uses: https://gitea.com/actions/checkout@v4` 或 `uses: http://your-git-server/actions/checkout@v4`。 +`DEFAULT_ACTIONS_URL` 设置 runner 从何处下载未指定主机的操作。 +值为 `github` 时,`uses: actions/checkout@v4` 解析为 `https://github.com/actions/checkout@v4`,值为 `self` 时解析为 `/actions/checkout@v4`。 +`self` 要求您将用到的所有操作镜像到您的实例,因此更推荐为每个操作单独指明主机:使用 `uses: self:owner/repo@ref` 指向您的实例,或使用完整 URL(如 `uses: https://gitea.com/actions/checkout@v4`)指向任何其他主机。 ## 其他 (`other`) diff --git a/i18n/zh-cn/docusaurus-plugin-content-docs/current/development/api-usage.md b/i18n/zh-cn/docusaurus-plugin-content-docs/current/development/api-usage.md index c6496546..1b98d07b 100644 --- a/i18n/zh-cn/docusaurus-plugin-content-docs/current/development/api-usage.md +++ b/i18n/zh-cn/docusaurus-plugin-content-docs/current/development/api-usage.md @@ -12,6 +12,7 @@ aliases: 通常情况下, `ENABLE_SWAGGER` 默认开启并且参数 `MAX_RESPONSE_ITEMS` 默认为 50。您可以从 [Config Cheat Sheet](../administration/config-cheat-sheet.md) 中获取更多配置相关信息。 + ## 通过 API 认证 Gitea 支持以下几种 API 认证方式: diff --git a/i18n/zh-cn/docusaurus-plugin-content-docs/current/usage/actions/comparison.md b/i18n/zh-cn/docusaurus-plugin-content-docs/current/usage/actions/comparison.md index 5601c54d..5e994654 100644 --- a/i18n/zh-cn/docusaurus-plugin-content-docs/current/usage/actions/comparison.md +++ b/i18n/zh-cn/docusaurus-plugin-content-docs/current/usage/actions/comparison.md @@ -6,120 +6,97 @@ sidebar_position: 15 # 与GitHub Actions的对比 -尽管Gitea Actions旨在与GitHub Actions兼容,但它们之间存在一些差异。 +Gitea Actions旨在与GitHub Actions兼容,差异如下。 ## 额外功能 + ### Action URL绝对路径 -Gitea Actions支持通过URL绝对路径定义actions,这意味着您可以使用来自任何Git存储库的Actions。 -例如,`uses: https://github.com/actions/checkout@v4`或`uses: http://your_gitea.com/owner/repo@branch`。 +`uses:`支持指向任意Git托管平台的绝对URL,例如`uses: https://gitea.com/actions/checkout@v4`。 + + +### Action前缀 + +`uses:`支持以下前缀: + +- `self:`引用您自己的Gitea实例,例如`uses: self:owner/repo@v1`或`uses: self:owner/repo/.gitea/workflows/build.yml@v1` +- `builtin:`运行Gitea Runner内置的Action,无需下载,Job镜像中也无需Node,例如`uses: builtin:checkout` + +`builtin:checkout`支持`actions/checkout`的`repository`、`ref`、`token`、`path`和`fetch-depth`输入,默认值相同,其他输入会使步骤失败。 + + +### 相对于工作流的Actions + +`$/`引用工作流所在的仓库和提交,或外层复合Action所在的仓库和提交,例如`uses: $/.gitea/actions/build`。 +与`./`不同,它无需事先检出代码。 ### 使用Go编写Actions -Gitea Actions支持使用Go编写Actions。 请参阅[创建Go Actions](https://blog.gitea.com/creating-go-actions/)。 ### 支持非标准的调度语法 @yearly, @monthly, @weekly, @daily, @hourly -Github Actions 不支持这些语法,详见: https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#schedule +`schedule`还支持`@yearly`、`@monthly`、`@weekly`、`@daily`和`@hourly`,而[GitHub不支持](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#schedule)。 ## 不支持的工作流语法 -### `concurrency` - -这是用于一次运行一个Job。 -请参阅[使用并发](https://docs.github.com/zh/actions/using-jobs/using-concurrency)。 - -Gitea Actions目前不支持此功能。 - -### `run-name` - -这是工作流生成的工作流运行的名称。 -请参阅[GitHub Actions 的工作流语法](https://docs.github.com/zh/actions/using-workflows/workflow-syntax-for-github-actions#run-name)。 - -Gitea Actions目前不支持此功能。 - -### `permissions`和`jobs..permissions` - -请参阅[GitHub Actions的工作流语法](https://docs.github.com/zh/actions/using-workflows/workflow-syntax-for-github-actions#permissions)。 - -Gitea Actions目前不支持此功能。 - -### `jobs..timeout-minutes` - -请参阅[GitHub Actions的工作流语法](https://docs.github.com/zh/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idtimeout-minutes)。 - -Gitea Actions目前不支持此功能。 - -### `jobs..continue-on-error` - -请参阅[GitHub Actions的工作流语法](https://docs.github.com/zh/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idcontinue-on-error)。 - -Gitea Actions目前不支持此功能。 - ### `jobs..environment` -请参阅[GitHub Actions的工作流语法](https://docs.github.com/zh/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idenvironment)。 - -Gitea Actions 目前不支持此功能。 +[`jobs..environment`](https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idenvironment)会被忽略。 ### 复杂的`runs-on` -请参阅[GitHub Actions的工作流语法](https://docs.github.com/zh/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idruns-on)。 +[`runs-on`](https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idruns-on)支持: -Gitea Actions目前只支持`runs-on: xyz`或`runs-on: [xyz]`。 - -### `hashFiles`表达式 - -请参阅[表达式](https://docs.github.com/en/actions/learn-github-actions/expressions#hashfiles)。 - -Gitea Actions目前不支持此功能,如果使用它,结果将始终为空字符串。 - -作为解决方法,您可以使用[go-hashfiles](https://gitea.com/actions/go-hashfiles)。 +- 静态字符串:`runs-on: self-hosted` +- 标签数组:`runs-on: [linux, self-hosted]` +- 字符串表达式:`runs-on: ${{ github.event_name == 'push' && 'ubuntu-latest' || 'self-hosted' }}` +- 包含表达式的数组:`runs-on: [linux, "${{ github.event_name == 'push' && 'ubuntu-latest' || 'self-hosted' }}"]` ## 缺失的功能 +### 软件包仓库授权 + +`GITEA_TOKEN`无法发布到其所属仓库的软件包注册表,例如无法推送OCI镜像。 +请改用个人访问令牌,参见[此问题](https://github.com/go-gitea/gitea/issues/23642#issuecomment-2119876692)。 + ### 问题匹配器 -问题匹配器是一种扫描Actions输出以查找指定正则表达式模式并在用户界面中突出显示该信息的方法。 -请参阅[问题匹配器](https://github.com/actions/toolkit/blob/main/docs/problem-matchers.md)。 - -Gitea Actions目前不支持此功能。 +[问题匹配器](https://github.com/actions/toolkit/blob/main/docs/problem-matchers.md)会被忽略。 ### 为错误创建注释 -请参阅[为错误创建注释](https://docs.github.com/zh/actions/using-workflows/workflow-commands-for-github-actions#example-creating-an-annotation-for-an-error)。 - -Gitea Actions目前不支持此功能。 +[错误注释](https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions#example-creating-an-annotation-for-an-error)会被忽略。 ### 表达式 -对于 [表达式](https://docs.github.com/en/actions/learn-github-actions/expressions), 当前仅 [`always()`](https://docs.github.com/en/actions/learn-github-actions/expressions#always) 被支持。 +[表达式](https://docs.github.com/en/actions/learn-github-actions/expressions)支持GitHub的标准函数和上下文。 ## 缺失的UI功能 ### 预处理和后处理步骤 -预处理和后处理步骤在Job日志用户界面中没有自己的用户界面。 +预处理和后处理步骤在Job日志中没有单独的区块。 ### 服务步骤 -服务步骤在Job日志用户界面中没有自己的用户界面。 +服务步骤在Job日志中没有单独的区块。 ## 不一样的行为 +### `permissions`和`jobs..permissions` + +`permissions`和`jobs..permissions`控制`GITEA_TOKEN`的权限,该权限受仓库和所有者设置的限制,并在fork拉取请求和跨仓库访问时受到进一步限制。 +不支持`statuses`、`checks`、`deployments`、`id-token`、`security-events`和`pages`等GitHub专有的权限范围,而Gitea额外提供了`code`、`releases`、`wiki`和`projects`。 +请参阅[Actions Job令牌权限](token-permissions.md)。 + ### 下载Actions -当 `[actions].DEFAULT_ACTIONS_URL` 保持默认值为 `github` 时,Gitea将会从 https://github.com 下载相对路径的actions。比如: -如果你使用 `uses: actions/checkout@v4`,Gitea将会从 https://github.com/actions/checkout.git 下载这个 actions 项目。 -如果你想要从另外一个 Git服务下载actions,你只需要使用绝对URL `uses: https://gitea.com/actions/checkout@v4` 来下载。 - -如果你的 Gitea 实例是部署在一个互联网限制的网络中,也可以使用绝对地址来下载 actions。你也可以将配置项修改为 `[actions].DEFAULT_ACTIONS_URL = self`。这样所有的相对路径的actions引用,将不再会从 github.com 去下载,而会从这个 Gitea 实例自己的仓库中去下载。例如: `uses: actions/checkout@v4` 将会从 `[server].ROOT_URL`/actions/checkout.git 这个地址去下载 actions。 - -设置`[actions].DEFAULT_ACTIONS_URL`进行配置。请参阅[配置备忘单](../../administration/config-cheat-sheet.md#actions-actions)。 +未指定主机的Actions(如`uses: actions/checkout@v4`)会从`https://github.com`下载,当`[actions].DEFAULT_ACTIONS_URL`为`self`时则从您自己的实例下载。 +请参阅[配置备忘单](../../administration/config-cheat-sheet.md#actions-actions)。 +其他来源请参阅[Action URL绝对路径](#absolute-action-urls)、[Action前缀](#action-prefixes)和[相对于工作流的Actions](#workflow-relative-actions)。 ### 上下文可用性 -不检查上下文可用性,因此您可以在更多地方使用env上下文。 -请参阅[上下文可用性](https://docs.github.com/en/actions/learn-github-actions/contexts#context-availability)。 +不检查[上下文可用性](https://docs.github.com/en/actions/learn-github-actions/contexts#context-availability),因此`env`等上下文可以在更多地方使用。 diff --git a/i18n/zh-cn/docusaurus-plugin-content-docs/current/usage/actions/design.md b/i18n/zh-cn/docusaurus-plugin-content-docs/current/usage/actions/design.md index b8b4fa51..a23f03e8 100644 --- a/i18n/zh-cn/docusaurus-plugin-content-docs/current/usage/actions/design.md +++ b/i18n/zh-cn/docusaurus-plugin-content-docs/current/usage/actions/design.md @@ -19,7 +19,7 @@ Gitea Runner部分基于[nektos/act](https://github.com/nektos/act)的硬分支 之前,我们提到工作流文件中的 `runs-on: ubuntu-latest` 表示该Job将在具有`ubuntu-latest`标签的Runner上运行。 但是,Runner如何知道要运行 `ubuntu-latest`?答案在于将标签映射到环境。 -这就是为什么在注册过程中添加自定义标签时,需要输入一些复杂内容,比如`my_custom_label:docker://centos:7`。 +这就是为什么Runner的每个标签都会指定一个环境,比如`my_custom_label:docker://centos:7`。 这意味着Runner可以接受需要在`my_custom_label`上运行的Job,并通过使用`centos:7`镜像的Docker容器来运行它。 然而,Docker不是唯一的选择。 @@ -35,7 +35,6 @@ Runner 也支持直接在主机上运行Job。 - `my_custom_label:docker://node:18`:使用`node:18 Docker`镜像运行带有`my_custom_label`标签的Job。 - `my_custom_label:host`:在主机上直接运行带有`my_custom_label`标签的Job。 - `my_custom_label`:等同于`my_custom_label:host`。 -- `my_custom_label:vm:ubuntu-latest`:(仅为示例,未实现)使用带有`ubuntu-latest` ISO的虚拟机运行带有`my_custom_label`标签的Job。 ## 通信协议 @@ -44,7 +43,7 @@ Runner 也支持直接在主机上运行Job。 相反,我们希望重用HTTP端口,这意味着我们需要一个与HTTP兼容的协议。 因此,我们选择使用基于HTTP的gRPC。 -我们使用[actions-proto-def](https://gitea.com/gitea/actions-proto-def) 和 [actions-proto-go](https://gitea.com/gitea/actions-proto-go) 进行连接。 +该协议定义在[actions-proto-def](https://gitea.com/gitea/actions-proto-def)中,其Go代码位于[actionslib](https://gitea.com/gitea/actionslib)。 有关 gRPC 的更多信息,请访问[其官方网站](https://grpc.io/)。 ## 网络架构 @@ -72,8 +71,8 @@ Runner 必须能够连接到Gitea以接收任务并发送执行结果回来。 ### 连接 3,runner 到互联网 当您使用诸如 `actions/checkout@v4` 的一些Actions时, runner下载的是脚本,而不是Job容器。 -默认情况下,它从[github.com](http://github.com/)下载,因此需要访问互联网。如果您设置的是 self, -那么默认将从您的当前Gitea实例下载,那么此步骤不需要连接到互联网。 +默认情况下,它从[github.com](https://github.com/)下载这些脚本,这需要访问互联网。 +如果将`DEFAULT_ACTIONS_URL`设置为`self`,或使用`uses: self:owner/repo@ref`,它会改为从您的Gitea实例下载。 它还默认从Docker Hub下载一些Docker镜像,这也需要互联网访问。 然而,互联网访问并不是绝对必需的。 diff --git a/i18n/zh-cn/docusaurus-plugin-content-docs/current/usage/actions/faq.md b/i18n/zh-cn/docusaurus-plugin-content-docs/current/usage/actions/faq.md index fafa8216..61cd8c9d 100644 --- a/i18n/zh-cn/docusaurus-plugin-content-docs/current/usage/actions/faq.md +++ b/i18n/zh-cn/docusaurus-plugin-content-docs/current/usage/actions/faq.md @@ -27,34 +27,19 @@ DEFAULT_REPO_UNITS = ...,repo.actions ## 使用`actions/checkout@v4`等Actions时,Job容器会从何处下载脚本? -GitHub 上有成千上万个 [Actions 脚本](https://github.com/marketplace?type=actions)。 -当您编写 `uses: actions/checkout@v4` 时,它默认会从 [github.com/actions/checkout](https://github.com/actions/checkout) 下载脚本。 -那如果您想使用一些托管在其它平台上的脚本呢,比如在 gitea.com 上的? +默认从`https://github.com`下载,当`[actions].DEFAULT_ACTIONS_URL`为`self`时则从您自己的实例下载,参见[配置速查表](../../administration/config-cheat-sheet.md#actions-actions)。 -好消息是,您可以指定要从任何位置使用Actions的URL前缀。 -这是Gitea Actions中的额外语法。 -例如: +要使用其他位置的Action,请指明其主机: -- `uses: https://gitea.com/xxx/xxx@xxx` -- `uses: https://github.com/xxx/xxx@xxx` -- `uses: http://your_gitea_instance.com/xxx@xxx` - -注意,`https://`或`http://`前缀是必需的! - -这是与 GitHub Actions 的一个区别,GitHub Actions 只允许使用托管在 GitHub 上的 actions 脚本。 -但用户理应拥有权利去灵活决定如何运行 Actions。 - -另外,如果您希望您的 Runner 默认从您自己的 Gitea 实例下载 Actions,可以通过设置 `[actions].DEFAULT_ACTIONS_URL`进行配置。 -参见[配置速查表](../../administration/config-cheat-sheet.md#actions-actions)。 +- `uses: https://gitea.com/owner/repo@ref` +- `uses: http://your_gitea_instance.com/owner/repo@ref` +- `uses: self:owner/repo@ref`,用于您自己的Gitea实例 ## 如何限制Runner的权限? -Runner仅具有连接到您的Gitea实例的权限。 -当任何Runner接收到要运行的Job时,它将临时获得与Job关联的仓库的有限权限。 -如果您想为Runner提供更多权限,允许它访问更多私有仓库或外部系统,您可以向其传递[密钥](usage/actions/secrets.md)。 - -对于 Actions 的细粒度权限控制是一项复杂的工作。 -在未来,我们将添加更多选项以使Gitea更可配置,例如允许对仓库进行更多写访问或对同一组织中的所有仓库进行读访问。 +Runner仅连接到您的Gitea实例。 +对于每个Job,Runner会获得一个仅限于该Job所属仓库的`GITEA_TOKEN`,参见[Actions Job令牌权限](token-permissions.md)。 +如需让Job访问更多私有仓库或外部系统,请向其传递[密钥](usage/actions/secrets.md)。 ## 如何避免被黑客攻击? @@ -75,19 +60,8 @@ Runner仅具有连接到您的Gitea实例的权限。 ## Runner 支持哪些操作系统? -它在Linux、macOS和Windows上运行良好。 -虽然理论上支持其他操作系统,但需要进一步测试。 - -需要注意的一点是,如果选择直接在主机上运行Job而不是在Job容器中运行,操作系统之间的环境差异可能会导致意外的失败。 - -例如,在大多数情况下,Windows上没有可用的bash,而act尝试默认使用bash运行脚本。 -因此,您需要在工作流文件中将默认shell指定为`powershell`,参考[defaults.run](https://docs.github.com/zh/actions/using-workflows/workflow-syntax-for-github-actions#defaultsrun)。 - -```yaml -defaults: - run: - shell: powershell -``` +官方发布了Linux、macOS和Windows的二进制文件。 +理论上,Go和Docker支持的其他系统也可以运行。 ## 为什么选择GitHub Actions?为什么不选择与GitLab CI/CD兼容的工具? @@ -99,42 +73,13 @@ defaults: ## 如果它在多个标签上运行,例如 `runs-on: [label_a, label_b]`,会发生什么? -这是有效的语法。 -它意味着它应该在具有`label_a` **和** `label_b`标签的Runner上运行,参考[GitHub Actions的工作流语法](https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idruns-on)。 -不幸的是,runner 并不支持这种方式。 -如上所述,我们将标签映射到环境: - -- `ubuntu` → `ubuntu:22.04` -- `centos` → `centos:8` - -但我们需要将标签组映射到环境,例如: - -- `[ubuntu]` → `ubuntu:22.04` -- `[with-gpu]` → `linux:with-gpu` -- `[ubuntu, with-gpu]` → `ubuntu:22.04_with-gpu` - -我们还需要重新设计任务分配给Runner的方式。 -具有`ubuntu`、`centos`或`with-gpu`的Runner并不一定表示它可以接受`[centos, with-gpu]`的Job。 -因此,Runner应该通知Gitea实例它只能接受具有 `[ubuntu]`、`[centos]`、`[with-gpu]` 和 `[ubuntu, with-gpu]`的Job。 -这不是一个技术问题,只是在早期设计中被忽视了。 -参见[runtime.go#L65](https://gitea.com/gitea/runner/src/commit/90b8cc6a7a48f45cc28b5ef9660ebf4061fcb336/runtime/runtime.go#L65)。 - -目前,runner 尝试匹配标签中的每一个,并使用找到的第一个匹配项。 +该Job会在拥有所有这些标签的Runner上运行,与[GitHub](https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idruns-on)一致。 +Runner会使用这些标签中它所拥有的第一个标签对应的环境。 ## 代理标签和自定义标签对于Runner有什么区别? -![labels](/images/usage/actions/labels.png) - -代理标签是由 Runner 在注册过程中向 Gitea 实例报告的。 -而自定义标签则是由Gitea的管理员或组织或仓库的所有者手动添加的(取决于Runner所属的级别)。 - -然而,目前这方面的设计还有待改进,因为它目前存在一些不完善之处。 -您可以向已注册的Runner添加自定义标签,比如 `centos`,这意味着该Runner将接收具有`runs-on: centos`的Job。 -然而,Runner可能不知道要使用哪个环境来执行该标签,导致它使用默认镜像或导致逻辑死胡同。 -这个默认值可能与用户的期望不符。 -参见[runtime.go#L71](https://gitea.com/gitea/runner/src/commit/90b8cc6a7a48f45cc28b5ef9660ebf4061fcb336/runtime/runtime.go#L71)。 - -与此同时,如果您想更改Runner的标签,我们建议您重新注册Runner。 +Gitea已不再有自定义标签。 +Runner每次启动时都会声明其标签,标签来自`runner.labels`配置或注册时指定的标签,因此请在那里修改并重启Runner。 ## Gitea Actions runner会有更多的实现吗? @@ -165,3 +110,11 @@ defaults: > 对于 `pull_request` 事件,在 [GitHub Actions](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#pull_request) 中 `ref` 是 `refs/pull/:prNumber/merge`,它指向这个拉取请求合并提交的一个预览。但是 Gitea 没有这种 reference。 > 因此,Gitea Actions 中 `ref` 是 `refs/pull/:prNumber/head`,它指向这个拉取请求的头分支而不是合并提交的预览。 + +## 如何共享私有仓库中的Actions和可复用工作流? + +前往仓库的**设置** > **Actions** > **常规**页面并添加协作所有者。 +协作所有者的私有仓库可以访问当前仓库中的Actions和工作流。 + +如需在同一用户或组织内共享,请改为在该用户或组织的**设置** > **Actions** > **常规** > **跨仓库访问**中添加这些私有仓库。 +参见[跨仓库访问](token-permissions.md#cross-repository-access)。 diff --git a/i18n/zh-cn/docusaurus-plugin-content-docs/current/usage/actions/scoped-workflows.md b/i18n/zh-cn/docusaurus-plugin-content-docs/current/usage/actions/scoped-workflows.md index a37a6e22..1000357c 100644 --- a/i18n/zh-cn/docusaurus-plugin-content-docs/current/usage/actions/scoped-workflows.md +++ b/i18n/zh-cn/docusaurus-plugin-content-docs/current/usage/actions/scoped-workflows.md @@ -102,8 +102,8 @@ SCOPED_WORKFLOW_DIRS = .gitea/scoped_workflows 作用域工作流可以调用可复用工作流: -- **本地**引用(`uses: ./...`)会相对于**源**仓库解析:即调用方工作流内容的来源仓库,而非消费方仓库。 -- **跨仓库**引用(`uses: owner/repo/...@ref`)会以**消费方仓库的**读取权限来解析。如果它指向一个私有仓库,请确保每个消费方仓库都能读取它,否则工作流会在那里失败。 +- **本地**引用(`uses: ./...` 或 `uses: $/...`)会相对于**源**仓库解析:即调用方工作流内容的来源仓库,而非消费方仓库。 +- **跨仓库**引用(`uses: owner/repo/...@ref` 或 `uses: self:owner/repo/...@ref`)会以**消费方仓库的**读取权限来解析。如果它指向一个私有仓库,请确保每个消费方仓库都能读取它,否则工作流会在那里失败。 可复用工作流可以放在源仓库的 `SCOPED_WORKFLOW_DIRS`(或 `WORKFLOW_DIRS`)之下。 diff --git a/i18n/zh-cn/docusaurus-plugin-content-docs/current/usage/actions/token-permissions.md b/i18n/zh-cn/docusaurus-plugin-content-docs/current/usage/actions/token-permissions.md new file mode 100644 index 00000000..4e295512 --- /dev/null +++ b/i18n/zh-cn/docusaurus-plugin-content-docs/current/usage/actions/token-permissions.md @@ -0,0 +1,126 @@ +--- +date: "2026-03-19T00:00:00+01:00" +slug: "token-permissions" +sidebar_position: 30 +--- + +# Actions Job令牌权限(`GITEA_TOKEN`) + +每个Actions Job都会获得一个内置令牌(`GITEA_TOKEN`),可用于访问Gitea(通过HTTP(S)访问Git、API请求等)。 +本页面介绍Gitea如何决定该令牌可以执行哪些操作。 + +在工作流中,可以通过`${{ secrets.GITEA_TOKEN }}`使用该令牌。这些设置和`permissions:`仅影响`GITEA_TOKEN`(不影响个人访问令牌等其他密钥)。关于API调用,请参阅[API认证](../../development/api-usage.md#authentication)。 + + +## 权限来源 + +Gitea按以下顺序确定Job令牌的权限: + +1. Job级别的`permissions:`(`jobs..permissions`) +2. 工作流级别的`permissions:`(顶层) +3. 设置中的默认权限(所有者或仓库) + +然后,该结果会受到所配置的最大令牌权限的**限制**(见下文)。 + + +## 支持的工作流语法 + +Gitea支持与GitHub Actions兼容的`permissions:`关键字。 + + +### 标量值 + +```yaml +permissions: read-all # or: write-all +``` + + +### 按权限范围映射 + +```yaml +permissions: + contents: read + issues: write + pull-requests: none +``` + +每个权限范围的有效访问模式值为`read`、`write`和`none`。 + + +### 支持的权限范围 + +- `contents`(适用于`code`和`releases`) +- `code` +- `releases` +- `issues` +- `pull-requests` +- `actions` +- `wiki` +- `projects` +- `packages`(如果目标功能支持) + +如果同时指定了`contents`和更细粒度的权限范围(如`code`或`releases`),则该单元以更细粒度的权限范围为准。 + + +### 兼容性说明 + +Gitea支持GitHub Actions权限范围的一个子集。 +Gitea Actions目前不支持`statuses`、`checks`、`deployments`、`id-token`、`security-events`和`pages`等GitHub专有的权限范围。 + +Gitea还提供了一些仓库单元权限范围,它们在GitHub Actions中不作为独立的权限范围存在: + +- `code` +- `releases` +- `wiki` +- `projects` + + +## 默认权限模式 + +如果工作流和Job都没有定义`permissions:`,Gitea会使用所配置的默认模式: + +- **宽松**:对Job所属仓库的大多数单元拥有读写权限(向后兼容的默认值)。 +- **受限**:对Job所属仓库的`code`、`releases`和`packages`拥有只读权限,默认无权访问其他单元。 + + +## 最大令牌权限(限制) + +您可以为每个仓库单元配置最大权限。 +Job的实际权限按以下方式计算: + +`effective = min(requested, maximum)` + +这意味着工作流可以降低Job的权限,但不能超过您配置的最大权限。 +如果未配置最大权限,则所有权限范围的最大权限默认为`write`。 + + +## 配置位置 + +您可以在以下位置配置默认权限和最大权限: + +- **用户/组织**:`Settings` → `Actions` → `General` +- **仓库**:`Settings` → `Actions` → `General` + - 对于组织中的仓库,可以遵循所有者级别的配置,也可以通过**覆盖所有者级别的配置**选择不遵循。 + +注意:仅在启用**仓库Actions**后,才会显示仓库级别的令牌权限设置。 + + +## Fork拉取请求 + +出于安全考虑,由fork拉取请求触发的工作流始终只拥有仓库内容的只读权限,与工作流的`permissions:`或设置无关。 + + +## 跨仓库访问 + +默认情况下,`GITEA_TOKEN`只能访问: + +- Job所属仓库(依据计算出的权限) +- 公开仓库(只读) + +默认拒绝访问其他私有仓库。 +用户或组织可以通过**设置 → Actions → 常规 → 跨仓库访问**,允许以只读方式访问选定的私有仓库。 + +私有仓库也可以通过**设置 → Actions → 常规**允许选定的协作所有者。 +这样,这些所有者的私有仓库便可读取当前私有仓库以供Actions使用,例如私有Actions和可复用工作流。 + +fork拉取请求的工作流永远不会获得对私有仓库的跨仓库访问权限,即使这些仓库已被列出。 diff --git a/i18n/zh-tw/docusaurus-plugin-content-docs/current/administration/config-cheat-sheet.md b/i18n/zh-tw/docusaurus-plugin-content-docs/current/administration/config-cheat-sheet.md index 13083e94..0e19f6f6 100644 --- a/i18n/zh-tw/docusaurus-plugin-content-docs/current/administration/config-cheat-sheet.md +++ b/i18n/zh-tw/docusaurus-plugin-content-docs/current/administration/config-cheat-sheet.md @@ -1548,18 +1548,9 @@ PROXY_HOSTS = *.github.com - `SCOPED_WORKFLOW_DIRS`:**.gitea/scoped_workflows**:以逗號分隔的目錄列表,用於存放[作用域工作流程](usage/actions/scoped-workflows.md)(在一個中心來源儲存庫中定義、並在其他儲存庫上執行的工作流程)。不得與 `WORKFLOW_DIRS` 重疊。留空則不會掃描任何目錄來尋找作用域工作流程,也就不會找到或執行任何作用域工作流程。 - `MAX_RERUN_ATTEMPTS`:**50**:單個工作流執行最多可以有的嘗試次數(初始執行 + 重新執行)。預設 50。可根據需要設定為任何正整數。 -`DEFAULT_ACTIONS_URL` 指示 Gitea 操作運行程式應該在哪裡找到帶有相對路徑的操作。 -例如,`uses: actions/checkout@v4` 表示 `https://github.com/actions/checkout@v4`,因為 `DEFAULT_ACTIONS_URL` 的值為 `github`。 -它可以更改為 `self`,以使其成為 `root_url_of_your_gitea/actions/checkout@v4`。 - -請注意,對於大多數情況,不建議使用 `self`,因為它可能使名稱在全域範圍內產生歧義。 -此外,它要求您將所有所需的操作鏡像到您的 Gitea 實例,這可能不值得。 -因此,請僅在您瞭解自己在做什麼的情況下使用 `self`。 - -在早期版本(`<= 1.19`)中,`DEFAULT_ACTIONS_URL` 可以設定為任何自訂 URL,例如 `https://gitea.com` 或 `http://your-git-server,https://gitea.com`,預設值為 `https://gitea.com`。 -然而,後來的更新刪除了這些選項,現在唯一的選項是 `github` 和 `self`,預設值為 `github`。 -但是,如果您想要使用其他 Git 伺服器中的操作,您可以在 `uses` 欄位中使用完整的 URL,Gitea 支援此功能(GitHub 不支援)。 -例如 `uses: https://gitea.com/actions/checkout@v4` 或 `uses: http://your-git-server/actions/checkout@v4`。 +`DEFAULT_ACTIONS_URL` 設定 Runner 從何處下載未指定主機的 Actions。 +設為 `github` 時,`uses: actions/checkout@v4` 解析為 `https://github.com/actions/checkout@v4`,設為 `self` 時則解析為 `/actions/checkout@v4`。 +`self` 要求您將用到的每個 Action 都鏡像到您的實例,因此建議改為逐一為 Action 指定主機:您的實例使用 `uses: self:owner/repo@ref`,其他主機則使用完整 URL,例如 `uses: https://gitea.com/actions/checkout@v4`。 ## 其他 (`other`) diff --git a/i18n/zh-tw/docusaurus-plugin-content-docs/current/usage/actions/comparison.md b/i18n/zh-tw/docusaurus-plugin-content-docs/current/usage/actions/comparison.md index ae424921..09b1c3de 100644 --- a/i18n/zh-tw/docusaurus-plugin-content-docs/current/usage/actions/comparison.md +++ b/i18n/zh-tw/docusaurus-plugin-content-docs/current/usage/actions/comparison.md @@ -6,120 +6,97 @@ sidebar_position: 15 # 與GitHub Actions的對比 -儘管Gitea Actions旨在與GitHub Actions相容,但它們之間存在一些差異。 +Gitea Actions 旨在與 GitHub Actions 相容,差異如下。 ## 額外功能 + ### Action URL絕對路徑 -Gitea Actions支援通過URL絕對路徑定義actions,這意味著您可以使用來自任何Git儲存庫的Actions。 -例如,`uses: https://github.com/actions/checkout@v4`或`uses: http://your_gitea.com/owner/repo@branch`。 +`uses:` 接受指向任意 Git 主機的絕對 URL,例如 `uses: https://gitea.com/actions/checkout@v4`。 + + +### Action 前綴 + +`uses:` 接受以下前綴: + +- `self:` 參照您自己的 Gitea 實例,例如 `uses: self:owner/repo@v1` 或 `uses: self:owner/repo/.gitea/workflows/build.yml@v1` +- `builtin:` 執行 Gitea Runner 內建的 Action,無需下載,Job 映像檔中也不需要 Node,例如 `uses: builtin:checkout` + +`builtin:checkout` 支援 `actions/checkout` 的 `repository`、`ref`、`token`、`path` 和 `fetch-depth` 輸入,預設值相同,其他輸入會使步驟失敗。 + + +### 相對於工作流的 Actions + +`$/` 參照工作流(或外層複合 Action)所在的儲存庫與提交,例如 `uses: $/.gitea/actions/build`。 +與 `./` 不同,它不需要事先簽出程式碼。 ### 使用Go編寫Actions -Gitea Actions支援使用Go編寫Actions。 -請參閱[建立Go Actions](https://blog.gitea.com/creating-go-actions/)。 +請參閱[建立 Go Actions](https://blog.gitea.com/creating-go-actions/)。 ### 支援非標準的調度語法 @yearly, @monthly, @weekly, @daily, @hourly -Github Actions 不支援這些語法,詳見: https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#schedule +`schedule` 也接受 `@yearly`、`@monthly`、`@weekly`、`@daily` 和 `@hourly`,[GitHub 則不支援](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#schedule)。 ## 不支援的工作流語法 -### `concurrency` - -這是用於一次運行一個Job。 -請參閱[使用併發](https://docs.github.com/zh/actions/using-jobs/using-concurrency)。 - -Gitea Actions目前不支援此功能。 - -### `run-name` - -這是工作流生成的工作流運行的名稱。 -請參閱[GitHub Actions 的工作流語法](https://docs.github.com/zh/actions/using-workflows/workflow-syntax-for-github-actions#run-name)。 - -Gitea Actions目前不支援此功能。 - -### `permissions`和`jobs..permissions` - -請參閱[GitHub Actions的工作流語法](https://docs.github.com/zh/actions/using-workflows/workflow-syntax-for-github-actions#permissions)。 - -Gitea Actions目前不支援此功能。 - -### `jobs..timeout-minutes` - -請參閱[GitHub Actions的工作流語法](https://docs.github.com/zh/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idtimeout-minutes)。 - -Gitea Actions目前不支援此功能。 - -### `jobs..continue-on-error` - -請參閱[GitHub Actions的工作流語法](https://docs.github.com/zh/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idcontinue-on-error)。 - -Gitea Actions目前不支援此功能。 - ### `jobs..environment` -請參閱[GitHub Actions的工作流語法](https://docs.github.com/zh/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idenvironment)。 - -Gitea Actions 目前不支援此功能。 +[`jobs..environment`](https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idenvironment) 會被忽略。 ### 複雜的`runs-on` -請參閱[GitHub Actions的工作流語法](https://docs.github.com/zh/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idruns-on)。 +[`runs-on`](https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idruns-on) 支援: -Gitea Actions目前只支援`runs-on: xyz`或`runs-on: [xyz]`。 - -### `hashFiles`表達式 - -請參閱[表達式](https://docs.github.com/en/actions/learn-github-actions/expressions#hashfiles)。 - -Gitea Actions目前不支援此功能,如果使用它,結果將始終為空字符串。 - -作為解決方法,您可以使用[go-hashfiles](https://gitea.com/actions/go-hashfiles)。 +- 靜態字串:`runs-on: self-hosted` +- 標籤陣列:`runs-on: [linux, self-hosted]` +- 字串表達式:`runs-on: ${{ github.event_name == 'push' && 'ubuntu-latest' || 'self-hosted' }}` +- 包含表達式的陣列:`runs-on: [linux, "${{ github.event_name == 'push' && 'ubuntu-latest' || 'self-hosted' }}"]` ## 缺失的功能 +### 套件儲存庫授權 + +`GITEA_TOKEN` 無法發佈到其所屬儲存庫的套件註冊表,例如無法推送 OCI 鏡像。 +請改用個人存取權杖,參見[這個工單](https://github.com/go-gitea/gitea/issues/23642#issuecomment-2119876692)。 + ### 問題匹配器 -問題匹配器是一種掃描Actions輸出以查找指定正則表達式模式並在使用者介面中突出顯示該資訊的方法。 -請參閱[問題匹配器](https://github.com/actions/toolkit/blob/main/docs/problem-matchers.md)。 - -Gitea Actions目前不支援此功能。 +[問題匹配器](https://github.com/actions/toolkit/blob/main/docs/problem-matchers.md)會被忽略。 ### 為錯誤建立註釋 -請參閱[為錯誤建立註釋](https://docs.github.com/zh/actions/using-workflows/workflow-commands-for-github-actions#example-creating-an-annotation-for-an-error)。 - -Gitea Actions目前不支援此功能。 +[錯誤註釋](https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions#example-creating-an-annotation-for-an-error)會被忽略。 ### 表達式 -對於 [表達式](https://docs.github.com/en/actions/learn-github-actions/expressions), 當前僅 [`always()`](https://docs.github.com/en/actions/learn-github-actions/expressions#always) 被支援。 +[表達式](https://docs.github.com/en/actions/learn-github-actions/expressions)支援 GitHub 的標準函式與上下文。 ## 缺失的UI功能 ### 預處理和後處理步驟 -預處理和後處理步驟在Job日誌使用者介面中沒有自己的使用者介面。 +預處理和後處理步驟在 Job 日誌中沒有各自獨立的區塊。 ### 服務步驟 -服務步驟在Job日誌使用者介面中沒有自己的使用者介面。 +服務步驟在 Job 日誌中沒有各自獨立的區塊。 ## 不一樣的行為 +### `permissions`和`jobs..permissions` + +`permissions` 和 `jobs..permissions` 控制 `GITEA_TOKEN` 的權限,其權限受儲存庫與所有者設定的限制,對於來自 fork 的拉取請求和跨儲存庫存取還會進一步受限。 +不支援 `statuses`、`checks`、`deployments`、`id-token`、`security-events` 和 `pages` 等 GitHub 專屬範圍,而 Gitea 另外提供 `code`、`releases`、`wiki` 和 `projects`。 +請參閱 [Actions Job 令牌權限](token-permissions.md)。 + ### 下載Actions -當 `[actions].DEFAULT_ACTIONS_URL` 保持預設值為 `github` 時,Gitea將會從 https://github.com 下載相對路徑的actions。比如: -如果你使用 `uses: actions/checkout@v4`,Gitea將會從 https://github.com/actions/checkout.git 下載這個 actions 專案。 -如果你想要從另外一個 Git服務下載actions,你只需要使用絕對URL `uses: https://gitea.com/actions/checkout@v4` 來下載。 - -如果你的 Gitea 實例是部署在一個互聯網限制的網路中,也可以使用絕對地址來下載 actions。你也可以將設定項修改為 `[actions].DEFAULT_ACTIONS_URL = self`。這樣所有的相對路徑的actions引用,將不再會從 github.com 去下載,而會從這個 Gitea 實例自己的儲存庫中去下載。例如: `uses: actions/checkout@v4` 將會從 `[server].ROOT_URL`/actions/checkout.git 這個地址去下載 actions。 - -設定`[actions].DEFAULT_ACTIONS_URL`進行設定。請參閱[設定備忘單](../../administration/config-cheat-sheet.md#actions-actions)。 +未指定主機的 Actions,例如 `uses: actions/checkout@v4`,會從 `https://github.com` 下載,若 `[actions].DEFAULT_ACTIONS_URL` 為 `self`,則從您自己的實例下載。 +請參閱[設定速查表](../../administration/config-cheat-sheet.md#actions-actions)。 +其他來源請參閱 [Action URL絕對路徑](#absolute-action-urls)、[Action 前綴](#action-prefixes)和[相對於工作流的 Actions](#workflow-relative-actions)。 ### 上下文可用性 -不檢查上下文可用性,因此您可以在更多地方使用env上下文。 -請參閱[上下文可用性](https://docs.github.com/en/actions/learn-github-actions/contexts#context-availability)。 +不檢查[上下文可用性](https://docs.github.com/en/actions/learn-github-actions/contexts#context-availability),因此 `env` 等上下文可以在更多地方使用。 diff --git a/i18n/zh-tw/docusaurus-plugin-content-docs/current/usage/actions/design.md b/i18n/zh-tw/docusaurus-plugin-content-docs/current/usage/actions/design.md index df62f20e..d119c575 100644 --- a/i18n/zh-tw/docusaurus-plugin-content-docs/current/usage/actions/design.md +++ b/i18n/zh-tw/docusaurus-plugin-content-docs/current/usage/actions/design.md @@ -19,7 +19,7 @@ Gitea Runner部分基於[nektos/act](https://github.com/nektos/act)的硬分支 之前,我們提到工作流文件中的 `runs-on: ubuntu-latest` 表示該Job將在具有`ubuntu-latest`標籤的Runner上運行。 但是,Runner如何知道要運行 `ubuntu-latest`?答案在於將標籤映射到環境。 -這就是為什麼在註冊過程中添加自訂標籤時,需要輸入一些複雜內容,比如`my_custom_label:docker://centos:7`。 +這就是為什麼Runner的每個標籤都指定了一個環境,比如`my_custom_label:docker://centos:7`。 這意味著Runner可以接受需要在`my_custom_label`上運行的Job,並通過使用`centos:7`鏡像的Docker容器來運行它。 然而,Docker不是唯一的選擇。 @@ -35,7 +35,6 @@ Runner 也支援直接在主機上運行Job。 - `my_custom_label:docker://node:18`:使用`node:18 Docker`鏡像運行帶有`my_custom_label`標籤的Job。 - `my_custom_label:host`:在主機上直接運行帶有`my_custom_label`標籤的Job。 - `my_custom_label`:等同於`my_custom_label:host`。 -- `my_custom_label:vm:ubuntu-latest`:(僅為範例,未實現)使用帶有`ubuntu-latest` ISO的虛擬機運行帶有`my_custom_label`標籤的Job。 ## 通信協議 @@ -44,7 +43,7 @@ Runner 也支援直接在主機上運行Job。 相反,我們希望重用HTTP端口,這意味著我們需要一個與HTTP相容的協議。 因此,我們選擇使用基於HTTP的gRPC。 -我們使用[actions-proto-def](https://gitea.com/gitea/actions-proto-def) 和 [actions-proto-go](https://gitea.com/gitea/actions-proto-go) 進行連接。 +協議定義於[actions-proto-def](https://gitea.com/gitea/actions-proto-def),其Go程式碼位於[actionslib](https://gitea.com/gitea/actionslib)。 有關 gRPC 的更多資訊,請前往[其官方網站](https://grpc.io/)。 ## 網路架構 @@ -72,8 +71,8 @@ Runner 必須能夠連接到Gitea以接收任務併發送執行結果回來。 ### 連接 3,runner到互聯網 當您使用諸如 `actions/checkout@v4` 的一些Actions時,runner 下載的是腳本,而不是Job容器。 -預設情況下,它從[github.com](http://github.com/)下載,因此需要訪問互聯網。如果您設定的是 self, -那麼預設將從您的當前Gitea實例下載,那麼此步驟不需要連接到互聯網。 +預設情況下,它從[github.com](https://github.com/)下載,因此需要訪問互聯網。 +若將`DEFAULT_ACTIONS_URL`設定為`self`,或使用`uses: self:owner/repo@ref`,則改從您的Gitea實例下載。 它還預設從Docker Hub下載一些Docker鏡像,這也需要互聯網訪問。 然而,互聯網訪問並不是絕對必需的。 diff --git a/i18n/zh-tw/docusaurus-plugin-content-docs/current/usage/actions/faq.md b/i18n/zh-tw/docusaurus-plugin-content-docs/current/usage/actions/faq.md index 40941c31..5aafe284 100644 --- a/i18n/zh-tw/docusaurus-plugin-content-docs/current/usage/actions/faq.md +++ b/i18n/zh-tw/docusaurus-plugin-content-docs/current/usage/actions/faq.md @@ -27,34 +27,19 @@ DEFAULT_REPO_UNITS = ...,repo.actions ## 使用`actions/checkout@v4`等Actions時,Job容器會從何處下載腳本? -GitHub 上有成千上萬個 [Actions 腳本](https://github.com/marketplace?type=actions)。 -當您編寫 `uses: actions/checkout@v4` 時,它預設會從 [github.com/actions/checkout](https://github.com/actions/checkout) 下載腳本。 -那如果您想使用一些託管在其它平台上的腳本呢,比如在 gitea.com 上的? +預設從 `https://github.com` 下載,若 `[actions].DEFAULT_ACTIONS_URL` 為 `self`,則從您自己的實例下載,參見[設定速查表](../../administration/config-cheat-sheet.md#actions-actions)。 -好消息是,您可以指定要從任何位置使用Actions的URL前綴。 -這是Gitea Actions中的額外語法。 -例如: +若要使用其他來源的 Action,請指定其主機: -- `uses: https://gitea.com/xxx/xxx@xxx` -- `uses: https://github.com/xxx/xxx@xxx` -- `uses: http://your_gitea_instance.com/xxx@xxx` - -注意,`https://`或`http://`前綴是必需的! - -這是與 GitHub Actions 的一個區別,GitHub Actions 只允許使用託管在 GitHub 上的 actions 腳本。 -但使用者理應擁有權利去靈活決定如何運行 Actions。 - -另外,如果您希望您的 Runner 預設從您自己的 Gitea 實例下載 Actions,可以透過設定 `[actions].DEFAULT_ACTIONS_URL`進行設定。 -參見[設定速查表](../../administration/config-cheat-sheet.md#actions-actions)。 +- `uses: https://gitea.com/owner/repo@ref` +- `uses: http://your_gitea_instance.com/owner/repo@ref` +- `uses: self:owner/repo@ref`,用於您自己的 Gitea 實例 ## 如何限制Runner的權限? -Runner僅具有連接到您的Gitea實例的權限。 -當任何Runner接收到要運行的Job時,它將臨時獲得與Job關聯的儲存庫的有限權限。 -如果您想為Runner提供更多權限,允許它訪問更多私有儲存庫或外部系統,您可以向其傳遞[密鑰](usage/actions/secrets.md)。 - -對於 Actions 的細粒度權限控制是一項複雜的工作。 -在未來,我們將添加更多選項以使Gitea更可設定,例如允許對儲存庫進行更多寫訪問或對同一組織中的所有儲存庫進行讀訪問。 +Runner 只會連接到您的 Gitea 實例。 +對於每個 Job,Runner 會取得一個僅限於該 Job 所屬儲存庫的 `GITEA_TOKEN`,參見 [Actions Job 令牌權限](token-permissions.md)。 +若要讓 Job 存取更多私有儲存庫或外部系統,請向其傳遞[密鑰](usage/actions/secrets.md)。 ## 如何避免被黑客攻擊? @@ -75,19 +60,8 @@ Runner僅具有連接到您的Gitea實例的權限。 ## runner支援哪些操作系統? -它在Linux、macOS和Windows上運行良好。 -雖然理論上支援其他操作系統,但需要進一步測試。 - -需要注意的一點是,如果選擇直接在主機上運行Job而不是在Job容器中運行,操作系統之間的環境差異可能會導致意外的失敗。 - -例如,在大多數情況下,Windows上沒有可用的bash,而act嘗試預設使用bash運行腳本。 -因此,您需要在工作流文件中將預設shell指定為`powershell`,參考[defaults.run](https://docs.github.com/zh/actions/using-workflows/workflow-syntax-for-github-actions#defaultsrun)。 - -```yaml -defaults: - run: - shell: powershell -``` +官方發佈了 Linux、macOS 和 Windows 的二進制檔案。 +理論上,Go 和 Docker 支援的其他系統也能運作。 ## 為什麼選擇GitHub Actions?為什麼不選擇與GitLab CI/CD相容的工具? @@ -99,42 +73,13 @@ defaults: ## 如果它在多個標籤上運行,例如 `runs-on: [label_a, label_b]`,會發生什麼? -這是有效的語法。 -它意味著它應該在具有`label_a` **和** `label_b`標籤的Runner上運行,參考[GitHub Actions的工作流語法](https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idruns-on)。 -不幸的是,runner 並不支援這種方式。 -如上所述,我們將標籤映射到環境: - -- `ubuntu` → `ubuntu:22.04` -- `centos` → `centos:8` - -但我們需要將標籤組映射到環境,例如: - -- `[ubuntu]` → `ubuntu:22.04` -- `[with-gpu]` → `linux:with-gpu` -- `[ubuntu, with-gpu]` → `ubuntu:22.04_with-gpu` - -我們還需要重新設計任務分配給Runner的方式。 -具有`ubuntu`、`centos`或`with-gpu`的Runner並不一定表示它可以接受`[centos, with-gpu]`的Job。 -因此,Runner應該通知Gitea實例它只能接受具有 `[ubuntu]`、`[centos]`、`[with-gpu]` 和 `[ubuntu, with-gpu]`的Job。 -這不是一個技術問題,只是在早期設計中被忽視了。 -參見[runtime.go#L65](https://gitea.com/gitea/runner/src/commit/90b8cc6a7a48f45cc28b5ef9660ebf4061fcb336/runtime/runtime.go#L65)。 - -目前, runner嘗試匹配標籤中的每一個,並使用找到的第一個匹配項。 +Job 會在具有所有這些標籤的 Runner 上運行,與 [GitHub](https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idruns-on) 相同。 +Runner 會使用它所具有的第一個標籤對應的環境。 ## 代理標籤和自訂標籤對於Runner有什麼區別? -![labels](/images/usage/actions/labels.png) - -代理標籤是由Runner在註冊過程中向Gitea實例報告的。 -而自訂標籤則是由Gitea的管理員或組織或儲存庫的所有者手動添加的(取決於Runner所屬的級別)。 - -然而,目前這方面的設計還有待改進,因為它目前存在一些不完善之處。 -您可以向已註冊的Runner添加自訂標籤,比如 `centos`,這意味著該Runner將接收具有`runs-on: centos`的Job。 -然而,Runner可能不知道要使用哪個環境來執行該標籤,導致它使用預設鏡像或導致邏輯死衚衕。 -這個預設值可能與使用者的期望不符。 -參見[runtime.go#L71](https://gitea.com/gitea/runner/src/commit/90b8cc6a7a48f45cc28b5ef9660ebf4061fcb336/runtime/runtime.go#L71)。 - -與此同時,如果您想更改Runner的標籤,我們建議您重新註冊Runner。 +Gitea 已不再有自訂標籤。 +Runner 每次啟動時都會宣告其標籤,標籤來自 `runner.labels` 設定或註冊時指定的標籤,因此請在那裡修改並重新啟動 Runner。 ## Gitea Actions runner會有更多的實現嗎? @@ -165,3 +110,11 @@ defaults: > 對於 `pull_request` 事件,在 [GitHub Actions](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#pull_request) 中 `ref` 是 `refs/pull/:prNumber/merge`,它指向這個拉取請求合併提交的一個預覽。但是 Gitea 沒有這種 reference。 > 因此,Gitea Actions 中 `ref` 是 `refs/pull/:prNumber/head`,它指向這個拉取請求的頭分支而不是合併提交的預覽。 + +## 如何共享私有儲存庫中的 Actions 和可重複使用的工作流? + +前往儲存庫的**設定** > **Actions** > **General** 頁面,添加協作所有者。 +協作所有者的私有儲存庫可以存取目前儲存庫中的 Actions 和工作流。 + +若要在同一使用者或組織內共享,請改為在該使用者或組織的**設定** > **Actions** > **General** > **Cross-Repository Access** 中添加這些私有儲存庫。 +參見[跨儲存庫存取](token-permissions.md#cross-repository-access)。 diff --git a/i18n/zh-tw/docusaurus-plugin-content-docs/current/usage/actions/scoped-workflows.md b/i18n/zh-tw/docusaurus-plugin-content-docs/current/usage/actions/scoped-workflows.md index 5de5814a..b9ecf952 100644 --- a/i18n/zh-tw/docusaurus-plugin-content-docs/current/usage/actions/scoped-workflows.md +++ b/i18n/zh-tw/docusaurus-plugin-content-docs/current/usage/actions/scoped-workflows.md @@ -102,8 +102,8 @@ SCOPED_WORKFLOW_DIRS = .gitea/scoped_workflows 作用域工作流程可以呼叫可重複使用的工作流程: -- **本機**參照(`uses: ./...`)會相對於**來源**儲存庫解析:即呼叫方工作流程內容的來源儲存庫,而非消費方儲存庫。 -- **跨儲存庫**參照(`uses: owner/repo/...@ref`)會以**消費方儲存庫的**讀取權限來解析。如果它指向一個私有儲存庫,請確保每個消費方儲存庫都能讀取它,否則工作流程會在那裡失敗。 +- **本機**參照(`uses: ./...` 或 `uses: $/...`)會相對於**來源**儲存庫解析:即呼叫方工作流程內容的來源儲存庫,而非消費方儲存庫。 +- **跨儲存庫**參照(`uses: owner/repo/...@ref` 或 `uses: self:owner/repo/...@ref`)會以**消費方儲存庫的**讀取權限來解析。如果它指向一個私有儲存庫,請確保每個消費方儲存庫都能讀取它,否則工作流程會在那裡失敗。 可重複使用的工作流程可以放在來源儲存庫的 `SCOPED_WORKFLOW_DIRS`(或 `WORKFLOW_DIRS`)之下。 diff --git a/i18n/zh-tw/docusaurus-plugin-content-docs/current/usage/actions/token-permissions.md b/i18n/zh-tw/docusaurus-plugin-content-docs/current/usage/actions/token-permissions.md new file mode 100644 index 00000000..05565520 --- /dev/null +++ b/i18n/zh-tw/docusaurus-plugin-content-docs/current/usage/actions/token-permissions.md @@ -0,0 +1,126 @@ +--- +date: "2026-03-19T00:00:00+01:00" +slug: "token-permissions" +sidebar_position: 30 +--- + +# Actions Job 令牌權限(`GITEA_TOKEN`) + +每個 Actions Job 都會取得一個內建令牌(`GITEA_TOKEN`),可用於存取 Gitea(透過 HTTP(S) 使用 Git、API 請求等)。 +本頁說明 Gitea 如何決定該令牌可以執行哪些操作。 + +在工作流中,可以透過 `${{ secrets.GITEA_TOKEN }}` 使用它。這些設定和 `permissions:` 只影響 `GITEA_TOKEN`(不影響個人存取權杖等其他密鑰)。API 呼叫請參閱 [API 認證](../../development/api-usage.md#authentication)。 + + +## 權限的來源 + +Gitea 依以下順序決定 Job 令牌權限: + +1. Job 層級的 `permissions:`(`jobs..permissions`) +2. 工作流層級的 `permissions:`(頂層) +3. 設定中的預設權限(所有者或儲存庫) + +接著,結果會再受到所設定的最大令牌權限**限縮**(見下文)。 + + +## 支援的工作流語法 + +Gitea 支援與 GitHub Actions 相容的 `permissions:` 關鍵字。 + + +### 純量值 + +```yaml +permissions: read-all # or: write-all +``` + + +### 依範圍對應 + +```yaml +permissions: + contents: read + issues: write + pull-requests: none +``` + +每個範圍的有效存取模式值為 `read`、`write` 和 `none`。 + + +### 支援的範圍 + +- `contents`(適用於 `code` 和 `releases`) +- `code` +- `releases` +- `issues` +- `pull-requests` +- `actions` +- `wiki` +- `projects` +- `packages`(若目標功能支援) + +如果同時指定 `contents` 和更細的範圍(例如 `code` 或 `releases`),該單元以更細的範圍為準。 + + +### 相容性說明 + +Gitea 支援 GitHub Actions 權限範圍的一個子集。 +Gitea Actions 目前不支援 `statuses`、`checks`、`deployments`、`id-token`、`security-events` 和 `pages` 等 GitHub 專屬範圍。 + +Gitea 另外提供一些儲存庫單元範圍,它們在 GitHub Actions 中並不是獨立的範圍: + +- `code` +- `releases` +- `wiki` +- `projects` + + +## 預設權限模式 + +如果工作流和 Job 都沒有定義 `permissions:`,Gitea 會使用所設定的預設模式: + +- **Permissive**(寬鬆):對 Job 所屬儲存庫的大多數單元具有讀取和寫入權限(向下相容的預設值)。 +- **受限**(Restricted):對 Job 所屬儲存庫的 `code`、`releases` 和 `packages` 具有唯讀權限,預設無法存取其他單元。 + + +## 最大令牌權限(限縮) + +您可以為每個儲存庫單元設定最大權限。 +Job 的實際權限計算方式如下: + +`effective = min(requested, maximum)` + +也就是說,工作流可以降低 Job 的權限,但不能超過您所設定的最大值。 +如果未設定最大值,所有範圍的最大值預設為 `write`。 + + +## 設定位置 + +您可以在以下位置設定預設值和最大值: + +- **使用者 / 組織**:`Settings` → `Actions` → `General` +- **儲存庫**:`Settings` → `Actions` → `General` + - 對於組織內的儲存庫,儲存庫可以沿用所有者層級的設定,或透過 **Override owner-level configuration** 選擇退出。 + +注意:只有在啟用**儲存庫 Actions** 後,才會顯示儲存庫層級的令牌權限設定。 + + +## 來自 fork 的拉取請求 + +基於安全考量,由來自 fork 的拉取請求觸發的工作流,對儲存庫內容一律只有唯讀權限,不受工作流 `permissions:` 或設定影響。 + + +## 跨儲存庫存取 + +預設情況下,`GITEA_TOKEN` 只能存取: + +- Job 所屬的儲存庫(依計算出的權限) +- 公開儲存庫(唯讀) + +預設會拒絕存取其他私有儲存庫。 +使用者或組織可以在**設定** > **Actions** > **General** > **Cross-Repository Access** 中,允許唯讀存取選定的私有儲存庫。 + +私有儲存庫也可以在**設定** > **Actions** > **General** 中允許選定的協作所有者。 +這樣,這些所有者的私有儲存庫就能為了 Actions 用途讀取目前的私有儲存庫,例如私有 Actions 和可重複使用的工作流。 + +由來自 fork 的拉取請求觸發的工作流,永遠無法取得對私有儲存庫的跨儲存庫存取權,即使這些儲存庫已列入清單也一樣。 diff --git a/runner-docs/monitoring.md b/runner-docs/monitoring.md index 9379e679..530a2c08 100644 --- a/runner-docs/monitoring.md +++ b/runner-docs/monitoring.md @@ -40,6 +40,16 @@ All series are prefixed with `gitea_runner_`, among them: Useful things to alert on: `gitea_runner_poll_fetch_total{result="error"}` rising (the instance is unreachable or the runner was deleted), a `capacity_utilization_ratio` pinned at `1` (the pool is too small), and a growing `report_log_buffer_rows` (log delivery is falling behind). +## OpenTelemetry tracing + +Setting `OTEL_EXPORTER_OTLP_ENDPOINT` in the runner's environment sends a trace of every job, with a span per step, to an OTLP collector over `http/protobuf`: + +```sh +OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318 +``` + +Jobs receive `TRACEPARENT`, so instrumented tools in them join the job's trace. See [docs/telemetry.md](https://gitea.com/gitea/runner/src/branch/main/docs/telemetry.md) for headers, sampling and the security notes. + ## Local health checks Health checks let a runner take itself out of rotation when the machine it runs on is not fit for work — most commonly when the disk is full. From 470f582e97ee20e0dd13150cf0fb2e21ae261943 Mon Sep 17 00:00:00 2001 From: Gitea Bot Date: Sat, 26 Sep 2026 07:07:05 +0000 Subject: [PATCH 22/22] Update the latest api documents (#558) Automated update of static/swagger-latest.json and static/openapi3-latest.json from the gitea main branch, opened by the "update api spec files" scheduled workflow. Preview: https://pr-558.docs-gitea-com.pages.dev Reviewed-on: https://gitea.com/gitea/docs/pulls/558 Reviewed-by: bircni Co-authored-by: Gitea Bot --- static/openapi3-latest.json | 4 ++-- static/swagger-latest.json | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/static/openapi3-latest.json b/static/openapi3-latest.json index eb3b86ef..4a0d965c 100644 --- a/static/openapi3-latest.json +++ b/static/openapi3-latest.json @@ -11837,9 +11837,9 @@ } }, { - "description": "pattern of repositories to search for", + "description": "glob pattern of repositories to search for, in the form owner or owner/repo", "in": "query", - "name": "pattern", + "name": "query", "schema": { "type": "string" } diff --git a/static/swagger-latest.json b/static/swagger-latest.json index e6a45ad8..5747d4b1 100644 --- a/static/swagger-latest.json +++ b/static/swagger-latest.json @@ -723,8 +723,8 @@ }, { "type": "string", - "description": "pattern of repositories to search for", - "name": "pattern", + "description": "glob pattern of repositories to search for, in the form owner or owner/repo", + "name": "query", "in": "query" } ],