diff --git a/.github/actionlint.yaml b/.github/actionlint.yaml new file mode 100644 index 0000000..447aaa1 --- /dev/null +++ b/.github/actionlint.yaml @@ -0,0 +1,6 @@ +paths: + .github/workflows/**/*.{yml,yaml}: + ignore: + - '"inputs" section is alias node but mapping node is expected' + - '"paths" section must be sequence node but got alias node with "" tag' + - '"paths-ignore" section must be sequence node but got alias node with "" tag' diff --git a/.github/dependabot.yml b/.github/dependabot.yml index f1af2b4..237d7ba 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -3,11 +3,11 @@ updates: - package-ecosystem: "github-actions" directory: "/" schedule: - interval: "weekly" + interval: "monthly" #open-pull-requests-limit: 1 - package-ecosystem: "npm" directory: "/" schedule: - interval: "weekly" + interval: "monthly" #open-pull-requests-limit: 1 diff --git a/.github/workflows/dev.yaml b/.github/workflows/dev.yaml index a36097d..e28303b 100644 --- a/.github/workflows/dev.yaml +++ b/.github/workflows/dev.yaml @@ -26,6 +26,8 @@ jobs: path: ".vitepress/dist" secrets: webhook: ${{ secrets.DISCORD_WEBHOOK }} + ai_chat_api: ${{ secrets.AI_CHAT_API }} + ai_chat_auth: ${{ secrets.AI_CHAT_AUTH }} deploy: name: "Deploy" diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml index 33e3501..ef720e0 100644 --- a/.github/workflows/lint.yaml +++ b/.github/workflows/lint.yaml @@ -14,19 +14,28 @@ concurrency: jobs: lint: name: "Lint" - if: ${{ !contains(github.event.head_commit.message, '#nolint') }} runs-on: ubuntu-latest timeout-minutes: 5 + if: ${{ !contains(github.event.head_commit.message, '#nolint') }} steps: - name: "Checkout" - uses: actions/checkout@v5 + uses: actions/checkout@v6 + - name: "Debug event.json" + if: ${{ !github.event.act }} + continue-on-error: true + run: cat "${GITHUB_EVENT_PATH}" - name: "Debug CTX github" + if: ${{ !github.event.act }} continue-on-error: true env: GITHUB_CTX: ${{ toJSON(github) }} run: echo "$GITHUB_CTX" + - name: "Debug Environment" + if: ${{ !github.event.act }} + continue-on-error: true + run: env - name: "Setup Node 24" uses: actions/setup-node@v6 @@ -34,34 +43,32 @@ jobs: node-version: 24 - name: "Install" - run: | - npm ci + run: npm ci - name: "Build" if: ${{ !cancelled() }} - run: | - npm run docs:build + run: npm run docs:build - #- name: "ESLint" + #- name: "eslint" # if: ${{ !cancelled() }} - # run: | - # npm run lint + # run: npm run lint - - name: "Prettier Check" + - name: "prettier" if: ${{ !cancelled() }} - run: | - npm run prettier:check + run: npm run prettier:check - - name: "Yamllint" + - name: "yamllint" if: ${{ !cancelled() }} env: - CONFIG: "{extends: relaxed, ignore: [node_modules/], rules: {line-length: {max: 119}}}" + CONFIG: .github/yamllint.yaml run: | echo "::group::List Files" - yamllint -d '${{ env.CONFIG }}' --list-files . + yamllint -c "${{ env.CONFIG }}" --list-files . echo "::endgroup::" - yamllint -d '${{ env.CONFIG }}' . + yamllint -c "${{ env.CONFIG }}" . - - name: "Actionlint" + - name: "actionlint" if: ${{ !cancelled() }} - uses: cssnr/actionlint-action@master + uses: cssnr/actionlint-action@v1 + with: + shellcheck_opts: -e SC2129 diff --git a/.github/workflows/pages.yaml b/.github/workflows/pages.yaml index c28f7a5..6d20679 100644 --- a/.github/workflows/pages.yaml +++ b/.github/workflows/pages.yaml @@ -21,7 +21,8 @@ concurrency: jobs: build: name: "Build" - if: ${{ !contains(github.event.head_commit.message, '#nodeploy') }} + if: ${{ !contains(github.event.head_commit.message, '#nodeploy') || github.actor != 'dependabot[bot]' }} + uses: cssnr/workflows/.github/workflows/npm-build.yaml@master permissions: contents: read @@ -29,6 +30,10 @@ jobs: build: "npm run docs:build" path: ".vitepress/dist" pages: true + secrets: + webhook: ${{ secrets.DISCORD_WEBHOOK }} + ai_chat_api: ${{ secrets.AI_CHAT_API }} + ai_chat_auth: ${{ secrets.AI_CHAT_AUTH }} deploy: name: "Deploy" @@ -47,12 +52,12 @@ jobs: steps: - name: "Deploy Pages" id: deployment - uses: actions/deploy-pages@v4 + uses: actions/deploy-pages@v5 - name: "Send Deploy Notification" if: ${{ !cancelled() }} continue-on-error: true - uses: sarisia/actions-status-discord@b8381b25576cb341b2af39926ab42c5056cc44ed # v1.15.5 + uses: sarisia/actions-status-discord@eb045afee445dc055c18d3d90bd0f244fd062708 # v1.16.0 with: webhook: ${{ secrets.DISCORD_WEBHOOK }} description: ${{ steps.deployment.outputs.page_url }} @@ -81,7 +86,7 @@ jobs: - name: "Send Discord Notification" if: ${{ failure() }} - uses: sarisia/actions-status-discord@b8381b25576cb341b2af39926ab42c5056cc44ed # v1.15.5 + uses: sarisia/actions-status-discord@eb045afee445dc055c18d3d90bd0f244fd062708 # v1.16.0 with: webhook: ${{ secrets.DISCORD_WEBHOOK }} - description: ${{ github.event.repository.html_url }}/actions/runs/${{ github.run_id }} + description: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} diff --git a/.github/yamllint.yaml b/.github/yamllint.yaml new file mode 100644 index 0000000..ccf5e5e --- /dev/null +++ b/.github/yamllint.yaml @@ -0,0 +1,7 @@ +extends: relaxed + +ignore-from-file: .gitignore + +rules: + line-length: + max: 120 diff --git a/.gitignore b/.gitignore index 5aff2a2..e0bdc9e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,13 @@ +# Generic .idea/ *.iml .vscode/ -**/cache/ -**/dist/ +cache/ +dist/ build/ node_modules/ -.vitepress/contributors.json +*.tsbuildinfo +# VitePress +contributors.json +.env +.env.development diff --git a/.prettierignore b/.prettierignore index 00f94bb..04994ff 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,5 +1,2 @@ -.idea/ -.vscode/ -dist/ -node_modules/ +.github/pull_request_template.md package-lock.json diff --git a/.prettierrc.json b/.prettierrc.json index 56227a6..58ef7f9 100644 --- a/.prettierrc.json +++ b/.prettierrc.json @@ -1,19 +1,20 @@ { - "trailingComma": "es5", + "$schema": "https://json.schemastore.org/prettierrc", "semi": false, "singleQuote": true, - "printWidth": 110, + "printWidth": 120, "overrides": [ { - "files": ["**/*.html", "**/*.yaml", "**/*.yml"], + "files": ["**/*.vue"], "options": { - "singleQuote": false + "printWidth": 120 } }, { - "files": ["**/*.css", "**/*.scss"], + "files": ["**/*.html", "**/*.yaml", "**/*.yml"], "options": { - "tabWidth": 4 + "singleQuote": false, + "printWidth": 120 } } ] diff --git a/.vitepress/config.mts b/.vitepress/config.mts index af8da7c..baadc35 100644 --- a/.vitepress/config.mts +++ b/.vitepress/config.mts @@ -22,6 +22,7 @@ export default defineConfig({ srcDir: './docs', // base: '/path/', vite: { + envDir: '..', server: { allowedHosts: true, }, @@ -99,7 +100,7 @@ export default defineConfig({ icon: { svg: '', }, - link: 'https://github.com/search?q=topic%3Aactions%20org%3Acssnr&type=Repositories', + link: 'https://github.com/search?q=topic%3Agithub-actions%20org%3Acssnr&type=repositories', }, { icon: 'vitepress', link: settings.source_repo }, { icon: 'discord', link: 'https://discord.gg/wXy6m2X8wY' }, diff --git a/.vitepress/scripts/actions.js b/.vitepress/scripts/actions.js index 3f9c167..4ec09c6 100644 --- a/.vitepress/scripts/actions.js +++ b/.vitepress/scripts/actions.js @@ -25,6 +25,7 @@ export default { 'cssnr/upload-release-action', 'cssnr/virustotal-action', 'cssnr/web-request-action', + 'cssnr/webstore-publish-action', 'cssnr/zensical-action', ], unpublished: [ @@ -33,7 +34,8 @@ export default { 'cssnr/env-json-action', 'cssnr/push-artifacts-action', 'cssnr/validate-outputs-action', - 'smashedr/update-release-notes-action', + 'smashedr/ai-issue-action', + 'smashedr/combine-release-notes-action', 'smashedr/combine-release-notes-action', ], template: [ diff --git a/.vitepress/theme/components/ActionsNavigation.vue b/.vitepress/theme/components/ActionsNavigation.vue index 1ed86b6..0d0c1b1 100644 --- a/.vitepress/theme/components/ActionsNavigation.vue +++ b/.vitepress/theme/components/ActionsNavigation.vue @@ -17,11 +17,7 @@ const currentAction = computed(() => { diff --git a/.vitepress/theme/components/Badges.vue b/.vitepress/theme/components/Badges.vue index c05b5c7..c01243b 100644 --- a/.vitepress/theme/components/Badges.vue +++ b/.vitepress/theme/components/Badges.vue @@ -103,10 +103,7 @@ if (!props.image) badges = badges.filter((b) => !b.image) media="(prefers-color-scheme: dark)" srcset="https://img.shields.io/badge/github-0d1117?style=for-the-badge&logo=github" /> - GitHub + GitHub diff --git a/.vitepress/theme/components/GitHubTable.vue b/.vitepress/theme/components/GitHubTable.vue index 38da5b8..5ebcc4a 100644 --- a/.vitepress/theme/components/GitHubTable.vue +++ b/.vitepress/theme/components/GitHubTable.vue @@ -60,9 +60,7 @@ function shortName(repo) { - {{ - shortName(repo) - }} + {{ shortName(repo) }} @@ -88,11 +86,7 @@ function shortName(repo) { - + Language diff --git a/.vitepress/theme/components/LatestVersionBadge.vue b/.vitepress/theme/components/LatestVersionBadge.vue index da5940c..9fc2f18 100644 --- a/.vitepress/theme/components/LatestVersionBadge.vue +++ b/.vitepress/theme/components/LatestVersionBadge.vue @@ -43,7 +43,7 @@ async function generateHash(event) { /** * Fetch Data * @param {String} url - * @return {Promise} + * @return {Promise} */ async function fetchData(url) { const options = { headers: { 'X-GitHub-Api-Version': '2022-11-28' } } diff --git a/.vitepress/theme/components/RollingTags.vue b/.vitepress/theme/components/RollingTags.vue index b44b08e..a416848 100644 --- a/.vitepress/theme/components/RollingTags.vue +++ b/.vitepress/theme/components/RollingTags.vue @@ -8,8 +8,8 @@ const props = defineProps({