From 0e21c62c4fdad3ea1017e6b48188aea98a9c1662 Mon Sep 17 00:00:00 2001 From: CrawlerCode <41094392+CrawlerCode@users.noreply.github.com> Date: Wed, 28 Jan 2026 21:50:06 +0100 Subject: [PATCH 01/10] ci: Add super-linter for pull requests --- .github/workflows/lint.yml | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 .github/workflows/lint.yml diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml new file mode 100644 index 0000000..9ae6bb3 --- /dev/null +++ b/.github/workflows/lint.yml @@ -0,0 +1,26 @@ +name: Lint + +on: + pull_request: null + +permissions: {} + +jobs: + lint: + name: Lint + runs-on: ubuntu-latest + + permissions: + contents: read + statuses: write + + steps: + - uses: actions/checkout@v5 + with: + fetch-depth: 0 + persist-credentials: false + + - name: super-linter + uses: super-linter/super-linter/slim@v8.4.0 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From 2bf603b348ebf9b995a5ad3cc2993fc6fc82e02b Mon Sep 17 00:00:00 2001 From: CrawlerCode <41094392+CrawlerCode@users.noreply.github.com> Date: Wed, 28 Jan 2026 22:27:35 +0100 Subject: [PATCH 02/10] fix: Install deps --- .github/workflows/lint.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 9ae6bb3..bcf0347 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -20,7 +20,18 @@ jobs: fetch-depth: 0 persist-credentials: false + - uses: pnpm/action-setup@v4 + + - uses: actions/setup-node@v6 + with: + node-version: 24 + cache: "pnpm" + + - run: pnpm install --frozen-lockfile + - name: super-linter uses: super-linter/super-linter/slim@v8.4.0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + VALIDATE_BIOME_FORMAT: false + VALIDATE_BIOME_LINT: false From 7aa97e549d9d47bf3abe9fac080a2a93af865bd6 Mon Sep 17 00:00:00 2001 From: CrawlerCode <41094392+CrawlerCode@users.noreply.github.com> Date: Wed, 28 Jan 2026 22:51:46 +0100 Subject: [PATCH 03/10] fix: Some fixes --- .github/workflows/lint.yml | 2 ++ .github/workflows/publish-pre-release.yml | 2 +- .github/workflows/publish.yml | 4 ++-- .prettierignore | 2 ++ README.md | 8 ++++---- tsconfig.json | 2 -- 6 files changed, 11 insertions(+), 9 deletions(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index bcf0347..472c9d4 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -33,5 +33,7 @@ jobs: uses: super-linter/super-linter/slim@v8.4.0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + IGNORE_GITIGNORED_FILES: true + FILTER_REGEX_EXCLUDE: ^CHANGELOG\.md|pnpm-lock.yaml$ VALIDATE_BIOME_FORMAT: false VALIDATE_BIOME_LINT: false diff --git a/.github/workflows/publish-pre-release.yml b/.github/workflows/publish-pre-release.yml index 314254c..bb7f2e5 100644 --- a/.github/workflows/publish-pre-release.yml +++ b/.github/workflows/publish-pre-release.yml @@ -26,7 +26,7 @@ jobs: - run: pnpm run zip:chrome --mode pre-release - - run: gh release upload ${{ github.event.release.tag_name }} $(ls .output/*-chrome.zip) + - run: gh release upload ${{ github.event.release.tag_name }} "$(ls .output/*-chrome.zip)" env: GITHUB_TOKEN: ${{ github.TOKEN }} diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 1e1b687..eeed11f 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -26,7 +26,7 @@ jobs: - run: pnpm run zip:chrome - - run: gh release upload ${{ github.event.release.tag_name }} $(ls .output/*-chrome.zip) + - run: gh release upload ${{ github.event.release.tag_name }} "$(ls .output/*-chrome.zip)" env: GITHUB_TOKEN: ${{ github.TOKEN }} - run: pnpm wxt submit --chrome-zip .output/*-chrome.zip @@ -53,7 +53,7 @@ jobs: - run: pnpm run zip:firefox - - run: gh release upload ${{ github.event.release.tag_name }} $(ls .output/*-firefox.zip) + - run: gh release upload ${{ github.event.release.tag_name }} "$(ls .output/*-firefox.zip)" env: GITHUB_TOKEN: ${{ github.TOKEN }} diff --git a/.prettierignore b/.prettierignore index 2240fb9..2e0facf 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1 +1,3 @@ +CHANGELOG.md + src/routeTree.gen.ts \ No newline at end of file diff --git a/README.md b/README.md index 603db55..aab4435 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ [Install-Button-Firefox]: https://img.shields.io/badge/Install-71b500?style=for-the-badge&logoColor=white&logo=firefox-browser [Install-Link-Firefox]: https://addons.mozilla.org/de/firefox/addon/redmine-time-tracking "Open in firefox add-on store" -# 🚀 Features +## 🚀 Features - View all your assigned Redmine issues grouped by projects - Filter issues by project and status @@ -38,7 +38,7 @@ - Multiple languages - Dark & light mode (system default) -# 🛠️ Requirements +## 🛠️ Requirements Supported browsers: @@ -61,7 +61,7 @@ At least **Redmine version `3.0` or higher** required. Recommended version `5.0` | Display project-available time entry activities when _adding spent time entries_ | `< 3.4.0` | | Remote Redmine search | `< 3.3.0` | -# 🌐 Supported languages +## 🌐 Supported languages - English - German @@ -79,6 +79,6 @@ At least **Redmine version `3.0` or higher** required. Recommended version `5.0` ![issues-add-spent-time](screenshots/en/dark/issues-add-spent-time.png) ![issues-context-menu](screenshots/en/dark/issues-context-menu.png) -# Credits +## Credits Logo is Copyright (C) 2009 Martin Herr and is licensed under Creative Commons (https://www.redmine.org/projects/redmine/wiki/logo) diff --git a/tsconfig.json b/tsconfig.json index 0766891..49b743e 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -11,7 +11,6 @@ "module": "ESNext", "skipLibCheck": true, - /* Bundler mode */ "moduleResolution": "bundler", "allowImportingTsExtensions": true, "resolveJsonModule": true, @@ -19,7 +18,6 @@ "noEmit": true, "jsx": "react-jsx", - /* Linting */ "strict": true, "noUnusedLocals": true, "noUnusedParameters": true, From 0e7bc518ce08bd11f269932718960150ea122b98 Mon Sep 17 00:00:00 2001 From: CrawlerCode <41094392+CrawlerCode@users.noreply.github.com> Date: Mon, 2 Feb 2026 19:54:20 +0100 Subject: [PATCH 04/10] fix: More fixes --- .codespellrc | 2 ++ .github/DISCUSSION_TEMPLATE/feature-request-ideas.yml | 1 + .github/ISSUE_TEMPLATE/bug_report.yml | 1 + .github/ISSUE_TEMPLATE/config.yml | 1 + .github/workflows/lint.yml | 3 ++- .github/workflows/publish-pre-release.yml | 6 +++++- .github/workflows/publish.yml | 9 ++++++++- .github/workflows/release.yml | 1 + README.md | 4 ++-- eslint.config.js => eslint.config.mjs | 7 +++++++ package.json | 2 +- src/entrypoints/options.html | 1 + src/entrypoints/popup.html | 1 + zizmor.yml | 5 +++++ 14 files changed, 38 insertions(+), 6 deletions(-) create mode 100644 .codespellrc rename eslint.config.js => eslint.config.mjs (91%) create mode 100644 zizmor.yml diff --git a/.codespellrc b/.codespellrc new file mode 100644 index 0000000..7f2ecff --- /dev/null +++ b/.codespellrc @@ -0,0 +1,2 @@ +[codespell] +skip = src/lang/*.json \ No newline at end of file diff --git a/.github/DISCUSSION_TEMPLATE/feature-request-ideas.yml b/.github/DISCUSSION_TEMPLATE/feature-request-ideas.yml index fe7922d..8dbc44a 100644 --- a/.github/DISCUSSION_TEMPLATE/feature-request-ideas.yml +++ b/.github/DISCUSSION_TEMPLATE/feature-request-ideas.yml @@ -1,3 +1,4 @@ +--- body: - type: textarea attributes: diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 60ac91a..4b8294e 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -1,3 +1,4 @@ +--- name: Report an issue description: Create a report to help us improve labels: ["bug"] diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 05b2014..76df72a 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,3 +1,4 @@ +--- blank_issues_enabled: false contact_links: - name: Feature request / Ideas diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 472c9d4..e742051 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -1,3 +1,4 @@ +--- name: Lint on: @@ -34,6 +35,6 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} IGNORE_GITIGNORED_FILES: true - FILTER_REGEX_EXCLUDE: ^CHANGELOG\.md|pnpm-lock.yaml$ + FILTER_REGEX_EXCLUDE: ^(CHANGELOG\.md|pnpm-lock\.yaml)$ VALIDATE_BIOME_FORMAT: false VALIDATE_BIOME_LINT: false diff --git a/.github/workflows/publish-pre-release.yml b/.github/workflows/publish-pre-release.yml index bb7f2e5..2475ea6 100644 --- a/.github/workflows/publish-pre-release.yml +++ b/.github/workflows/publish-pre-release.yml @@ -1,3 +1,4 @@ +--- name: Publish Pre-Release on: @@ -15,6 +16,8 @@ jobs: steps: - uses: actions/checkout@v4 + with: + persist-credentials: false - uses: pnpm/action-setup@v4 @@ -30,7 +33,8 @@ jobs: env: GITHUB_TOKEN: ${{ github.TOKEN }} - - run: pnpm wxt submit --chrome-zip .output/*-chrome.zip + - run: pnpm wxt submit \ + --chrome-zip .output/*-chrome.zip env: CHROME_EXTENSION_ID: adgcdimdkkaddeopcabokepmaihfhklb CHROME_CLIENT_ID: ${{ secrets.CHROME_CLIENT_ID }} diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index eeed11f..435a49e 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -1,3 +1,4 @@ +--- name: Publish on: @@ -15,6 +16,8 @@ jobs: steps: - uses: actions/checkout@v4 + with: + persist-credentials: false - uses: pnpm/action-setup@v4 @@ -42,6 +45,8 @@ jobs: steps: - uses: actions/checkout@v4 + with: + persist-credentials: false - uses: pnpm/action-setup@v4 @@ -57,7 +62,9 @@ jobs: env: GITHUB_TOKEN: ${{ github.TOKEN }} - - run: pnpm wxt submit --firefox-zip .output/*-firefox.zip --firefox-sources-zip .output/*-sources.zip + - run: pnpm wxt submit \ + --firefox-zip .output/*-firefox.zip \ + --firefox-sources-zip .output/*-sources.zip env: FIREFOX_EXTENSION_ID: "{ea2ad5bc-e458-414d-8565-5cfe9f7cf0c2}" FIREFOX_JWT_ISSUER: ${{ secrets.FIREFOX_JWT_ISSUER }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c3faac8..1bb8451 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,3 +1,4 @@ +--- name: Release on: diff --git a/README.md b/README.md index aab4435..8b2cb8f 100644 --- a/README.md +++ b/README.md @@ -70,7 +70,7 @@ At least **Redmine version `3.0` or higher** required. Recommended version `5.0` > If you want to add more languages or extend existing ones, feel free to contribute. Just create a pull request with the desired changes. The language files are located under [src/lang](src/lang) and [public/\_locales](public/_locales). -# 📸 Screenshots +## 📸 Screenshots ![issues](screenshots/en/dark/issues.png) ![issues-time](screenshots/en/dark/time.png) @@ -81,4 +81,4 @@ At least **Redmine version `3.0` or higher** required. Recommended version `5.0` ## Credits -Logo is Copyright (C) 2009 Martin Herr and is licensed under Creative Commons (https://www.redmine.org/projects/redmine/wiki/logo) +Logo is Copyright (C) 2009 Martin Herr and is licensed under Creative Commons \(https://www.redmine.org/projects/redmine/wiki/logo\) diff --git a/eslint.config.js b/eslint.config.mjs similarity index 91% rename from eslint.config.js rename to eslint.config.mjs index e0a1da3..3a3e586 100644 --- a/eslint.config.js +++ b/eslint.config.mjs @@ -61,4 +61,11 @@ export default [ ], }, }, + // Disable some rule for super-linter + { + files: ["src/lang/*.json"], + rules: { + "jsonc/no-irregular-whitespace": "off", + }, + }, ]; diff --git a/package.json b/package.json index 75eed86..efa0532 100644 --- a/package.json +++ b/package.json @@ -22,8 +22,8 @@ "lint": "eslint --fix src tests fixtures", "format": "prettier --write src tests public fixtures", "compile": "tsc --noEmit", + "lang-verify": "formatjs verify --source-locale en --missing-keys src/lang/*.json", "test": "playwright test", - "lang:verify": "formatjs verify --source-locale en --missing-keys src/lang/*.json", "release": "semantic-release" }, "dependencies": { diff --git a/src/entrypoints/options.html b/src/entrypoints/options.html index 2e4088f..fbe06f1 100644 --- a/src/entrypoints/options.html +++ b/src/entrypoints/options.html @@ -5,6 +5,7 @@ +
diff --git a/src/entrypoints/popup.html b/src/entrypoints/popup.html index 85169fa..0fb2a71 100644 --- a/src/entrypoints/popup.html +++ b/src/entrypoints/popup.html @@ -5,6 +5,7 @@ +
diff --git a/zizmor.yml b/zizmor.yml new file mode 100644 index 0000000..00ea2bb --- /dev/null +++ b/zizmor.yml @@ -0,0 +1,5 @@ +rules: + unpinned-uses: + config: + policies: + "*": ref-pin From 64384b9397748b5570d3f530686da97b14fdf656 Mon Sep 17 00:00:00 2001 From: CrawlerCode <41094392+CrawlerCode@users.noreply.github.com> Date: Mon, 2 Feb 2026 20:18:29 +0100 Subject: [PATCH 05/10] fix: Add more --- .../feature-request-ideas.yml | 16 +- .github/workflows/lint.yml | 1 + .github/workflows/publish-pre-release.yml | 84 +++++------ .github/workflows/publish.yml | 142 +++++++++--------- .prettierignore | 2 +- README.md | 2 +- eslint.config.mjs | 7 - package.json | 2 +- zizmor.yml => zizmor.yaml | 0 9 files changed, 125 insertions(+), 131 deletions(-) rename zizmor.yml => zizmor.yaml (100%) diff --git a/.github/DISCUSSION_TEMPLATE/feature-request-ideas.yml b/.github/DISCUSSION_TEMPLATE/feature-request-ideas.yml index 8dbc44a..a41fc80 100644 --- a/.github/DISCUSSION_TEMPLATE/feature-request-ideas.yml +++ b/.github/DISCUSSION_TEMPLATE/feature-request-ideas.yml @@ -1,8 +1,8 @@ ---- -body: - - type: textarea - attributes: - label: Describe the feature you'd like - description: A clear and concise description of what you want to happen - validations: - required: true +--- +body: + - type: textarea + attributes: + label: Describe the feature you'd like + description: A clear and concise description of what you want to happen + validations: + required: true diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index e742051..1455a03 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -35,6 +35,7 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} IGNORE_GITIGNORED_FILES: true + STRIP_DEFAULT_WORKSPACE_FOR_REGEX: true FILTER_REGEX_EXCLUDE: ^(CHANGELOG\.md|pnpm-lock\.yaml)$ VALIDATE_BIOME_FORMAT: false VALIDATE_BIOME_LINT: false diff --git a/.github/workflows/publish-pre-release.yml b/.github/workflows/publish-pre-release.yml index 2475ea6..1df664d 100644 --- a/.github/workflows/publish-pre-release.yml +++ b/.github/workflows/publish-pre-release.yml @@ -1,42 +1,42 @@ ---- -name: Publish Pre-Release - -on: - release: - types: - - prereleased - -permissions: - contents: write - -jobs: - publish-chrome-pre-release: - name: Publish Pre-Release to Chrome Web Store - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v4 - with: - persist-credentials: false - - - uses: pnpm/action-setup@v4 - - - uses: actions/setup-node@v6 - with: - node-version: 22 - - - run: pnpm install --frozen-lockfile - - - run: pnpm run zip:chrome --mode pre-release - - - run: gh release upload ${{ github.event.release.tag_name }} "$(ls .output/*-chrome.zip)" - env: - GITHUB_TOKEN: ${{ github.TOKEN }} - - - run: pnpm wxt submit \ - --chrome-zip .output/*-chrome.zip - env: - CHROME_EXTENSION_ID: adgcdimdkkaddeopcabokepmaihfhklb - CHROME_CLIENT_ID: ${{ secrets.CHROME_CLIENT_ID }} - CHROME_CLIENT_SECRET: ${{ secrets.CHROME_CLIENT_SECRET }} - CHROME_REFRESH_TOKEN: ${{ secrets.CHROME_REFRESH_TOKEN }} +--- +name: Publish Pre-Release + +on: + release: + types: + - prereleased + +permissions: + contents: write + +jobs: + publish-chrome-pre-release: + name: Publish Pre-Release to Chrome Web Store + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + with: + persist-credentials: false + + - uses: pnpm/action-setup@v4 + + - uses: actions/setup-node@v6 + with: + node-version: 22 + + - run: pnpm install --frozen-lockfile + + - run: pnpm run zip:chrome --mode pre-release + + - run: gh release upload ${{ github.event.release.tag_name }} "$(ls .output/*-chrome.zip)" + env: + GITHUB_TOKEN: ${{ github.TOKEN }} + + - run: pnpm wxt submit \ + --chrome-zip .output/*-chrome.zip + env: + CHROME_EXTENSION_ID: adgcdimdkkaddeopcabokepmaihfhklb + CHROME_CLIENT_ID: ${{ secrets.CHROME_CLIENT_ID }} + CHROME_CLIENT_SECRET: ${{ secrets.CHROME_CLIENT_SECRET }} + CHROME_REFRESH_TOKEN: ${{ secrets.CHROME_REFRESH_TOKEN }} diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 435a49e..18173ed 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -1,71 +1,71 @@ ---- -name: Publish - -on: - release: - types: - - released - -permissions: - contents: write - -jobs: - publish-chrome: - name: Publish to Chrome Web Store - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v4 - with: - persist-credentials: false - - - uses: pnpm/action-setup@v4 - - - uses: actions/setup-node@v6 - with: - node-version: 22 - - - run: pnpm install --frozen-lockfile - - - run: pnpm run zip:chrome - - - run: gh release upload ${{ github.event.release.tag_name }} "$(ls .output/*-chrome.zip)" - env: - GITHUB_TOKEN: ${{ github.TOKEN }} - - run: pnpm wxt submit --chrome-zip .output/*-chrome.zip - env: - CHROME_EXTENSION_ID: ldcanhhkffokndenejhafhlkapflgcjg - CHROME_CLIENT_ID: ${{ secrets.CHROME_CLIENT_ID }} - CHROME_CLIENT_SECRET: ${{ secrets.CHROME_CLIENT_SECRET }} - CHROME_REFRESH_TOKEN: ${{ secrets.CHROME_REFRESH_TOKEN }} - - publish-firefox: - name: Publish to Firefox Addon Store - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v4 - with: - persist-credentials: false - - - uses: pnpm/action-setup@v4 - - - uses: actions/setup-node@v6 - with: - node-version: 22 - - - run: pnpm install --frozen-lockfile - - - run: pnpm run zip:firefox - - - run: gh release upload ${{ github.event.release.tag_name }} "$(ls .output/*-firefox.zip)" - env: - GITHUB_TOKEN: ${{ github.TOKEN }} - - - run: pnpm wxt submit \ - --firefox-zip .output/*-firefox.zip \ - --firefox-sources-zip .output/*-sources.zip - env: - FIREFOX_EXTENSION_ID: "{ea2ad5bc-e458-414d-8565-5cfe9f7cf0c2}" - FIREFOX_JWT_ISSUER: ${{ secrets.FIREFOX_JWT_ISSUER }} - FIREFOX_JWT_SECRET: ${{ secrets.FIREFOX_JWT_SECRET }} +--- +name: Publish + +on: + release: + types: + - released + +permissions: + contents: write + +jobs: + publish-chrome: + name: Publish to Chrome Web Store + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + with: + persist-credentials: false + + - uses: pnpm/action-setup@v4 + + - uses: actions/setup-node@v6 + with: + node-version: 22 + + - run: pnpm install --frozen-lockfile + + - run: pnpm run zip:chrome + + - run: gh release upload ${{ github.event.release.tag_name }} "$(ls .output/*-chrome.zip)" + env: + GITHUB_TOKEN: ${{ github.TOKEN }} + - run: pnpm wxt submit --chrome-zip .output/*-chrome.zip + env: + CHROME_EXTENSION_ID: ldcanhhkffokndenejhafhlkapflgcjg + CHROME_CLIENT_ID: ${{ secrets.CHROME_CLIENT_ID }} + CHROME_CLIENT_SECRET: ${{ secrets.CHROME_CLIENT_SECRET }} + CHROME_REFRESH_TOKEN: ${{ secrets.CHROME_REFRESH_TOKEN }} + + publish-firefox: + name: Publish to Firefox Addon Store + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + with: + persist-credentials: false + + - uses: pnpm/action-setup@v4 + + - uses: actions/setup-node@v6 + with: + node-version: 22 + + - run: pnpm install --frozen-lockfile + + - run: pnpm run zip:firefox + + - run: gh release upload ${{ github.event.release.tag_name }} "$(ls .output/*-firefox.zip)" + env: + GITHUB_TOKEN: ${{ github.TOKEN }} + + - run: pnpm wxt submit \ + --firefox-zip .output/*-firefox.zip \ + --firefox-sources-zip .output/*-sources.zip + env: + FIREFOX_EXTENSION_ID: "{ea2ad5bc-e458-414d-8565-5cfe9f7cf0c2}" + FIREFOX_JWT_ISSUER: ${{ secrets.FIREFOX_JWT_ISSUER }} + FIREFOX_JWT_SECRET: ${{ secrets.FIREFOX_JWT_SECRET }} diff --git a/.prettierignore b/.prettierignore index 2e0facf..661cc63 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,3 +1,3 @@ CHANGELOG.md - +pnpm-lock.yaml src/routeTree.gen.ts \ No newline at end of file diff --git a/README.md b/README.md index 8b2cb8f..2d20270 100644 --- a/README.md +++ b/README.md @@ -81,4 +81,4 @@ At least **Redmine version `3.0` or higher** required. Recommended version `5.0` ## Credits -Logo is Copyright (C) 2009 Martin Herr and is licensed under Creative Commons \(https://www.redmine.org/projects/redmine/wiki/logo\) +Logo is Copyright (C) 2009 Martin Herr and is licensed under Creative Commons ([https://www.redmine.org/projects/redmine/wiki/logo](https://www.redmine.org/projects/redmine/wiki/logo)) diff --git a/eslint.config.mjs b/eslint.config.mjs index 3a3e586..e0a1da3 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -61,11 +61,4 @@ export default [ ], }, }, - // Disable some rule for super-linter - { - files: ["src/lang/*.json"], - rules: { - "jsonc/no-irregular-whitespace": "off", - }, - }, ]; diff --git a/package.json b/package.json index efa0532..6b6b21d 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "zip:chrome": "wxt zip -b chrome", "zip:firefox": "wxt zip -b firefox --mv3", "lint": "eslint --fix src tests fixtures", - "format": "prettier --write src tests public fixtures", + "format": "prettier --write .", "compile": "tsc --noEmit", "lang-verify": "formatjs verify --source-locale en --missing-keys src/lang/*.json", "test": "playwright test", diff --git a/zizmor.yml b/zizmor.yaml similarity index 100% rename from zizmor.yml rename to zizmor.yaml From a4b833d91d33b3c70ecdc87ef8d1a1d9b9293d62 Mon Sep 17 00:00:00 2001 From: CrawlerCode <41094392+CrawlerCode@users.noreply.github.com> Date: Mon, 2 Feb 2026 20:49:15 +0100 Subject: [PATCH 06/10] fix: Move configs --- .codespellrc | 2 -- .github/linters/.codespellrc | 2 ++ .github/linters/eslint.config.mjs | 3 +++ zizmor.yaml => .github/linters/zizmor.yaml | 1 + .github/workflows/lint.yml | 5 +++-- 5 files changed, 9 insertions(+), 4 deletions(-) delete mode 100644 .codespellrc create mode 100644 .github/linters/.codespellrc create mode 100644 .github/linters/eslint.config.mjs rename zizmor.yaml => .github/linters/zizmor.yaml (94%) diff --git a/.codespellrc b/.codespellrc deleted file mode 100644 index 7f2ecff..0000000 --- a/.codespellrc +++ /dev/null @@ -1,2 +0,0 @@ -[codespell] -skip = src/lang/*.json \ No newline at end of file diff --git a/.github/linters/.codespellrc b/.github/linters/.codespellrc new file mode 100644 index 0000000..0121d60 --- /dev/null +++ b/.github/linters/.codespellrc @@ -0,0 +1,2 @@ +[codespell] +skip = ./src/lang/*.json \ No newline at end of file diff --git a/.github/linters/eslint.config.mjs b/.github/linters/eslint.config.mjs new file mode 100644 index 0000000..1b756a2 --- /dev/null +++ b/.github/linters/eslint.config.mjs @@ -0,0 +1,3 @@ +import config from "../../eslint.config.mjs"; + +export default config; diff --git a/zizmor.yaml b/.github/linters/zizmor.yaml similarity index 94% rename from zizmor.yaml rename to .github/linters/zizmor.yaml index 00ea2bb..bbb0366 100644 --- a/zizmor.yaml +++ b/.github/linters/zizmor.yaml @@ -1,3 +1,4 @@ +--- rules: unpinned-uses: config: diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 1455a03..4a8ec23 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -37,5 +37,6 @@ jobs: IGNORE_GITIGNORED_FILES: true STRIP_DEFAULT_WORKSPACE_FOR_REGEX: true FILTER_REGEX_EXCLUDE: ^(CHANGELOG\.md|pnpm-lock\.yaml)$ - VALIDATE_BIOME_FORMAT: false - VALIDATE_BIOME_LINT: false + VALIDATE_BIOME_FORMAT: false # Prettier is used instead + VALIDATE_BIOME_LINT: false # Prettier is used instead + VALIDATE_JSCPD: false # TODO: Enable this linter in the future to detect code duplication From 804fac537d4244287c06185e61dd2c7f8340c18f Mon Sep 17 00:00:00 2001 From: CrawlerCode <41094392+CrawlerCode@users.noreply.github.com> Date: Mon, 2 Feb 2026 21:09:21 +0100 Subject: [PATCH 07/10] fix: Fix zizmor --- .github/workflows/publish-pre-release.yml | 5 +++-- .github/workflows/publish.yml | 10 ++++++---- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/.github/workflows/publish-pre-release.yml b/.github/workflows/publish-pre-release.yml index 1df664d..b65f6cb 100644 --- a/.github/workflows/publish-pre-release.yml +++ b/.github/workflows/publish-pre-release.yml @@ -29,9 +29,10 @@ jobs: - run: pnpm run zip:chrome --mode pre-release - - run: gh release upload ${{ github.event.release.tag_name }} "$(ls .output/*-chrome.zip)" + - run: gh release upload ${RELEASE_TAG} "$(ls .output/*-chrome.zip)" env: - GITHUB_TOKEN: ${{ github.TOKEN }} + GITHUB_TOKEN: ${{ github.token }} + RELEASE_TAG: ${{ github.event.release.tag_name }} - run: pnpm wxt submit \ --chrome-zip .output/*-chrome.zip diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 18173ed..5644fd1 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -29,9 +29,10 @@ jobs: - run: pnpm run zip:chrome - - run: gh release upload ${{ github.event.release.tag_name }} "$(ls .output/*-chrome.zip)" + - run: gh release upload ${RELEASE_TAG} "$(ls .output/*-chrome.zip)" env: - GITHUB_TOKEN: ${{ github.TOKEN }} + GITHUB_TOKEN: ${{ github.token }} + RELEASE_TAG: ${{ github.event.release.tag_name }} - run: pnpm wxt submit --chrome-zip .output/*-chrome.zip env: CHROME_EXTENSION_ID: ldcanhhkffokndenejhafhlkapflgcjg @@ -58,9 +59,10 @@ jobs: - run: pnpm run zip:firefox - - run: gh release upload ${{ github.event.release.tag_name }} "$(ls .output/*-firefox.zip)" + - run: gh release upload ${RELEASE_TAG} "$(ls .output/*-firefox.zip)" env: - GITHUB_TOKEN: ${{ github.TOKEN }} + GITHUB_TOKEN: ${{ github.token }} + RELEASE_TAG: ${{ github.event.release.tag_name }} - run: pnpm wxt submit \ --firefox-zip .output/*-firefox.zip \ From d70e7f8f1d66cfe35a4daf2aeb6e16bd777ee1df Mon Sep 17 00:00:00 2001 From: CrawlerCode <41094392+CrawlerCode@users.noreply.github.com> Date: Sat, 14 Feb 2026 21:21:15 +0100 Subject: [PATCH 08/10] fix: Add stylelint & fix github actions --- .github/linters/.codespellrc | 2 +- .github/linters/.stylelintrc.json | 3 + .github/workflows/publish-pre-release.yml | 8 +- .github/workflows/publish.yml | 13 +- .github/workflows/release.yml | 3 +- package.json | 5 +- pnpm-lock.yaml | 470 ++++++++++++++++++++++ src/index.css | 148 +++---- stylelint.config.mjs | 4 + 9 files changed, 573 insertions(+), 83 deletions(-) create mode 100644 .github/linters/.stylelintrc.json create mode 100644 stylelint.config.mjs diff --git a/.github/linters/.codespellrc b/.github/linters/.codespellrc index 0121d60..9b71a68 100644 --- a/.github/linters/.codespellrc +++ b/.github/linters/.codespellrc @@ -1,2 +1,2 @@ [codespell] -skip = ./src/lang/*.json \ No newline at end of file +skip = */src/lang/*.json \ No newline at end of file diff --git a/.github/linters/.stylelintrc.json b/.github/linters/.stylelintrc.json new file mode 100644 index 0000000..c434436 --- /dev/null +++ b/.github/linters/.stylelintrc.json @@ -0,0 +1,3 @@ +{ + "extends": ["../../stylelint.config.mjs"] +} diff --git a/.github/workflows/publish-pre-release.yml b/.github/workflows/publish-pre-release.yml index f117442..d4f538f 100644 --- a/.github/workflows/publish-pre-release.yml +++ b/.github/workflows/publish-pre-release.yml @@ -6,14 +6,16 @@ on: types: - prereleased -permissions: - contents: write +permissions: {} jobs: publish-chrome-pre-release: name: Publish Pre-Release to Chrome Web Store runs-on: ubuntu-latest + permissions: + contents: write + steps: - uses: actions/checkout@v4 with: @@ -29,7 +31,7 @@ jobs: - run: pnpm run build:chrome:pre-release - - run: gh release upload ${RELEASE_TAG} "$(ls .output/*-chrome.zip)" + - run: gh release upload "${RELEASE_TAG}" "$(ls .output/*-chrome.zip)" env: GITHUB_TOKEN: ${{ github.token }} RELEASE_TAG: ${{ github.event.release.tag_name }} diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 94458eb..37d8396 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -6,14 +6,16 @@ on: types: - released -permissions: - contents: write +permissions: {} jobs: publish-chrome: name: Publish to Chrome Web Store runs-on: ubuntu-latest + permissions: + contents: write + steps: - uses: actions/checkout@v4 with: @@ -29,7 +31,7 @@ jobs: - run: pnpm run build:chrome:release - - run: gh release upload ${RELEASE_TAG} "$(ls .output/*-chrome.zip)" + - run: gh release upload "${RELEASE_TAG}" "$(ls .output/*-chrome.zip)" env: GITHUB_TOKEN: ${{ github.token }} RELEASE_TAG: ${{ github.event.release.tag_name }} @@ -44,6 +46,9 @@ jobs: name: Publish to Firefox Addon Store runs-on: ubuntu-latest + permissions: + contents: write + steps: - uses: actions/checkout@v4 with: @@ -59,7 +64,7 @@ jobs: - run: pnpm run build:firefox:release - - run: gh release upload ${RELEASE_TAG} "$(ls .output/*-firefox.zip)" + - run: gh release upload "${RELEASE_TAG}" "$(ls .output/*-firefox.zip)" env: GITHUB_TOKEN: ${{ github.token }} RELEASE_TAG: ${{ github.event.release.tag_name }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 1bb8451..711fc0b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -7,8 +7,7 @@ on: - main workflow_dispatch: -permissions: - contents: read +permissions: {} jobs: release: diff --git a/package.json b/package.json index 2963c0a..bd97981 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "build:firefox:pre-release": "cross-env NODE_ENV=production wxt zip -b firefox --mv3 --mode pre-release", "build:chrome:release": "cross-env NODE_ENV=production wxt zip -b chrome --mode release", "build:firefox:release": "cross-env NODE_ENV=production wxt zip -b firefox --mv3 --mode release", - "lint": "eslint --fix src tests fixtures", + "lint": "eslint --fix src tests fixtures && stylelint --fix src/**/*.css", "format": "prettier --write .", "compile": "tsc --noEmit", "lang-verify": "formatjs verify --source-locale en --missing-keys src/lang/*.json", @@ -85,6 +85,9 @@ "semantic-release": "^25.0.2", "shadcn": "^3.7.0", "sharp": "^0.34.5", + "stylelint": "^17.3.0", + "stylelint-config-standard": "^40.0.0", + "stylelint-config-tailwindcss": "^1.0.1", "tailwindcss": "^4.1.18", "tw-animate-css": "^1.4.0", "typescript": "^5.9.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8c80ba8..cc561d2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -176,6 +176,15 @@ importers: sharp: specifier: ^0.34.5 version: 0.34.5 + stylelint: + specifier: ^17.3.0 + version: 17.3.0(typescript@5.9.3) + stylelint-config-standard: + specifier: ^40.0.0 + version: 40.0.0(stylelint@17.3.0(typescript@5.9.3)) + stylelint-config-tailwindcss: + specifier: ^1.0.1 + version: 1.0.1(stylelint@17.3.0(typescript@5.9.3))(tailwindcss@4.1.18) tailwindcss: specifier: ^4.1.18 version: 4.1.18 @@ -412,10 +421,55 @@ packages: '@types/react': optional: true + '@cacheable/memory@2.0.7': + resolution: {integrity: sha512-RbxnxAMf89Tp1dLhXMS7ceft/PGsDl1Ip7T20z5nZ+pwIAsQ1p2izPjVG69oCLv/jfQ7HDPHTWK0c9rcAWXN3A==} + + '@cacheable/utils@2.3.4': + resolution: {integrity: sha512-knwKUJEYgIfwShABS1BX6JyJJTglAFcEU7EXqzTdiGCXur4voqkiJkdgZIQtWNFhynzDWERcTYv/sETMu3uJWA==} + '@colors/colors@1.5.0': resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} engines: {node: '>=0.1.90'} + '@csstools/css-calc@3.1.1': + resolution: {integrity: sha512-HJ26Z/vmsZQqs/o3a6bgKslXGFAungXGbinULZO3eMsOyNJHeBBZfup5FiZInOghgoM4Hwnmw+OgbJCNg1wwUQ==} + engines: {node: '>=20.19.0'} + peerDependencies: + '@csstools/css-parser-algorithms': ^4.0.0 + '@csstools/css-tokenizer': ^4.0.0 + + '@csstools/css-parser-algorithms@4.0.0': + resolution: {integrity: sha512-+B87qS7fIG3L5h3qwJ/IFbjoVoOe/bpOdh9hAjXbvx0o8ImEmUsGXN0inFOnk2ChCFgqkkGFQ+TpM5rbhkKe4w==} + engines: {node: '>=20.19.0'} + peerDependencies: + '@csstools/css-tokenizer': ^4.0.0 + + '@csstools/css-syntax-patches-for-csstree@1.0.27': + resolution: {integrity: sha512-sxP33Jwg1bviSUXAV43cVYdmjt2TLnLXNqCWl9xmxHawWVjGz/kEbdkr7F9pxJNBN2Mh+dq0crgItbW6tQvyow==} + + '@csstools/css-tokenizer@4.0.0': + resolution: {integrity: sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA==} + engines: {node: '>=20.19.0'} + + '@csstools/media-query-list-parser@5.0.0': + resolution: {integrity: sha512-T9lXmZOfnam3eMERPsszjY5NK0jX8RmThmmm99FZ8b7z8yMaFZWKwLWGZuTwdO3ddRY5fy13GmmEYZXB4I98Eg==} + engines: {node: '>=20.19.0'} + peerDependencies: + '@csstools/css-parser-algorithms': ^4.0.0 + '@csstools/css-tokenizer': ^4.0.0 + + '@csstools/selector-resolve-nested@4.0.0': + resolution: {integrity: sha512-9vAPxmp+Dx3wQBIUwc1v7Mdisw1kbbaGqXUM8QLTgWg7SoPGYtXBsMXvsFs/0Bn5yoFhcktzxNZGNaUt0VjgjA==} + engines: {node: '>=20.19.0'} + peerDependencies: + postcss-selector-parser: ^7.1.1 + + '@csstools/selector-specificity@6.0.0': + resolution: {integrity: sha512-4sSgl78OtOXEX/2d++8A83zHNTgwCJMaR24FvsYL7Uf/VS8HZk9PTwR51elTbGqMuwH3szLvvOXEaVnqn0Z3zA==} + engines: {node: '>=20.19.0'} + peerDependencies: + postcss-selector-parser: ^7.1.1 + '@date-fns/tz@1.4.1': resolution: {integrity: sha512-P5LUNhtbj6YfI3iJjw5EL9eUAG6OitD0W3fWQcpQjDRc/QIsL0tRNuO1PcDvPccWL1fSTXXdE1ds+l95DV/OFA==} @@ -1124,6 +1178,15 @@ packages: '@jridgewell/trace-mapping@0.3.31': resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + '@keyv/bigmap@1.3.1': + resolution: {integrity: sha512-WbzE9sdmQtKy8vrNPa9BRnwZh5UF4s1KTmSK0KUVLo3eff5BlQNNWDnFOouNpKfPKDnms9xynJjsMYjMaT/aFQ==} + engines: {node: '>= 18'} + peerDependencies: + keyv: ^5.6.0 + + '@keyv/serialize@1.1.1': + resolution: {integrity: sha512-dXn3FZhPv0US+7dtJsIi2R+c7qWYiReoEh5zUntWCf4oSpMNib8FDhSoed6m3QyZdx5hK7iLFkYk3rNxwt8vTA==} + '@modelcontextprotocol/sdk@1.25.2': resolution: {integrity: sha512-LZFeo4F9M5qOhC/Uc1aQSrBHxMrvxett+9KLHt7OhcExtoiRN9DKgbZffMP/nxjutWDQpfMDfP3nkHI4X9ijww==} engines: {node: '>=18'} @@ -1938,6 +2001,10 @@ packages: resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} engines: {node: '>=4'} + astral-regex@2.0.0: + resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} + engines: {node: '>=8'} + async-mutex@0.5.0: resolution: {integrity: sha512-1A94B18jkJ3DYq284ohPxoXbfTA5HsQ7/Mf4DEhcyLx3Bz27Rh59iScbB6EPiP+B+joue6YCxcMXSbFC1tZKwA==} @@ -1970,6 +2037,10 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + balanced-match@3.0.1: + resolution: {integrity: sha512-vjtV3hiLqYDNRoiAv0zC4QaGAMPomEoq83PRmYIofPswwZurCeWR5LByXm7SyoL0Zh5+2z0+HC7jG8gSZJUh0w==} + engines: {node: '>= 16'} + baseline-browser-mapping@2.9.14: resolution: {integrity: sha512-B0xUquLkiGLgHhpPBqvl7GWegWBUNuujQ6kXd/r1U38ElPT6Ok8KZ8e+FpUGEc2ZoRQUzq/aUnaKFc/svWUGSg==} hasBin: true @@ -2041,6 +2112,9 @@ packages: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} + cacheable@2.3.2: + resolution: {integrity: sha512-w+ZuRNmex9c1TR9RcsxbfTKCjSL0rh1WA5SABbrWprIHeNBdmyQLSYonlDy9gpD+63XT8DgZ/wNh1Smvc9WnJA==} + call-bind-apply-helpers@1.0.1: resolution: {integrity: sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==} engines: {node: '>= 0.4'} @@ -2182,6 +2256,9 @@ packages: color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + colord@2.9.3: + resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} + colorette@2.0.20: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} @@ -2316,9 +2393,17 @@ packages: resolution: {integrity: sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==} engines: {node: '>=12'} + css-functions-list@3.3.3: + resolution: {integrity: sha512-8HFEBPKhOpJPEPu70wJJetjKta86Gw9+CCyCnB3sui2qQfOvRyqBy4IKLKKAwdMpWb2lHXWk9Wb4Z6AmaUT1Pg==} + engines: {node: '>=12'} + css-select@5.2.2: resolution: {integrity: sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==} + css-tree@3.1.0: + resolution: {integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + css-what@6.2.2: resolution: {integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==} engines: {node: '>= 6'} @@ -2765,6 +2850,10 @@ packages: fast-uri@3.1.0: resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} + fastest-levenshtein@1.0.16: + resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} + engines: {node: '>= 4.9.1'} + fastq@1.15.0: resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} @@ -2789,6 +2878,9 @@ packages: resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==} engines: {node: '>=18'} + file-entry-cache@11.1.2: + resolution: {integrity: sha512-N2WFfK12gmrK1c1GXOqiAJ1tc5YE+R53zvQ+t5P8S5XhnmKYVB5eZEiLNZKDSmoG8wqqbF9EXYBBW/nef19log==} + file-entry-cache@8.0.0: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} @@ -2830,9 +2922,15 @@ packages: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} engines: {node: '>=16'} + flat-cache@6.1.20: + resolution: {integrity: sha512-AhHYqwvN62NVLp4lObVXGVluiABTHapoB57EyegZVmazN+hhGhLTn3uZbOofoTw4DSDvVCadzzyChXhOAvy8uQ==} + flatted@3.3.2: resolution: {integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==} + flatted@3.3.3: + resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + follow-redirects@1.15.6: resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==} engines: {node: '>=4.0'} @@ -2982,6 +3080,14 @@ packages: resolution: {integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==} engines: {node: '>=18'} + global-modules@2.0.0: + resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==} + engines: {node: '>=6'} + + global-prefix@3.0.0: + resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==} + engines: {node: '>=6'} + globals@14.0.0: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} @@ -2994,6 +3100,13 @@ packages: resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} + globby@16.1.0: + resolution: {integrity: sha512-+A4Hq7m7Ze592k9gZRy4gJ27DrXRNnC1vPjxTt1qQxEY8RxagBkBxivkCwg7FxSTG0iLLEMaUx13oOr0R2/qcQ==} + engines: {node: '>=20'} + + globjoin@0.1.4: + resolution: {integrity: sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==} + gopd@1.2.0: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} @@ -3030,6 +3143,10 @@ packages: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} + has-flag@5.0.1: + resolution: {integrity: sha512-CsNUt5x9LUdx6hnk/E2SZLsDyvfqANZSUq4+D3D8RzDJ2M+HDTIkF60ibS1vHaK55vzgiZw1bEPFG9yH7l33wA==} + engines: {node: '>=12'} + has-property-descriptors@1.0.2: resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} @@ -3045,6 +3162,10 @@ packages: resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} engines: {node: '>= 0.4'} + hashery@1.4.0: + resolution: {integrity: sha512-Wn2i1In6XFxl8Az55kkgnFRiAlIAushzh26PTjL2AKtQcEfXrcLa7Hn5QOWGZEf3LU057P9TwwZjFyxfS1VuvQ==} + engines: {node: '>=20'} + hasown@2.0.2: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} @@ -3075,6 +3196,9 @@ packages: hookable@5.5.3: resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} + hookified@1.15.1: + resolution: {integrity: sha512-MvG/clsADq1GPM2KGo2nyfaWVyn9naPiXrqIe4jYjXNZQt238kWyOGrsyc/DmRAQ+Re6yeo6yX/yoNCG5KAEVg==} + hosted-git-info@7.0.2: resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==} engines: {node: ^16.14.0 || >=18.0.0} @@ -3086,6 +3210,10 @@ packages: html-escaper@3.0.3: resolution: {integrity: sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==} + html-tags@5.1.0: + resolution: {integrity: sha512-n6l5uca7/y5joxZ3LUePhzmBFUJ+U2YWzhMa8XUTecSeSlQiZdF5XAd/Q3/WUl0VsXgUwWi8I7CNIwdI5WN1SQ==} + engines: {node: '>=20.10'} + htmlparser2@10.0.0: resolution: {integrity: sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==} @@ -3325,6 +3453,10 @@ packages: resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} engines: {node: '>=0.10.0'} + is-plain-object@5.0.0: + resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} + engines: {node: '>=0.10.0'} + is-potential-custom-element-name@1.0.1: resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} @@ -3508,6 +3640,13 @@ packages: keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + keyv@5.6.0: + resolution: {integrity: sha512-CYDD3SOtsHtyXeEORYRx2qBtpDJFjRTGXUtmNEMGyzYOKj1TE3tycdlho7kA1Ufx9OYWZzg52QFBGALTirzDSw==} + + kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + kleur@3.0.3: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} engines: {node: '>=6'} @@ -3516,6 +3655,9 @@ packages: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} + known-css-properties@0.37.0: + resolution: {integrity: sha512-JCDrsP4Z1Sb9JwG0aJ8Eo2r7k4Ou5MwmThS/6lcIe1ICyb7UBJKGRIUUdqc2ASdE/42lgz6zFUnzAIhtXnBVrQ==} + ky@1.14.1: resolution: {integrity: sha512-hYje4L9JCmpEQBtudo+v52X5X8tgWXUYyPcxKSuxQNboqufecl9VMWjGiucAFH060AwPXHZuH+WB2rrqfkmafw==} engines: {node: '>=18'} @@ -3662,6 +3804,9 @@ packages: lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + lodash.truncate@4.4.2: + resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} + lodash.uniqby@4.7.0: resolution: {integrity: sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==} @@ -3729,6 +3874,12 @@ packages: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} + mathml-tag-names@4.0.0: + resolution: {integrity: sha512-aa6AU2Pcx0VP/XWnh8IGL0SYSgQHDT6Ucror2j2mXeFAlN3ahaNs8EZtG1YiticMkSLj3Gt6VPFfZogt7G5iFQ==} + + mdn-data@2.12.2: + resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==} + media-typer@1.1.0: resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} engines: {node: '>= 0.8'} @@ -3737,6 +3888,10 @@ packages: resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} engines: {node: '>=18'} + meow@14.0.0: + resolution: {integrity: sha512-JhC3R1f6dbspVtmF3vKjAWz1EVIvwFrGGPLSdU6rK79xBwHWTuHoLnRX/t1/zHS1Ch1Y2UtIrih7DAHuH9JFJA==} + engines: {node: '>=20'} + merge-descriptors@2.0.0: resolution: {integrity: sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==} engines: {node: '>=18'} @@ -4274,10 +4429,19 @@ packages: resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} engines: {node: '>= 0.4'} + postcss-safe-parser@7.0.1: + resolution: {integrity: sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==} + engines: {node: '>=18.0'} + peerDependencies: + postcss: ^8.4.31 + postcss-selector-parser@7.1.1: resolution: {integrity: sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==} engines: {node: '>=4'} + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + postcss@8.5.6: resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} engines: {node: ^10 || ^12 || >=14} @@ -4393,6 +4557,10 @@ packages: resolution: {integrity: sha512-LjgDO2zPtoXP2wJpDjZrGdojii1uqO0cnwKoIoUzkfS98HDmbeiGmYiXo3lXeFlq2xvne1QFQhwYXSUCLKtEuA==} engines: {node: '>=12.20'} + qified@0.6.0: + resolution: {integrity: sha512-tsSGN1x3h569ZSU1u6diwhltLyfUWDp3YbFHedapTmpBl0B3P6U3+Qptg7xu+v+1io1EwhdPyyRHYbEw0KN2FA==} + engines: {node: '>=20'} + qs@6.14.1: resolution: {integrity: sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==} engines: {node: '>=0.6'} @@ -4715,6 +4883,14 @@ packages: resolution: {integrity: sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==} engines: {node: '>=8'} + slash@5.1.0: + resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} + engines: {node: '>=14.16'} + + slice-ansi@4.0.0: + resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} + engines: {node: '>=10'} + slice-ansi@5.0.0: resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} engines: {node: '>=12'} @@ -4797,6 +4973,10 @@ packages: resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} engines: {node: '>=18'} + string-width@8.1.1: + resolution: {integrity: sha512-KpqHIdDL9KwYk22wEOg/VIqYbrnLeSApsKT/bSj6Ez7pn3CftUiLAv2Lccpq1ALcpLV9UX1Ppn92npZWu2w/aw==} + engines: {node: '>=20'} + string.prototype.matchall@4.0.12: resolution: {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==} engines: {node: '>= 0.4'} @@ -4872,10 +5052,37 @@ packages: stubborn-utils@1.0.2: resolution: {integrity: sha512-zOh9jPYI+xrNOyisSelgym4tolKTJCQd5GBhK0+0xJvcYDcwlOoxF/rnFKQ2KRZknXSG9jWAp66fwP6AxN9STg==} + stylelint-config-recommended@18.0.0: + resolution: {integrity: sha512-mxgT2XY6YZ3HWWe3Di8umG6aBmWmHTblTgu/f10rqFXnyWxjKWwNdjSWkgkwCtxIKnqjSJzvFmPT5yabVIRxZg==} + engines: {node: '>=20.19.0'} + peerDependencies: + stylelint: ^17.0.0 + + stylelint-config-standard@40.0.0: + resolution: {integrity: sha512-EznGJxOUhtWck2r6dJpbgAdPATIzvpLdK9+i5qPd4Lx70es66TkBPljSg4wN3Qnc6c4h2n+WbUrUynQ3fanjHw==} + engines: {node: '>=20.19.0'} + peerDependencies: + stylelint: ^17.0.0 + + stylelint-config-tailwindcss@1.0.1: + resolution: {integrity: sha512-IeIMivgaB1kxPBgllMzBqyv0g61IwFxxZKo/fDDelfZ/JtPPlSBT04VuOCslk6PIaq5GQvdRnHOP1K3HpxSkeg==} + peerDependencies: + stylelint: '>=13.13.1' + tailwindcss: '>=2.2.16' + + stylelint@17.3.0: + resolution: {integrity: sha512-1POV91lcEMhj6SLVaOeA0KlS9yattS+qq+cyWqP/nYzWco7K5jznpGH1ExngvPlTM9QF1Kjd2bmuzJu9TH2OcA==} + engines: {node: '>=20.19.0'} + hasBin: true + super-regex@1.1.0: resolution: {integrity: sha512-WHkws2ZflZe41zj6AolvvmaTrWds/VuyeYr9iPVv/oQeaIoVxMKaushfFWpOGDT+GuBrM/sVqF8KUCYQlSSTdQ==} engines: {node: '>=18'} + supports-color@10.2.2: + resolution: {integrity: sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==} + engines: {node: '>=18'} + supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} @@ -4888,13 +5095,24 @@ packages: resolution: {integrity: sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==} engines: {node: '>=14.18'} + supports-hyperlinks@4.4.0: + resolution: {integrity: sha512-UKbpT93hN5Nr9go5UY7bopIB9YQlMz9nm/ct4IXt/irb5YRkn9WaqrOBJGZ5Pwvsd5FQzSVeYlGdXoCAPQZrPg==} + engines: {node: '>=20'} + supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} + svg-tags@1.0.0: + resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==} + tabbable@6.4.0: resolution: {integrity: sha512-05PUHKSNE8ou2dwIxTngl4EzcnsCDZGJ/iCLtDflR/SHB/ny14rXc+qU5P4mG9JkusiV7EivzY9Mhm55AzAvCg==} + table@6.9.0: + resolution: {integrity: sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==} + engines: {node: '>=10.0.0'} + tagged-tag@1.0.0: resolution: {integrity: sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==} engines: {node: '>=20'} @@ -5109,6 +5327,10 @@ packages: resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} engines: {node: '>=18'} + unicorn-magic@0.4.0: + resolution: {integrity: sha512-wH590V9VNgYH9g3lH9wWjTrUoKsjLF6sGLjhR4sH1LWpLmCOH0Zf7PukhDA8BiS7KHe4oPNkcTHqYkj7SOGUOw==} + engines: {node: '>=20'} + unimport@5.6.0: resolution: {integrity: sha512-8rqAmtJV8o60x46kBAJKtHpJDJWkA2xcBqWKPI14MgUb05o1pnpnCnXSxedUXyeq7p8fR5g3pTo2BaswZ9lD9A==} engines: {node: '>=18.12.0'} @@ -5274,6 +5496,10 @@ packages: resolution: {integrity: sha512-zDRAqDSBudazdfM9zpiI30Fu9ve47htYXcGi3ln0wfKu2a7SmrT6F3VDoYONu//48V8Vz4TdCRNPjtvyRO3yBA==} hasBin: true + which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} @@ -5309,6 +5535,10 @@ packages: wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + write-file-atomic@7.0.0: + resolution: {integrity: sha512-YnlPC6JqnZl6aO4uRc+dx5PHguiR9S6WeoLtpxNT9wIG+BDya7ZNE1q7KOjVgaA73hKhKLpVPgJ5QA9THQ5BRg==} + engines: {node: ^20.17.0 || >=22.9.0} + wsl-utils@0.1.0: resolution: {integrity: sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==} engines: {node: '>=18'} @@ -5680,9 +5910,47 @@ snapshots: optionalDependencies: '@types/react': 19.2.10 + '@cacheable/memory@2.0.7': + dependencies: + '@cacheable/utils': 2.3.4 + '@keyv/bigmap': 1.3.1(keyv@5.6.0) + hookified: 1.15.1 + keyv: 5.6.0 + + '@cacheable/utils@2.3.4': + dependencies: + hashery: 1.4.0 + keyv: 5.6.0 + '@colors/colors@1.5.0': optional: true + '@csstools/css-calc@3.1.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': + dependencies: + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-tokenizer': 4.0.0 + + '@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0)': + dependencies: + '@csstools/css-tokenizer': 4.0.0 + + '@csstools/css-syntax-patches-for-csstree@1.0.27': {} + + '@csstools/css-tokenizer@4.0.0': {} + + '@csstools/media-query-list-parser@5.0.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': + dependencies: + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-tokenizer': 4.0.0 + + '@csstools/selector-resolve-nested@4.0.0(postcss-selector-parser@7.1.1)': + dependencies: + postcss-selector-parser: 7.1.1 + + '@csstools/selector-specificity@6.0.0(postcss-selector-parser@7.1.1)': + dependencies: + postcss-selector-parser: 7.1.1 + '@date-fns/tz@1.4.1': {} '@devicefarmer/adbkit-logcat@2.1.3': {} @@ -6169,6 +6437,14 @@ snapshots: '@jridgewell/resolve-uri': 3.1.0 '@jridgewell/sourcemap-codec': 1.5.5 + '@keyv/bigmap@1.3.1(keyv@5.6.0)': + dependencies: + hashery: 1.4.0 + hookified: 1.15.1 + keyv: 5.6.0 + + '@keyv/serialize@1.1.1': {} + '@modelcontextprotocol/sdk@1.25.2(hono@4.11.4)(zod@3.25.76)': dependencies: '@hono/node-server': 1.19.9(hono@4.11.4) @@ -7080,6 +7356,8 @@ snapshots: dependencies: tslib: 2.8.1 + astral-regex@2.0.0: {} + async-mutex@0.5.0: dependencies: tslib: 2.8.1 @@ -7122,6 +7400,8 @@ snapshots: balanced-match@1.0.2: {} + balanced-match@3.0.1: {} + baseline-browser-mapping@2.9.14: {} before-after-hook@4.0.0: {} @@ -7214,6 +7494,14 @@ snapshots: cac@6.7.14: {} + cacheable@2.3.2: + dependencies: + '@cacheable/memory': 2.0.7 + '@cacheable/utils': 2.3.4 + hookified: 1.15.1 + keyv: 5.6.0 + qified: 0.6.0 + call-bind-apply-helpers@1.0.1: dependencies: es-errors: 1.3.0 @@ -7369,6 +7657,8 @@ snapshots: color-name@1.1.4: {} + colord@2.9.3: {} + colorette@2.0.20: {} combined-stream@1.0.8: @@ -7487,6 +7777,8 @@ snapshots: dependencies: type-fest: 1.4.0 + css-functions-list@3.3.3: {} + css-select@5.2.2: dependencies: boolbase: 1.0.0 @@ -7495,6 +7787,11 @@ snapshots: domutils: 3.2.2 nth-check: 2.1.1 + css-tree@3.1.0: + dependencies: + mdn-data: 2.12.2 + source-map-js: 1.2.1 + css-what@6.2.2: {} cssesc@3.0.0: {} @@ -8081,6 +8378,8 @@ snapshots: fast-uri@3.1.0: {} + fastest-levenshtein@1.0.16: {} + fastq@1.15.0: dependencies: reusify: 1.0.4 @@ -8102,6 +8401,10 @@ snapshots: dependencies: is-unicode-supported: 2.1.0 + file-entry-cache@11.1.2: + dependencies: + flat-cache: 6.1.20 + file-entry-cache@8.0.0: dependencies: flat-cache: 4.0.1 @@ -8152,8 +8455,16 @@ snapshots: flatted: 3.3.2 keyv: 4.5.4 + flat-cache@6.1.20: + dependencies: + cacheable: 2.3.2 + flatted: 3.3.3 + hookified: 1.15.1 + flatted@3.3.2: {} + flatted@3.3.3: {} + follow-redirects@1.15.6: {} for-each@0.3.3: @@ -8306,6 +8617,16 @@ snapshots: dependencies: ini: 4.1.1 + global-modules@2.0.0: + dependencies: + global-prefix: 3.0.0 + + global-prefix@3.0.0: + dependencies: + ini: 1.3.8 + kind-of: 6.0.3 + which: 1.3.1 + globals@14.0.0: {} globals@17.2.0: {} @@ -8315,6 +8636,17 @@ snapshots: define-properties: 1.2.1 gopd: 1.2.0 + globby@16.1.0: + dependencies: + '@sindresorhus/merge-streams': 4.0.0 + fast-glob: 3.3.3 + ignore: 7.0.5 + is-path-inside: 4.0.0 + slash: 5.1.0 + unicorn-magic: 0.4.0 + + globjoin@0.1.4: {} + gopd@1.2.0: {} graceful-fs@4.2.10: {} @@ -8342,6 +8674,8 @@ snapshots: has-flag@4.0.0: {} + has-flag@5.0.1: {} + has-property-descriptors@1.0.2: dependencies: es-define-property: 1.0.1 @@ -8356,6 +8690,10 @@ snapshots: dependencies: has-symbols: 1.1.0 + hashery@1.4.0: + dependencies: + hookified: 1.15.1 + hasown@2.0.2: dependencies: function-bind: 1.1.2 @@ -8380,6 +8718,8 @@ snapshots: hookable@5.5.3: {} + hookified@1.15.1: {} + hosted-git-info@7.0.2: dependencies: lru-cache: 10.4.3 @@ -8390,6 +8730,8 @@ snapshots: html-escaper@3.0.3: {} + html-tags@5.1.0: {} + htmlparser2@10.0.0: dependencies: domelementtype: 2.3.0 @@ -8597,6 +8939,8 @@ snapshots: dependencies: isobject: 3.0.1 + is-plain-object@5.0.0: {} + is-potential-custom-element-name@1.0.1: {} is-primitive@3.0.1: {} @@ -8753,10 +9097,18 @@ snapshots: dependencies: json-buffer: 3.0.1 + keyv@5.6.0: + dependencies: + '@keyv/serialize': 1.1.1 + + kind-of@6.0.3: {} + kleur@3.0.3: {} kleur@4.1.5: {} + known-css-properties@0.37.0: {} + ky@1.14.1: {} latest-version@9.0.0: @@ -8883,6 +9235,8 @@ snapshots: lodash.merge@4.6.2: {} + lodash.truncate@4.4.2: {} + lodash.uniqby@4.7.0: {} lodash@4.17.23: {} @@ -8953,10 +9307,16 @@ snapshots: math-intrinsics@1.1.0: {} + mathml-tag-names@4.0.0: {} + + mdn-data@2.12.2: {} + media-typer@1.1.0: {} meow@13.2.0: {} + meow@14.0.0: {} + merge-descriptors@2.0.0: {} merge-stream@2.0.0: {} @@ -9435,11 +9795,17 @@ snapshots: possible-typed-array-names@1.0.0: {} + postcss-safe-parser@7.0.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + postcss-selector-parser@7.1.1: dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 + postcss-value-parser@4.2.0: {} + postcss@8.5.6: dependencies: nanoid: 3.3.11 @@ -9505,6 +9871,10 @@ snapshots: dependencies: escape-goat: 4.0.0 + qified@0.6.0: + dependencies: + hookified: 1.15.1 + qs@6.14.1: dependencies: side-channel: 1.1.0 @@ -9992,6 +10362,14 @@ snapshots: dependencies: unicode-emoji-modifier-base: 1.0.0 + slash@5.1.0: {} + + slice-ansi@4.0.0: + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + slice-ansi@5.0.0: dependencies: ansi-styles: 6.2.3 @@ -10076,6 +10454,11 @@ snapshots: get-east-asian-width: 1.4.0 strip-ansi: 7.1.2 + string-width@8.1.1: + dependencies: + get-east-asian-width: 1.4.0 + strip-ansi: 7.1.2 + string.prototype.matchall@4.0.12: dependencies: call-bind: 1.0.8 @@ -10164,12 +10547,73 @@ snapshots: stubborn-utils@1.0.2: {} + stylelint-config-recommended@18.0.0(stylelint@17.3.0(typescript@5.9.3)): + dependencies: + stylelint: 17.3.0(typescript@5.9.3) + + stylelint-config-standard@40.0.0(stylelint@17.3.0(typescript@5.9.3)): + dependencies: + stylelint: 17.3.0(typescript@5.9.3) + stylelint-config-recommended: 18.0.0(stylelint@17.3.0(typescript@5.9.3)) + + stylelint-config-tailwindcss@1.0.1(stylelint@17.3.0(typescript@5.9.3))(tailwindcss@4.1.18): + dependencies: + stylelint: 17.3.0(typescript@5.9.3) + tailwindcss: 4.1.18 + + stylelint@17.3.0(typescript@5.9.3): + dependencies: + '@csstools/css-calc': 3.1.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-syntax-patches-for-csstree': 1.0.27 + '@csstools/css-tokenizer': 4.0.0 + '@csstools/media-query-list-parser': 5.0.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/selector-resolve-nested': 4.0.0(postcss-selector-parser@7.1.1) + '@csstools/selector-specificity': 6.0.0(postcss-selector-parser@7.1.1) + balanced-match: 3.0.1 + colord: 2.9.3 + cosmiconfig: 9.0.0(typescript@5.9.3) + css-functions-list: 3.3.3 + css-tree: 3.1.0 + debug: 4.4.3 + fast-glob: 3.3.3 + fastest-levenshtein: 1.0.16 + file-entry-cache: 11.1.2 + global-modules: 2.0.0 + globby: 16.1.0 + globjoin: 0.1.4 + html-tags: 5.1.0 + ignore: 7.0.5 + import-meta-resolve: 4.2.0 + imurmurhash: 0.1.4 + is-plain-object: 5.0.0 + known-css-properties: 0.37.0 + mathml-tag-names: 4.0.0 + meow: 14.0.0 + micromatch: 4.0.8 + normalize-path: 3.0.0 + picocolors: 1.1.1 + postcss: 8.5.6 + postcss-safe-parser: 7.0.1(postcss@8.5.6) + postcss-selector-parser: 7.1.1 + postcss-value-parser: 4.2.0 + string-width: 8.1.1 + supports-hyperlinks: 4.4.0 + svg-tags: 1.0.0 + table: 6.9.0 + write-file-atomic: 7.0.0 + transitivePeerDependencies: + - supports-color + - typescript + super-regex@1.1.0: dependencies: function-timeout: 1.0.2 make-asynchronous: 1.0.1 time-span: 5.1.0 + supports-color@10.2.2: {} + supports-color@5.5.0: dependencies: has-flag: 3.0.0 @@ -10183,10 +10627,25 @@ snapshots: has-flag: 4.0.0 supports-color: 7.2.0 + supports-hyperlinks@4.4.0: + dependencies: + has-flag: 5.0.1 + supports-color: 10.2.2 + supports-preserve-symlinks-flag@1.0.0: {} + svg-tags@1.0.0: {} + tabbable@6.4.0: {} + table@6.9.0: + dependencies: + ajv: 8.17.1 + lodash.truncate: 4.4.2 + slice-ansi: 4.0.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + tagged-tag@1.0.0: {} tailwind-merge@3.4.0: {} @@ -10388,6 +10847,8 @@ snapshots: unicorn-magic@0.3.0: {} + unicorn-magic@0.4.0: {} + unimport@5.6.0: dependencies: acorn: 8.15.0 @@ -10599,6 +11060,10 @@ snapshots: is-absolute: 0.1.7 isexe: 1.1.2 + which@1.3.1: + dependencies: + isexe: 2.0.0 + which@2.0.2: dependencies: isexe: 2.0.0 @@ -10635,6 +11100,11 @@ snapshots: wrappy@1.0.2: {} + write-file-atomic@7.0.0: + dependencies: + imurmurhash: 0.1.4 + signal-exit: 4.1.0 + wsl-utils@0.1.0: dependencies: is-wsl: 3.1.0 diff --git a/src/index.css b/src/index.css index f3cf18e..46bf94d 100644 --- a/src/index.css +++ b/src/index.css @@ -3,79 +3,79 @@ @import "shadcn/tailwind.css"; :root { - --background: oklch(1 0 0); - --foreground: oklch(0.3211 0 0); - --card: oklch(0.98 0 0); - --card-foreground: oklch(0.3211 0 0); - --popover: oklch(1 0 0); - --popover-foreground: oklch(0.3211 0 0); - --primary: oklch(0.6231 0.188 259.8145); - --primary-foreground: oklch(1 0 0); - --secondary: oklch(0.967 0.0029 264.5419); - --secondary-foreground: oklch(0.4461 0.0263 256.8018); - --muted: oklch(0.9346 0.0017 247.8389); - --muted-foreground: oklch(0.551 0.0234 264.3637); - --accent: oklch(0.9514 0.025 236.8242); - --accent-foreground: oklch(0.3791 0.1378 265.5222); - --destructive: oklch(0.6368 0.2078 25.3313); - --destructive-foreground: oklch(1 0 0); - --border: oklch(0.9276 0.0058 264.5313); - --input: oklch(0.9276 0.0058 264.5313); - --ring: oklch(0.6231 0.188 259.8145); - --chart-1: oklch(0.6231 0.188 259.8145); - --chart-2: oklch(0.5461 0.2152 262.8809); - --chart-3: oklch(0.4882 0.2172 264.3763); - --chart-4: oklch(0.4244 0.1809 265.6377); - --chart-5: oklch(0.3791 0.1378 265.5222); - --sidebar: oklch(0.9846 0.0017 247.8389); - --sidebar-foreground: oklch(0.3211 0 0); - --sidebar-primary: oklch(0.6231 0.188 259.8145); - --sidebar-primary-foreground: oklch(1 0 0); - --sidebar-accent: oklch(0.9514 0.025 236.8242); - --sidebar-accent-foreground: oklch(0.3791 0.1378 265.5222); - --sidebar-border: oklch(0.9276 0.0058 264.5313); - --sidebar-ring: oklch(0.6231 0.188 259.8145); - --font-sans: Inter, sans-serif; - --font-serif: Source Serif 4, serif; - --font-mono: JetBrains Mono, monospace; + --background: oklch(100% 0 0deg); + --foreground: oklch(32.11% 0 0deg); + --card: oklch(98% 0 0deg); + --card-foreground: oklch(32.11% 0 0deg); + --popover: oklch(100% 0 0deg); + --popover-foreground: oklch(32.11% 0 0deg); + --primary: oklch(62.31% 0.188 259.8145deg); + --primary-foreground: oklch(100% 0 0deg); + --secondary: oklch(96.7% 0.0029 264.5419deg); + --secondary-foreground: oklch(44.61% 0.0263 256.8018deg); + --muted: oklch(93.46% 0.0017 247.8389deg); + --muted-foreground: oklch(55.1% 0.0234 264.3637deg); + --accent: oklch(95.14% 0.025 236.8242deg); + --accent-foreground: oklch(37.91% 0.1378 265.5222deg); + --destructive: oklch(63.68% 0.2078 25.3313deg); + --destructive-foreground: oklch(100% 0 0deg); + --border: oklch(92.76% 0.0058 264.5313deg); + --input: oklch(92.76% 0.0058 264.5313deg); + --ring: oklch(62.31% 0.188 259.8145deg); + --chart-1: oklch(62.31% 0.188 259.8145deg); + --chart-2: oklch(54.61% 0.2152 262.8809deg); + --chart-3: oklch(48.82% 0.2172 264.3763deg); + --chart-4: oklch(42.44% 0.1809 265.6377deg); + --chart-5: oklch(37.91% 0.1378 265.5222deg); + --sidebar: oklch(98.46% 0.0017 247.8389deg); + --sidebar-foreground: oklch(32.11% 0 0deg); + --sidebar-primary: oklch(62.31% 0.188 259.8145deg); + --sidebar-primary-foreground: oklch(100% 0 0deg); + --sidebar-accent: oklch(95.14% 0.025 236.8242deg); + --sidebar-accent-foreground: oklch(37.91% 0.1378 265.5222deg); + --sidebar-border: oklch(92.76% 0.0058 264.5313deg); + --sidebar-ring: oklch(62.31% 0.188 259.8145deg); + --font-sans: inter, sans-serif; + --font-serif: source serif 4, serif; + --font-mono: jetbrains mono, monospace; --radius: 0.6rem; --spacing: 0.225rem; } @media (prefers-color-scheme: dark) { :root { - --background: oklch(0.2046 0 0); - --foreground: oklch(0.9219 0 0); - --card: oklch(0.245 0 0); - --card-foreground: oklch(0.9219 0 0); - --popover: oklch(0.2686 0 0); - --popover-foreground: oklch(0.9219 0 0); - --primary: oklch(0.6231 0.188 259.8145); - --primary-foreground: oklch(1 0 0); - --secondary: oklch(0.2686 0 0); - --secondary-foreground: oklch(0.9219 0 0); - --muted: oklch(0.3 0 0); - --muted-foreground: oklch(0.7155 0 0); - --accent: oklch(0.3791 0.1378 265.5222); - --accent-foreground: oklch(0.8823 0.0571 254.1284); - --destructive: oklch(0.6368 0.2078 25.3313); - --destructive-foreground: oklch(1 0 0); - --border: oklch(0.3715 0 0); - --input: oklch(0.3715 0 0); - --ring: oklch(0.6231 0.188 259.8145); - --chart-1: oklch(0.7137 0.1434 254.624); - --chart-2: oklch(0.6231 0.188 259.8145); - --chart-3: oklch(0.5461 0.2152 262.8809); - --chart-4: oklch(0.4882 0.2172 264.3763); - --chart-5: oklch(0.4244 0.1809 265.6377); - --sidebar: oklch(0.2046 0 0); - --sidebar-foreground: oklch(0.9219 0 0); - --sidebar-primary: oklch(0.6231 0.188 259.8145); - --sidebar-primary-foreground: oklch(1 0 0); - --sidebar-accent: oklch(0.3791 0.1378 265.5222); - --sidebar-accent-foreground: oklch(0.8823 0.0571 254.1284); - --sidebar-border: oklch(0.3715 0 0); - --sidebar-ring: oklch(0.6231 0.188 259.8145); + --background: oklch(20.46% 0 0deg); + --foreground: oklch(92.19% 0 0deg); + --card: oklch(24.5% 0 0deg); + --card-foreground: oklch(92.19% 0 0deg); + --popover: oklch(26.86% 0 0deg); + --popover-foreground: oklch(92.19% 0 0deg); + --primary: oklch(62.31% 0.188 259.8145deg); + --primary-foreground: oklch(100% 0 0deg); + --secondary: oklch(26.86% 0 0deg); + --secondary-foreground: oklch(92.19% 0 0deg); + --muted: oklch(30% 0 0deg); + --muted-foreground: oklch(71.55% 0 0deg); + --accent: oklch(37.91% 0.1378 265.5222deg); + --accent-foreground: oklch(88.23% 0.0571 254.1284deg); + --destructive: oklch(63.68% 0.2078 25.3313deg); + --destructive-foreground: oklch(100% 0 0deg); + --border: oklch(37.15% 0 0deg); + --input: oklch(37.15% 0 0deg); + --ring: oklch(62.31% 0.188 259.8145deg); + --chart-1: oklch(71.37% 0.1434 254.624deg); + --chart-2: oklch(62.31% 0.188 259.8145deg); + --chart-3: oklch(54.61% 0.2152 262.8809deg); + --chart-4: oklch(48.82% 0.2172 264.3763deg); + --chart-5: oklch(42.44% 0.1809 265.6377deg); + --sidebar: oklch(20.46% 0 0deg); + --sidebar-foreground: oklch(92.19% 0 0deg); + --sidebar-primary: oklch(62.31% 0.188 259.8145deg); + --sidebar-primary-foreground: oklch(100% 0 0deg); + --sidebar-accent: oklch(37.91% 0.1378 265.5222deg); + --sidebar-accent-foreground: oklch(88.23% 0.0571 254.1284deg); + --sidebar-border: oklch(37.15% 0 0deg); + --sidebar-ring: oklch(62.31% 0.188 259.8145deg); } } @@ -112,44 +112,47 @@ --color-sidebar-accent-foreground: var(--sidebar-accent-foreground); --color-sidebar-border: var(--sidebar-border); --color-sidebar-ring: var(--sidebar-ring); - --font-sans: var(--font-sans); --font-mono: var(--font-mono); --font-serif: var(--font-serif); - --radius-sm: calc(var(--radius) - 4px); --radius-md: calc(var(--radius) - 2px); --radius-lg: var(--radius); --radius-xl: calc(var(--radius) + 4px); } +/* stylelint-disable nesting-selector-no-missing-scoping-root */ @utility appearance-none { &input[type="number"]::-webkit-inner-spin-button { appearance: none; } - & input[type="number"]::-webkit-outer-spin-button { + + &input[type="number"]::-webkit-outer-spin-button { appearance: none; } + &input[type="number"] { - -moz-appearance: textfield; + appearance: textfield; } &input[type="range"]::-webkit-slider-thumb { - -webkit-appearance: none; appearance: none; cursor: pointer; width: 2px; } + &input[type="range"]::-moz-range-thumb { cursor: pointer; width: 2px; } } +/* stylelint-enable nesting-selector-no-missing-scoping-root */ @layer base { * { @apply border-border outline-ring/50; } + body, :host { @apply text-foreground; @@ -158,6 +161,7 @@ ::-webkit-scrollbar { width: 5px; } + ::-webkit-scrollbar-thumb { background-color: var(--color-primary); border-radius: 3px; diff --git a/stylelint.config.mjs b/stylelint.config.mjs new file mode 100644 index 0000000..6f35315 --- /dev/null +++ b/stylelint.config.mjs @@ -0,0 +1,4 @@ +/** @type {import("stylelint").Config} */ +export default { + extends: ["stylelint-config-standard", "stylelint-config-tailwindcss"], +}; From 04daacd677a3e3eb34eba4c28bad595101843c0a Mon Sep 17 00:00:00 2001 From: CrawlerCode <41094392+CrawlerCode@users.noreply.github.com> Date: Sat, 14 Feb 2026 21:30:11 +0100 Subject: [PATCH 09/10] fix: Fix more --- .github/workflows/release.yml | 1 + .redmine/README.md | 10 +++++----- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 711fc0b..a2d7e20 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -23,6 +23,7 @@ jobs: - uses: actions/checkout@v4 with: fetch-depth: 0 + persist-credentials: false - uses: pnpm/action-setup@v4 diff --git a/.redmine/README.md b/.redmine/README.md index 22fb32a..904f82b 100644 --- a/.redmine/README.md +++ b/.redmine/README.md @@ -13,11 +13,11 @@ docker compose up -d redmine-v6 Available services and ports: -- Redmine 6: http://localhost:3006 (service `redmine-v6`) -- Redmine 5: http://localhost:3005 (service `redmine-v5`) -- Redmine 4: http://localhost:3004 (service `redmine-v4`) -- Redmine 3: http://localhost:3003 (service `redmine-v3`) -- Redmine 2: http://localhost:3002 (service `redmine-v2`) +- Redmine 6: [http://localhost:3006](http://localhost:3006) (service `redmine-v6`) +- Redmine 5: [http://localhost:3005](http://localhost:3005) (service `redmine-v5`) +- Redmine 4: [http://localhost:3004](http://localhost:3004) (service `redmine-v4`) +- Redmine 3: [http://localhost:3003](http://localhost:3003) (service `redmine-v3`) +- Redmine 2: [http://localhost:3002](http://localhost:3002) (service `redmine-v2`) ### Notes From 18abdcef5cb950b038b3b00059b47468ebedaf05 Mon Sep 17 00:00:00 2001 From: CrawlerCode <41094392+CrawlerCode@users.noreply.github.com> Date: Sat, 14 Feb 2026 21:50:02 +0100 Subject: [PATCH 10/10] fix: Fix md --- .redmine/README.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/.redmine/README.md b/.redmine/README.md index 904f82b..7a9d8b1 100644 --- a/.redmine/README.md +++ b/.redmine/README.md @@ -1,13 +1,12 @@ -## Redmine dev setup +# Redmine dev setup This folder provides local Redmine instances for manual testing against multiple Redmine versions. -### Start a version +## Start a version -Run from this directory: +Run from this directory (`.redmine`): ```bash -cd .redmine docker compose up -d redmine-v6 ``` @@ -19,7 +18,7 @@ Available services and ports: - Redmine 3: [http://localhost:3003](http://localhost:3003) (service `redmine-v3`) - Redmine 2: [http://localhost:3002](http://localhost:3002) (service `redmine-v2`) -### Notes +## Notes - [Default credentials](https://hub.docker.com/_/redmine#accessing-the-application): `admin`/`admin` - [Themes](https://www.redmine.org/projects/redmine/wiki/theme_list) are mounted from `.redmine/themes`