diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index cccd1e0bea..666bddb865 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -4,15 +4,14 @@ // Use Microsoft's Ubuntu Base image for the dev container "image": "mcr.microsoft.com/devcontainers/base:ubuntu", "features": { - // Use NodeJS features in the dev container - "ghcr.io/devcontainers/features/node:1": {} + "ghcr.io/michidk/devcontainers-features/bun:1": {} }, "privileged": true, "onCreateCommand": { - // Install NPM dependencies in the dev container - "install-node-packages": "npm install" + // Install dependencies in the dev container + "install-bun-packages": "bun install" }, "customizations": { @@ -23,10 +22,11 @@ "resmon.show.cpufreq": false }, "extensions": [ - // Define suggested extensions to preinstall in the dev container "biomejs.biome", "jock.svg", - "EditorConfig.EditorConfig" + "EditorConfig.EditorConfig", + "oven.bun-vscode", + "DavidAnson.vscode-markdownlint" ] } } diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index 2d54109147..d7a91dbf79 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1,3 +1,4 @@ # These are supported funding model platforms github: [pkief] -custom: ['https://paypal.me/philippkief', 'https://buymeacoffee.com/pkief'] +buy_me_a_coffee: pkief +custom: ['https://paypal.me/philippkief'] diff --git a/.github/ISSUE_TEMPLATE/1-icon-request.yml b/.github/ISSUE_TEMPLATE/1-icon-request.yml new file mode 100644 index 0000000000..c30032e865 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/1-icon-request.yml @@ -0,0 +1,57 @@ +name: ๐Ÿž๏ธ Icon Request +description: Ask for specific icons to be added +title: "[Icon Request]: " +labels: ["icon-request"] + +body: + - type: checkboxes + id: icon-type + attributes: + label: Icon Type + description: What type of icon are you requesting? + options: + - label: Folder + - label: File + + - type: textarea + id: folder-names + attributes: + label: Folder names + description: If you are requesting folder icons, please list the folder names here. + placeholder: | + - folder-name + - another-folder-name + - ... + + - type: textarea + id: file-names + attributes: + label: File names + description: If you are requesting file icons, please list the file names or file extensions here. + placeholder: | + - file-name + - another-file-name + - ... + + - type: textarea + id: graphic-ideas + attributes: + label: Graphic ideas + description: A clear description of the icon you would like. If the icons are separate for folder and files, please create separate issues. + placeholder: Include a link to sample icons if possible + + - type: textarea + id: additional-context + attributes: + label: Additional context + description: Add any other context about the icons here. + placeholder: I consider these icons necessary because ... + + - type: checkboxes + id: terms + attributes: + label: Code of Conduct + description: By submitting this issue, you agree to follow our [Code of Conduct](../../CODE_OF_CONDUCT.md). + options: + - label: I agree to follow this project's **Code of Conduct** + required: true diff --git a/.github/ISSUE_TEMPLATE/2-bug-report.yml b/.github/ISSUE_TEMPLATE/2-bug-report.yml new file mode 100644 index 0000000000..43e43e3b17 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/2-bug-report.yml @@ -0,0 +1,78 @@ +name: ๐Ÿ› Bug Report +description: Create a report to help us improve +title: "[Bug]: " +labels: ["bug"] + +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to fill out this bug report! + + - type: textarea + id: description + attributes: + label: Describe the bug + description: Describe the bug clearly + validations: + required: true + + - type: textarea + id: reproduce + attributes: + label: To Reproduce + description: Steps to reproduce the behavior + placeholder: | + 1. Go to '...' + 2. Click on '....' + 3. Scroll down to '....' + 4. See error + validations: + required: true + + - type: textarea + id: expected + attributes: + label: Expected behavior + description: A clear and concise description of what you expected to happen + validations: + required: true + + - type: textarea + id: screenshots + attributes: + label: Screenshots + description: If applicable, add screenshots to help explain your problem + validations: + required: false + + - type: textarea + id: computer-info + attributes: + label: Computer information + description: | + Examples: + - **OS edition**: [e.g. Windows 11 Home] + - **Extension version**: [e.g. 5.6.0] + - **VSCode version**: [e.g. 1.91.1] + value: | + - **OS edition**: + - **Extension version**: + - **VSCode version**: + + - type: textarea + id: additional-context + attributes: + label: Additional context + description: Add any other context about the problem here. + validations: + required: false + + - type: checkboxes + id: terms + attributes: + label: Code of Conduct + description: By submitting this issue, you agree to follow our [Code of Conduct](../../CODE_OF_CONDUCT.md). + options: + - label: I agree to follow this project's **Code of Conduct** + required: true diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md deleted file mode 100644 index 759b2dac70..0000000000 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -name: Bug report -about: Create a report to help us improve -title: '' -labels: '' -assignees: '' - ---- - -**Describe the bug** -A clear and concise description of what the bug is. - -**To Reproduce** -Steps to reproduce the behavior: -1. Go to '...' -2. Click on '....' -3. Scroll down to '....' -4. See error - -**Expected behavior** -A clear and concise description of what you expected to happen. - -**Screenshots** -If applicable, add screenshots to help explain your problem. - -**Computer information (please complete the following information):** -- OS edition: [e.g. Windows 10 Home] -- OS build: [e.g. 19042.1165] -- Browser [e.g. chrome, safari] -- Version [e.g. 22] -- VSCode version [e.g. 1.59.1] - -**Additional context** -Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/icon_request.md b/.github/ISSUE_TEMPLATE/icon_request.md deleted file mode 100644 index 9f7614d634..0000000000 --- a/.github/ISSUE_TEMPLATE/icon_request.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -name: Icon Request -about: Ask for specific icons to be added -title: '[Icon Request] ' -labels: '' -assignees: '' - ---- - -**Icon Type** -- [ ] Folder -- [ ] File - -**Folder Names** - -- ... - -**File Names** - -- ... - -**Graphic ideas** - -A clear description of the icon you would like. If the icons are separate for folder and files, please create separate issues. - -**Additional context** -Add any other context about the problem here. diff --git a/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md b/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md deleted file mode 100644 index 3707f57937..0000000000 --- a/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md +++ /dev/null @@ -1,7 +0,0 @@ -# Description - - - -## Contribution Guidelines - -- [ ] By creating this pull request, I acknowledge that I have read the [Contribution Guidelines](../../CONTRIBUTING.md) for this project. diff --git a/.github/labeler.yml b/.github/labeler.yml new file mode 100644 index 0000000000..0ac4e88ad7 --- /dev/null +++ b/.github/labeler.yml @@ -0,0 +1,24 @@ +# Add 'icons' label to any file changes within 'icons' folder or 'src/core/icons' typescript files +icons: +- changed-files: + - any-glob-to-any-file: ['icons/*', 'src/core/icons/*.ts'] + +# Add 'translations' label to any changes within 'package.nls*.json' files or 'src/core/i18n' folder +translations: +- changed-files: + - any-glob-to-any-file: ['package.nls*.json', 'src/core/i18n'] + +# Add 'docs' label to any changes to markdown files +docs: +- changed-files: + - any-glob-to-any-file: '*.md' + +# Add 'workflows' label to any changes within '.github/workflows' folder or '.github/labeler.yml' file +workflows: +- changed-files: + - any-glob-to-any-file: ['.github/workflows/*', '.github/labeler.yml'] + +# Add 'devcontainers' label to any changes within '.devcontainer' folder +devcontainers: +- changed-files: + - any-glob-to-any-file: '.devcontainer/*' diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 0000000000..eed5fae0a0 --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,8 @@ +# Description + + + +## Contribution Guidelines + +- [ ] By creating this pull request, I acknowledge that I have read the [Contribution Guidelines](https://github.com/material-extensions/vscode-material-icon-theme/blob/main/CONTRIBUTING.md) for this project. +- [ ] I have read the [Code Of Conduct](https://github.com/material-extensions/vscode-material-icon-theme/blob/main/CODE_OF_CONDUCT.md) and promise to abide by these rules diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5eaebcbd9c..eb6dafee3c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -14,15 +14,15 @@ jobs: name: Build Material Icon Theme steps: - - name: Checkout ๐Ÿ›Ž - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + - name: Checkout ๐Ÿ›Ž๏ธ + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: persist-credentials: false - - name: Setup Platform ๐Ÿ›  - uses: oven-sh/setup-bun@f4d14e03ff726c06358e5557344e1da148b56cf7 # v1.2.2 + - name: Setup Platform ๐Ÿ› ๏ธ + uses: oven-sh/setup-bun@4bc047ad259df6fc24a6c9b0f9a0cb08cf17fbe5 # v2 with: - bun-version: 1.1.13 + bun-version: 1.1.18 - name: Install dependencies ๐Ÿ“ฆ run: bun install --frozen-lockfile diff --git a/.github/workflows/color-check.yml b/.github/workflows/color-check.yml index 037750232f..520e4db8a6 100644 --- a/.github/workflows/color-check.yml +++ b/.github/workflows/color-check.yml @@ -17,7 +17,7 @@ jobs: steps: - name: Checkout ๐Ÿ›Ž๏ธ - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: fetch-depth: 0 persist-credentials: false diff --git a/.github/workflows/icon-review.yml b/.github/workflows/icon-review.yml index 85a978883b..740a6b24b0 100644 --- a/.github/workflows/icon-review.yml +++ b/.github/workflows/icon-review.yml @@ -19,8 +19,13 @@ jobs: pull-requests: write steps: + - name: Setup Platform ๐Ÿ› ๏ธ + uses: oven-sh/setup-bun@4bc047ad259df6fc24a6c9b0f9a0cb08cf17fbe5 # v2 + with: + bun-version: 1.1.20 + - name: Checkout Fork ๐Ÿ›Ž๏ธ - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: ref: ${{ github.event.pull_request.head.ref }} repository: ${{ github.event.pull_request.head.repo.full_name }} @@ -29,21 +34,19 @@ jobs: persist-credentials: false - name: Checkout Original ๐Ÿ›Ž๏ธ - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: fetch-depth: 0 path: main persist-credentials: false - name: Review SVG files ๐Ÿ” + working-directory: main run: | - cd main - svgFiles=$(git diff --no-index ../main ../fork --diff-filter=ACMRTUX --name-only | grep '.svg$') - echo "SVG files changed: ${svgFiles}" - npx svg-icon-review --bigIcon ${svgFiles} - - - name: Install jq โš™๏ธ - run: sudo apt-get install jq + files=$(git diff --no-index ../main ../fork --diff-filter=ACMRTUX --name-only | grep '^\.\./fork/icons/.*\.svg$') + filesCount=$(echo "$files" | wc -l) + bunx --bun svg-icon-review@2.1.0 --bigIcon ${files} + echo svg_files_count=$filesCount >> $GITHUB_ENV - name: Upload PNG โฌ†๏ธ env: @@ -52,21 +55,55 @@ jobs: run: | IMAGE_URL=$(curl --location 'https://freeimage.host/json' --form 'source=@"./main/preview.png"' --form 'type="file"' --form 'action="upload"' --form 'auth_token="${{env.IMAGE_UPLOAD}}"' | jq -r '.image.url') echo image_url=$IMAGE_URL >> $GITHUB_ENV - shell: bash - - name: Post review in PR โœ๏ธ + - name: Generate text ๐Ÿ“ƒ uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 - with: - script: | - const image_url = "${{ env.image_url }}"; - console.log('URL: '+image_url); - const commentBody = '## Preview \n\nThank you for creating a pull request. This preview shows you how your changes will look on the different themes: \n\n ![Generated Preview](' + image_url + ') \n\n You can find more information how to contribute in the [contribution guidelines](https://github.com/PKief/vscode-material-icon-theme/blob/main/CONTRIBUTING.md).'; - - github.rest.issues.createComment({ - issue_number: context.issue.number, - owner: context.repo.owner, - repo: context.repo.repo, - body: commentBody - }) env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + script: | + const iconsCount = parseInt("${{ env.svg_files_count }}"); + const imageURL = "${{ env.image_url }}"; + const image = `Generated preview`; + const pluralS = iconsCount > 1 ? "s" : ""; + + let preview = ""; + + if (iconsCount > 10) { + preview = `
๐Ÿž๏ธ Generated preview
${image}
`; + } else { + preview = image; + } + + const comment = ` + + ## Preview + + Thank you for creating a pull request. This preview shows you how your icon${pluralS} will look on the different themes: + + ${preview} + + Check how your icon${pluralS} fit${!pluralS ? 's' : ''} in a 16x16 grid with our **Pixel Perfect Checker** by following [this link](https://pixp.pages.dev/material-extensions/vscode-material-icon-theme/pull/${{ github.event.pull_request.number }}). + + You can find more information on how to contribute in the [contribution guidelines](https://github.com/material-extensions/vscode-material-icon-theme/blob/main/CONTRIBUTING.md). + `; + + // Write comment to environment variable + core.exportVariable('comment', comment); + + - name: Find comment if exists ๐Ÿ•ต๏ธ + uses: peter-evans/find-comment@3eae4d37986fb5a8592848f6a574fdf654e61f9e # v3.1.0 + id: fc + with: + issue-number: ${{ github.event.pull_request.number }} + comment-author: 'github-actions[bot]' + body-includes: + + - name: Post or update comment in PR โœ๏ธ + uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v4.0.0 + with: + comment-id: ${{ steps.fc.outputs.comment-id }} + issue-number: ${{ github.event.pull_request.number }} + body: | + ${{ env.comment }} + edit-mode: replace diff --git a/.github/workflows/label.yml b/.github/workflows/label.yml new file mode 100644 index 0000000000..4dbe828410 --- /dev/null +++ b/.github/workflows/label.yml @@ -0,0 +1,18 @@ +# This workflow will triage pull requests and apply a label based on the +# paths that are modified in the pull request. + +name: Labeler +on: [pull_request_target] + +jobs: + label: + + runs-on: ubuntu-latest + permissions: + contents: read + pull-requests: write + + steps: + - uses: actions/labeler@8558fd74291d67161a8a78ce36a881fa63b766a9 # v5.0.0 + with: + repo-token: "${{ secrets.GITHUB_TOKEN }}" diff --git a/.github/workflows/pr-closed.yml b/.github/workflows/pr-closed.yml index 959e38b0d2..5347e80149 100644 --- a/.github/workflows/pr-closed.yml +++ b/.github/workflows/pr-closed.yml @@ -29,5 +29,5 @@ jobs: Thanks for your contribution! ๐ŸŽ‰ - The changes will be part of the upcoming update on the marketplace.` + The changes will be part of the upcoming update on the Marketplace.` }) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 10722fbf7f..97b81eefee 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -14,6 +14,7 @@ on: - patch permissions: + id-token: write contents: read jobs: @@ -25,18 +26,25 @@ jobs: permissions: contents: write id-token: write + attestations: write steps: + - uses: actions/create-github-app-token@5d869da34e18e7287c1daad50e0b8ea0f506ce69 # v1.11.0 + id: app-token + with: + app-id: ${{ vars.BOT_APP_ID }} + private-key: ${{ secrets.BOT_PRIVATE_KEY }} + - name: Checkout ๐Ÿ›Ž๏ธ - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: fetch-depth: 0 - persist-credentials: false + token: ${{ steps.app-token.outputs.token }} - - name: Setup Platform ๐Ÿ›  - uses: oven-sh/setup-bun@f4d14e03ff726c06358e5557344e1da148b56cf7 # v1.2.2 + - name: Setup Platform ๐Ÿ› ๏ธ + uses: oven-sh/setup-bun@4bc047ad259df6fc24a6c9b0f9a0cb08cf17fbe5 # v2 with: - bun-version: 1.1.13 + bun-version: 1.1.18 - name: Install dependencies ๐Ÿ“ฆ run: | @@ -62,11 +70,17 @@ jobs: - name: Build โš’๏ธ run: bunx @vscode/vsce package + - name: Attest artifacts โœ… + uses: actions/attest-build-provenance@1c608d11d69870c2092266b3f9a6f3abbf17002c # v1.4.3 + # Read: https://docs.github.com/en/actions/security-guides/using-artifact-attestations-to-establish-provenance-for-builds + with: + subject-path: '${{ env.NAME }}-${{ env.VERSION }}.vsix' + - name: Push tags ๐Ÿ“Œ run: git push - name: Release ${{ env.VERSION }} ๐Ÿ”† - uses: softprops/action-gh-release@69320dbe05506a9a39fc8ae11030b214ec2d1f87 # v2.0.5 + uses: softprops/action-gh-release@c062e08bd532815e2082a85e87e3ef29c3e6d191 # v2.0.8 with: files: ${{ env.NAME }}-${{ env.VERSION }}.vsix tag_name: v${{ env.VERSION }} diff --git a/.npmignore b/.npmignore new file mode 100644 index 0000000000..ced09c142b --- /dev/null +++ b/.npmignore @@ -0,0 +1,5 @@ +* +!icons/* +!dist/types/**/* +!dist/material-icons.json +!dist/module/index.cjs diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 9e356fe8ce..192fa55fd7 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -3,6 +3,7 @@ "biomejs.biome", "jock.svg", "editorconfig.editorconfig", - "oven.bun-vscode" + "oven.bun-vscode", + "davidanson.vscode-markdownlint" ] } diff --git a/.vscode/tasks.json b/.vscode/tasks.json index b4d4a9ea70..14ab1310a1 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -3,10 +3,10 @@ "tasks": [ { "type": "bun", - "script": "bun run ./scripts/build-with-esbuild.ts", + "script": "bun run build", "problemMatcher": [], "label": "bun: build", - "detail": "bun run ./scripts/build-with-esbuild.ts - package.json", + "detail": "bun run build", "group": { "kind": "build", "isDefault": true diff --git a/.vscodeignore b/.vscodeignore index d4d68a15ed..e27de6399c 100644 --- a/.vscodeignore +++ b/.vscodeignore @@ -1,22 +1,19 @@ -.vscode/** -.github/** -.vscode-test/** -out/** -test/** -src/** -scripts/** -**/*.map -.gitignore -tsconfig.json -tslint.json -images/** -vsc-extension-quickstart.md -logo.svg -node_modules -package-lock.json -yarn.lock -build/** -svgo.config.js -.eslintignore -material-colors.yml -changelog.config.json \ No newline at end of file +# Files to include in the extension package +# Documentation for this format: +# https://code.visualstudio.com/api/working-with-extensions/publishing-extension#using-.vscodeignore +!CHANGELOG.md +!LICENSE.md +!README.md +!logo.png + +!package.json +!package.nls.json +!package.nls.*.json + +!dist/extension +!dist/material-icons.json + +!icons + +# Exclude everything else +**/* diff --git a/CHANGELOG.md b/CHANGELOG.md index a6cb219109..a08e29acba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,1589 +3,1800 @@ All notable changes to this project will be documented in this file. Dates are displayed in UTC. -#### [v5.4.2](https://github.com/PKief/vscode-material-icon-theme/compare/v5.4.1...v5.4.2) +#### [v5.12.0](https://github.com/material-extensions/vscode-material-icon-theme/compare/v5.11.1...v5.12.0) + +> October 23, 2024 + +- Add `label` icon for `.github/labeler.yml` file [`#2607`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2607) +- feat: add Copilot icon for `.github/copilot-instructions.md` file [`#2632`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2632) +- Add events package in package.json [`#2630`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2630) +- add Bahasa Indonesia (id) translation [`#2627`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2627) +- feat: :sparkles: Add `.tazerc` and `.tazerc.json` filenames for `taze` icon [`#2628`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2628) +- build(deps): bump actions/checkout in the github-actions group [`#2626`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2626) +- Added env abbreviations on tune icon recognized names [`#2624`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2624) +- Add stackblitz file icon [`#2621`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2621) +- Add icon association for gltf and glb files [`#2622`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2622) +- Add systemd icon [`#1472`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1472) +- Fix light mode for language ids [`#2617`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2617) +- build(deps): bump actions/checkout in the github-actions group [`#2618`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2618) +- Add `zeabur` file icon for `zeabur` deploy config file [`#2611`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2611) +- Add icon for PowerShell folders [`#2605`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2605) +- Update prepare script [`377523e9`](https://github.com/material-extensions/vscode-material-icon-theme/commit/377523e9) + +#### [v5.11.1](https://github.com/material-extensions/vscode-material-icon-theme/compare/v5.11.0...v5.11.1) + +> September 21, 2024 + +- Fix issue with Svelte JS and TS icons (Closes #2603) [`be58bc47`](https://github.com/material-extensions/vscode-material-icon-theme/commit/be58bc47) +- Update preversion script [`1c7a0847`](https://github.com/material-extensions/vscode-material-icon-theme/commit/1c7a0847) + +#### [v5.11.0](https://github.com/material-extensions/vscode-material-icon-theme/compare/v5.10.0...v5.11.0) + +> September 20, 2024 + +- Update preversion script [`12145f8e`](https://github.com/material-extensions/vscode-material-icon-theme/commit/12145f8e) +- Add .svelte.js and .svelte.ts color variants [`#2600`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2600) +- Remove vscode specific fields from module's package json [`#2602`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2602) +- Fix icon request template [`#2596`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2596) +- feat: ecmascript extension patterns for svelte.config [`#2595`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2595) +- Add icons for Lefthook files and folders [`#2582`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2582) +- build(deps): bump actions/create-github-app-token [`#2591`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2591) +- Add `ts`, `cjs` ext for `quasar` [`#2590`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2590) +- Added icon for `wxt.config.ts` file ๐Ÿงฉ [`#2576`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2576) +- build(deps): bump the github-actions group with 2 updates [`#2583`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2583) +- feat: โœจ .clang-format-ignore file icon [`#2580`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2580) +- Added taze configuration file icon [`#2577`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2577) +- added favicons folder icon [`#2578`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2578) +- Feat: added sway icon [`#2573`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2573) +- added src-tauri folder icon [`#2567`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2567) +- refactor: โ™ป๏ธ Improve scripts in `package.json` [`#2569`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2569) +- Added freemarker icon [`#2396`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2396) +- Add nest interceptor icon [`#2572`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2572) +- Remove coderabbit config [`9f57e5cc`](https://github.com/material-extensions/vscode-material-icon-theme/commit/9f57e5cc) +- feat: โœจ .markdownlintignore file icon [`#2565`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2565) +- docs: ๐Ÿ“ fix broken links in pull_request_template [`#2566`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2566) + +#### [v5.10.0](https://github.com/material-extensions/vscode-material-icon-theme/compare/v5.9.0...v5.10.0) + +> August 29, 2024 + +- feat: โœจ github actions workflow file icon [`#2559`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2559) +- duc Binary file format [`#2212`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2212) +- Add icon association for UNLICENSE files [`#2556`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2556) +- build(deps): bump actions/attest-build-provenance [`#2554`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2554) +- Update marketplace message capitalization [`#2553`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2553) +- Added coderabbit icon [`#2549`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2549) +- chore: Improve branch protection [`7112da93`](https://github.com/material-extensions/vscode-material-icon-theme/commit/7112da93) +- Added `gemini-ai` icon [`#2548`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2548) +- feat: โœจ gitea folder icon [`#2552`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2552) +- Changed issue templates order [`#2546`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2546) +- Add remote(s) folder icon association [`4a3c324f`](https://github.com/material-extensions/vscode-material-icon-theme/commit/4a3c324f) +- Added emojis in issue template names [`#2532`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2532) +- Collapse the walkthrough of coderabbit [`c61a8d1e`](https://github.com/material-extensions/vscode-material-icon-theme/commit/c61a8d1e) +- Fixed pr template links [`#2531`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2531) +- Add config for coderabbit [`baf6202f`](https://github.com/material-extensions/vscode-material-icon-theme/commit/baf6202f) +- Remove unused dependencies [`b167604c`](https://github.com/material-extensions/vscode-material-icon-theme/commit/b167604c) + +#### [v5.9.0](https://github.com/material-extensions/vscode-material-icon-theme/compare/v5.8.0...v5.9.0) + +> August 10, 2024 + +- Update release workflow [`1959aa1f`](https://github.com/material-extensions/vscode-material-icon-theme/commit/1959aa1f) +- Include 'devtools' in the folder-icon for 'tools' [`#2528`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2528) +- Add VHDL file icon association [`#2522`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2522) +- Add cds icon [`#2520`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2520) +- Added folder-icon for snippet, snippets [`#2510`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2510) +- Add store folder icon [`#2518`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2518) +- feat: โœจ rocket/release icon [`#2519`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2519) +- Feat: Drizzle ORM [`#2127`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2127) +- Show nuxt folder icon without pack [`1c8513c9`](https://github.com/material-extensions/vscode-material-icon-theme/commit/1c8513c9) +- build(deps): bump actions/attest in the github-actions group [`#2517`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2517) +- Added folder-icon for flutter [`#2511`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2511) +- Made pixel-perfect (almost) icons [`#2449`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2449) +- Added artifact attestation [`#2486`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2486) +- Added folder-icon about development. [`#2501`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2501) +- Add Phorm AI badge [`#2508`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2508) +- docs: ๐Ÿ“ fix broken links [`#2507`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2507) +- Fix URL in CONTRIBUTING.md [`#2505`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2505) +- Add 'distribution' to folder-dist [`#2500`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2500) +- Added `jsr` icon [`#2493`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2493) +- Improve icon review workflow [`#2499`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2499) +- Improved hint comments [`#2496`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2496) +- Add conditionally active custom clones [`#2498`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2498) +- Add license field to package.json [`#2495`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2495) +- ci: ๐Ÿท๏ธ Add labels for PRs automatically [`#2490`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2490) +- feat: โœจ new rust icon [`#2489`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2489) +- Improve icon preview workflow [`#2485`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2485) +- Add inc64 folder icon [`#2484`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2484) +- Added clangd icon [`#2414`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2414) +- Reduced the size of the extension [`#2476`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2476) +- Added `devcontainer-lock.json` file icon [`#2478`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2478) +- Added `ipynb` folder icon [`#2479`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2479) +- Added `slint` icon [`#2480`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2480) +- fix: ๐Ÿš‘ review comment not being updated [`#2481`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2481) +- Improved text in icon-review [`#2467`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2467) +- Optimized `.vscodeignore` [`#2475`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2475) +- Add angular interceptor icon [`#2474`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2474) +- Add lib64 folder icon [`#2473`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2473) +- feat: add Just icon [`#1950`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1950) + +#### [v5.8.0](https://github.com/material-extensions/vscode-material-icon-theme/compare/v5.7.0...v5.8.0) + +> July 24, 2024 + +- feat: add remark support [`#2245`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2245) +- Add tape icon [`#2469`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2469) +- Added `hurl` icon [`#2465`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2465) +- Improve core functionality (Logging, Config comparison, Code Quality) [`#2464`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2464) +- Added alias for `.nuxtrc` [`#2466`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2466) +- Updated `svg-icon-review` version (1.1.0 -> 2.1.0) [`#2459`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2459) +- feat: adding icons to new configuration and envs files [`#2057`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2057) + +#### [v5.7.0](https://github.com/material-extensions/vscode-material-icon-theme/compare/v5.6.0...v5.7.0) + +> July 22, 2024 + +- Added markdownlint icon [`#2415`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2415) +- Use issue forms [`#2445`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2445) +- Added `ะฆั–ะปัŒ` icon [`#2424`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2424) +- Added snap folder icon [`#2439`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2439) +- Add liara cloud icon [`#2409`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2409) +- Added deepsource icon [`#2413`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2413) +- Added separate Buy Me a Coffee link in `FUNDING.yml` [`#2458`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2458) +- Added aliases for codecov icon [`#2440`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2440) +- Changed icon for `devcontainer.json` [`#2448`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2448) +- Added icon for `xlf` files [`#2455`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2455) +- Added `win32` folder icon [`#2456`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2456) +- build(deps): bump softprops/action-gh-release from 2.0.6 to 2.0.8 [`#2453`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2453) +- build(deps): bump oven-sh/setup-bun [`#2452`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2452) +- Moved PR template [`#2438`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2438) +- Allign with new requirements of vscode-vsce v2.31.0 [`b5552f41`](https://github.com/material-extensions/vscode-material-icon-theme/commit/b5552f41) +- feat: mist file icon [`#2435`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2435) +- Provide option to analyse bundle size [`6186d685`](https://github.com/material-extensions/vscode-material-icon-theme/commit/6186d685) +- Improve stability of code [`58c90cf0`](https://github.com/material-extensions/vscode-material-icon-theme/commit/58c90cf0) + +#### [v5.6.0](https://github.com/material-extensions/vscode-material-icon-theme/compare/v5.5.1...v5.6.0) + +> July 16, 2024 + +- feat: โœจ update turbo repo file icon + .turbo folder icon [`#2425`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2425) +- Revert esbuild config (Related to #2428) [`c66fa64d`](https://github.com/material-extensions/vscode-material-icon-theme/commit/c66fa64d) +- feat: velite [`#2406`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2406) + +#### [v5.5.1](https://github.com/material-extensions/vscode-material-icon-theme/compare/v5.5.0...v5.5.1) + +> July 15, 2024 + +- Remove lodash as dependency [`#2422`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2422) +- Update tsconfig [`412da52e`](https://github.com/material-extensions/vscode-material-icon-theme/commit/412da52e) + +#### [v5.5.0](https://github.com/material-extensions/vscode-material-icon-theme/compare/v5.4.2...v5.5.0) + +> July 15, 2024 + +- Expose generateManifest as reusable function [`#2411`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2411) +- Added osx folder icon [`#2418`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2418) +- ci(preview): ๐Ÿ”„ add link to check pixel perfectness [`#2405`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2405) +- Include `.cts` and `.mts` in `esbuild` icon configuration [`#2404`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2404) +- feat: update astro file icon and add astro folder icon [`#2228`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2228) +- Fixed all .md files to conform to markdownlint rules [`#2398`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2398) +- Added markdownlint to list of reccomended extensions [`#2400`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2400) +- Added cairo icon [`#2393`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2393) +- Exclude files from vscode extension bundle [`a3f42ed7`](https://github.com/material-extensions/vscode-material-icon-theme/commit/a3f42ed7) +- A new item has been added to the checklist in the PR template [`#2395`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2395) +- Remove jq as it's already part of the runner [`#2386`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2386) +- Improved preview text [`#2397`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2397) +- Added dockerhub folder [`#2399`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2399) +- Fixed color checking [`#2392`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2392) +- Added grafana alloy icon [`#2391`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2391) +- Cleaned icons [`#2383`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2383) +- Added labels for issues [`#2394`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2394) +- Replace generated image previews instead of creating new ones [`#2386`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2386) +- Add Helm folder icon [`#1181`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1181) +- Update workflow files [`b1ad1d28`](https://github.com/material-extensions/vscode-material-icon-theme/commit/b1ad1d28) +- Add folder icons for Jupyter [`#2368`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2368) +- ci: ๐Ÿ”„ persist credentials in release action [`#2385`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2385) +- feat: update sentry files [`#2303`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2303) +- Remove plain black and white from allowed colors [`9b7100ed`](https://github.com/material-extensions/vscode-material-icon-theme/commit/9b7100ed) +- Update build directory [`4d71701d`](https://github.com/material-extensions/vscode-material-icon-theme/commit/4d71701d) +- ui folder icon [`#2382`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2382) +- Added icon for kcl lang [`#2342`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2342) +- Added icon for `*.sigstore.json` files [`#2341`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2341) +- Add Bicep folder icons [`#2367`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2367) +- Update devcontainer settings [`175ad6f7`](https://github.com/material-extensions/vscode-material-icon-theme/commit/175ad6f7) +- build(deps): bump oven-sh/setup-bun from 1.2.2 to 2 [`#2373`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2373) +- build(deps): bump softprops/action-gh-release from 2.0.5 to 2.0.6 [`#2374`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2374) +- Update CONTRIBUTING.md [`#2372`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2372) +- Transfer repository to organization [`1aaaaaf4`](https://github.com/material-extensions/vscode-material-icon-theme/commit/1aaaaaf4) +- Support for Prisma 5.15 multi-file schema (Closes #2354) [`de76f5a8`](https://github.com/material-extensions/vscode-material-icon-theme/commit/de76f5a8) +- Update biome js [`fa79975d`](https://github.com/material-extensions/vscode-material-icon-theme/commit/fa79975d) +- add amplify logo (Closes #893) [`#1084`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1084) +- Update task json to improve debugging [`b860c846`](https://github.com/material-extensions/vscode-material-icon-theme/commit/b860c846) +- chore: provenance [`#2365`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2365) + +#### [v5.4.2](https://github.com/material-extensions/vscode-material-icon-theme/compare/v5.4.1...v5.4.2) > June 13, 2024 -- Update action workflows [`314aba7b`](https://github.com/PKief/vscode-material-icon-theme/commit/314aba7b) -- fix: remove log information from console (Fixes #2362) [`0c4c0821`](https://github.com/PKief/vscode-material-icon-theme/commit/0c4c0821) +- Update action workflows [`314aba7b`](https://github.com/material-extensions/vscode-material-icon-theme/commit/314aba7b) +- fix: remove log information from console (Fixes #2362) [`0c4c0821`](https://github.com/material-extensions/vscode-material-icon-theme/commit/0c4c0821) -#### [v5.4.1](https://github.com/PKief/vscode-material-icon-theme/compare/v5.4.0...v5.4.1) +#### [v5.4.1](https://github.com/material-extensions/vscode-material-icon-theme/compare/v5.4.0...v5.4.1) > June 13, 2024 -- Fix #2360 Issue with translation loader [`f11d3e51`](https://github.com/PKief/vscode-material-icon-theme/commit/f11d3e51) +- Fix #2360 Issue with translation loader [`f11d3e51`](https://github.com/material-extensions/vscode-material-icon-theme/commit/f11d3e51) -#### [v5.4.0](https://github.com/PKief/vscode-material-icon-theme/compare/v5.3.0...v5.4.0) +#### [v5.4.0](https://github.com/material-extensions/vscode-material-icon-theme/compare/v5.3.0...v5.4.0) > June 12, 2024 -- feat: improve build performance [`#2359`](https://github.com/PKief/vscode-material-icon-theme/pull/2359) -- fix: dead README.md link [`#2355`](https://github.com/PKief/vscode-material-icon-theme/pull/2355) -- Clone Advpl icon files [`#2353`](https://github.com/PKief/vscode-material-icon-theme/pull/2353) -- feat: Migrate from `prettier`/`eslint` to `biome` [`#2349`](https://github.com/PKief/vscode-material-icon-theme/pull/2349) -- feat: Added `screwdriver` icon [`#2328`](https://github.com/PKief/vscode-material-icon-theme/pull/2328) -- Add harmonix icon [`#2348`](https://github.com/PKief/vscode-material-icon-theme/pull/2348) -- Add bruno icon [`#2345`](https://github.com/PKief/vscode-material-icon-theme/pull/2345) -- feat: update patterns support [`d8bdd337`](https://github.com/PKief/vscode-material-icon-theme/commit/d8bdd337) -- Added icon for `py.typed` file [`#2343`](https://github.com/PKief/vscode-material-icon-theme/pull/2343) -- fix: `pull_request_template.md` [`#2339`](https://github.com/PKief/vscode-material-icon-theme/pull/2339) -- feat: โš™๏ธ Refactor pattern code structure [`#2326`](https://github.com/PKief/vscode-material-icon-theme/pull/2326) -- Added icon for `devcontainer.json` [`#2332`](https://github.com/PKief/vscode-material-icon-theme/pull/2332) -- Added icons for `.github/*_TEMPLATE` folders [`#2333`](https://github.com/PKief/vscode-material-icon-theme/pull/2333) -- Added new filenames for `key` icon [`#2334`](https://github.com/PKief/vscode-material-icon-theme/pull/2334) -- Added snapcraft icon [`#2318`](https://github.com/PKief/vscode-material-icon-theme/pull/2318) -- Added `CODE_OF_CONDUCT.md` [`#2327`](https://github.com/PKief/vscode-material-icon-theme/pull/2327) -- feat: update recommended extensions for development [`8af9bcdb`](https://github.com/PKief/vscode-material-icon-theme/commit/8af9bcdb) - -#### [v5.3.0](https://github.com/PKief/vscode-material-icon-theme/compare/v5.2.0...v5.3.0) +- feat: improve build performance [`#2359`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2359) +- fix: dead README.md link [`#2355`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2355) +- Clone Advpl icon files [`#2353`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2353) +- feat: Migrate from `prettier`/`eslint` to `biome` [`#2349`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2349) +- feat: Added `screwdriver` icon [`#2328`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2328) +- Add harmonix icon [`#2348`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2348) +- Add bruno icon [`#2345`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2345) +- feat: update patterns support [`d8bdd337`](https://github.com/material-extensions/vscode-material-icon-theme/commit/d8bdd337) +- Added icon for `py.typed` file [`#2343`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2343) +- fix: `pull_request_template.md` [`#2339`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2339) +- feat: โš™๏ธ Refactor pattern code structure [`#2326`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2326) +- Added icon for `devcontainer.json` [`#2332`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2332) +- Added icons for `.github/*_TEMPLATE` folders [`#2333`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2333) +- Added new filenames for `key` icon [`#2334`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2334) +- Added snapcraft icon [`#2318`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2318) +- Added `CODE_OF_CONDUCT.md` [`#2327`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2327) +- feat: update recommended extensions for development [`8af9bcdb`](https://github.com/material-extensions/vscode-material-icon-theme/commit/8af9bcdb) + +#### [v5.3.0](https://github.com/material-extensions/vscode-material-icon-theme/compare/v5.2.0...v5.3.0) > May 13, 2024 -- feat: select default version change value [`190092bf`](https://github.com/PKief/vscode-material-icon-theme/commit/190092bf) -- feat: โœจ .github/workflows folder icon [`#2324`](https://github.com/PKief/vscode-material-icon-theme/pull/2324) -- fix: ๐Ÿš‘ interop between cloned icons and user associations [`#2323`](https://github.com/PKief/vscode-material-icon-theme/pull/2323) -- feat: Rename custom attribute (use data prefix) [`#2322`](https://github.com/PKief/vscode-material-icon-theme/pull/2322) -- Added `devcontainer.json` [`#2319`](https://github.com/PKief/vscode-material-icon-theme/pull/2319) -- feat: update link in readme [`de998a76`](https://github.com/PKief/vscode-material-icon-theme/commit/de998a76) +- feat: select default version change value [`190092bf`](https://github.com/material-extensions/vscode-material-icon-theme/commit/190092bf) +- feat: โœจ .github/workflows folder icon [`#2324`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2324) +- fix: ๐Ÿš‘ interop between cloned icons and user associations [`#2323`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2323) +- feat: Rename custom attribute (use data prefix) [`#2322`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2322) +- Added `devcontainer.json` [`#2319`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2319) +- feat: update link in readme [`de998a76`](https://github.com/material-extensions/vscode-material-icon-theme/commit/de998a76) -#### [v5.2.0](https://github.com/PKief/vscode-material-icon-theme/compare/v5.1.0...v5.2.0) +#### [v5.2.0](https://github.com/material-extensions/vscode-material-icon-theme/compare/v5.1.0...v5.2.0) > May 9, 2024 -- Feat/update angular and nest icons [`#2314`](https://github.com/PKief/vscode-material-icon-theme/pull/2314) -- feat: support biome.jsonc [`#2316`](https://github.com/PKief/vscode-material-icon-theme/pull/2316) -- Modernize svgo config [`#2301`](https://github.com/PKief/vscode-material-icon-theme/pull/2301) -- feat: โœจ clone and recolorize icons [`#2305`](https://github.com/PKief/vscode-material-icon-theme/pull/2305) -- feat(i18n): Add missing japanese translate [`#2313`](https://github.com/PKief/vscode-material-icon-theme/pull/2313) -- Add seeders folder icons [`#2298`](https://github.com/PKief/vscode-material-icon-theme/pull/2298) -- Pseudo-wildcard support for folder icons [`#2292`](https://github.com/PKief/vscode-material-icon-theme/pull/2292) -- Update CONTRIBUTING.md [`834e5aed`](https://github.com/PKief/vscode-material-icon-theme/commit/834e5aed) -- feat: โœจ c-family icons improvements [`#2299`](https://github.com/PKief/vscode-material-icon-theme/pull/2299) -- feat: slnx file extension [`#2302`](https://github.com/PKief/vscode-material-icon-theme/pull/2302) -- feat(filenames): add patterns support [`#2289`](https://github.com/PKief/vscode-material-icon-theme/pull/2289) -- Add some missed attribute options [`#2300`](https://github.com/PKief/vscode-material-icon-theme/pull/2300) -- Add aliases for platform folders [`#2288`](https://github.com/PKief/vscode-material-icon-theme/pull/2288) -- feat: Add `.editorconfig` and `.gitattributes` [`#2290`](https://github.com/PKief/vscode-material-icon-theme/pull/2290) - -#### [v5.1.0](https://github.com/PKief/vscode-material-icon-theme/compare/v5.0.0...v5.1.0) +- Feat/update angular and nest icons [`#2314`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2314) +- feat: support biome.jsonc [`#2316`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2316) +- Modernize svgo config [`#2301`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2301) +- feat: โœจ clone and recolorize icons [`#2305`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2305) +- feat(i18n): Add missing japanese translate [`#2313`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2313) +- Add seeders folder icons [`#2298`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2298) +- Pseudo-wildcard support for folder icons [`#2292`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2292) +- Update CONTRIBUTING.md [`834e5aed`](https://github.com/material-extensions/vscode-material-icon-theme/commit/834e5aed) +- feat: โœจ c-family icons improvements [`#2299`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2299) +- feat: slnx file extension [`#2302`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2302) +- feat(filenames): add patterns support [`#2289`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2289) +- Add some missed attribute options [`#2300`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2300) +- Add aliases for platform folders [`#2288`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2288) +- feat: Add `.editorconfig` and `.gitattributes` [`#2290`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2290) + +#### [v5.1.0](https://github.com/material-extensions/vscode-material-icon-theme/compare/v5.0.0...v5.1.0) > April 20, 2024 -- fix: ๐Ÿš‘ golang icon [`#2287`](https://github.com/PKief/vscode-material-icon-theme/pull/2287) -- feat: add all syncpack cosmiconfig config [`#2282`](https://github.com/PKief/vscode-material-icon-theme/pull/2282) -- feat: knip [`#2280`](https://github.com/PKief/vscode-material-icon-theme/pull/2280) -- Updated ES translation [`#2286`](https://github.com/PKief/vscode-material-icon-theme/pull/2286) +- fix: ๐Ÿš‘ golang icon [`#2287`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2287) +- feat: add all syncpack cosmiconfig config [`#2282`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2282) +- feat: knip [`#2280`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2280) +- Updated ES translation [`#2286`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2286) -#### [v5.0.0](https://github.com/PKief/vscode-material-icon-theme/compare/v4.34.0...v5.0.0) +#### [v5.0.0](https://github.com/material-extensions/vscode-material-icon-theme/compare/v4.34.0...v5.0.0) > April 18, 2024 -- fix: update version [`0ae248de`](https://github.com/PKief/vscode-material-icon-theme/commit/0ae248de) -- feat: add backend/backends folder icon (Closes #2276) [`c7fd9c9c`](https://github.com/PKief/vscode-material-icon-theme/commit/c7fd9c9c) -- feat: update typescript and javascript icons [`d10e0d14`](https://github.com/PKief/vscode-material-icon-theme/commit/d10e0d14) -- feat: add `.cjs` extension support for `gruntfile` [`#2271`](https://github.com/PKief/vscode-material-icon-theme/pull/2271) -- feat: update color of JSON icon [`d8d90fd6`](https://github.com/PKief/vscode-material-icon-theme/commit/d8d90fd6) -- Add Quokka icon and file-extension default config [`#2152`](https://github.com/PKief/vscode-material-icon-theme/pull/2152) -- Add `mjs` to `postcss.config.*` [`#2269`](https://github.com/PKief/vscode-material-icon-theme/pull/2269) -- feat: update icons [`75bdd37d`](https://github.com/PKief/vscode-material-icon-theme/commit/75bdd37d) -- feat: update file icons for grid alignment [`a8095d5f`](https://github.com/PKief/vscode-material-icon-theme/commit/a8095d5f) -- feat: add capnp [`#2224`](https://github.com/PKief/vscode-material-icon-theme/pull/2224) -- Update icon-review.yml [`5fa74251`](https://github.com/PKief/vscode-material-icon-theme/commit/5fa74251) -- feat: add lighthouserc .cjs extension support [`#2256`](https://github.com/PKief/vscode-material-icon-theme/pull/2256) -- feat: add translation for Korean [`#2234`](https://github.com/PKief/vscode-material-icon-theme/pull/2234) -- build(deps-dev): bump follow-redirects from 1.15.4 to 1.15.6 [`#2254`](https://github.com/PKief/vscode-material-icon-theme/pull/2254) -- chore: add `svg-color-linter` to check-colors before requesting merge [`#2237`](https://github.com/PKief/vscode-material-icon-theme/pull/2237) -- Remove duplicated language id definitions [`ff4bb608`](https://github.com/PKief/vscode-material-icon-theme/commit/ff4bb608) -- Move objective c and cpp to language associations [`#2249`](https://github.com/PKief/vscode-material-icon-theme/pull/2249) -- feat: enhance eslint flat config support [`#2247`](https://github.com/PKief/vscode-material-icon-theme/pull/2247) -- feat: add commitlint .mjs extension support [`#2241`](https://github.com/PKief/vscode-material-icon-theme/pull/2241) -- Add Controller, Television, and Desktop folder icons [`#2218`](https://github.com/PKief/vscode-material-icon-theme/pull/2218) -- feat: add postcss .mjs extension support [`#2239`](https://github.com/PKief/vscode-material-icon-theme/pull/2239) -- Support Bun's bunfig.toml file [`#2238`](https://github.com/PKief/vscode-material-icon-theme/pull/2238) -- Cloudflare folder icon [`#2235`](https://github.com/PKief/vscode-material-icon-theme/pull/2235) -- Add zon file extension to zig icon [`ca53a641`](https://github.com/PKief/vscode-material-icon-theme/commit/ca53a641) -- Feature/openapi file extensions [`#2229`](https://github.com/PKief/vscode-material-icon-theme/pull/2229) -- Pixel perfect icons at 16px [`#2226`](https://github.com/PKief/vscode-material-icon-theme/pull/2226) - -#### [v4.34.0](https://github.com/PKief/vscode-material-icon-theme/compare/v4.33.0...v4.34.0) +- fix: update version [`0ae248de`](https://github.com/material-extensions/vscode-material-icon-theme/commit/0ae248de) +- feat: add backend/backends folder icon (Closes #2276) [`c7fd9c9c`](https://github.com/material-extensions/vscode-material-icon-theme/commit/c7fd9c9c) +- feat: update typescript and javascript icons [`d10e0d14`](https://github.com/material-extensions/vscode-material-icon-theme/commit/d10e0d14) +- feat: add `.cjs` extension support for `gruntfile` [`#2271`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2271) +- feat: update color of JSON icon [`d8d90fd6`](https://github.com/material-extensions/vscode-material-icon-theme/commit/d8d90fd6) +- Add Quokka icon and file-extension default config [`#2152`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2152) +- Add `mjs` to `postcss.config.*` [`#2269`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2269) +- feat: update icons [`75bdd37d`](https://github.com/material-extensions/vscode-material-icon-theme/commit/75bdd37d) +- feat: update file icons for grid alignment [`a8095d5f`](https://github.com/material-extensions/vscode-material-icon-theme/commit/a8095d5f) +- feat: add capnp [`#2224`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2224) +- Update icon-review.yml [`5fa74251`](https://github.com/material-extensions/vscode-material-icon-theme/commit/5fa74251) +- feat: add lighthouserc .cjs extension support [`#2256`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2256) +- feat: add translation for Korean [`#2234`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2234) +- build(deps-dev): bump follow-redirects from 1.15.4 to 1.15.6 [`#2254`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2254) +- chore: add `svg-color-linter` to check-colors before requesting merge [`#2237`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2237) +- Remove duplicated language id definitions [`ff4bb608`](https://github.com/material-extensions/vscode-material-icon-theme/commit/ff4bb608) +- Move objective c and cpp to language associations [`#2249`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2249) +- feat: enhance eslint flat config support [`#2247`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2247) +- feat: add commitlint .mjs extension support [`#2241`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2241) +- Add Controller, Television, and Desktop folder icons [`#2218`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2218) +- feat: add postcss .mjs extension support [`#2239`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2239) +- Support Bun's bunfig.toml file [`#2238`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2238) +- Cloudflare folder icon [`#2235`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2235) +- Add zon file extension to zig icon [`ca53a641`](https://github.com/material-extensions/vscode-material-icon-theme/commit/ca53a641) +- Feature/openapi file extensions [`#2229`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2229) +- Pixel perfect icons at 16px [`#2226`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2226) + +#### [v4.34.0](https://github.com/material-extensions/vscode-material-icon-theme/compare/v4.33.0...v4.34.0) > February 19, 2024 -- feat: add syncpack icon [`#1968`](https://github.com/PKief/vscode-material-icon-theme/pull/1968) -- feat: payload cms [`#2222`](https://github.com/PKief/vscode-material-icon-theme/pull/2222) -- feat: add `tsconfig.server.json` to file names [`#2223`](https://github.com/PKief/vscode-material-icon-theme/pull/2223) -- Added swagger icon [`#1718`](https://github.com/PKief/vscode-material-icon-theme/pull/1718) -- Add PKL icon [`#2217`](https://github.com/PKief/vscode-material-icon-theme/pull/2217) -- feat: added vitest workspace file [`#2207`](https://github.com/PKief/vscode-material-icon-theme/pull/2207) -- feat: add icons for PDM [`#2195`](https://github.com/PKief/vscode-material-icon-theme/pull/2195) -- Replace AsciiDoc icon with the official one [`#2199`](https://github.com/PKief/vscode-material-icon-theme/pull/2199) -- feat: add dynamic library (dll) icon [`#2198`](https://github.com/PKief/vscode-material-icon-theme/pull/2198) -- add photo (and variants) to folderIcons.ts [`#2200`](https://github.com/PKief/vscode-material-icon-theme/pull/2200) -- Update Biome logo [`#2188`](https://github.com/PKief/vscode-material-icon-theme/pull/2188) -- Add .stylelintrc.mjs [`#2192`](https://github.com/PKief/vscode-material-icon-theme/pull/2192) -- feat: add Huff icon [`#2190`](https://github.com/PKief/vscode-material-icon-theme/pull/2190) -- build(deps-dev): bump follow-redirects from 1.15.2 to 1.15.4 [`#2187`](https://github.com/PKief/vscode-material-icon-theme/pull/2187) - -#### [v4.33.0](https://github.com/PKief/vscode-material-icon-theme/compare/v4.32.0...v4.33.0) +- feat: add syncpack icon [`#1968`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1968) +- feat: payload cms [`#2222`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2222) +- feat: add `tsconfig.server.json` to file names [`#2223`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2223) +- Added swagger icon [`#1718`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1718) +- Add PKL icon [`#2217`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2217) +- feat: added vitest workspace file [`#2207`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2207) +- feat: add icons for PDM [`#2195`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2195) +- Replace AsciiDoc icon with the official one [`#2199`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2199) +- feat: add dynamic library (dll) icon [`#2198`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2198) +- add photo (and variants) to folderIcons.ts [`#2200`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2200) +- Update Biome logo [`#2188`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2188) +- Add .stylelintrc.mjs [`#2192`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2192) +- feat: add Huff icon [`#2190`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2190) +- build(deps-dev): bump follow-redirects from 1.15.2 to 1.15.4 [`#2187`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2187) + +#### [v4.33.0](https://github.com/material-extensions/vscode-material-icon-theme/compare/v4.32.0...v4.33.0) > January 9, 2024 -- Adjust azure pipelines filename [`#2186`](https://github.com/PKief/vscode-material-icon-theme/pull/2186) -- add file icon for `Vedic` Programming Language. [`#2111`](https://github.com/PKief/vscode-material-icon-theme/pull/2111) -- Delete unused files [`0f5fd1be`](https://github.com/PKief/vscode-material-icon-theme/commit/0f5fd1be) -- Update vscode settings [`e10f594e`](https://github.com/PKief/vscode-material-icon-theme/commit/e10f594e) -- chore: add "protobuf" to proto folder names [`#2182`](https://github.com/PKief/vscode-material-icon-theme/pull/2182) -- Concourse Icon [`#1947`](https://github.com/PKief/vscode-material-icon-theme/pull/1947) -- feat: add postgres icon [`#2169`](https://github.com/PKief/vscode-material-icon-theme/pull/2169) -- feat: add kubernetes file icon [`#2077`](https://github.com/PKief/vscode-material-icon-theme/pull/2077) -- Add moon icons [`#2178`](https://github.com/PKief/vscode-material-icon-theme/pull/2178) -- feat: add tooling folder [`#2167`](https://github.com/PKief/vscode-material-icon-theme/pull/2167) -- Add RSpec file icon [`#2106`](https://github.com/PKief/vscode-material-icon-theme/pull/2106) -- Simplify contribution guidelines [`7856d63e`](https://github.com/PKief/vscode-material-icon-theme/commit/7856d63e) -- feat: add the .config folder [`#2172`](https://github.com/PKief/vscode-material-icon-theme/pull/2172) -- Update README.md [`a18fd923`](https://github.com/PKief/vscode-material-icon-theme/commit/a18fd923) -- Add puppeteer file icons [`#2142`](https://github.com/PKief/vscode-material-icon-theme/pull/2142) -- CRX file icon [`#2139`](https://github.com/PKief/vscode-material-icon-theme/pull/2139) -- Additions to folder icons [`#2140`](https://github.com/PKief/vscode-material-icon-theme/pull/2140) -- Update nuxt icons [`#2119`](https://github.com/PKief/vscode-material-icon-theme/pull/2119) - -#### [v4.32.0](https://github.com/PKief/vscode-material-icon-theme/compare/v4.31.0...v4.32.0) +- Adjust azure pipelines filename [`#2186`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2186) +- add file icon for `Vedic` Programming Language. [`#2111`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2111) +- Delete unused files [`0f5fd1be`](https://github.com/material-extensions/vscode-material-icon-theme/commit/0f5fd1be) +- Update vscode settings [`e10f594e`](https://github.com/material-extensions/vscode-material-icon-theme/commit/e10f594e) +- chore: add "protobuf" to proto folder names [`#2182`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2182) +- Concourse Icon [`#1947`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1947) +- feat: add postgres icon [`#2169`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2169) +- feat: add kubernetes file icon [`#2077`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2077) +- Add moon icons [`#2178`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2178) +- feat: add tooling folder [`#2167`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2167) +- Add RSpec file icon [`#2106`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2106) +- Simplify contribution guidelines [`7856d63e`](https://github.com/material-extensions/vscode-material-icon-theme/commit/7856d63e) +- feat: add the .config folder [`#2172`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2172) +- Update README.md [`a18fd923`](https://github.com/material-extensions/vscode-material-icon-theme/commit/a18fd923) +- Add puppeteer file icons [`#2142`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2142) +- CRX file icon [`#2139`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2139) +- Additions to folder icons [`#2140`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2140) +- Update nuxt icons [`#2119`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2119) + +#### [v4.32.0](https://github.com/material-extensions/vscode-material-icon-theme/compare/v4.31.0...v4.32.0) > November 20, 2023 -- [Icon Request] HJSON file icon [`#2136`](https://github.com/PKief/vscode-material-icon-theme/pull/2136) -- Update workflow files [`d5912bb0`](https://github.com/PKief/vscode-material-icon-theme/commit/d5912bb0) -- Add Google App Script (*.gs) file icon [`#2143`](https://github.com/PKief/vscode-material-icon-theme/pull/2143) -- build(deps-dev): bump axios from 1.4.0 to 1.6.0 [`#2141`](https://github.com/PKief/vscode-material-icon-theme/pull/2141) -- Added Lottie Folder Icons aswell as the File Icon. [`#2073`](https://github.com/PKief/vscode-material-icon-theme/pull/2073) -- [Icon Request] Add more textlintrc file names [`#2137`](https://github.com/PKief/vscode-material-icon-theme/pull/2137) -- Update Angular icons [`#2134`](https://github.com/PKief/vscode-material-icon-theme/pull/2134) -- Added mjs extension for stylelint [`#2129`](https://github.com/PKief/vscode-material-icon-theme/pull/2129) -- Add history icon association [`71173fc2`](https://github.com/PKief/vscode-material-icon-theme/commit/71173fc2) -- [Icon Request] Taskfile [`#1739`](https://github.com/PKief/vscode-material-icon-theme/pull/1739) -- [Icon Request] ABAP [`#2123`](https://github.com/PKief/vscode-material-icon-theme/pull/2123) -- Associate .whitesource file name with json file [`04e6cce6`](https://github.com/PKief/vscode-material-icon-theme/commit/04e6cce6) -- feat: add tailwind config esm [`#2112`](https://github.com/PKief/vscode-material-icon-theme/pull/2112) - -#### [v4.31.0](https://github.com/PKief/vscode-material-icon-theme/compare/v4.30.1...v4.31.0) +- [Icon Request] HJSON file icon [`#2136`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2136) +- Update workflow files [`d5912bb0`](https://github.com/material-extensions/vscode-material-icon-theme/commit/d5912bb0) +- Add Google App Script (*.gs) file icon [`#2143`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2143) +- build(deps-dev): bump axios from 1.4.0 to 1.6.0 [`#2141`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2141) +- Added Lottie Folder Icons aswell as the File Icon. [`#2073`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2073) +- [Icon Request] Add more textlintrc file names [`#2137`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2137) +- Update Angular icons [`#2134`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2134) +- Added mjs extension for stylelint [`#2129`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2129) +- Add history icon association [`71173fc2`](https://github.com/material-extensions/vscode-material-icon-theme/commit/71173fc2) +- [Icon Request] Taskfile [`#1739`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1739) +- [Icon Request] ABAP [`#2123`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2123) +- Associate .whitesource file name with json file [`04e6cce6`](https://github.com/material-extensions/vscode-material-icon-theme/commit/04e6cce6) +- feat: add tailwind config esm [`#2112`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2112) + +#### [v4.31.0](https://github.com/material-extensions/vscode-material-icon-theme/compare/v4.30.1...v4.31.0) > October 6, 2023 -- added templ file icon [`#2102`](https://github.com/PKief/vscode-material-icon-theme/pull/2102) -- Add .o and .zst extensions [`#2063`](https://github.com/PKief/vscode-material-icon-theme/pull/2063) -- Add Biome icon [`#2075`](https://github.com/PKief/vscode-material-icon-theme/pull/2075) -- Added .stan file icon [`#2050`](https://github.com/PKief/vscode-material-icon-theme/pull/2050) -- [Icon Request] ESBuild [`#2104`](https://github.com/PKief/vscode-material-icon-theme/pull/2104) -- add plural versions for manager, moderator, and admin folders [`#2098`](https://github.com/PKief/vscode-material-icon-theme/pull/2098) -- Add SPWN file icon [`#2090`](https://github.com/PKief/vscode-material-icon-theme/pull/2090) -- Support OWNERS files [`#2088`](https://github.com/PKief/vscode-material-icon-theme/pull/2088) -- Remove sponsors badge from readme [`#2082`](https://github.com/PKief/vscode-material-icon-theme/pull/2082) -- Add more panda file names (Closes #2065) [`afac99a5`](https://github.com/PKief/vscode-material-icon-theme/commit/afac99a5) -- Add csharp file extension (Closes #2080) [`411e1c91`](https://github.com/PKief/vscode-material-icon-theme/commit/411e1c91) -- feat: icons for desktop os [`#1635`](https://github.com/PKief/vscode-material-icon-theme/pull/1635) -- Added disc file extensions (vmdk, qcow2, etc.) [`#2069`](https://github.com/PKief/vscode-material-icon-theme/pull/2069) - -#### [v4.30.1](https://github.com/PKief/vscode-material-icon-theme/compare/v4.30.0...v4.30.1) +- added templ file icon [`#2102`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2102) +- Add .o and .zst extensions [`#2063`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2063) +- Add Biome icon [`#2075`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2075) +- Added .stan file icon [`#2050`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2050) +- [Icon Request] ESBuild [`#2104`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2104) +- add plural versions for manager, moderator, and admin folders [`#2098`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2098) +- Add SPWN file icon [`#2090`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2090) +- Support OWNERS files [`#2088`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2088) +- Remove sponsors badge from readme [`#2082`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2082) +- Add more panda file names (Closes #2065) [`afac99a5`](https://github.com/material-extensions/vscode-material-icon-theme/commit/afac99a5) +- Add csharp file extension (Closes #2080) [`411e1c91`](https://github.com/material-extensions/vscode-material-icon-theme/commit/411e1c91) +- feat: icons for desktop os [`#1635`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1635) +- Added disc file extensions (vmdk, qcow2, etc.) [`#2069`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2069) + +#### [v4.30.1](https://github.com/material-extensions/vscode-material-icon-theme/compare/v4.30.0...v4.30.1) > August 28, 2023 -- Add missing language ids for yaml icon [`#2066`](https://github.com/PKief/vscode-material-icon-theme/pull/2066) +- Add missing language ids for yaml icon [`#2066`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2066) -#### [v4.30.0](https://github.com/PKief/vscode-material-icon-theme/compare/v4.29.0...v4.30.0) +#### [v4.30.0](https://github.com/material-extensions/vscode-material-icon-theme/compare/v4.29.0...v4.30.0) > August 26, 2023 -- [Icon Request] Add icon association to dockercompose language id [`#2059`](https://github.com/PKief/vscode-material-icon-theme/pull/2059) -- [Icon Request] Secret Folder [`#2060`](https://github.com/PKief/vscode-material-icon-theme/pull/2060) -- Add frontends folder icon [`379040f7`](https://github.com/PKief/vscode-material-icon-theme/commit/379040f7) -- Associate `.tfbackend` files with Terraform [`#2055`](https://github.com/PKief/vscode-material-icon-theme/pull/2055) -- Add jest file names [`43bde808`](https://github.com/PKief/vscode-material-icon-theme/commit/43bde808) -- feat: enum icon [`#1195`](https://github.com/PKief/vscode-material-icon-theme/pull/1195) -- Add istanbul file names [`5ce97aea`](https://github.com/PKief/vscode-material-icon-theme/commit/5ce97aea) -- Add folder-robot icon [`#2039`](https://github.com/PKief/vscode-material-icon-theme/pull/2039) -- czech translation [`#2040`](https://github.com/PKief/vscode-material-icon-theme/pull/2040) -- [Icon Request] panda.config.ts [`#2034`](https://github.com/PKief/vscode-material-icon-theme/pull/2034) -- Adding Roblox Studio icons [`#2029`](https://github.com/PKief/vscode-material-icon-theme/pull/2029) -- Add .taurignore [`#2033`](https://github.com/PKief/vscode-material-icon-theme/pull/2033) -- maint: `.containerfile` and `.containerignore` icon [`#2026`](https://github.com/PKief/vscode-material-icon-theme/pull/2026) - -#### [v4.29.0](https://github.com/PKief/vscode-material-icon-theme/compare/v4.28.0...v4.29.0) +- [Icon Request] Add icon association to dockercompose language id [`#2059`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2059) +- [Icon Request] Secret Folder [`#2060`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2060) +- Add frontends folder icon [`379040f7`](https://github.com/material-extensions/vscode-material-icon-theme/commit/379040f7) +- Associate `.tfbackend` files with Terraform [`#2055`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2055) +- Add jest file names [`43bde808`](https://github.com/material-extensions/vscode-material-icon-theme/commit/43bde808) +- feat: enum icon [`#1195`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1195) +- Add istanbul file names [`5ce97aea`](https://github.com/material-extensions/vscode-material-icon-theme/commit/5ce97aea) +- Add folder-robot icon [`#2039`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2039) +- czech translation [`#2040`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2040) +- [Icon Request] panda.config.ts [`#2034`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2034) +- Adding Roblox Studio icons [`#2029`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2029) +- Add .taurignore [`#2033`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2033) +- maint: `.containerfile` and `.containerignore` icon [`#2026`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2026) + +#### [v4.29.0](https://github.com/material-extensions/vscode-material-icon-theme/compare/v4.28.0...v4.29.0) > July 14, 2023 -- Fix contributors script [`1d90a538`](https://github.com/PKief/vscode-material-icon-theme/commit/1d90a538) -- Prettier supports config files in ESM [`#2019`](https://github.com/PKief/vscode-material-icon-theme/pull/2019) -- Add playwright file names [`df129a42`](https://github.com/PKief/vscode-material-icon-theme/commit/df129a42) -- Add .eslintrc.base.json file name [`1dcba8d0`](https://github.com/PKief/vscode-material-icon-theme/commit/1dcba8d0) -- Add git icon to .keep [`#2010`](https://github.com/PKief/vscode-material-icon-theme/pull/2010) -- fix: `nginx` file extensions typo [`#2002`](https://github.com/PKief/vscode-material-icon-theme/pull/2002) -- fix: add semantic release as cjs extension [`#2000`](https://github.com/PKief/vscode-material-icon-theme/pull/2000) -- feat: werf icon [`#1995`](https://github.com/PKief/vscode-material-icon-theme/pull/1995) -- Use shields.io for marketplace badges in README [`#1996`](https://github.com/PKief/vscode-material-icon-theme/pull/1996) -- feat: introduce support for semgrep files [`#1991`](https://github.com/PKief/vscode-material-icon-theme/pull/1991) +- Fix contributors script [`1d90a538`](https://github.com/material-extensions/vscode-material-icon-theme/commit/1d90a538) +- Prettier supports config files in ESM [`#2019`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2019) +- Add playwright file names [`df129a42`](https://github.com/material-extensions/vscode-material-icon-theme/commit/df129a42) +- Add .eslintrc.base.json file name [`1dcba8d0`](https://github.com/material-extensions/vscode-material-icon-theme/commit/1dcba8d0) +- Add git icon to .keep [`#2010`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2010) +- fix: `nginx` file extensions typo [`#2002`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2002) +- fix: add semantic release as cjs extension [`#2000`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2000) +- feat: werf icon [`#1995`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1995) +- Use shields.io for marketplace badges in README [`#1996`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1996) +- feat: introduce support for semgrep files [`#1991`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1991) -#### [v4.28.0](https://github.com/PKief/vscode-material-icon-theme/compare/v4.27.0...v4.28.0) +#### [v4.28.0](https://github.com/material-extensions/vscode-material-icon-theme/compare/v4.27.0...v4.28.0) > May 31, 2023 -- feat: add "stores" (plural) to folder name [`#1965`](https://github.com/PKief/vscode-material-icon-theme/pull/1965) -- feat: add UnoCSS icon and file mappings [`#1910`](https://github.com/PKief/vscode-material-icon-theme/pull/1910) -- Add jest file names [`#1984`](https://github.com/PKief/vscode-material-icon-theme/pull/1984) -- Add Mojo file and folder icons [`#1972`](https://github.com/PKief/vscode-material-icon-theme/pull/1972) -- Add rbs file extension and .ruby-version file name [`#1978`](https://github.com/PKief/vscode-material-icon-theme/pull/1978) -- Update folderIcons.ts for HTML FolderIcon [`#1974`](https://github.com/PKief/vscode-material-icon-theme/pull/1974) -- feat: assign icons for electron process related configs [`#1963`](https://github.com/PKief/vscode-material-icon-theme/pull/1963) -- Add .gitmessage file name [`8e599fe7`](https://github.com/PKief/vscode-material-icon-theme/commit/8e599fe7) +- feat: add "stores" (plural) to folder name [`#1965`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1965) +- feat: add UnoCSS icon and file mappings [`#1910`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1910) +- Add jest file names [`#1984`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1984) +- Add Mojo file and folder icons [`#1972`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1972) +- Add rbs file extension and .ruby-version file name [`#1978`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1978) +- Update folderIcons.ts for HTML FolderIcon [`#1974`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1974) +- feat: assign icons for electron process related configs [`#1963`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1963) +- Add .gitmessage file name [`8e599fe7`](https://github.com/material-extensions/vscode-material-icon-theme/commit/8e599fe7) -#### [v4.27.0](https://github.com/PKief/vscode-material-icon-theme/compare/v4.26.0...v4.27.0) +#### [v4.27.0](https://github.com/material-extensions/vscode-material-icon-theme/compare/v4.26.0...v4.27.0) > April 30, 2023 -- Add mermaid file icon [`#1957`](https://github.com/PKief/vscode-material-icon-theme/pull/1957) -- Update package structure of npm module [`#1958`](https://github.com/PKief/vscode-material-icon-theme/pull/1958) -- feat: support CommonJS file for semantic release [`#1954`](https://github.com/PKief/vscode-material-icon-theme/pull/1954) -- Add qwik icon pack [`#1949`](https://github.com/PKief/vscode-material-icon-theme/pull/1949) -- feat: support TSConfig icon for paths file [`#1953`](https://github.com/PKief/vscode-material-icon-theme/pull/1953) -- feat: add ifanr cloud icon [`#1934`](https://github.com/PKief/vscode-material-icon-theme/pull/1934) -- feat: enhance eslint flat config support [`#1935`](https://github.com/PKief/vscode-material-icon-theme/pull/1935) -- Additional docker compose filenames [`#1933`](https://github.com/PKief/vscode-material-icon-theme/pull/1933) +- Add mermaid file icon [`#1957`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1957) +- Update package structure of npm module [`#1958`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1958) +- feat: support CommonJS file for semantic release [`#1954`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1954) +- Add qwik icon pack [`#1949`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1949) +- feat: support TSConfig icon for paths file [`#1953`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1953) +- feat: add ifanr cloud icon [`#1934`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1934) +- feat: enhance eslint flat config support [`#1935`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1935) +- Additional docker compose filenames [`#1933`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1933) -#### [v4.26.0](https://github.com/PKief/vscode-material-icon-theme/compare/v4.25.0...v4.26.0) +#### [v4.26.0](https://github.com/material-extensions/vscode-material-icon-theme/compare/v4.25.0...v4.26.0) > April 8, 2023 -- Remove sponsor logo [`#1929`](https://github.com/PKief/vscode-material-icon-theme/pull/1929) -- feat: add mercurial icon [`#1898`](https://github.com/PKief/vscode-material-icon-theme/pull/1898) -- feat: Add "Change File Color" functionality [`#1916`](https://github.com/PKief/vscode-material-icon-theme/pull/1916) -- feat: add C/C++ resource icon [`#1897`](https://github.com/PKief/vscode-material-icon-theme/pull/1897) -- feat: add deno icon [`#1896`](https://github.com/PKief/vscode-material-icon-theme/pull/1896) -- Add typst file icon [`#1917`](https://github.com/PKief/vscode-material-icon-theme/pull/1917) -- feat: add Plastic SCM icon [`#1877`](https://github.com/PKief/vscode-material-icon-theme/pull/1877) -- Update folderIcons.ts [`#1914`](https://github.com/PKief/vscode-material-icon-theme/pull/1914) -- add mctemplate and mcproject file extensions [`#1913`](https://github.com/PKief/vscode-material-icon-theme/pull/1913) -- Godot optimizations, folder [`#1884`](https://github.com/PKief/vscode-material-icon-theme/pull/1884) -- Update netlify icons [`#1908`](https://github.com/PKief/vscode-material-icon-theme/pull/1908) -- Add all possible stryker config filenames [`#1907`](https://github.com/PKief/vscode-material-icon-theme/pull/1907) -- Add support for all Serverless framework config extensions [`#1880`](https://github.com/PKief/vscode-material-icon-theme/pull/1880) - -#### [v4.25.0](https://github.com/PKief/vscode-material-icon-theme/compare/v4.24.0...v4.25.0) +- Remove sponsor logo [`#1929`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1929) +- feat: add mercurial icon [`#1898`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1898) +- feat: Add "Change File Color" functionality [`#1916`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1916) +- feat: add C/C++ resource icon [`#1897`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1897) +- feat: add deno icon [`#1896`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1896) +- Add typst file icon [`#1917`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1917) +- feat: add Plastic SCM icon [`#1877`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1877) +- Update folderIcons.ts [`#1914`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1914) +- add mctemplate and mcproject file extensions [`#1913`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1913) +- Godot optimizations, folder [`#1884`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1884) +- Update netlify icons [`#1908`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1908) +- Add all possible stryker config filenames [`#1907`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1907) +- Add support for all Serverless framework config extensions [`#1880`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1880) + +#### [v4.25.0](https://github.com/material-extensions/vscode-material-icon-theme/compare/v4.24.0...v4.25.0) > March 15, 2023 -- Remove logo of sponsor [`#1893`](https://github.com/PKief/vscode-material-icon-theme/pull/1893) -- build(deps-dev): bump webpack from 5.72.1 to 5.76.0 [`#1901`](https://github.com/PKief/vscode-material-icon-theme/pull/1901) -- Additional git filenames [`#1891`](https://github.com/PKief/vscode-material-icon-theme/pull/1891) -- Add type test file support [`#1874`](https://github.com/PKief/vscode-material-icon-theme/pull/1874) -- Add folder name gulp-tasks [`#1875`](https://github.com/PKief/vscode-material-icon-theme/pull/1875) -- Gatsby - add new supported file extensions [`#1886`](https://github.com/PKief/vscode-material-icon-theme/pull/1886) -- Objective-C/C++ icons & associations [`#1888`](https://github.com/PKief/vscode-material-icon-theme/pull/1888) -- Update bitbucket icon [`#1890`](https://github.com/PKief/vscode-material-icon-theme/pull/1890) -- feat: :sparkles: Bun icon to bun.lockb [`#1709`](https://github.com/PKief/vscode-material-icon-theme/pull/1709) -- feat: add GameMaker icon [`#1868`](https://github.com/PKief/vscode-material-icon-theme/pull/1868) -- extend todo to more files [`#1879`](https://github.com/PKief/vscode-material-icon-theme/pull/1879) -- Convert Pascal to Vector [`#1883`](https://github.com/PKief/vscode-material-icon-theme/pull/1883) -- Expand godot-assets associations [`#1863`](https://github.com/PKief/vscode-material-icon-theme/pull/1863) -- feat: add tldraw icon [`#1869`](https://github.com/PKief/vscode-material-icon-theme/pull/1869) -- Add tsconfig.doc.json icon association [`c03e18d9`](https://github.com/PKief/vscode-material-icon-theme/commit/c03e18d9) - -#### [v4.24.0](https://github.com/PKief/vscode-material-icon-theme/compare/v4.23.1...v4.24.0) +- Remove logo of sponsor [`#1893`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1893) +- build(deps-dev): bump webpack from 5.72.1 to 5.76.0 [`#1901`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1901) +- Additional git filenames [`#1891`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1891) +- Add type test file support [`#1874`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1874) +- Add folder name gulp-tasks [`#1875`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1875) +- Gatsby - add new supported file extensions [`#1886`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1886) +- Objective-C/C++ icons & associations [`#1888`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1888) +- Update bitbucket icon [`#1890`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1890) +- feat: :sparkles: Bun icon to bun.lockb [`#1709`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1709) +- feat: add GameMaker icon [`#1868`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1868) +- extend todo to more files [`#1879`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1879) +- Convert Pascal to Vector [`#1883`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1883) +- Expand godot-assets associations [`#1863`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1863) +- feat: add tldraw icon [`#1869`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1869) +- Add tsconfig.doc.json icon association [`c03e18d9`](https://github.com/material-extensions/vscode-material-icon-theme/commit/c03e18d9) + +#### [v4.24.0](https://github.com/material-extensions/vscode-material-icon-theme/compare/v4.23.1...v4.24.0) > February 9, 2023 -- Add folder icon for "angular" folder name [`#1859`](https://github.com/PKief/vscode-material-icon-theme/pull/1859) -- Add icon for .git-blame-ignore-revs [`#1836`](https://github.com/PKief/vscode-material-icon-theme/pull/1836) -- Update contributions guidelines [`#1833`](https://github.com/PKief/vscode-material-icon-theme/pull/1833) -- Add icon for code_of_conduct [`#1759`](https://github.com/PKief/vscode-material-icon-theme/pull/1759) -- Added icon support for typical jekyll folders [`#1832`](https://github.com/PKief/vscode-material-icon-theme/pull/1832) -- Add .cjs and .mjs extensions to `plop` fileNames [`#1819`](https://github.com/PKief/vscode-material-icon-theme/pull/1819) -- Add .cjs extension to `graphql.config` [`#1818`](https://github.com/PKief/vscode-material-icon-theme/pull/1818) -- Add Toolkit (Toolkits) and Toolbox (Toolboxes) [`#1809`](https://github.com/PKief/vscode-material-icon-theme/pull/1809) +- Add folder icon for "angular" folder name [`#1859`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1859) +- Add icon for .git-blame-ignore-revs [`#1836`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1836) +- Update contributions guidelines [`#1833`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1833) +- Add icon for code_of_conduct [`#1759`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1759) +- Added icon support for typical jekyll folders [`#1832`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1832) +- Add .cjs and .mjs extensions to `plop` fileNames [`#1819`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1819) +- Add .cjs extension to `graphql.config` [`#1818`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1818) +- Add Toolkit (Toolkits) and Toolbox (Toolboxes) [`#1809`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1809) -#### [v4.23.1](https://github.com/PKief/vscode-material-icon-theme/compare/v4.23.0...v4.23.1) +#### [v4.23.1](https://github.com/material-extensions/vscode-material-icon-theme/compare/v4.23.0...v4.23.1) > December 23, 2022 -- Add support for vitest config files [`#1572`](https://github.com/PKief/vscode-material-icon-theme/pull/1572) -- Add icons for vscode files [`#1803`](https://github.com/PKief/vscode-material-icon-theme/pull/1803) -- Add manager / moderator folder icon [`#1802`](https://github.com/PKief/vscode-material-icon-theme/pull/1802) -- Update release workflow [`68bc32f3`](https://github.com/PKief/vscode-material-icon-theme/commit/68bc32f3) -- Update badges in Readme [`#1796`](https://github.com/PKief/vscode-material-icon-theme/pull/1796) -- add filename .env.uat into tune icon [`#1801`](https://github.com/PKief/vscode-material-icon-theme/pull/1801) +- Add support for vitest config files [`#1572`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1572) +- Add icons for vscode files [`#1803`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1803) +- Add manager / moderator folder icon [`#1802`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1802) +- Update release workflow [`68bc32f3`](https://github.com/material-extensions/vscode-material-icon-theme/commit/68bc32f3) +- Update badges in Readme [`#1796`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1796) +- add filename .env.uat into tune icon [`#1801`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1801) -#### [v4.23.0](https://github.com/PKief/vscode-material-icon-theme/compare/v4.22.0...v4.23.0) +#### [v4.23.0](https://github.com/material-extensions/vscode-material-icon-theme/compare/v4.22.0...v4.23.0) > December 15, 2022 -- feat: introduce icon folder for changesets [`#1603`](https://github.com/PKief/vscode-material-icon-theme/pull/1603) -- Add icon for craco [`#1774`](https://github.com/PKief/vscode-material-icon-theme/pull/1774) -- Add Angular icon to ng-package.json [`d6ea9c72`](https://github.com/PKief/vscode-material-icon-theme/commit/d6ea9c72) -- Add tsconfig.lib.prod.json icon association [`72bd904e`](https://github.com/PKief/vscode-material-icon-theme/commit/72bd904e) -- feat: support icns file type [`#1777`](https://github.com/PKief/vscode-material-icon-theme/pull/1777) -- Add tsconfig.worker.json icon association [`90bfc9ea`](https://github.com/PKief/vscode-material-icon-theme/commit/90bfc9ea) -- feat: support `etc` folder [`#1762`](https://github.com/PKief/vscode-material-icon-theme/pull/1762) -- Add tsconfig file names [`#1756`](https://github.com/PKief/vscode-material-icon-theme/pull/1756) -- feat: ๐ŸŽจ add console icon for nushell [`#1761`](https://github.com/PKief/vscode-material-icon-theme/pull/1761) +- feat: introduce icon folder for changesets [`#1603`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1603) +- Add icon for craco [`#1774`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1774) +- Add Angular icon to ng-package.json [`d6ea9c72`](https://github.com/material-extensions/vscode-material-icon-theme/commit/d6ea9c72) +- Add tsconfig.lib.prod.json icon association [`72bd904e`](https://github.com/material-extensions/vscode-material-icon-theme/commit/72bd904e) +- feat: support icns file type [`#1777`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1777) +- Add tsconfig.worker.json icon association [`90bfc9ea`](https://github.com/material-extensions/vscode-material-icon-theme/commit/90bfc9ea) +- feat: support `etc` folder [`#1762`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1762) +- Add tsconfig file names [`#1756`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1756) +- feat: ๐ŸŽจ add console icon for nushell [`#1761`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1761) -#### [v4.22.0](https://github.com/PKief/vscode-material-icon-theme/compare/v4.21.0...v4.22.0) +#### [v4.22.0](https://github.com/material-extensions/vscode-material-icon-theme/compare/v4.21.0...v4.22.0) > November 5, 2022 -- Update import in scripts [`66d9e483`](https://github.com/PKief/vscode-material-icon-theme/commit/66d9e483) -- feat: add support for Sonarcloud [`#1677`](https://github.com/PKief/vscode-material-icon-theme/pull/1677) -- Update build script [`8b24b74d`](https://github.com/PKief/vscode-material-icon-theme/commit/8b24b74d) -- docs: add note to saturation section re: Toggle Grayscale setting [`#1747`](https://github.com/PKief/vscode-material-icon-theme/pull/1747) -- Change explanation of `languageId` values [`#1753`](https://github.com/PKief/vscode-material-icon-theme/pull/1753) -- rm unlinked "official icons" list entry [`#1752`](https://github.com/PKief/vscode-material-icon-theme/pull/1752) -- harmonise/clarify wording of Toggle Explorer Arrows [`#1749`](https://github.com/PKief/vscode-material-icon-theme/pull/1749) -- change error messages for Opacity and Saturation (value should be float) [`#1746`](https://github.com/PKief/vscode-material-icon-theme/pull/1746) -- feat: decorators folder [`#1671`](https://github.com/PKief/vscode-material-icon-theme/pull/1671) -- feat: add stylable icon [`#1724`](https://github.com/PKief/vscode-material-icon-theme/pull/1724) -- feat: supabase [`#1516`](https://github.com/PKief/vscode-material-icon-theme/pull/1516) -- Add proto folder icon association [`#1751`](https://github.com/PKief/vscode-material-icon-theme/pull/1751) -- Optimize SVG icons [`#1741`](https://github.com/PKief/vscode-material-icon-theme/pull/1741) -- Remove welcome and update messages [`#1740`](https://github.com/PKief/vscode-material-icon-theme/pull/1740) -- feat(dependabot): Add missing filename dependabot.yaml [`#1615`](https://github.com/PKief/vscode-material-icon-theme/pull/1615) -- Add missing `,` to `vue-config` fileNames [`#1743`](https://github.com/PKief/vscode-material-icon-theme/pull/1743) -- Add `volar.config.js` to `vue-config` fileNames [`#1742`](https://github.com/PKief/vscode-material-icon-theme/pull/1742) -- Associate `.mcpack` and `.mcaddon` files with Minecraft file icon [`#1734`](https://github.com/PKief/vscode-material-icon-theme/pull/1734) -- Add rollup .mjs config file support [`#1733`](https://github.com/PKief/vscode-material-icon-theme/pull/1733) -- Pine script file icon [`#1725`](https://github.com/PKief/vscode-material-icon-theme/pull/1725) -- feat: enhance svgo icon support [`#1730`](https://github.com/PKief/vscode-material-icon-theme/pull/1730) -- feat: add nano-staged icon [`#1722`](https://github.com/PKief/vscode-material-icon-theme/pull/1722) -- Update replit.svg [`#1728`](https://github.com/PKief/vscode-material-icon-theme/pull/1728) -- Add tsconfig file names [`0eba3084`](https://github.com/PKief/vscode-material-icon-theme/commit/0eba3084) -- Update drone light icon [`2ad273ee`](https://github.com/PKief/vscode-material-icon-theme/commit/2ad273ee) -- Update antrl icon [`93da3f98`](https://github.com/PKief/vscode-material-icon-theme/commit/93da3f98) -- [Icon Request] Antlr4's grammar files [`#1711`](https://github.com/PKief/vscode-material-icon-theme/pull/1711) -- Add browser folder icon association [`0ddc6f4b`](https://github.com/PKief/vscode-material-icon-theme/commit/0ddc6f4b) -- Add .git-blame-ignore icon association [`14afac15`](https://github.com/PKief/vscode-material-icon-theme/commit/14afac15) - -#### [v4.21.0](https://github.com/PKief/vscode-material-icon-theme/compare/v4.20.0...v4.21.0) +- Update import in scripts [`66d9e483`](https://github.com/material-extensions/vscode-material-icon-theme/commit/66d9e483) +- feat: add support for Sonarcloud [`#1677`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1677) +- Update build script [`8b24b74d`](https://github.com/material-extensions/vscode-material-icon-theme/commit/8b24b74d) +- docs: add note to saturation section re: Toggle Grayscale setting [`#1747`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1747) +- Change explanation of `languageId` values [`#1753`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1753) +- rm unlinked "official icons" list entry [`#1752`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1752) +- harmonise/clarify wording of Toggle Explorer Arrows [`#1749`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1749) +- change error messages for Opacity and Saturation (value should be float) [`#1746`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1746) +- feat: decorators folder [`#1671`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1671) +- feat: add stylable icon [`#1724`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1724) +- feat: supabase [`#1516`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1516) +- Add proto folder icon association [`#1751`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1751) +- Optimize SVG icons [`#1741`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1741) +- Remove welcome and update messages [`#1740`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1740) +- feat(dependabot): Add missing filename dependabot.yaml [`#1615`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1615) +- Add missing `,` to `vue-config` fileNames [`#1743`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1743) +- Add `volar.config.js` to `vue-config` fileNames [`#1742`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1742) +- Associate `.mcpack` and `.mcaddon` files with Minecraft file icon [`#1734`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1734) +- Add rollup .mjs config file support [`#1733`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1733) +- Pine script file icon [`#1725`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1725) +- feat: enhance svgo icon support [`#1730`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1730) +- feat: add nano-staged icon [`#1722`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1722) +- Update replit.svg [`#1728`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1728) +- Add tsconfig file names [`0eba3084`](https://github.com/material-extensions/vscode-material-icon-theme/commit/0eba3084) +- Update drone light icon [`2ad273ee`](https://github.com/material-extensions/vscode-material-icon-theme/commit/2ad273ee) +- Update antrl icon [`93da3f98`](https://github.com/material-extensions/vscode-material-icon-theme/commit/93da3f98) +- [Icon Request] Antlr4's grammar files [`#1711`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1711) +- Add browser folder icon association [`0ddc6f4b`](https://github.com/material-extensions/vscode-material-icon-theme/commit/0ddc6f4b) +- Add .git-blame-ignore icon association [`14afac15`](https://github.com/material-extensions/vscode-material-icon-theme/commit/14afac15) + +#### [v4.21.0](https://github.com/material-extensions/vscode-material-icon-theme/compare/v4.20.0...v4.21.0) > October 7, 2022 -- feat: add folder-pdf [`#1651`](https://github.com/PKief/vscode-material-icon-theme/pull/1651) -- Added file association to docker-compose file extension [`#1706`](https://github.com/PKief/vscode-material-icon-theme/pull/1706) -- Add support for gatsby config typescript files [`#1701`](https://github.com/PKief/vscode-material-icon-theme/pull/1701) -- Add jrxml file extension to xml icon [`#1632`](https://github.com/PKief/vscode-material-icon-theme/pull/1632) -- feat: Update drone icon [`#1698`](https://github.com/PKief/vscode-material-icon-theme/pull/1698) -- Add support for other Netlify files and folders [`#582`](https://github.com/PKief/vscode-material-icon-theme/pull/582) -- Flow - Cadence Icon Addition [`#1686`](https://github.com/PKief/vscode-material-icon-theme/pull/1686) -- Folder association `protobufs` [`#1691`](https://github.com/PKief/vscode-material-icon-theme/pull/1691) -- chore: adds file-ending .stylelintcache as a stylelint file [`#1693`](https://github.com/PKief/vscode-material-icon-theme/pull/1693) -- feat: Caddyfile (#1689) [`#1017`](https://github.com/PKief/vscode-material-icon-theme/pull/1017) -- Add .env.alpha [`#1680`](https://github.com/PKief/vscode-material-icon-theme/pull/1680) -- Add eslint.config.js [`#1678`](https://github.com/PKief/vscode-material-icon-theme/pull/1678) -- fix: add support to gatsby-config.ts [`#1672`](https://github.com/PKief/vscode-material-icon-theme/pull/1672) -- Support Dart language [`#1663`](https://github.com/PKief/vscode-material-icon-theme/pull/1663) -- feat: support Svelte language [`#1662`](https://github.com/PKief/vscode-material-icon-theme/pull/1662) - -#### [v4.20.0](https://github.com/PKief/vscode-material-icon-theme/compare/v4.19.0...v4.20.0) +- feat: add folder-pdf [`#1651`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1651) +- Added file association to docker-compose file extension [`#1706`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1706) +- Add support for gatsby config typescript files [`#1701`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1701) +- Add jrxml file extension to xml icon [`#1632`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1632) +- feat: Update drone icon [`#1698`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1698) +- Add support for other Netlify files and folders [`#582`](https://github.com/material-extensions/vscode-material-icon-theme/pull/582) +- Flow - Cadence Icon Addition [`#1686`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1686) +- Folder association `protobufs` [`#1691`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1691) +- chore: adds file-ending .stylelintcache as a stylelint file [`#1693`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1693) +- feat: Caddyfile (#1689) [`#1017`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1017) +- Add .env.alpha [`#1680`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1680) +- Add eslint.config.js [`#1678`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1678) +- fix: add support to gatsby-config.ts [`#1672`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1672) +- Support Dart language [`#1663`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1663) +- feat: support Svelte language [`#1662`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1662) + +#### [v4.20.0](https://github.com/material-extensions/vscode-material-icon-theme/compare/v4.19.0...v4.20.0) > August 20, 2022 -- feat: mdsvex [`#1633`](https://github.com/PKief/vscode-material-icon-theme/pull/1633) -- feat: add icon for ".tree" files [`#1653`](https://github.com/PKief/vscode-material-icon-theme/pull/1653) -- add folderName fragments [`#1650`](https://github.com/PKief/vscode-material-icon-theme/pull/1650) -- Update Gitlab icon [`#1649`](https://github.com/PKief/vscode-material-icon-theme/pull/1649) -- fix: typo in release yaml [`#1647`](https://github.com/PKief/vscode-material-icon-theme/pull/1647) -- add - folderName : bases [`#1644`](https://github.com/PKief/vscode-material-icon-theme/pull/1644) -- feat: add `nginx` extensions [`#1641`](https://github.com/PKief/vscode-material-icon-theme/pull/1641) -- build(deps): bump terser from 5.7.1 to 5.14.2 [`#1614`](https://github.com/PKief/vscode-material-icon-theme/pull/1614) -- [Icon Request] compose [`#1610`](https://github.com/PKief/vscode-material-icon-theme/pull/1610) -- Update fileIcons.ts with fbx and stp. [`#1570`](https://github.com/PKief/vscode-material-icon-theme/pull/1570) -- feat: add web and webworker to tsconfig [`#1605`](https://github.com/PKief/vscode-material-icon-theme/pull/1605) -- Add quasar.config.js [`#1600`](https://github.com/PKief/vscode-material-icon-theme/pull/1600) -- feat: jwt folder [`#1566`](https://github.com/PKief/vscode-material-icon-theme/pull/1566) -- feat: fixtures folder [`#1595`](https://github.com/PKief/vscode-material-icon-theme/pull/1595) -- fix: tsconfig [`#1594`](https://github.com/PKief/vscode-material-icon-theme/pull/1594) -- fix: add tauri.conf.json file [`#1590`](https://github.com/PKief/vscode-material-icon-theme/pull/1590) -- Added `wgsl` extension [`#1592`](https://github.com/PKief/vscode-material-icon-theme/pull/1592) - -#### [v4.19.0](https://github.com/PKief/vscode-material-icon-theme/compare/v4.18.1...v4.19.0) +- feat: mdsvex [`#1633`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1633) +- feat: add icon for ".tree" files [`#1653`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1653) +- add folderName fragments [`#1650`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1650) +- Update Gitlab icon [`#1649`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1649) +- fix: typo in release yaml [`#1647`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1647) +- add - folderName : bases [`#1644`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1644) +- feat: add `nginx` extensions [`#1641`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1641) +- build(deps): bump terser from 5.7.1 to 5.14.2 [`#1614`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1614) +- [Icon Request] compose [`#1610`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1610) +- Update fileIcons.ts with fbx and stp. [`#1570`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1570) +- feat: add web and webworker to tsconfig [`#1605`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1605) +- Add quasar.config.js [`#1600`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1600) +- feat: jwt folder [`#1566`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1566) +- feat: fixtures folder [`#1595`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1595) +- fix: tsconfig [`#1594`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1594) +- fix: add tauri.conf.json file [`#1590`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1590) +- Added `wgsl` extension [`#1592`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1592) + +#### [v4.19.0](https://github.com/material-extensions/vscode-material-icon-theme/compare/v4.18.1...v4.19.0) > July 2, 2022 -- fix: added __integration-tests__ folder [`#1585`](https://github.com/PKief/vscode-material-icon-theme/pull/1585) -- fix: update cypress files [`#1582`](https://github.com/PKief/vscode-material-icon-theme/pull/1582) -- [Add] Cypress file name "cypress.config.js" in fileIcon.ts [`#1579`](https://github.com/PKief/vscode-material-icon-theme/pull/1579) -- feat: add support for new type declaration files [`#1576`](https://github.com/PKief/vscode-material-icon-theme/pull/1576) -- feat: add `tsconfig.node.json` [`#1575`](https://github.com/PKief/vscode-material-icon-theme/pull/1575) -- Adds Cypress 10.x e2e extension [`#1573`](https://github.com/PKief/vscode-material-icon-theme/pull/1573) -- Fixing non-object workspace settings bug [`#1565`](https://github.com/PKief/vscode-material-icon-theme/pull/1565) +- fix: added __integration-tests__ folder [`#1585`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1585) +- fix: update cypress files [`#1582`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1582) +- [Add] Cypress file name "cypress.config.js" in fileIcon.ts [`#1579`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1579) +- feat: add support for new type declaration files [`#1576`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1576) +- feat: add `tsconfig.node.json` [`#1575`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1575) +- Adds Cypress 10.x e2e extension [`#1573`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1573) +- Fixing non-object workspace settings bug [`#1565`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1565) -#### [v4.18.1](https://github.com/PKief/vscode-material-icon-theme/compare/v4.18.0...v4.18.1) +#### [v4.18.1](https://github.com/material-extensions/vscode-material-icon-theme/compare/v4.18.0...v4.18.1) > June 9, 2022 -- On-boarding to VS Code sponsor [`#1558`](https://github.com/PKief/vscode-material-icon-theme/pull/1558) -- feat: introduce the icon for the config files of auto [`#1511`](https://github.com/PKief/vscode-material-icon-theme/pull/1511) -- Fix: Workspace settings override user settings [`#1553`](https://github.com/PKief/vscode-material-icon-theme/pull/1553) +- On-boarding to VS Code sponsor [`#1558`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1558) +- feat: introduce the icon for the config files of auto [`#1511`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1511) +- Fix: Workspace settings override user settings [`#1553`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1553) -#### [v4.18.0](https://github.com/PKief/vscode-material-icon-theme/compare/v4.17.0...v4.18.0) +#### [v4.18.0](https://github.com/material-extensions/vscode-material-icon-theme/compare/v4.17.0...v4.18.0) > June 5, 2022 -- Support workspace settings [`#1540`](https://github.com/PKief/vscode-material-icon-theme/pull/1540) -- Add React and Jsx folder icon [`#1519`](https://github.com/PKief/vscode-material-icon-theme/pull/1519) -- Feature: added folder for Lua language; [`#1542`](https://github.com/PKief/vscode-material-icon-theme/pull/1542) -- feat: add go.work.sum to list of go-mod files [`#1512`](https://github.com/PKief/vscode-material-icon-theme/pull/1512) -- Add new `.cts` and `.mts` file extensions [`#1541`](https://github.com/PKief/vscode-material-icon-theme/pull/1541) -- feat: add site to folder-public [`#1544`](https://github.com/PKief/vscode-material-icon-theme/pull/1544) -- Add separate file icon for rescript interface [`#1539`](https://github.com/PKief/vscode-material-icon-theme/pull/1539) -- Add new extension for i18n and Minecraft icon. [`#1538`](https://github.com/PKief/vscode-material-icon-theme/pull/1538) -- feat: add `.` possibility to kubernetes folders [`#1536`](https://github.com/PKief/vscode-material-icon-theme/pull/1536) -- feat: Support Playwright component test config files [`#1527`](https://github.com/PKief/vscode-material-icon-theme/pull/1527) -- associate xlsm with excel icon, closes #1493 [`#1521`](https://github.com/PKief/vscode-material-icon-theme/pull/1521) -- feat: add support for the graphqlrc.cjs file [`#1513`](https://github.com/PKief/vscode-material-icon-theme/pull/1513) -- feat: introduce support for the webpack config in mjs [`#1514`](https://github.com/PKief/vscode-material-icon-theme/pull/1514) -- feat: improve postcss config icon [`#1507`](https://github.com/PKief/vscode-material-icon-theme/pull/1507) - -#### [v4.17.0](https://github.com/PKief/vscode-material-icon-theme/compare/v4.16.0...v4.17.0) +- Support workspace settings [`#1540`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1540) +- Add React and Jsx folder icon [`#1519`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1519) +- Feature: added folder for Lua language; [`#1542`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1542) +- feat: add go.work.sum to list of go-mod files [`#1512`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1512) +- Add new `.cts` and `.mts` file extensions [`#1541`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1541) +- feat: add site to folder-public [`#1544`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1544) +- Add separate file icon for rescript interface [`#1539`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1539) +- Add new extension for i18n and Minecraft icon. [`#1538`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1538) +- feat: add `.` possibility to kubernetes folders [`#1536`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1536) +- feat: Support Playwright component test config files [`#1527`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1527) +- associate xlsm with excel icon, closes #1493 [`#1521`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1521) +- feat: add support for the graphqlrc.cjs file [`#1513`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1513) +- feat: introduce support for the webpack config in mjs [`#1514`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1514) +- feat: improve postcss config icon [`#1507`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1507) + +#### [v4.17.0](https://github.com/material-extensions/vscode-material-icon-theme/compare/v4.16.0...v4.17.0) > May 6, 2022 -- feat: add Otne icon [`#1431`](https://github.com/PKief/vscode-material-icon-theme/pull/1431) -- Add support to plop file icon [`#1350`](https://github.com/PKief/vscode-material-icon-theme/pull/1350) -- feat: shaders [`#1483`](https://github.com/PKief/vscode-material-icon-theme/pull/1483) -- feat: buildkite [`#1486`](https://github.com/PKief/vscode-material-icon-theme/pull/1486) -- Update nuxt folder icons [`#1490`](https://github.com/PKief/vscode-material-icon-theme/pull/1490) -- Remove sponsor badge [`#1491`](https://github.com/PKief/vscode-material-icon-theme/pull/1491) -- Update azure icon [`#1488`](https://github.com/PKief/vscode-material-icon-theme/pull/1488) -- Dart generated files icon [`#1465`](https://github.com/PKief/vscode-material-icon-theme/pull/1465) -- Replace Nuxt Icon [`#1481`](https://github.com/PKief/vscode-material-icon-theme/pull/1481) -- feat: icon for the architecture.md file [`#1475`](https://github.com/PKief/vscode-material-icon-theme/pull/1475) -- Add gulpfile.ts etc. as folder names [`#1479`](https://github.com/PKief/vscode-material-icon-theme/pull/1479) -- feat: verdaccio [`#1476`](https://github.com/PKief/vscode-material-icon-theme/pull/1476) - -#### [v4.16.0](https://github.com/PKief/vscode-material-icon-theme/compare/v4.15.0...v4.16.0) +- feat: add Otne icon [`#1431`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1431) +- Add support to plop file icon [`#1350`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1350) +- feat: shaders [`#1483`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1483) +- feat: buildkite [`#1486`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1486) +- Update nuxt folder icons [`#1490`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1490) +- Remove sponsor badge [`#1491`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1491) +- Update azure icon [`#1488`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1488) +- Dart generated files icon [`#1465`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1465) +- Replace Nuxt Icon [`#1481`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1481) +- feat: icon for the architecture.md file [`#1475`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1475) +- Add gulpfile.ts etc. as folder names [`#1479`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1479) +- feat: verdaccio [`#1476`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1476) + +#### [v4.16.0](https://github.com/material-extensions/vscode-material-icon-theme/compare/v4.15.0...v4.16.0) > April 19, 2022 -- Add icons for figure(s) and fig(s) [`#1466`](https://github.com/PKief/vscode-material-icon-theme/pull/1466) -- Bump minimist from 1.2.5 to 1.2.6 [`#1451`](https://github.com/PKief/vscode-material-icon-theme/pull/1451) -- Support astro.config.ts [`#1460`](https://github.com/PKief/vscode-material-icon-theme/pull/1460) -- Add license names commonly used in multi-license projects [`#1463`](https://github.com/PKief/vscode-material-icon-theme/pull/1463) -- Associate pyproject.toml with python-misc file icon [`#1459`](https://github.com/PKief/vscode-material-icon-theme/pull/1459) +- Add icons for figure(s) and fig(s) [`#1466`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1466) +- Bump minimist from 1.2.5 to 1.2.6 [`#1451`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1451) +- Support astro.config.ts [`#1460`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1460) +- Add license names commonly used in multi-license projects [`#1463`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1463) +- Associate pyproject.toml with python-misc file icon [`#1459`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1459) -#### [v4.15.0](https://github.com/PKief/vscode-material-icon-theme/compare/v4.14.1...v4.15.0) +#### [v4.15.0](https://github.com/material-extensions/vscode-material-icon-theme/compare/v4.14.1...v4.15.0) > March 30, 2022 -- Aligns Processing icon to Processing 4.x [`#1440`](https://github.com/PKief/vscode-material-icon-theme/pull/1440) -- Update color check to ignore deleted SVG icons [`#1450`](https://github.com/PKief/vscode-material-icon-theme/pull/1450) -- Several file extension, file name, and folder name icon associations [`#1447`](https://github.com/PKief/vscode-material-icon-theme/pull/1447) -- feat: add 'commit'msg' as file name to display 'console' icon [`#1445`](https://github.com/PKief/vscode-material-icon-theme/pull/1445) -- feat: psv alias [`#1442`](https://github.com/PKief/vscode-material-icon-theme/pull/1442) -- Unity folder icon [`#1434`](https://github.com/PKief/vscode-material-icon-theme/pull/1434) -- Update Gleam file icon [`#1433`](https://github.com/PKief/vscode-material-icon-theme/pull/1433) -- feat: turborepo [`#1388`](https://github.com/PKief/vscode-material-icon-theme/pull/1388) -- Add Poetry Python icon [`#1155`](https://github.com/PKief/vscode-material-icon-theme/pull/1155) -- Update lang-ru.ts [`#1428`](https://github.com/PKief/vscode-material-icon-theme/pull/1428) -- Update lang-ru.ts [`#1427`](https://github.com/PKief/vscode-material-icon-theme/pull/1427) -- feat: support avif image file type [`#1424`](https://github.com/PKief/vscode-material-icon-theme/pull/1424) -- feat: fileicon for steadybit configuration files [`#1399`](https://github.com/PKief/vscode-material-icon-theme/pull/1399) - -#### [v4.14.1](https://github.com/PKief/vscode-material-icon-theme/compare/v4.14.0...v4.14.1) +- Aligns Processing icon to Processing 4.x [`#1440`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1440) +- Update color check to ignore deleted SVG icons [`#1450`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1450) +- Several file extension, file name, and folder name icon associations [`#1447`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1447) +- feat: add 'commit'msg' as file name to display 'console' icon [`#1445`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1445) +- feat: psv alias [`#1442`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1442) +- Unity folder icon [`#1434`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1434) +- Update Gleam file icon [`#1433`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1433) +- feat: turborepo [`#1388`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1388) +- Add Poetry Python icon [`#1155`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1155) +- Update lang-ru.ts [`#1428`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1428) +- Update lang-ru.ts [`#1427`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1427) +- feat: support avif image file type [`#1424`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1424) +- feat: fileicon for steadybit configuration files [`#1399`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1399) + +#### [v4.14.1](https://github.com/material-extensions/vscode-material-icon-theme/compare/v4.14.0...v4.14.1) > March 8, 2022 -- Hardhat icon is broken [`#1420`](https://github.com/PKief/vscode-material-icon-theme/pull/1420) +- Hardhat icon is broken [`#1420`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1420) -#### [v4.14.0](https://github.com/PKief/vscode-material-icon-theme/compare/v4.13.0...v4.14.0) +#### [v4.14.0](https://github.com/material-extensions/vscode-material-icon-theme/compare/v4.13.0...v4.14.0) > March 7, 2022 -- Update vscodeignore [`a2b05b62`](https://github.com/PKief/vscode-material-icon-theme/commit/a2b05b62) -- Support partials folders [`#1307`](https://github.com/PKief/vscode-material-icon-theme/pull/1307) -- [Icon Request] Gleam language [`#1415`](https://github.com/PKief/vscode-material-icon-theme/pull/1415) -- Update color check workflow [`4e0a4890`](https://github.com/PKief/vscode-material-icon-theme/commit/4e0a4890) -- feat: hardhat [`#1377`](https://github.com/PKief/vscode-material-icon-theme/pull/1377) -- Add Parcel bundler icon [`#1414`](https://github.com/PKief/vscode-material-icon-theme/pull/1414) -- Improve range of language `Makefile` [`#1409`](https://github.com/PKief/vscode-material-icon-theme/pull/1409) -- Improve build workflow [`#1413`](https://github.com/PKief/vscode-material-icon-theme/pull/1413) -- Adds second extension to the cucumber file type [`#1411`](https://github.com/PKief/vscode-material-icon-theme/pull/1411) -- Add firebase as folder name [`#1410`](https://github.com/PKief/vscode-material-icon-theme/pull/1410) -- Add Svelte-Kit to be included with the folder-svelte [`#1405`](https://github.com/PKief/vscode-material-icon-theme/pull/1405) -- Add `pom.xml` to maven files [`#1398`](https://github.com/PKief/vscode-material-icon-theme/pull/1398) -- Add TS support for capacitor config file [`#1396`](https://github.com/PKief/vscode-material-icon-theme/pull/1396) - -#### [v4.13.0](https://github.com/PKief/vscode-material-icon-theme/compare/v4.12.1...v4.13.0) +- Update vscodeignore [`a2b05b62`](https://github.com/material-extensions/vscode-material-icon-theme/commit/a2b05b62) +- Support partials folders [`#1307`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1307) +- [Icon Request] Gleam language [`#1415`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1415) +- Update color check workflow [`4e0a4890`](https://github.com/material-extensions/vscode-material-icon-theme/commit/4e0a4890) +- feat: hardhat [`#1377`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1377) +- Add Parcel bundler icon [`#1414`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1414) +- Improve range of language `Makefile` [`#1409`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1409) +- Improve build workflow [`#1413`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1413) +- Adds second extension to the cucumber file type [`#1411`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1411) +- Add firebase as folder name [`#1410`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1410) +- Add Svelte-Kit to be included with the folder-svelte [`#1405`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1405) +- Add `pom.xml` to maven files [`#1398`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1398) +- Add TS support for capacitor config file [`#1396`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1396) + +#### [v4.13.0](https://github.com/material-extensions/vscode-material-icon-theme/compare/v4.12.1...v4.13.0) > February 11, 2022 -- Improve release workflow [`#1378`](https://github.com/PKief/vscode-material-icon-theme/pull/1378) -- Add new sponsor [`#1389`](https://github.com/PKief/vscode-material-icon-theme/pull/1389) -- Add support for Eleventy's _layouts dir [`#585`](https://github.com/PKief/vscode-material-icon-theme/pull/585) -- Add support for pnpm files [`#584`](https://github.com/PKief/vscode-material-icon-theme/pull/584) -- Add support for Gridsome-related files [`#1383`](https://github.com/PKief/vscode-material-icon-theme/pull/1383) -- Add NextJS folder icons [`#933`](https://github.com/PKief/vscode-material-icon-theme/pull/933) -- fileicon added for go.work file [`#1326`](https://github.com/PKief/vscode-material-icon-theme/pull/1326) -- feat: integrations folder icon [`#1360`](https://github.com/PKief/vscode-material-icon-theme/pull/1360) -- Add Translation for Japanese [`#1379`](https://github.com/PKief/vscode-material-icon-theme/pull/1379) +- Improve release workflow [`#1378`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1378) +- Add new sponsor [`#1389`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1389) +- Add support for Eleventy's _layouts dir [`#585`](https://github.com/material-extensions/vscode-material-icon-theme/pull/585) +- Add support for pnpm files [`#584`](https://github.com/material-extensions/vscode-material-icon-theme/pull/584) +- Add support for Gridsome-related files [`#1383`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1383) +- Add NextJS folder icons [`#933`](https://github.com/material-extensions/vscode-material-icon-theme/pull/933) +- fileicon added for go.work file [`#1326`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1326) +- feat: integrations folder icon [`#1360`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1360) +- Add Translation for Japanese [`#1379`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1379) -#### [v4.12.1](https://github.com/PKief/vscode-material-icon-theme/compare/v4.12.0...v4.12.1) +#### [v4.12.1](https://github.com/material-extensions/vscode-material-icon-theme/compare/v4.12.0...v4.12.1) > January 23, 2022 -- Update release workflow [`6ed12b60`](https://github.com/PKief/vscode-material-icon-theme/commit/6ed12b60) +- Update release workflow [`6ed12b60`](https://github.com/material-extensions/vscode-material-icon-theme/commit/6ed12b60) -#### [v4.12.0](https://github.com/PKief/vscode-material-icon-theme/compare/v4.11.0...v4.12.0) +#### [v4.12.0](https://github.com/material-extensions/vscode-material-icon-theme/compare/v4.11.0...v4.12.0) > January 23, 2022 -- Automate release process [`#1376`](https://github.com/PKief/vscode-material-icon-theme/pull/1376) -- Add Translation for Traditional Chinese [`#1375`](https://github.com/PKief/vscode-material-icon-theme/pull/1375) -- Refactor/enable strict type checking [`#1334`](https://github.com/PKief/vscode-material-icon-theme/pull/1334) -- feat: blitz [`#1358`](https://github.com/PKief/vscode-material-icon-theme/pull/1358) -- feat: added support for serverless file and folders [`#1352`](https://github.com/PKief/vscode-material-icon-theme/pull/1352) -- feat: remix [`#1357`](https://github.com/PKief/vscode-material-icon-theme/pull/1357) -- feat: cmd [`#1355`](https://github.com/PKief/vscode-material-icon-theme/pull/1355) -- feat: figma [`#1354`](https://github.com/PKief/vscode-material-icon-theme/pull/1354) -- feat: playwright [`#1353`](https://github.com/PKief/vscode-material-icon-theme/pull/1353) -- Add `next.config.mjs` to next file icons [`#1369`](https://github.com/PKief/vscode-material-icon-theme/pull/1369) -- feat: mailers [`#1359`](https://github.com/PKief/vscode-material-icon-theme/pull/1359) -- Add `astro.config.*` files to astro file icons [`#1365`](https://github.com/PKief/vscode-material-icon-theme/pull/1365) -- Add Tobilang icons [`#1337`](https://github.com/PKief/vscode-material-icon-theme/pull/1337) -- Add "renovate-config.json" to renovate filenames [`#1348`](https://github.com/PKief/vscode-material-icon-theme/pull/1348) -- Add target folder icon [`#1338`](https://github.com/PKief/vscode-material-icon-theme/pull/1338) -- Adjust vscodeignore [`5c1d8508`](https://github.com/PKief/vscode-material-icon-theme/commit/5c1d8508) -- Add SiYuan icon [`#1313`](https://github.com/PKief/vscode-material-icon-theme/pull/1313) -- Added Tauri icon [`#1312`](https://github.com/PKief/vscode-material-icon-theme/pull/1312) -- Add handlers folder icon (Closes #1323) [`#1325`](https://github.com/PKief/vscode-material-icon-theme/pull/1325) - -#### [v4.11.0](https://github.com/PKief/vscode-material-icon-theme/compare/v4.10.0...v4.11.0) +- Automate release process [`#1376`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1376) +- Add Translation for Traditional Chinese [`#1375`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1375) +- Refactor/enable strict type checking [`#1334`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1334) +- feat: blitz [`#1358`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1358) +- feat: added support for serverless file and folders [`#1352`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1352) +- feat: remix [`#1357`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1357) +- feat: cmd [`#1355`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1355) +- feat: figma [`#1354`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1354) +- feat: playwright [`#1353`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1353) +- Add `next.config.mjs` to next file icons [`#1369`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1369) +- feat: mailers [`#1359`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1359) +- Add `astro.config.*` files to astro file icons [`#1365`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1365) +- Add Tobilang icons [`#1337`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1337) +- Add "renovate-config.json" to renovate filenames [`#1348`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1348) +- Add target folder icon [`#1338`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1338) +- Adjust vscodeignore [`5c1d8508`](https://github.com/material-extensions/vscode-material-icon-theme/commit/5c1d8508) +- Add SiYuan icon [`#1313`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1313) +- Added Tauri icon [`#1312`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1312) +- Add handlers folder icon (Closes #1323) [`#1325`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1325) + +#### [v4.11.0](https://github.com/material-extensions/vscode-material-icon-theme/compare/v4.10.0...v4.11.0) > November 25, 2021 -- Add file icon for Netin Diagnotic System Template file [`#1314`](https://github.com/PKief/vscode-material-icon-theme/pull/1314) -- Add Angular folder icon [`90cc4628`](https://github.com/PKief/vscode-material-icon-theme/commit/90cc4628) -- Update color of dependabot icon [`b866f710`](https://github.com/PKief/vscode-material-icon-theme/commit/b866f710) -- Support .cjs in stylelint [`#1315`](https://github.com/PKief/vscode-material-icon-theme/pull/1315) -- feat: add cjs and ts endings to commitlint [`#1304`](https://github.com/PKief/vscode-material-icon-theme/pull/1304) -- Add Resolver folder icon (Closes #1295) [`#1297`](https://github.com/PKief/vscode-material-icon-theme/pull/1297) -- Resize sponsor logos [`f8301d10`](https://github.com/PKief/vscode-material-icon-theme/commit/f8301d10) -- Add more combinations of nestjs e2e jest config filenames [`#1287`](https://github.com/PKief/vscode-material-icon-theme/pull/1287) -- Add java folder icon [`#1285`](https://github.com/PKief/vscode-material-icon-theme/pull/1285) -- add git icon to .gitinclude file [`#1286`](https://github.com/PKief/vscode-material-icon-theme/pull/1286) -- Apply minecraft icon to all Minecraft files [`#1283`](https://github.com/PKief/vscode-material-icon-theme/pull/1283) -- Add "tune" filename for .env.stage [`#1282`](https://github.com/PKief/vscode-material-icon-theme/pull/1282) -- Fix code formatting issue [`953c3096`](https://github.com/PKief/vscode-material-icon-theme/commit/953c3096) -- Add .pubignore (Closes #1273) [`008de61e`](https://github.com/PKief/vscode-material-icon-theme/commit/008de61e) -- Update lang-es.ts [`#1271`](https://github.com/PKief/vscode-material-icon-theme/pull/1271) -- Add Redux selector icon and folder icon [`#1247`](https://github.com/PKief/vscode-material-icon-theme/pull/1247) -- Fix linting issue [`d81b6177`](https://github.com/PKief/vscode-material-icon-theme/commit/d81b6177) -- feat: added icon for the lighthouse config files [`#1215`](https://github.com/PKief/vscode-material-icon-theme/pull/1215) -- Routes pkg to packages icon by default (4 Go devs) [`#1256`](https://github.com/PKief/vscode-material-icon-theme/pull/1256) -- Added queue folder icon [`#1159`](https://github.com/PKief/vscode-material-icon-theme/pull/1159) -- add dependabot icon [`#1248`](https://github.com/PKief/vscode-material-icon-theme/pull/1248) -- Remove hardcoded 'm' file icon association from C (Closes #1243) [`135cce30`](https://github.com/PKief/vscode-material-icon-theme/commit/135cce30) -- Add nxignore icon association [`828083ec`](https://github.com/PKief/vscode-material-icon-theme/commit/828083ec) -- feat: svgr [`#1218`](https://github.com/PKief/vscode-material-icon-theme/pull/1218) -- Update color of cypress icons [`464953cc`](https://github.com/PKief/vscode-material-icon-theme/commit/464953cc) -- Add heex file extension [`#1240`](https://github.com/PKief/vscode-material-icon-theme/pull/1240) -- Add template file icon (Closes #1185) [`#1224`](https://github.com/PKief/vscode-material-icon-theme/pull/1224) -- feat: cypress [`#1221`](https://github.com/PKief/vscode-material-icon-theme/pull/1221) -- feat: feat: add graphql config file names [`#1231`](https://github.com/PKief/vscode-material-icon-theme/pull/1231) -- Icon request template (Closes #1225) [`#1226`](https://github.com/PKief/vscode-material-icon-theme/pull/1226) - -#### [v4.10.0](https://github.com/PKief/vscode-material-icon-theme/compare/v4.9.0...v4.10.0) +- Add file icon for Netin Diagnotic System Template file [`#1314`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1314) +- Add Angular folder icon [`90cc4628`](https://github.com/material-extensions/vscode-material-icon-theme/commit/90cc4628) +- Update color of dependabot icon [`b866f710`](https://github.com/material-extensions/vscode-material-icon-theme/commit/b866f710) +- Support .cjs in stylelint [`#1315`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1315) +- feat: add cjs and ts endings to commitlint [`#1304`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1304) +- Add Resolver folder icon (Closes #1295) [`#1297`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1297) +- Resize sponsor logos [`f8301d10`](https://github.com/material-extensions/vscode-material-icon-theme/commit/f8301d10) +- Add more combinations of nestjs e2e jest config filenames [`#1287`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1287) +- Add java folder icon [`#1285`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1285) +- add git icon to .gitinclude file [`#1286`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1286) +- Apply minecraft icon to all Minecraft files [`#1283`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1283) +- Add "tune" filename for .env.stage [`#1282`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1282) +- Fix code formatting issue [`953c3096`](https://github.com/material-extensions/vscode-material-icon-theme/commit/953c3096) +- Add .pubignore (Closes #1273) [`008de61e`](https://github.com/material-extensions/vscode-material-icon-theme/commit/008de61e) +- Update lang-es.ts [`#1271`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1271) +- Add Redux selector icon and folder icon [`#1247`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1247) +- Fix linting issue [`d81b6177`](https://github.com/material-extensions/vscode-material-icon-theme/commit/d81b6177) +- feat: added icon for the lighthouse config files [`#1215`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1215) +- Routes pkg to packages icon by default (4 Go devs) [`#1256`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1256) +- Added queue folder icon [`#1159`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1159) +- add dependabot icon [`#1248`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1248) +- Remove hardcoded 'm' file icon association from C (Closes #1243) [`135cce30`](https://github.com/material-extensions/vscode-material-icon-theme/commit/135cce30) +- Add nxignore icon association [`828083ec`](https://github.com/material-extensions/vscode-material-icon-theme/commit/828083ec) +- feat: svgr [`#1218`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1218) +- Update color of cypress icons [`464953cc`](https://github.com/material-extensions/vscode-material-icon-theme/commit/464953cc) +- Add heex file extension [`#1240`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1240) +- Add template file icon (Closes #1185) [`#1224`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1224) +- feat: cypress [`#1221`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1221) +- feat: feat: add graphql config file names [`#1231`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1231) +- Icon request template (Closes #1225) [`#1226`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1226) + +#### [v4.10.0](https://github.com/material-extensions/vscode-material-icon-theme/compare/v4.9.0...v4.10.0) > August 24, 2021 -- Optimize extension for web usage [`#1219`](https://github.com/PKief/vscode-material-icon-theme/pull/1219) -- Update dinophp file icon [`c4abb04a`](https://github.com/PKief/vscode-material-icon-theme/commit/c4abb04a) -- dinophp file icon [`#1186`](https://github.com/PKief/vscode-material-icon-theme/pull/1186) -- Update odin color [`ef27d574`](https://github.com/PKief/vscode-material-icon-theme/commit/ef27d574) -- Add support for the Odin programming language [`#1222`](https://github.com/PKief/vscode-material-icon-theme/pull/1222) -- feat: rome.json [`#1214`](https://github.com/PKief/vscode-material-icon-theme/pull/1214) -- Add Vercel folder icon [`#1211`](https://github.com/PKief/vscode-material-icon-theme/pull/1211) -- feat: NextJS [`#1209`](https://github.com/PKief/vscode-material-icon-theme/pull/1209) -- Add .mjmlconfig file support (Closes #1204) [`0b40fd80`](https://github.com/PKief/vscode-material-icon-theme/commit/0b40fd80) -- Add wolfram language (Closes #1176) [`e0800956`](https://github.com/PKief/vscode-material-icon-theme/commit/e0800956) -- Add Artistic Style icon (Closes #1187) [`#1203`](https://github.com/PKief/vscode-material-icon-theme/pull/1203) -- Optimize SVG icons with svgo [`cff00b43`](https://github.com/PKief/vscode-material-icon-theme/commit/cff00b43) -- Add tsconfig.lib.json [`5f2be65d`](https://github.com/PKief/vscode-material-icon-theme/commit/5f2be65d) -- Svgo optimize - sample [`#1129`](https://github.com/PKief/vscode-material-icon-theme/pull/1129) -- Add `mjs/cjs` to `vite.config.*` [`#1190`](https://github.com/PKief/vscode-material-icon-theme/pull/1190) -- We need `.rubocop_todo.yml` as well... [`#1192`](https://github.com/PKief/vscode-material-icon-theme/pull/1192) -- Update sponsor image source [`cb3ea94f`](https://github.com/PKief/vscode-material-icon-theme/commit/cb3ea94f) -- Use material colors and minify SVG [`344e0fa1`](https://github.com/PKief/vscode-material-icon-theme/commit/344e0fa1) -- Minify SVG files [`3d06301d`](https://github.com/PKief/vscode-material-icon-theme/commit/3d06301d) -- Minify SVG files [`40630458`](https://github.com/PKief/vscode-material-icon-theme/commit/40630458) -- Bake transforms that SVGO cannot parse [`0e061aff`](https://github.com/PKief/vscode-material-icon-theme/commit/0e061aff) - -#### [v4.9.0](https://github.com/PKief/vscode-material-icon-theme/compare/v4.8.0...v4.9.0) +- Optimize extension for web usage [`#1219`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1219) +- Update dinophp file icon [`c4abb04a`](https://github.com/material-extensions/vscode-material-icon-theme/commit/c4abb04a) +- dinophp file icon [`#1186`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1186) +- Update odin color [`ef27d574`](https://github.com/material-extensions/vscode-material-icon-theme/commit/ef27d574) +- Add support for the Odin programming language [`#1222`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1222) +- feat: rome.json [`#1214`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1214) +- Add Vercel folder icon [`#1211`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1211) +- feat: NextJS [`#1209`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1209) +- Add .mjmlconfig file support (Closes #1204) [`0b40fd80`](https://github.com/material-extensions/vscode-material-icon-theme/commit/0b40fd80) +- Add wolfram language (Closes #1176) [`e0800956`](https://github.com/material-extensions/vscode-material-icon-theme/commit/e0800956) +- Add Artistic Style icon (Closes #1187) [`#1203`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1203) +- Optimize SVG icons with svgo [`cff00b43`](https://github.com/material-extensions/vscode-material-icon-theme/commit/cff00b43) +- Add tsconfig.lib.json [`5f2be65d`](https://github.com/material-extensions/vscode-material-icon-theme/commit/5f2be65d) +- Svgo optimize - sample [`#1129`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1129) +- Add `mjs/cjs` to `vite.config.*` [`#1190`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1190) +- We need `.rubocop_todo.yml` as well... [`#1192`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1192) +- Update sponsor image source [`cb3ea94f`](https://github.com/material-extensions/vscode-material-icon-theme/commit/cb3ea94f) +- Use material colors and minify SVG [`344e0fa1`](https://github.com/material-extensions/vscode-material-icon-theme/commit/344e0fa1) +- Minify SVG files [`3d06301d`](https://github.com/material-extensions/vscode-material-icon-theme/commit/3d06301d) +- Minify SVG files [`40630458`](https://github.com/material-extensions/vscode-material-icon-theme/commit/40630458) +- Bake transforms that SVGO cannot parse [`0e061aff`](https://github.com/material-extensions/vscode-material-icon-theme/commit/0e061aff) + +#### [v4.9.0](https://github.com/material-extensions/vscode-material-icon-theme/compare/v4.8.0...v4.9.0) > August 5, 2021 -- Update color of JSON icon [`cf837049`](https://github.com/PKief/vscode-material-icon-theme/commit/cf837049) -- Remove width and height properties of sentry icon [`15c4ed99`](https://github.com/PKief/vscode-material-icon-theme/commit/15c4ed99) -- Update sponsor link [`cd5f68ca`](https://github.com/PKief/vscode-material-icon-theme/commit/cd5f68ca) -- Add Teal file icon (Closes #1180) [`#1182`](https://github.com/PKief/vscode-material-icon-theme/pull/1182) -- Reduce size of logo [`26d87fae`](https://github.com/PKief/vscode-material-icon-theme/commit/26d87fae) -- Add <br> tag [`def38ec0`](https://github.com/PKief/vscode-material-icon-theme/commit/def38ec0) -- Add sponsor image to readme [`9e9e909a`](https://github.com/PKief/vscode-material-icon-theme/commit/9e9e909a) -- Add XML support for phpcs.xml.dist.sample [`#1179`](https://github.com/PKief/vscode-material-icon-theme/pull/1179) -- Update json icon [`#1175`](https://github.com/PKief/vscode-material-icon-theme/pull/1175) -- Add interface folder icon (Closes #513) [`7286bbee`](https://github.com/PKief/vscode-material-icon-theme/commit/7286bbee) -- Add dmn file extension [`7aa430c6`](https://github.com/PKief/vscode-material-icon-theme/commit/7aa430c6) -- More filenames support [`#1170`](https://github.com/PKief/vscode-material-icon-theme/pull/1170) -- Add lerna.json icon [`#956`](https://github.com/PKief/vscode-material-icon-theme/pull/956) -- Add postcss.config.cjs file name [`#1168`](https://github.com/PKief/vscode-material-icon-theme/pull/1168) -- Add more tsconfig file icon associations [`463d9194`](https://github.com/PKief/vscode-material-icon-theme/commit/463d9194) -- Add Rubocop [`#1141`](https://github.com/PKief/vscode-material-icon-theme/pull/1141) -- Add Coala icon [`#1154`](https://github.com/PKief/vscode-material-icon-theme/pull/1154) -- Allow folder icon for patches collection [`#1164`](https://github.com/PKief/vscode-material-icon-theme/pull/1164) -- Add tsconfig.eslint.json to tsconfig.json [`#1147`](https://github.com/PKief/vscode-material-icon-theme/pull/1147) -- Fix linting issue [`739badab`](https://github.com/PKief/vscode-material-icon-theme/commit/739badab) -- Add "module", "modules" to "folder-plugin" [`#1083`](https://github.com/PKief/vscode-material-icon-theme/pull/1083) -- add vlang [`#1009`](https://github.com/PKief/vscode-material-icon-theme/pull/1009) -- Update color of context folder icon [`8a982f91`](https://github.com/PKief/vscode-material-icon-theme/commit/8a982f91) -- added icon for context [`#1106`](https://github.com/PKief/vscode-material-icon-theme/pull/1106) -- Added renovate bot icon [`#1139`](https://github.com/PKief/vscode-material-icon-theme/pull/1139) -- Update Flash and SWC icons [`#1157`](https://github.com/PKief/vscode-material-icon-theme/pull/1157) -- Add PHPUnit icon [`#1053`](https://github.com/PKief/vscode-material-icon-theme/pull/1053) -- Update color of yaml icon (Closes #1142) [`f0b4dbad`](https://github.com/PKief/vscode-material-icon-theme/commit/f0b4dbad) -- Add Jest and TSConfig from Nest template [`#1144`](https://github.com/PKief/vscode-material-icon-theme/pull/1144) -- Add support for git-hooks as console file icon [`#1138`](https://github.com/PKief/vscode-material-icon-theme/pull/1138) - -#### [v4.8.0](https://github.com/PKief/vscode-material-icon-theme/compare/v4.7.0...v4.8.0) +- Update color of JSON icon [`cf837049`](https://github.com/material-extensions/vscode-material-icon-theme/commit/cf837049) +- Remove width and height properties of sentry icon [`15c4ed99`](https://github.com/material-extensions/vscode-material-icon-theme/commit/15c4ed99) +- Update sponsor link [`cd5f68ca`](https://github.com/material-extensions/vscode-material-icon-theme/commit/cd5f68ca) +- Add Teal file icon (Closes #1180) [`#1182`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1182) +- Reduce size of logo [`26d87fae`](https://github.com/material-extensions/vscode-material-icon-theme/commit/26d87fae) +- Add <br> tag [`def38ec0`](https://github.com/material-extensions/vscode-material-icon-theme/commit/def38ec0) +- Add sponsor image to readme [`9e9e909a`](https://github.com/material-extensions/vscode-material-icon-theme/commit/9e9e909a) +- Add XML support for phpcs.xml.dist.sample [`#1179`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1179) +- Update json icon [`#1175`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1175) +- Add interface folder icon (Closes #513) [`7286bbee`](https://github.com/material-extensions/vscode-material-icon-theme/commit/7286bbee) +- Add dmn file extension [`7aa430c6`](https://github.com/material-extensions/vscode-material-icon-theme/commit/7aa430c6) +- More filenames support [`#1170`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1170) +- Add lerna.json icon [`#956`](https://github.com/material-extensions/vscode-material-icon-theme/pull/956) +- Add postcss.config.cjs file name [`#1168`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1168) +- Add more tsconfig file icon associations [`463d9194`](https://github.com/material-extensions/vscode-material-icon-theme/commit/463d9194) +- Add Rubocop [`#1141`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1141) +- Add Coala icon [`#1154`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1154) +- Allow folder icon for patches collection [`#1164`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1164) +- Add tsconfig.eslint.json to tsconfig.json [`#1147`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1147) +- Fix linting issue [`739badab`](https://github.com/material-extensions/vscode-material-icon-theme/commit/739badab) +- Add "module", "modules" to "folder-plugin" [`#1083`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1083) +- add vlang [`#1009`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1009) +- Update color of context folder icon [`8a982f91`](https://github.com/material-extensions/vscode-material-icon-theme/commit/8a982f91) +- added icon for context [`#1106`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1106) +- Added renovate bot icon [`#1139`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1139) +- Update Flash and SWC icons [`#1157`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1157) +- Add PHPUnit icon [`#1053`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1053) +- Update color of yaml icon (Closes #1142) [`f0b4dbad`](https://github.com/material-extensions/vscode-material-icon-theme/commit/f0b4dbad) +- Add Jest and TSConfig from Nest template [`#1144`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1144) +- Add support for git-hooks as console file icon [`#1138`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1138) + +#### [v4.8.0](https://github.com/material-extensions/vscode-material-icon-theme/compare/v4.7.0...v4.8.0) > July 4, 2021 -- Extend prettier config file options (Closes #1067) [`23e9d6a6`](https://github.com/PKief/vscode-material-icon-theme/commit/23e9d6a6) -- Add support for global git ignorance file [`#1131`](https://github.com/PKief/vscode-material-icon-theme/pull/1131) -- Add sponsor logo [`45d40ba3`](https://github.com/PKief/vscode-material-icon-theme/commit/45d40ba3) -- Add Maven icon [`#1098`](https://github.com/PKief/vscode-material-icon-theme/pull/1098) -- Add missing module prettier [`d80797a3`](https://github.com/PKief/vscode-material-icon-theme/commit/d80797a3) -- Fix linting issues [`f06a8aaf`](https://github.com/PKief/vscode-material-icon-theme/commit/f06a8aaf) -- Remove unused webpack plugin which causes error [`6e56040d`](https://github.com/PKief/vscode-material-icon-theme/commit/6e56040d) -- Update actions [`a7aa37c2`](https://github.com/PKief/vscode-material-icon-theme/commit/a7aa37c2) -- Improve generation of icon preview images [`cd91ac41`](https://github.com/PKief/vscode-material-icon-theme/commit/cd91ac41) -- Add yarn folder icon (Closes #998) [`bd77a62a`](https://github.com/PKief/vscode-material-icon-theme/commit/bd77a62a) -- Format code on save [`590063c2`](https://github.com/PKief/vscode-material-icon-theme/commit/590063c2) -- Add .env.dist file icon support [`#1126`](https://github.com/PKief/vscode-material-icon-theme/pull/1126) -- Add PHP CS Fixer icon [`#1052`](https://github.com/PKief/vscode-material-icon-theme/pull/1052) -- Add Ada icon [`#1099`](https://github.com/PKief/vscode-material-icon-theme/pull/1099) -- Add folder `.wordpress-org` support [`#1114`](https://github.com/PKief/vscode-material-icon-theme/pull/1114) -- Add support for `sample-data` folder [`#1115`](https://github.com/PKief/vscode-material-icon-theme/pull/1115) -- Add XML support for PHP_CodeSniffer ruleset file [`#1116`](https://github.com/PKief/vscode-material-icon-theme/pull/1116) -- Add support for storybook directory [`#1118`](https://github.com/PKief/vscode-material-icon-theme/pull/1118) -- Add ESLint config for JSDoc documentation [`#1117`](https://github.com/PKief/vscode-material-icon-theme/pull/1117) -- Add Ember icon [`#1097`](https://github.com/PKief/vscode-material-icon-theme/pull/1097) -- Update folderIcons.ts [`#1113`](https://github.com/PKief/vscode-material-icon-theme/pull/1113) -- Added horusec-config file icon [`#1081`](https://github.com/PKief/vscode-material-icon-theme/pull/1081) -- Add snowpack [`#1112`](https://github.com/PKief/vscode-material-icon-theme/pull/1112) -- Assign icon for `tsconfig.base.json` [`#1109`](https://github.com/PKief/vscode-material-icon-theme/pull/1109) -- Add Babel transform and Jest config files support [`#1107`](https://github.com/PKief/vscode-material-icon-theme/pull/1107) -- Add eslint config for markdown documentation [`#1103`](https://github.com/PKief/vscode-material-icon-theme/pull/1103) -- Update for yaml consistency with xml [`#1049`](https://github.com/PKief/vscode-material-icon-theme/pull/1049) -- Link RestApi folder icon [`#1093`](https://github.com/PKief/vscode-material-icon-theme/pull/1093) -- Update docker file icon (Closes #1100) [`8b2a3bca`](https://github.com/PKief/vscode-material-icon-theme/commit/8b2a3bca) -- Add pink elephant icon (Closes #1071) [`cc09a0d4`](https://github.com/PKief/vscode-material-icon-theme/commit/cc09a0d4) -- Add Robots icon [`#1054`](https://github.com/PKief/vscode-material-icon-theme/pull/1054) -- Add Java '.jar' file icons [`#1074`](https://github.com/PKief/vscode-material-icon-theme/pull/1074) -- Update FUNDING.yml [`72ecc5b5`](https://github.com/PKief/vscode-material-icon-theme/commit/72ecc5b5) -- Add picture(s) folder icon (References #1070) [`eb7cf6d7`](https://github.com/PKief/vscode-material-icon-theme/commit/eb7cf6d7) -- Add vetur.config.* icon associations [`#1055`](https://github.com/PKief/vscode-material-icon-theme/pull/1055) -- Add tsconfig icons (closes #499) [`#1066`](https://github.com/PKief/vscode-material-icon-theme/pull/1066) -- Adding new extension of storybook CSF format for svelte [`#1064`](https://github.com/PKief/vscode-material-icon-theme/pull/1064) -- Added __stories__ folder and .stories.mdx file [`#1048`](https://github.com/PKief/vscode-material-icon-theme/pull/1048) -- Add artisan icon association [`#1057`](https://github.com/PKief/vscode-material-icon-theme/pull/1057) -- Add webpack.mix.js icon association [`#1056`](https://github.com/PKief/vscode-material-icon-theme/pull/1056) -- Add Hex file icon [`#1062`](https://github.com/PKief/vscode-material-icon-theme/pull/1062) -- Add Java '.class' file icons [`#1060`](https://github.com/PKief/vscode-material-icon-theme/pull/1060) - -#### [v4.7.0](https://github.com/PKief/vscode-material-icon-theme/compare/v4.6.0...v4.7.0) +- Extend prettier config file options (Closes #1067) [`23e9d6a6`](https://github.com/material-extensions/vscode-material-icon-theme/commit/23e9d6a6) +- Add support for global git ignorance file [`#1131`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1131) +- Add sponsor logo [`45d40ba3`](https://github.com/material-extensions/vscode-material-icon-theme/commit/45d40ba3) +- Add Maven icon [`#1098`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1098) +- Add missing module prettier [`d80797a3`](https://github.com/material-extensions/vscode-material-icon-theme/commit/d80797a3) +- Fix linting issues [`f06a8aaf`](https://github.com/material-extensions/vscode-material-icon-theme/commit/f06a8aaf) +- Remove unused webpack plugin which causes error [`6e56040d`](https://github.com/material-extensions/vscode-material-icon-theme/commit/6e56040d) +- Update actions [`a7aa37c2`](https://github.com/material-extensions/vscode-material-icon-theme/commit/a7aa37c2) +- Improve generation of icon preview images [`cd91ac41`](https://github.com/material-extensions/vscode-material-icon-theme/commit/cd91ac41) +- Add yarn folder icon (Closes #998) [`bd77a62a`](https://github.com/material-extensions/vscode-material-icon-theme/commit/bd77a62a) +- Format code on save [`590063c2`](https://github.com/material-extensions/vscode-material-icon-theme/commit/590063c2) +- Add .env.dist file icon support [`#1126`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1126) +- Add PHP CS Fixer icon [`#1052`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1052) +- Add Ada icon [`#1099`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1099) +- Add folder `.wordpress-org` support [`#1114`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1114) +- Add support for `sample-data` folder [`#1115`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1115) +- Add XML support for PHP_CodeSniffer ruleset file [`#1116`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1116) +- Add support for storybook directory [`#1118`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1118) +- Add ESLint config for JSDoc documentation [`#1117`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1117) +- Add Ember icon [`#1097`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1097) +- Update folderIcons.ts [`#1113`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1113) +- Added horusec-config file icon [`#1081`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1081) +- Add snowpack [`#1112`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1112) +- Assign icon for `tsconfig.base.json` [`#1109`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1109) +- Add Babel transform and Jest config files support [`#1107`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1107) +- Add eslint config for markdown documentation [`#1103`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1103) +- Update for yaml consistency with xml [`#1049`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1049) +- Link RestApi folder icon [`#1093`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1093) +- Update docker file icon (Closes #1100) [`8b2a3bca`](https://github.com/material-extensions/vscode-material-icon-theme/commit/8b2a3bca) +- Add pink elephant icon (Closes #1071) [`cc09a0d4`](https://github.com/material-extensions/vscode-material-icon-theme/commit/cc09a0d4) +- Add Robots icon [`#1054`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1054) +- Add Java '.jar' file icons [`#1074`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1074) +- Update FUNDING.yml [`72ecc5b5`](https://github.com/material-extensions/vscode-material-icon-theme/commit/72ecc5b5) +- Add picture(s) folder icon (References #1070) [`eb7cf6d7`](https://github.com/material-extensions/vscode-material-icon-theme/commit/eb7cf6d7) +- Add vetur.config.* icon associations [`#1055`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1055) +- Add tsconfig icons (closes #499) [`#1066`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1066) +- Adding new extension of storybook CSF format for svelte [`#1064`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1064) +- Added __stories__ folder and .stories.mdx file [`#1048`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1048) +- Add artisan icon association [`#1057`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1057) +- Add webpack.mix.js icon association [`#1056`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1056) +- Add Hex file icon [`#1062`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1062) +- Add Java '.class' file icons [`#1060`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1060) + +#### [v4.7.0](https://github.com/material-extensions/vscode-material-icon-theme/compare/v4.6.0...v4.7.0) > May 24, 2021 -- added .env.template to .env recognized filenames [`#1033`](https://github.com/PKief/vscode-material-icon-theme/pull/1033) -- feat: recognize `.venv/` as env folder by default [`#1044`](https://github.com/PKief/vscode-material-icon-theme/pull/1044) -- Update color of sentry file icon (References #1043) [`36888ce9`](https://github.com/PKief/vscode-material-icon-theme/commit/36888ce9) -- feat: :art: Add sentry icon for .sentryclirc file [`#1043`](https://github.com/PKief/vscode-material-icon-theme/pull/1043) -- Set main as default branch [`068a3ccb`](https://github.com/PKief/vscode-material-icon-theme/commit/068a3ccb) -- Reducing the size of the Gitpod icon [`466780f2`](https://github.com/PKief/vscode-material-icon-theme/commit/466780f2) -- Update Gitpod icon [`#1034`](https://github.com/PKief/vscode-material-icon-theme/pull/1034) -- Add .bazelversion file icon association [`88cac752`](https://github.com/PKief/vscode-material-icon-theme/commit/88cac752) -- feat: add `.windi` file extension [`#1041`](https://github.com/PKief/vscode-material-icon-theme/pull/1041) -- add tailwindcss icon to `tailwind.config.cjs` [`#1040`](https://github.com/PKief/vscode-material-icon-theme/pull/1040) -- Add additional folder names for the contract folder icon [`a8768cef`](https://github.com/PKief/vscode-material-icon-theme/commit/a8768cef) -- Support virtual workspaces (Closes #1036) [`026457b0`](https://github.com/PKief/vscode-material-icon-theme/commit/026457b0) -- Add contract folder icon (Closes #1035) [`7fcd799a`](https://github.com/PKief/vscode-material-icon-theme/commit/7fcd799a) -- Add pl file extension to prolog file icon [`70cf73b4`](https://github.com/PKief/vscode-material-icon-theme/commit/70cf73b4) -- Support extension in untrusted workspaces (Closes #1032) [`8ec317e5`](https://github.com/PKief/vscode-material-icon-theme/commit/8ec317e5) -- Add new folder icons (Closes #907) [`4b5b40da`](https://github.com/PKief/vscode-material-icon-theme/commit/4b5b40da) -- Update storybook and add folder-storybook [`#1020`](https://github.com/PKief/vscode-material-icon-theme/pull/1020) -- Add `.astro` icon [`#1025`](https://github.com/PKief/vscode-material-icon-theme/pull/1025) -- Fix unclosed bold tag [`21b6cdbe`](https://github.com/PKief/vscode-material-icon-theme/commit/21b6cdbe) -- Fix description of how to use custom icons (Closes #984, 1004) [`a06913f7`](https://github.com/PKief/vscode-material-icon-theme/commit/a06913f7) -- Fix description of how to use custom icons (Closes #1004) [`80c551ba`](https://github.com/PKief/vscode-material-icon-theme/commit/80c551ba) -- Align circleci folder with github [`#1021`](https://github.com/PKief/vscode-material-icon-theme/pull/1021) -- svgo icon [`#1022`](https://github.com/PKief/vscode-material-icon-theme/pull/1022) -- add 'inc' to 'folder-include' folder names [`#1018`](https://github.com/PKief/vscode-material-icon-theme/pull/1018) -- Add chess icons [`#1010`](https://github.com/PKief/vscode-material-icon-theme/pull/1010) -- Add Husky folder [`#990`](https://github.com/PKief/vscode-material-icon-theme/pull/990) -- Add gemini icon [`#1014`](https://github.com/PKief/vscode-material-icon-theme/pull/1014) -- Add .lintstagedrc icon association [`d632c2c5`](https://github.com/PKief/vscode-material-icon-theme/commit/d632c2c5) -- Vuepress [`#981`](https://github.com/PKief/vscode-material-icon-theme/pull/981) -- Add more android file extensions [`#1012`](https://github.com/PKief/vscode-material-icon-theme/pull/1012) -- feat: new windicss icon [`#1007`](https://github.com/PKief/vscode-material-icon-theme/pull/1007) -- Add icon association for copyright [`60dfe657`](https://github.com/PKief/vscode-material-icon-theme/commit/60dfe657) -- Add lilypond file icon (Closes #987) [`#1006`](https://github.com/PKief/vscode-material-icon-theme/pull/1006) -- .pbm, .pgm, .ppm, .pnm extensions added as image files [`#989`](https://github.com/PKief/vscode-material-icon-theme/pull/989) -- Add wav file extension to audio icon [`a6b36189`](https://github.com/PKief/vscode-material-icon-theme/commit/a6b36189) -- Add 'types' folder to folder-typescript [`#965`](https://github.com/PKief/vscode-material-icon-theme/pull/965) -- Add envs folder association (Closes #988) [`c02581ce`](https://github.com/PKief/vscode-material-icon-theme/commit/c02581ce) -- Show `svelte.config.cjs` as svelte file [`#980`](https://github.com/PKief/vscode-material-icon-theme/pull/980) -- Add TS support for tailwind config file [`#985`](https://github.com/PKief/vscode-material-icon-theme/pull/985) -- Add sc file extension for scala file icon [`30ab89a9`](https://github.com/PKief/vscode-material-icon-theme/commit/30ab89a9) -- Add scala file extension (Fixes #976) [`a5ec66bb`](https://github.com/PKief/vscode-material-icon-theme/commit/a5ec66bb) - -#### [v4.6.0](https://github.com/PKief/vscode-material-icon-theme/compare/v4.5.0...v4.6.0) +- added .env.template to .env recognized filenames [`#1033`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1033) +- feat: recognize `.venv/` as env folder by default [`#1044`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1044) +- Update color of sentry file icon (References #1043) [`36888ce9`](https://github.com/material-extensions/vscode-material-icon-theme/commit/36888ce9) +- feat: :art: Add sentry icon for .sentryclirc file [`#1043`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1043) +- Set main as default branch [`068a3ccb`](https://github.com/material-extensions/vscode-material-icon-theme/commit/068a3ccb) +- Reducing the size of the Gitpod icon [`466780f2`](https://github.com/material-extensions/vscode-material-icon-theme/commit/466780f2) +- Update Gitpod icon [`#1034`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1034) +- Add .bazelversion file icon association [`88cac752`](https://github.com/material-extensions/vscode-material-icon-theme/commit/88cac752) +- feat: add `.windi` file extension [`#1041`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1041) +- add tailwindcss icon to `tailwind.config.cjs` [`#1040`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1040) +- Add additional folder names for the contract folder icon [`a8768cef`](https://github.com/material-extensions/vscode-material-icon-theme/commit/a8768cef) +- Support virtual workspaces (Closes #1036) [`026457b0`](https://github.com/material-extensions/vscode-material-icon-theme/commit/026457b0) +- Add contract folder icon (Closes #1035) [`7fcd799a`](https://github.com/material-extensions/vscode-material-icon-theme/commit/7fcd799a) +- Add pl file extension to prolog file icon [`70cf73b4`](https://github.com/material-extensions/vscode-material-icon-theme/commit/70cf73b4) +- Support extension in untrusted workspaces (Closes #1032) [`8ec317e5`](https://github.com/material-extensions/vscode-material-icon-theme/commit/8ec317e5) +- Add new folder icons (Closes #907) [`4b5b40da`](https://github.com/material-extensions/vscode-material-icon-theme/commit/4b5b40da) +- Update storybook and add folder-storybook [`#1020`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1020) +- Add `.astro` icon [`#1025`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1025) +- Fix unclosed bold tag [`21b6cdbe`](https://github.com/material-extensions/vscode-material-icon-theme/commit/21b6cdbe) +- Fix description of how to use custom icons (Closes #984, 1004) [`a06913f7`](https://github.com/material-extensions/vscode-material-icon-theme/commit/a06913f7) +- Fix description of how to use custom icons (Closes #1004) [`80c551ba`](https://github.com/material-extensions/vscode-material-icon-theme/commit/80c551ba) +- Align circleci folder with github [`#1021`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1021) +- svgo icon [`#1022`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1022) +- add 'inc' to 'folder-include' folder names [`#1018`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1018) +- Add chess icons [`#1010`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1010) +- Add Husky folder [`#990`](https://github.com/material-extensions/vscode-material-icon-theme/pull/990) +- Add gemini icon [`#1014`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1014) +- Add .lintstagedrc icon association [`d632c2c5`](https://github.com/material-extensions/vscode-material-icon-theme/commit/d632c2c5) +- Vuepress [`#981`](https://github.com/material-extensions/vscode-material-icon-theme/pull/981) +- Add more android file extensions [`#1012`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1012) +- feat: new windicss icon [`#1007`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1007) +- Add icon association for copyright [`60dfe657`](https://github.com/material-extensions/vscode-material-icon-theme/commit/60dfe657) +- Add lilypond file icon (Closes #987) [`#1006`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1006) +- .pbm, .pgm, .ppm, .pnm extensions added as image files [`#989`](https://github.com/material-extensions/vscode-material-icon-theme/pull/989) +- Add wav file extension to audio icon [`a6b36189`](https://github.com/material-extensions/vscode-material-icon-theme/commit/a6b36189) +- Add 'types' folder to folder-typescript [`#965`](https://github.com/material-extensions/vscode-material-icon-theme/pull/965) +- Add envs folder association (Closes #988) [`c02581ce`](https://github.com/material-extensions/vscode-material-icon-theme/commit/c02581ce) +- Show `svelte.config.cjs` as svelte file [`#980`](https://github.com/material-extensions/vscode-material-icon-theme/pull/980) +- Add TS support for tailwind config file [`#985`](https://github.com/material-extensions/vscode-material-icon-theme/pull/985) +- Add sc file extension for scala file icon [`30ab89a9`](https://github.com/material-extensions/vscode-material-icon-theme/commit/30ab89a9) +- Add scala file extension (Fixes #976) [`a5ec66bb`](https://github.com/material-extensions/vscode-material-icon-theme/commit/a5ec66bb) + +#### [v4.6.0](https://github.com/material-extensions/vscode-material-icon-theme/compare/v4.5.0...v4.6.0) > March 20, 2021 -- Update Contributor guidance with a couple suggestions [`#970`](https://github.com/PKief/vscode-material-icon-theme/pull/970) -- Add proto icons (#963) [`#902`](https://github.com/PKief/vscode-material-icon-theme/pull/902) -- Nuxt icons [`#824`](https://github.com/PKief/vscode-material-icon-theme/pull/824) -- Add sponsor link to readme [`6604dfc1`](https://github.com/PKief/vscode-material-icon-theme/commit/6604dfc1) -- Update FUNDING.yml [`215ef624`](https://github.com/PKief/vscode-material-icon-theme/commit/215ef624) -- Add textlint file icon (Closes #967) [`3ad84a1b`](https://github.com/PKief/vscode-material-icon-theme/commit/3ad84a1b) -- Add Kusto Query Language (KQL) [`#968`](https://github.com/PKief/vscode-material-icon-theme/pull/968) -- ADD: folder name for audio and docs [`#964`](https://github.com/PKief/vscode-material-icon-theme/pull/964) -- Add Icon for windicss [`#960`](https://github.com/PKief/vscode-material-icon-theme/pull/960) -- Add '.terraform' folder name support [`#957`](https://github.com/PKief/vscode-material-icon-theme/pull/957) -- Adding support for Vitejs [`#948`](https://github.com/PKief/vscode-material-icon-theme/pull/948) -- Add variations to docker compose [`#953`](https://github.com/PKief/vscode-material-icon-theme/pull/953) -- Allow language associations to override the js file extension (Fixes #943) [`d1931bee`](https://github.com/PKief/vscode-material-icon-theme/commit/d1931bee) -- added support for OPA (Open Policy Agent) [`#949`](https://github.com/PKief/vscode-material-icon-theme/pull/949) -- Add webpack.prod.config.js [`97932ed0`](https://github.com/PKief/vscode-material-icon-theme/commit/97932ed0) -- Added cobol folder icons [`#940`](https://github.com/PKief/vscode-material-icon-theme/pull/940) -- Add Elyra pipelines icon [`#941`](https://github.com/PKief/vscode-material-icon-theme/pull/941) -- Added pwa folder icons [`#939`](https://github.com/PKief/vscode-material-icon-theme/pull/939) -- Update CONTRIBUTING.md [`f244ed43`](https://github.com/PKief/vscode-material-icon-theme/commit/f244ed43) -- Update CONTRIBUTING.md [`c9aac688`](https://github.com/PKief/vscode-material-icon-theme/commit/c9aac688) -- Update file associations documentation (References #928) [`f0dc2238`](https://github.com/PKief/vscode-material-icon-theme/commit/f0dc2238) -- Add .sqlite3 and .db3 extensions [`#929`](https://github.com/PKief/vscode-material-icon-theme/pull/929) - -#### [v4.5.0](https://github.com/PKief/vscode-material-icon-theme/compare/v4.4.0...v4.5.0) +- Update Contributor guidance with a couple suggestions [`#970`](https://github.com/material-extensions/vscode-material-icon-theme/pull/970) +- Add proto icons (#963) [`#902`](https://github.com/material-extensions/vscode-material-icon-theme/pull/902) +- Nuxt icons [`#824`](https://github.com/material-extensions/vscode-material-icon-theme/pull/824) +- Add sponsor link to readme [`6604dfc1`](https://github.com/material-extensions/vscode-material-icon-theme/commit/6604dfc1) +- Update FUNDING.yml [`215ef624`](https://github.com/material-extensions/vscode-material-icon-theme/commit/215ef624) +- Add textlint file icon (Closes #967) [`3ad84a1b`](https://github.com/material-extensions/vscode-material-icon-theme/commit/3ad84a1b) +- Add Kusto Query Language (KQL) [`#968`](https://github.com/material-extensions/vscode-material-icon-theme/pull/968) +- ADD: folder name for audio and docs [`#964`](https://github.com/material-extensions/vscode-material-icon-theme/pull/964) +- Add Icon for windicss [`#960`](https://github.com/material-extensions/vscode-material-icon-theme/pull/960) +- Add '.terraform' folder name support [`#957`](https://github.com/material-extensions/vscode-material-icon-theme/pull/957) +- Adding support for Vitejs [`#948`](https://github.com/material-extensions/vscode-material-icon-theme/pull/948) +- Add variations to docker compose [`#953`](https://github.com/material-extensions/vscode-material-icon-theme/pull/953) +- Allow language associations to override the js file extension (Fixes #943) [`d1931bee`](https://github.com/material-extensions/vscode-material-icon-theme/commit/d1931bee) +- added support for OPA (Open Policy Agent) [`#949`](https://github.com/material-extensions/vscode-material-icon-theme/pull/949) +- Add webpack.prod.config.js [`97932ed0`](https://github.com/material-extensions/vscode-material-icon-theme/commit/97932ed0) +- Added cobol folder icons [`#940`](https://github.com/material-extensions/vscode-material-icon-theme/pull/940) +- Add Elyra pipelines icon [`#941`](https://github.com/material-extensions/vscode-material-icon-theme/pull/941) +- Added pwa folder icons [`#939`](https://github.com/material-extensions/vscode-material-icon-theme/pull/939) +- Update CONTRIBUTING.md [`f244ed43`](https://github.com/material-extensions/vscode-material-icon-theme/commit/f244ed43) +- Update CONTRIBUTING.md [`c9aac688`](https://github.com/material-extensions/vscode-material-icon-theme/commit/c9aac688) +- Update file associations documentation (References #928) [`f0dc2238`](https://github.com/material-extensions/vscode-material-icon-theme/commit/f0dc2238) +- Add .sqlite3 and .db3 extensions [`#929`](https://github.com/material-extensions/vscode-material-icon-theme/pull/929) + +#### [v4.5.0](https://github.com/material-extensions/vscode-material-icon-theme/compare/v4.4.0...v4.5.0) > January 10, 2021 -- Update PostCSS file icon (Closes #926) [`472823f6`](https://github.com/PKief/vscode-material-icon-theme/commit/472823f6) -- Add related extensions section [`47771730`](https://github.com/PKief/vscode-material-icon-theme/commit/47771730) -- Add folder-privileged [`#831`](https://github.com/PKief/vscode-material-icon-theme/pull/831) -- Add quasar file and folder icon (Closes #920) [`b8a1fc61`](https://github.com/PKief/vscode-material-icon-theme/commit/b8a1fc61) -- Add idris file icon (Closes #915) [`17179257`](https://github.com/PKief/vscode-material-icon-theme/commit/17179257) -- Add lolcode icon (Closes #914) [`f55b4090`](https://github.com/PKief/vscode-material-icon-theme/commit/f55b4090) -- Add pylintrc icon association (Closes #891) [`ef0506d0`](https://github.com/PKief/vscode-material-icon-theme/commit/ef0506d0) -- Add cjs.map icon association (Closes #912) [`23d2f66e`](https://github.com/PKief/vscode-material-icon-theme/commit/23d2f66e) -- Updated robot icon to official CD #910 [`#911`](https://github.com/PKief/vscode-material-icon-theme/pull/911) -- Add jfif file extension to image icon [`3952f7a4`](https://github.com/PKief/vscode-material-icon-theme/commit/3952f7a4) -- Add connection folder icon [`#903`](https://github.com/PKief/vscode-material-icon-theme/pull/903) -- add vim icon associations [`#904`](https://github.com/PKief/vscode-material-icon-theme/pull/904) -- Add .db extension [`#898`](https://github.com/PKief/vscode-material-icon-theme/pull/898) -- Sync version key value [`#897`](https://github.com/PKief/vscode-material-icon-theme/pull/897) -- Add Grain icon [`#892`](https://github.com/PKief/vscode-material-icon-theme/pull/892) -- Fix link to images [`503c3f55`](https://github.com/PKief/vscode-material-icon-theme/commit/503c3f55) -- Fix import of puppeteer (Closes #890) [`6f5f0842`](https://github.com/PKief/vscode-material-icon-theme/commit/6f5f0842) -- add scala-folder [`#856`](https://github.com/PKief/vscode-material-icon-theme/pull/856) -- add cobol icon [`#889`](https://github.com/PKief/vscode-material-icon-theme/pull/889) -- Add exp file extension to console icon (Closes #875) [`0aee54c5`](https://github.com/PKief/vscode-material-icon-theme/commit/0aee54c5) -- Add bicep icon (Closes #886) [`a634f5bb`](https://github.com/PKief/vscode-material-icon-theme/commit/a634f5bb) -- add twine icon [`#873`](https://github.com/PKief/vscode-material-icon-theme/pull/873) -- Add cabal.project file to cabal file icons [`#883`](https://github.com/PKief/vscode-material-icon-theme/pull/883) -- Add meson_options.txt and meson wrapdb files [`ef4fc09f`](https://github.com/PKief/vscode-material-icon-theme/commit/ef4fc09f) -- Add dune-workspace file to dune file icons [`#881`](https://github.com/PKief/vscode-material-icon-theme/pull/881) -- Update dependencies [`7451b0d6`](https://github.com/PKief/vscode-material-icon-theme/commit/7451b0d6) -- add schemes to classes [`#880`](https://github.com/PKief/vscode-material-icon-theme/pull/880) -- Fix Typescript "hint" level warnings and trivial typing issue [`#877`](https://github.com/PKief/vscode-material-icon-theme/pull/877) - -#### [v4.4.0](https://github.com/PKief/vscode-material-icon-theme/compare/v4.3.0...v4.4.0) +- Update PostCSS file icon (Closes #926) [`472823f6`](https://github.com/material-extensions/vscode-material-icon-theme/commit/472823f6) +- Add related extensions section [`47771730`](https://github.com/material-extensions/vscode-material-icon-theme/commit/47771730) +- Add folder-privileged [`#831`](https://github.com/material-extensions/vscode-material-icon-theme/pull/831) +- Add quasar file and folder icon (Closes #920) [`b8a1fc61`](https://github.com/material-extensions/vscode-material-icon-theme/commit/b8a1fc61) +- Add idris file icon (Closes #915) [`17179257`](https://github.com/material-extensions/vscode-material-icon-theme/commit/17179257) +- Add lolcode icon (Closes #914) [`f55b4090`](https://github.com/material-extensions/vscode-material-icon-theme/commit/f55b4090) +- Add pylintrc icon association (Closes #891) [`ef0506d0`](https://github.com/material-extensions/vscode-material-icon-theme/commit/ef0506d0) +- Add cjs.map icon association (Closes #912) [`23d2f66e`](https://github.com/material-extensions/vscode-material-icon-theme/commit/23d2f66e) +- Updated robot icon to official CD #910 [`#911`](https://github.com/material-extensions/vscode-material-icon-theme/pull/911) +- Add jfif file extension to image icon [`3952f7a4`](https://github.com/material-extensions/vscode-material-icon-theme/commit/3952f7a4) +- Add connection folder icon [`#903`](https://github.com/material-extensions/vscode-material-icon-theme/pull/903) +- add vim icon associations [`#904`](https://github.com/material-extensions/vscode-material-icon-theme/pull/904) +- Add .db extension [`#898`](https://github.com/material-extensions/vscode-material-icon-theme/pull/898) +- Sync version key value [`#897`](https://github.com/material-extensions/vscode-material-icon-theme/pull/897) +- Add Grain icon [`#892`](https://github.com/material-extensions/vscode-material-icon-theme/pull/892) +- Fix link to images [`503c3f55`](https://github.com/material-extensions/vscode-material-icon-theme/commit/503c3f55) +- Fix import of puppeteer (Closes #890) [`6f5f0842`](https://github.com/material-extensions/vscode-material-icon-theme/commit/6f5f0842) +- add scala-folder [`#856`](https://github.com/material-extensions/vscode-material-icon-theme/pull/856) +- add cobol icon [`#889`](https://github.com/material-extensions/vscode-material-icon-theme/pull/889) +- Add exp file extension to console icon (Closes #875) [`0aee54c5`](https://github.com/material-extensions/vscode-material-icon-theme/commit/0aee54c5) +- Add bicep icon (Closes #886) [`a634f5bb`](https://github.com/material-extensions/vscode-material-icon-theme/commit/a634f5bb) +- add twine icon [`#873`](https://github.com/material-extensions/vscode-material-icon-theme/pull/873) +- Add cabal.project file to cabal file icons [`#883`](https://github.com/material-extensions/vscode-material-icon-theme/pull/883) +- Add meson_options.txt and meson wrapdb files [`ef4fc09f`](https://github.com/material-extensions/vscode-material-icon-theme/commit/ef4fc09f) +- Add dune-workspace file to dune file icons [`#881`](https://github.com/material-extensions/vscode-material-icon-theme/pull/881) +- Update dependencies [`7451b0d6`](https://github.com/material-extensions/vscode-material-icon-theme/commit/7451b0d6) +- add schemes to classes [`#880`](https://github.com/material-extensions/vscode-material-icon-theme/pull/880) +- Fix Typescript "hint" level warnings and trivial typing issue [`#877`](https://github.com/material-extensions/vscode-material-icon-theme/pull/877) + +#### [v4.4.0](https://github.com/material-extensions/vscode-material-icon-theme/compare/v4.3.0...v4.4.0) > November 1, 2020 -- Remove animation from animation folder icon due to performance reasons (Closes #872) [`247d7210`](https://github.com/PKief/vscode-material-icon-theme/commit/247d7210) -- Update posthtml icon [`eeffbff6`](https://github.com/PKief/vscode-material-icon-theme/commit/eeffbff6) -- Slightly update colors and size [`a46ddcc2`](https://github.com/PKief/vscode-material-icon-theme/commit/a46ddcc2) -- Add commitlintrc icon associations (Closes #870) [`fd9ea259`](https://github.com/PKief/vscode-material-icon-theme/commit/fd9ea259) -- Make filenames for license files more generic [`4d30abd2`](https://github.com/PKief/vscode-material-icon-theme/commit/4d30abd2) -- Rename mcfunction to minecraft icon [`90752ac2`](https://github.com/PKief/vscode-material-icon-theme/commit/90752ac2) -- Add NGRX selectors (Closes #861) [`c2e1d3d3`](https://github.com/PKief/vscode-material-icon-theme/commit/c2e1d3d3) -- #864 Display docker icon on Dockerfile.* [`993ad6eb`](https://github.com/PKief/vscode-material-icon-theme/commit/993ad6eb) -- remove filters in svg [`48433564`](https://github.com/PKief/vscode-material-icon-theme/commit/48433564) -- remove filter on svgs [`27e20fd2`](https://github.com/PKief/vscode-material-icon-theme/commit/27e20fd2) -- add snowpack config icons [`accebe6f`](https://github.com/PKief/vscode-material-icon-theme/commit/accebe6f) -- Add brainfuck file icon (Closes #858) [`c00230a3`](https://github.com/PKief/vscode-material-icon-theme/commit/c00230a3) -- Add brainfuck file icon (Closes #858) [`b12830b3`](https://github.com/PKief/vscode-material-icon-theme/commit/b12830b3) -- Change the mcfunction icon. [`d9057c69`](https://github.com/PKief/vscode-material-icon-theme/commit/d9057c69) -- Update size of rescript icon [`8fd0644c`](https://github.com/PKief/vscode-material-icon-theme/commit/8fd0644c) -- Update rescript icon [`a4e55200`](https://github.com/PKief/vscode-material-icon-theme/commit/a4e55200) -- Update colors of replit icon [`0fff5e82`](https://github.com/PKief/vscode-material-icon-theme/commit/0fff5e82) -- Add mcfunction_alt to the right file [`76b11f6a`](https://github.com/PKief/vscode-material-icon-theme/commit/76b11f6a) -- Change size and add a alternative icon [`9a5728b0`](https://github.com/PKief/vscode-material-icon-theme/commit/9a5728b0) -- Update gulp folder icon (motive color and size of motive) [`851ef815`](https://github.com/PKief/vscode-material-icon-theme/commit/851ef815) -- add replit config file icon [`4c8f80e6`](https://github.com/PKief/vscode-material-icon-theme/commit/4c8f80e6) -- Add Minecraft Function Icon. [`74944db7`](https://github.com/PKief/vscode-material-icon-theme/commit/74944db7) -- fix: gulp folder icon colors [`28511de4`](https://github.com/PKief/vscode-material-icon-theme/commit/28511de4) -- fix: simplify gulp folder names [`ba38f75a`](https://github.com/PKief/vscode-material-icon-theme/commit/ba38f75a) -- Folder icon for messaging [`637b13a8`](https://github.com/PKief/vscode-material-icon-theme/commit/637b13a8) -- Folder icon for messaging [`f901627d`](https://github.com/PKief/vscode-material-icon-theme/commit/f901627d) -- fix: remove trailing comma [`87766029`](https://github.com/PKief/vscode-material-icon-theme/commit/87766029) -- fix: remove trailing spaces [`5c2b690b`](https://github.com/PKief/vscode-material-icon-theme/commit/5c2b690b) -- feature: gulpfile folder icon [`88c5d70a`](https://github.com/PKief/vscode-material-icon-theme/commit/88c5d70a) -- Add version for light themes and update colors [`1100f1ef`](https://github.com/PKief/vscode-material-icon-theme/commit/1100f1ef) -- Update alignment of nginx icon [`8dfb4a29`](https://github.com/PKief/vscode-material-icon-theme/commit/8dfb4a29) -- Update color of nginx icon to #43A047 [`0a91ce7e`](https://github.com/PKief/vscode-material-icon-theme/commit/0a91ce7e) -- add nginx configuration file icon [`b44e6da8`](https://github.com/PKief/vscode-material-icon-theme/commit/b44e6da8) -- remove folder-support from folderIcons.ts in order to fix pipeline [`ce035260`](https://github.com/PKief/vscode-material-icon-theme/commit/ce035260) -- Update descriptions of workflow file [`3d7b3d0a`](https://github.com/PKief/vscode-material-icon-theme/commit/3d7b3d0a) -- Add reports folder icon [`2d1e9f28`](https://github.com/PKief/vscode-material-icon-theme/commit/2d1e9f28) -- Add passwd file icon (Closes #838) [`7798e4d6`](https://github.com/PKief/vscode-material-icon-theme/commit/7798e4d6) -- feat(svelte): support svelte.config.js [`a47c3eda`](https://github.com/PKief/vscode-material-icon-theme/commit/a47c3eda) -- Update eslintignore [`27d727c7`](https://github.com/PKief/vscode-material-icon-theme/commit/27d727c7) -- Update .vscode config [`1e31cc32`](https://github.com/PKief/vscode-material-icon-theme/commit/1e31cc32) -- Prettifiy source code [`9dfe4a17`](https://github.com/PKief/vscode-material-icon-theme/commit/9dfe4a17) -- Update workflow file [`952dc39e`](https://github.com/PKief/vscode-material-icon-theme/commit/952dc39e) -- Revert image changes [`ba1e0631`](https://github.com/PKief/vscode-material-icon-theme/commit/ba1e0631) -- Add search file icon [`5c502447`](https://github.com/PKief/vscode-material-icon-theme/commit/5c502447) -- Add language ids (Fixes #840) [`d3bcd697`](https://github.com/PKief/vscode-material-icon-theme/commit/d3bcd697) -- Add preview images [`7859fdbf`](https://github.com/PKief/vscode-material-icon-theme/commit/7859fdbf) -- Add Stitches Icon [`b97d1856`](https://github.com/PKief/vscode-material-icon-theme/commit/b97d1856) -- Add description for custom folder icons [`5b7ca028`](https://github.com/PKief/vscode-material-icon-theme/commit/5b7ca028) -- Add "setting" names to folder-config [`21d2e222`](https://github.com/PKief/vscode-material-icon-theme/commit/21d2e222) -- remove dot from extension names [`cbb3fdcd`](https://github.com/PKief/vscode-material-icon-theme/commit/cbb3fdcd) -- Add rescript icon [`b7536eec`](https://github.com/PKief/vscode-material-icon-theme/commit/b7536eec) -- add posthtml icon [`1dd5ac41`](https://github.com/PKief/vscode-material-icon-theme/commit/1dd5ac41) - -#### [v4.3.0](https://github.com/PKief/vscode-material-icon-theme/compare/v4.0.2...v4.3.0) +- Remove animation from animation folder icon due to performance reasons (Closes #872) [`247d7210`](https://github.com/material-extensions/vscode-material-icon-theme/commit/247d7210) +- Update posthtml icon [`eeffbff6`](https://github.com/material-extensions/vscode-material-icon-theme/commit/eeffbff6) +- Slightly update colors and size [`a46ddcc2`](https://github.com/material-extensions/vscode-material-icon-theme/commit/a46ddcc2) +- Add commitlintrc icon associations (Closes #870) [`fd9ea259`](https://github.com/material-extensions/vscode-material-icon-theme/commit/fd9ea259) +- Make filenames for license files more generic [`4d30abd2`](https://github.com/material-extensions/vscode-material-icon-theme/commit/4d30abd2) +- Rename mcfunction to minecraft icon [`90752ac2`](https://github.com/material-extensions/vscode-material-icon-theme/commit/90752ac2) +- Add NGRX selectors (Closes #861) [`c2e1d3d3`](https://github.com/material-extensions/vscode-material-icon-theme/commit/c2e1d3d3) +- #864 Display docker icon on Dockerfile.* [`993ad6eb`](https://github.com/material-extensions/vscode-material-icon-theme/commit/993ad6eb) +- remove filters in svg [`48433564`](https://github.com/material-extensions/vscode-material-icon-theme/commit/48433564) +- remove filter on svgs [`27e20fd2`](https://github.com/material-extensions/vscode-material-icon-theme/commit/27e20fd2) +- add snowpack config icons [`accebe6f`](https://github.com/material-extensions/vscode-material-icon-theme/commit/accebe6f) +- Add brainfuck file icon (Closes #858) [`c00230a3`](https://github.com/material-extensions/vscode-material-icon-theme/commit/c00230a3) +- Add brainfuck file icon (Closes #858) [`b12830b3`](https://github.com/material-extensions/vscode-material-icon-theme/commit/b12830b3) +- Change the mcfunction icon. [`d9057c69`](https://github.com/material-extensions/vscode-material-icon-theme/commit/d9057c69) +- Update size of rescript icon [`8fd0644c`](https://github.com/material-extensions/vscode-material-icon-theme/commit/8fd0644c) +- Update rescript icon [`a4e55200`](https://github.com/material-extensions/vscode-material-icon-theme/commit/a4e55200) +- Update colors of replit icon [`0fff5e82`](https://github.com/material-extensions/vscode-material-icon-theme/commit/0fff5e82) +- Add mcfunction_alt to the right file [`76b11f6a`](https://github.com/material-extensions/vscode-material-icon-theme/commit/76b11f6a) +- Change size and add a alternative icon [`9a5728b0`](https://github.com/material-extensions/vscode-material-icon-theme/commit/9a5728b0) +- Update gulp folder icon (motive color and size of motive) [`851ef815`](https://github.com/material-extensions/vscode-material-icon-theme/commit/851ef815) +- add replit config file icon [`4c8f80e6`](https://github.com/material-extensions/vscode-material-icon-theme/commit/4c8f80e6) +- Add Minecraft Function Icon. [`74944db7`](https://github.com/material-extensions/vscode-material-icon-theme/commit/74944db7) +- fix: gulp folder icon colors [`28511de4`](https://github.com/material-extensions/vscode-material-icon-theme/commit/28511de4) +- fix: simplify gulp folder names [`ba38f75a`](https://github.com/material-extensions/vscode-material-icon-theme/commit/ba38f75a) +- Folder icon for messaging [`637b13a8`](https://github.com/material-extensions/vscode-material-icon-theme/commit/637b13a8) +- Folder icon for messaging [`f901627d`](https://github.com/material-extensions/vscode-material-icon-theme/commit/f901627d) +- fix: remove trailing comma [`87766029`](https://github.com/material-extensions/vscode-material-icon-theme/commit/87766029) +- fix: remove trailing spaces [`5c2b690b`](https://github.com/material-extensions/vscode-material-icon-theme/commit/5c2b690b) +- feature: gulpfile folder icon [`88c5d70a`](https://github.com/material-extensions/vscode-material-icon-theme/commit/88c5d70a) +- Add version for light themes and update colors [`1100f1ef`](https://github.com/material-extensions/vscode-material-icon-theme/commit/1100f1ef) +- Update alignment of nginx icon [`8dfb4a29`](https://github.com/material-extensions/vscode-material-icon-theme/commit/8dfb4a29) +- Update color of nginx icon to #43A047 [`0a91ce7e`](https://github.com/material-extensions/vscode-material-icon-theme/commit/0a91ce7e) +- add nginx configuration file icon [`b44e6da8`](https://github.com/material-extensions/vscode-material-icon-theme/commit/b44e6da8) +- remove folder-support from folderIcons.ts in order to fix pipeline [`ce035260`](https://github.com/material-extensions/vscode-material-icon-theme/commit/ce035260) +- Update descriptions of workflow file [`3d7b3d0a`](https://github.com/material-extensions/vscode-material-icon-theme/commit/3d7b3d0a) +- Add reports folder icon [`2d1e9f28`](https://github.com/material-extensions/vscode-material-icon-theme/commit/2d1e9f28) +- Add passwd file icon (Closes #838) [`7798e4d6`](https://github.com/material-extensions/vscode-material-icon-theme/commit/7798e4d6) +- feat(svelte): support svelte.config.js [`a47c3eda`](https://github.com/material-extensions/vscode-material-icon-theme/commit/a47c3eda) +- Update eslintignore [`27d727c7`](https://github.com/material-extensions/vscode-material-icon-theme/commit/27d727c7) +- Update .vscode config [`1e31cc32`](https://github.com/material-extensions/vscode-material-icon-theme/commit/1e31cc32) +- Prettifiy source code [`9dfe4a17`](https://github.com/material-extensions/vscode-material-icon-theme/commit/9dfe4a17) +- Update workflow file [`952dc39e`](https://github.com/material-extensions/vscode-material-icon-theme/commit/952dc39e) +- Revert image changes [`ba1e0631`](https://github.com/material-extensions/vscode-material-icon-theme/commit/ba1e0631) +- Add search file icon [`5c502447`](https://github.com/material-extensions/vscode-material-icon-theme/commit/5c502447) +- Add language ids (Fixes #840) [`d3bcd697`](https://github.com/material-extensions/vscode-material-icon-theme/commit/d3bcd697) +- Add preview images [`7859fdbf`](https://github.com/material-extensions/vscode-material-icon-theme/commit/7859fdbf) +- Add Stitches Icon [`b97d1856`](https://github.com/material-extensions/vscode-material-icon-theme/commit/b97d1856) +- Add description for custom folder icons [`5b7ca028`](https://github.com/material-extensions/vscode-material-icon-theme/commit/5b7ca028) +- Add "setting" names to folder-config [`21d2e222`](https://github.com/material-extensions/vscode-material-icon-theme/commit/21d2e222) +- remove dot from extension names [`cbb3fdcd`](https://github.com/material-extensions/vscode-material-icon-theme/commit/cbb3fdcd) +- Add rescript icon [`b7536eec`](https://github.com/material-extensions/vscode-material-icon-theme/commit/b7536eec) +- add posthtml icon [`1dd5ac41`](https://github.com/material-extensions/vscode-material-icon-theme/commit/1dd5ac41) + +#### [v4.3.0](https://github.com/material-extensions/vscode-material-icon-theme/compare/v4.0.2...v4.3.0) > September 9, 2020 -- Create FUNDING.yml [`c821e6cc`](https://github.com/PKief/vscode-material-icon-theme/commit/c821e6cc) -- Update terraform folder and file icons [`23e4e36d`](https://github.com/PKief/vscode-material-icon-theme/commit/23e4e36d) -- Updated saturation and opacity of custom icon files [`2ce832d1`](https://github.com/PKief/vscode-material-icon-theme/commit/2ce832d1) -- Fix #827 [`5be67bab`](https://github.com/PKief/vscode-material-icon-theme/commit/5be67bab) -- Code Refactoring [`cd46788e`](https://github.com/PKief/vscode-material-icon-theme/commit/cd46788e) -- Add mjml folder icon (Closes #435) [`8abf22b4`](https://github.com/PKief/vscode-material-icon-theme/commit/8abf22b4) -- Adjusted secondary color [`775becaa`](https://github.com/PKief/vscode-material-icon-theme/commit/775becaa) -- Add www folder association [`b7082f5f`](https://github.com/PKief/vscode-material-icon-theme/commit/b7082f5f) -- Fixed icon configuration in folderIcons.ts due to broken checks [`ac170754`](https://github.com/PKief/vscode-material-icon-theme/commit/ac170754) -- Added Terraform Folder Icons [`6392bb4b`](https://github.com/PKief/vscode-material-icon-theme/commit/6392bb4b) +- Create FUNDING.yml [`c821e6cc`](https://github.com/material-extensions/vscode-material-icon-theme/commit/c821e6cc) +- Update terraform folder and file icons [`23e4e36d`](https://github.com/material-extensions/vscode-material-icon-theme/commit/23e4e36d) +- Updated saturation and opacity of custom icon files [`2ce832d1`](https://github.com/material-extensions/vscode-material-icon-theme/commit/2ce832d1) +- Fix #827 [`5be67bab`](https://github.com/material-extensions/vscode-material-icon-theme/commit/5be67bab) +- Code Refactoring [`cd46788e`](https://github.com/material-extensions/vscode-material-icon-theme/commit/cd46788e) +- Add mjml folder icon (Closes #435) [`8abf22b4`](https://github.com/material-extensions/vscode-material-icon-theme/commit/8abf22b4) +- Adjusted secondary color [`775becaa`](https://github.com/material-extensions/vscode-material-icon-theme/commit/775becaa) +- Add www folder association [`b7082f5f`](https://github.com/material-extensions/vscode-material-icon-theme/commit/b7082f5f) +- Fixed icon configuration in folderIcons.ts due to broken checks [`ac170754`](https://github.com/material-extensions/vscode-material-icon-theme/commit/ac170754) +- Added Terraform Folder Icons [`6392bb4b`](https://github.com/material-extensions/vscode-material-icon-theme/commit/6392bb4b) -#### [v4.0.2](https://github.com/PKief/vscode-material-icon-theme/compare/v4.2.0...v4.0.2) +#### [v4.0.2](https://github.com/material-extensions/vscode-material-icon-theme/compare/v4.2.0...v4.0.2) > September 2, 2020 -- Bump bl from 4.0.2 to 4.0.3 [`e8eaf1e6`](https://github.com/PKief/vscode-material-icon-theme/commit/e8eaf1e6) -- feat: associate docker icon to Dockerfile.prod and Dockerfile.production [`bcc52b79`](https://github.com/PKief/vscode-material-icon-theme/commit/bcc52b79) -- Addition to utils folder icon [`464cc505`](https://github.com/PKief/vscode-material-icon-theme/commit/464cc505) -- Update description for custom SVG icons [`ff1aaab0`](https://github.com/PKief/vscode-material-icon-theme/commit/ff1aaab0) -- Add jsonl and ndjson file extensions [`0f495911`](https://github.com/PKief/vscode-material-icon-theme/commit/0f495911) -- Add slug file icon (Closes #820) [`6542304f`](https://github.com/PKief/vscode-material-icon-theme/commit/6542304f) -- Always enable nuxt icons because there're no conflicts with other icon packages [`a31a1490`](https://github.com/PKief/vscode-material-icon-theme/commit/a31a1490) -- Add jest.e2e file names [`76b32d99`](https://github.com/PKief/vscode-material-icon-theme/commit/76b32d99) -- Add description for custom SVG icons [`eee52d8b`](https://github.com/PKief/vscode-material-icon-theme/commit/eee52d8b) -- Added "ace" [`988f24cb`](https://github.com/PKief/vscode-material-icon-theme/commit/988f24cb) -- Add jinja-html to jinja extension array [`4de95b74`](https://github.com/PKief/vscode-material-icon-theme/commit/4de95b74) -- Icon color changed to Material for Modernizr icon [`f47b150c`](https://github.com/PKief/vscode-material-icon-theme/commit/f47b150c) -- Update colors of apollo icons [`4b5f1554`](https://github.com/PKief/vscode-material-icon-theme/commit/4b5f1554) -- Fix security vulnerability in dev dependencies [`203f8125`](https://github.com/PKief/vscode-material-icon-theme/commit/203f8125) -- Add Modernizr file icon [`b16cce8f`](https://github.com/PKief/vscode-material-icon-theme/commit/b16cce8f) -- Add .cjs extension to ESLint icon [`7253c2fb`](https://github.com/PKief/vscode-material-icon-theme/commit/7253c2fb) -- Add stryker file icon (Closes #784) [`7b2d0258`](https://github.com/PKief/vscode-material-icon-theme/commit/7b2d0258) -- Changed colors to come from material ui design (indigo 900 for folder and indigo 100 for apollo logo; [`a223a6e0`](https://github.com/PKief/vscode-material-icon-theme/commit/a223a6e0) -- Add denizenscript (Closes #785) [`c6b7637c`](https://github.com/PKief/vscode-material-icon-theme/commit/c6b7637c) -- Alias gulpfile.js as gulpfile.mjs [`25adfab6`](https://github.com/PKief/vscode-material-icon-theme/commit/25adfab6) -- Updated color of nuget icon [`47567393`](https://github.com/PKief/vscode-material-icon-theme/commit/47567393) -- Removed snake case in foldernames array [`457f0476`](https://github.com/PKief/vscode-material-icon-theme/commit/457f0476) -- Added apollo folder icon [`a4b48518`](https://github.com/PKief/vscode-material-icon-theme/commit/a4b48518) -- Add command file icon (Closes #748) [`2ebf5110`](https://github.com/PKief/vscode-material-icon-theme/commit/2ebf5110) -- Add NuGet file icon for nuget.config, .nuspec, nuget.exe, *.nupkg [`377f5bc6`](https://github.com/PKief/vscode-material-icon-theme/commit/377f5bc6) -- Bump elliptic from 6.5.2 to 6.5.3 [`1e262f56`](https://github.com/PKief/vscode-material-icon-theme/commit/1e262f56) -- Add CNAME file name to http icon [`2e744e9b`](https://github.com/PKief/vscode-material-icon-theme/commit/2e744e9b) -- Update sas icon [`f24d5616`](https://github.com/PKief/vscode-material-icon-theme/commit/f24d5616) -- change sas-icon.svg to sas.svg [`b2c899d7`](https://github.com/PKief/vscode-material-icon-theme/commit/b2c899d7) -- add SAS icon [`44028c69`](https://github.com/PKief/vscode-material-icon-theme/commit/44028c69) -- Add salesforce icon (Closes #779) [`34f7a529`](https://github.com/PKief/vscode-material-icon-theme/commit/34f7a529) -- Bump lodash from 4.17.15 to 4.17.19 [`ad47a81f`](https://github.com/PKief/vscode-material-icon-theme/commit/ad47a81f) -- Update color of azure pipelines folder icon [`c04fd92e`](https://github.com/PKief/vscode-material-icon-theme/commit/c04fd92e) -- Update color of the rocket [`916f1ddf`](https://github.com/PKief/vscode-material-icon-theme/commit/916f1ddf) -- Update color of the rocket [`f4ba7546`](https://github.com/PKief/vscode-material-icon-theme/commit/f4ba7546) -- Add roadmap file icon (Closes #682) [`f7181676`](https://github.com/PKief/vscode-material-icon-theme/commit/f7181676) -- Update so colors is from material design colors [`9bba8db1`](https://github.com/PKief/vscode-material-icon-theme/commit/9bba8db1) -- Add Azure Pipeline as a folder icon [`6bf39fc2`](https://github.com/PKief/vscode-material-icon-theme/commit/6bf39fc2) -- Update tcl icon [`c26f6f9a`](https://github.com/PKief/vscode-material-icon-theme/commit/c26f6f9a) -- Add security file names to existing lock icon [`f7c40411`](https://github.com/PKief/vscode-material-icon-theme/commit/f7c40411) -- Remove security icon and use 'lock.svg' instead [`87ef79be`](https://github.com/PKief/vscode-material-icon-theme/commit/87ef79be) -- Remove database and storage rules from Firebase [`64e33eef`](https://github.com/PKief/vscode-material-icon-theme/commit/64e33eef) -- Update CI pipeline [`0f14ce1e`](https://github.com/PKief/vscode-material-icon-theme/commit/0f14ce1e) -- Fix CI pipeline [`7ca5d3a7`](https://github.com/PKief/vscode-material-icon-theme/commit/7ca5d3a7) -- Update CI pipeline [`ab9577a4`](https://github.com/PKief/vscode-material-icon-theme/commit/ab9577a4) -- Add fileIcons.ts reference [`49346921`](https://github.com/PKief/vscode-material-icon-theme/commit/49346921) -- Rename and edit security.svg [`d536a9ca`](https://github.com/PKief/vscode-material-icon-theme/commit/d536a9ca) -- Add security.svg [`20f35192`](https://github.com/PKief/vscode-material-icon-theme/commit/20f35192) -- Add additional Firebase filenames [`c8b8dab9`](https://github.com/PKief/vscode-material-icon-theme/commit/c8b8dab9) -- feat: Add Tcl Icon [`e5aac1cd`](https://github.com/PKief/vscode-material-icon-theme/commit/e5aac1cd) - -#### [v4.2.0](https://github.com/PKief/vscode-material-icon-theme/compare/v4.1.0...v4.2.0) +- Bump bl from 4.0.2 to 4.0.3 [`e8eaf1e6`](https://github.com/material-extensions/vscode-material-icon-theme/commit/e8eaf1e6) +- feat: associate docker icon to Dockerfile.prod and Dockerfile.production [`bcc52b79`](https://github.com/material-extensions/vscode-material-icon-theme/commit/bcc52b79) +- Addition to utils folder icon [`464cc505`](https://github.com/material-extensions/vscode-material-icon-theme/commit/464cc505) +- Update description for custom SVG icons [`ff1aaab0`](https://github.com/material-extensions/vscode-material-icon-theme/commit/ff1aaab0) +- Add jsonl and ndjson file extensions [`0f495911`](https://github.com/material-extensions/vscode-material-icon-theme/commit/0f495911) +- Add slug file icon (Closes #820) [`6542304f`](https://github.com/material-extensions/vscode-material-icon-theme/commit/6542304f) +- Always enable nuxt icons because there're no conflicts with other icon packages [`a31a1490`](https://github.com/material-extensions/vscode-material-icon-theme/commit/a31a1490) +- Add jest.e2e file names [`76b32d99`](https://github.com/material-extensions/vscode-material-icon-theme/commit/76b32d99) +- Add description for custom SVG icons [`eee52d8b`](https://github.com/material-extensions/vscode-material-icon-theme/commit/eee52d8b) +- Added "ace" [`988f24cb`](https://github.com/material-extensions/vscode-material-icon-theme/commit/988f24cb) +- Add jinja-html to jinja extension array [`4de95b74`](https://github.com/material-extensions/vscode-material-icon-theme/commit/4de95b74) +- Icon color changed to Material for Modernizr icon [`f47b150c`](https://github.com/material-extensions/vscode-material-icon-theme/commit/f47b150c) +- Update colors of apollo icons [`4b5f1554`](https://github.com/material-extensions/vscode-material-icon-theme/commit/4b5f1554) +- Fix security vulnerability in dev dependencies [`203f8125`](https://github.com/material-extensions/vscode-material-icon-theme/commit/203f8125) +- Add Modernizr file icon [`b16cce8f`](https://github.com/material-extensions/vscode-material-icon-theme/commit/b16cce8f) +- Add .cjs extension to ESLint icon [`7253c2fb`](https://github.com/material-extensions/vscode-material-icon-theme/commit/7253c2fb) +- Add stryker file icon (Closes #784) [`7b2d0258`](https://github.com/material-extensions/vscode-material-icon-theme/commit/7b2d0258) +- Changed colors to come from material ui design (indigo 900 for folder and indigo 100 for apollo logo; [`a223a6e0`](https://github.com/material-extensions/vscode-material-icon-theme/commit/a223a6e0) +- Add denizenscript (Closes #785) [`c6b7637c`](https://github.com/material-extensions/vscode-material-icon-theme/commit/c6b7637c) +- Alias gulpfile.js as gulpfile.mjs [`25adfab6`](https://github.com/material-extensions/vscode-material-icon-theme/commit/25adfab6) +- Updated color of nuget icon [`47567393`](https://github.com/material-extensions/vscode-material-icon-theme/commit/47567393) +- Removed snake case in foldernames array [`457f0476`](https://github.com/material-extensions/vscode-material-icon-theme/commit/457f0476) +- Added apollo folder icon [`a4b48518`](https://github.com/material-extensions/vscode-material-icon-theme/commit/a4b48518) +- Add command file icon (Closes #748) [`2ebf5110`](https://github.com/material-extensions/vscode-material-icon-theme/commit/2ebf5110) +- Add NuGet file icon for nuget.config, .nuspec, nuget.exe, *.nupkg [`377f5bc6`](https://github.com/material-extensions/vscode-material-icon-theme/commit/377f5bc6) +- Bump elliptic from 6.5.2 to 6.5.3 [`1e262f56`](https://github.com/material-extensions/vscode-material-icon-theme/commit/1e262f56) +- Add CNAME file name to http icon [`2e744e9b`](https://github.com/material-extensions/vscode-material-icon-theme/commit/2e744e9b) +- Update sas icon [`f24d5616`](https://github.com/material-extensions/vscode-material-icon-theme/commit/f24d5616) +- change sas-icon.svg to sas.svg [`b2c899d7`](https://github.com/material-extensions/vscode-material-icon-theme/commit/b2c899d7) +- add SAS icon [`44028c69`](https://github.com/material-extensions/vscode-material-icon-theme/commit/44028c69) +- Add salesforce icon (Closes #779) [`34f7a529`](https://github.com/material-extensions/vscode-material-icon-theme/commit/34f7a529) +- Bump lodash from 4.17.15 to 4.17.19 [`ad47a81f`](https://github.com/material-extensions/vscode-material-icon-theme/commit/ad47a81f) +- Update color of azure pipelines folder icon [`c04fd92e`](https://github.com/material-extensions/vscode-material-icon-theme/commit/c04fd92e) +- Update color of the rocket [`916f1ddf`](https://github.com/material-extensions/vscode-material-icon-theme/commit/916f1ddf) +- Update color of the rocket [`f4ba7546`](https://github.com/material-extensions/vscode-material-icon-theme/commit/f4ba7546) +- Add roadmap file icon (Closes #682) [`f7181676`](https://github.com/material-extensions/vscode-material-icon-theme/commit/f7181676) +- Update so colors is from material design colors [`9bba8db1`](https://github.com/material-extensions/vscode-material-icon-theme/commit/9bba8db1) +- Add Azure Pipeline as a folder icon [`6bf39fc2`](https://github.com/material-extensions/vscode-material-icon-theme/commit/6bf39fc2) +- Update tcl icon [`c26f6f9a`](https://github.com/material-extensions/vscode-material-icon-theme/commit/c26f6f9a) +- Add security file names to existing lock icon [`f7c40411`](https://github.com/material-extensions/vscode-material-icon-theme/commit/f7c40411) +- Remove security icon and use 'lock.svg' instead [`87ef79be`](https://github.com/material-extensions/vscode-material-icon-theme/commit/87ef79be) +- Remove database and storage rules from Firebase [`64e33eef`](https://github.com/material-extensions/vscode-material-icon-theme/commit/64e33eef) +- Update CI pipeline [`0f14ce1e`](https://github.com/material-extensions/vscode-material-icon-theme/commit/0f14ce1e) +- Fix CI pipeline [`7ca5d3a7`](https://github.com/material-extensions/vscode-material-icon-theme/commit/7ca5d3a7) +- Update CI pipeline [`ab9577a4`](https://github.com/material-extensions/vscode-material-icon-theme/commit/ab9577a4) +- Add fileIcons.ts reference [`49346921`](https://github.com/material-extensions/vscode-material-icon-theme/commit/49346921) +- Rename and edit security.svg [`d536a9ca`](https://github.com/material-extensions/vscode-material-icon-theme/commit/d536a9ca) +- Add security.svg [`20f35192`](https://github.com/material-extensions/vscode-material-icon-theme/commit/20f35192) +- Add additional Firebase filenames [`c8b8dab9`](https://github.com/material-extensions/vscode-material-icon-theme/commit/c8b8dab9) +- feat: Add Tcl Icon [`e5aac1cd`](https://github.com/material-extensions/vscode-material-icon-theme/commit/e5aac1cd) + +#### [v4.2.0](https://github.com/material-extensions/vscode-material-icon-theme/compare/v4.1.0...v4.2.0) > June 17, 2020 -- Updating forth and lisp icons [`17b773ff`](https://github.com/PKief/vscode-material-icon-theme/commit/17b773ff) -- Add update folder icon [`084320c3`](https://github.com/PKief/vscode-material-icon-theme/commit/084320c3) -- Add intellij folder icons [`19747e96`](https://github.com/PKief/vscode-material-icon-theme/commit/19747e96) -- Add svelte folder icon (Closes #756) [`9f8e6974`](https://github.com/PKief/vscode-material-icon-theme/commit/9f8e6974) -- Update color of vercel icons [`4be80ca4`](https://github.com/PKief/vscode-material-icon-theme/commit/4be80ca4) -- Switch vercel icons [`3aae82d9`](https://github.com/PKief/vscode-material-icon-theme/commit/3aae82d9) -- Update pawn icon [`5b327a50`](https://github.com/PKief/vscode-material-icon-theme/commit/5b327a50) -- Update vercel icons (better contrast) [`a12fe318`](https://github.com/PKief/vscode-material-icon-theme/commit/a12fe318) -- Add Pascal file icon (Closes #739) [`358c9650`](https://github.com/PKief/vscode-material-icon-theme/commit/358c9650) -- Update Vercel svgs (additional 2px whitespace) [`35bb92ef`](https://github.com/PKief/vscode-material-icon-theme/commit/35bb92ef) -- Added .unity extension to shaderlab icon [`8598a3e1`](https://github.com/PKief/vscode-material-icon-theme/commit/8598a3e1) -- Update vercel.svg [`24146f20`](https://github.com/PKief/vscode-material-icon-theme/commit/24146f20) -- Update vercel_light.svg [`4368407c`](https://github.com/PKief/vscode-material-icon-theme/commit/4368407c) -- Add unity icon [`413a94be`](https://github.com/PKief/vscode-material-icon-theme/commit/413a94be) -- Animate animation folder icon [`1d6c4d7e`](https://github.com/PKief/vscode-material-icon-theme/commit/1d6c4d7e) -- feat(files): add .env.schema and env.defaults [`933b0e3f`](https://github.com/PKief/vscode-material-icon-theme/commit/933b0e3f) -- Update vala icon [`4d2960ce`](https://github.com/PKief/vscode-material-icon-theme/commit/4d2960ce) -- Alias CHANGELOG as CHANGES [`45b6a9ef`](https://github.com/PKief/vscode-material-icon-theme/commit/45b6a9ef) -- Update ocaml icon (use same color as opam) [`7c165251`](https://github.com/PKief/vscode-material-icon-theme/commit/7c165251) -- Add drawio icon [`4cc0ec3d`](https://github.com/PKief/vscode-material-icon-theme/commit/4cc0ec3d) -- Update color [`9d25612b`](https://github.com/PKief/vscode-material-icon-theme/commit/9d25612b) -- Use color of the Material Color Palette [`2455aa9b`](https://github.com/PKief/vscode-material-icon-theme/commit/2455aa9b) -- Remove specific/custom folder icons per review [`690ddcb2`](https://github.com/PKief/vscode-material-icon-theme/commit/690ddcb2) -- Add ABC file icon [`4b8ccc22`](https://github.com/PKief/vscode-material-icon-theme/commit/4b8ccc22) -- Rename "now" to "vercel" (Closes #738) [`2d780381`](https://github.com/PKief/vscode-material-icon-theme/commit/2d780381) -- added .node-version filetype to nodejs association [`1f73b438`](https://github.com/PKief/vscode-material-icon-theme/commit/1f73b438) -- Update color of components folder icon [`97744d3f`](https://github.com/PKief/vscode-material-icon-theme/commit/97744d3f) -- Add folder icon for widgets (Closes #660 and Closes #726) [`f6ac11ac`](https://github.com/PKief/vscode-material-icon-theme/commit/f6ac11ac) -- Update folderIcons.ts [`beb11a80`](https://github.com/PKief/vscode-material-icon-theme/commit/beb11a80) -- Add io, stdlib, portability folders (C/C++) [`4bf0ea24`](https://github.com/PKief/vscode-material-icon-theme/commit/4bf0ea24) -- Rename tilt icon [`3bd50680`](https://github.com/PKief/vscode-material-icon-theme/commit/3bd50680) -- Add folder icon for "sounds" [`6837df48`](https://github.com/PKief/vscode-material-icon-theme/commit/6837df48) -- Slightly decrease size of icon [`f23c8c69`](https://github.com/PKief/vscode-material-icon-theme/commit/f23c8c69) -- Add GraphQL Resolver icon for Nest [`ad5b5648`](https://github.com/PKief/vscode-material-icon-theme/commit/ad5b5648) -- add 'code' to 'folder-src' icon [`8ee2ddfb`](https://github.com/PKief/vscode-material-icon-theme/commit/8ee2ddfb) -- tweak: map jest icon to jest.config.(m|c)js [`0214998c`](https://github.com/PKief/vscode-material-icon-theme/commit/0214998c) -- Update graphql icon [`c6877f53`](https://github.com/PKief/vscode-material-icon-theme/commit/c6877f53) -- Add imba file icon (Closes #715) [`99c21cd0`](https://github.com/PKief/vscode-material-icon-theme/commit/99c21cd0) -- Fix typo in comment [`7f69d992`](https://github.com/PKief/vscode-material-icon-theme/commit/7f69d992) -- Remove Material Design box per PKief/vscode-material-icon-theme/pull/700#discussion_r416770170 [`61062c6c`](https://github.com/PKief/vscode-material-icon-theme/commit/61062c6c) -- Add Opam and Dune support [`adf18656`](https://github.com/PKief/vscode-material-icon-theme/commit/adf18656) -- Update icon [`#2`](https://github.com/PKief/vscode-material-icon-theme/pull/2) -- Add eslintcache [`9883fbe4`](https://github.com/PKief/vscode-material-icon-theme/commit/9883fbe4) -- Added Dune and Opam icons [`0125f324`](https://github.com/PKief/vscode-material-icon-theme/commit/0125f324) -- Update fileIcons.ts [`fc4ba300`](https://github.com/PKief/vscode-material-icon-theme/commit/fc4ba300) -- fix: change svg according guidelines (ty @lmn8!) [`ccd0296b`](https://github.com/PKief/vscode-material-icon-theme/commit/ccd0296b) -- Switch Pawn icons with SVG [`#1`](https://github.com/PKief/vscode-material-icon-theme/pull/1) -- Add ReasonML, Reason Lisp (reason-vscode) [`87ff07a4`](https://github.com/PKief/vscode-material-icon-theme/commit/87ff07a4) -- Cleanup of new icon [`ba0c40f8`](https://github.com/PKief/vscode-material-icon-theme/commit/ba0c40f8) -- Add as SML [`58eb76f3`](https://github.com/PKief/vscode-material-icon-theme/commit/58eb76f3) -- Rename ml.svg to sml.svg [`200dffaf`](https://github.com/PKief/vscode-material-icon-theme/commit/200dffaf) -- Fix a syntax error [`65e12532`](https://github.com/PKief/vscode-material-icon-theme/commit/65e12532) -- Cleanup [`65ee8617`](https://github.com/PKief/vscode-material-icon-theme/commit/65ee8617) -- Add *.mlb and *.use extensions [`31f3e01a`](https://github.com/PKief/vscode-material-icon-theme/commit/31f3e01a) -- Remove capitalised extension [`482d08e4`](https://github.com/PKief/vscode-material-icon-theme/commit/482d08e4) -- Attempt to resolve duplicate file extension [`93abdc4f`](https://github.com/PKief/vscode-material-icon-theme/commit/93abdc4f) -- Prevent conflict with OCaml [`3ddc8a3e`](https://github.com/PKief/vscode-material-icon-theme/commit/3ddc8a3e) -- Add all ML file extensions [`6ba6e49c`](https://github.com/PKief/vscode-material-icon-theme/commit/6ba6e49c) -- Add ML family icon (inc. Standard ML) [`c7398ce5`](https://github.com/PKief/vscode-material-icon-theme/commit/c7398ce5) -- Add Forth support Clean up SVG files [`dcfc98d7`](https://github.com/PKief/vscode-material-icon-theme/commit/dcfc98d7) -- Add support for Lisp [`54e86277`](https://github.com/PKief/vscode-material-icon-theme/commit/54e86277) -- Update fileIcons.ts [`0ca6e45e`](https://github.com/PKief/vscode-material-icon-theme/commit/0ca6e45e) -- Update languageIcons.ts [`55981033`](https://github.com/PKief/vscode-material-icon-theme/commit/55981033) -- Create pawn.svg [`ba0f529d`](https://github.com/PKief/vscode-material-icon-theme/commit/ba0f529d) -- Add icon for Tiltfile (https://tilt.dev/) [`84e8d8fb`](https://github.com/PKief/vscode-material-icon-theme/commit/84e8d8fb) -- Add vala icon [`a4b535e4`](https://github.com/PKief/vscode-material-icon-theme/commit/a4b535e4) - -#### [v4.1.0](https://github.com/PKief/vscode-material-icon-theme/compare/v4.0.1...v4.1.0) +- Updating forth and lisp icons [`17b773ff`](https://github.com/material-extensions/vscode-material-icon-theme/commit/17b773ff) +- Add update folder icon [`084320c3`](https://github.com/material-extensions/vscode-material-icon-theme/commit/084320c3) +- Add intellij folder icons [`19747e96`](https://github.com/material-extensions/vscode-material-icon-theme/commit/19747e96) +- Add svelte folder icon (Closes #756) [`9f8e6974`](https://github.com/material-extensions/vscode-material-icon-theme/commit/9f8e6974) +- Update color of vercel icons [`4be80ca4`](https://github.com/material-extensions/vscode-material-icon-theme/commit/4be80ca4) +- Switch vercel icons [`3aae82d9`](https://github.com/material-extensions/vscode-material-icon-theme/commit/3aae82d9) +- Update pawn icon [`5b327a50`](https://github.com/material-extensions/vscode-material-icon-theme/commit/5b327a50) +- Update vercel icons (better contrast) [`a12fe318`](https://github.com/material-extensions/vscode-material-icon-theme/commit/a12fe318) +- Add Pascal file icon (Closes #739) [`358c9650`](https://github.com/material-extensions/vscode-material-icon-theme/commit/358c9650) +- Update Vercel svgs (additional 2px whitespace) [`35bb92ef`](https://github.com/material-extensions/vscode-material-icon-theme/commit/35bb92ef) +- Added .unity extension to shaderlab icon [`8598a3e1`](https://github.com/material-extensions/vscode-material-icon-theme/commit/8598a3e1) +- Update vercel.svg [`24146f20`](https://github.com/material-extensions/vscode-material-icon-theme/commit/24146f20) +- Update vercel_light.svg [`4368407c`](https://github.com/material-extensions/vscode-material-icon-theme/commit/4368407c) +- Add unity icon [`413a94be`](https://github.com/material-extensions/vscode-material-icon-theme/commit/413a94be) +- Animate animation folder icon [`1d6c4d7e`](https://github.com/material-extensions/vscode-material-icon-theme/commit/1d6c4d7e) +- feat(files): add .env.schema and env.defaults [`933b0e3f`](https://github.com/material-extensions/vscode-material-icon-theme/commit/933b0e3f) +- Update vala icon [`4d2960ce`](https://github.com/material-extensions/vscode-material-icon-theme/commit/4d2960ce) +- Alias CHANGELOG as CHANGES [`45b6a9ef`](https://github.com/material-extensions/vscode-material-icon-theme/commit/45b6a9ef) +- Update ocaml icon (use same color as opam) [`7c165251`](https://github.com/material-extensions/vscode-material-icon-theme/commit/7c165251) +- Add drawio icon [`4cc0ec3d`](https://github.com/material-extensions/vscode-material-icon-theme/commit/4cc0ec3d) +- Update color [`9d25612b`](https://github.com/material-extensions/vscode-material-icon-theme/commit/9d25612b) +- Use color of the Material Color Palette [`2455aa9b`](https://github.com/material-extensions/vscode-material-icon-theme/commit/2455aa9b) +- Remove specific/custom folder icons per review [`690ddcb2`](https://github.com/material-extensions/vscode-material-icon-theme/commit/690ddcb2) +- Add ABC file icon [`4b8ccc22`](https://github.com/material-extensions/vscode-material-icon-theme/commit/4b8ccc22) +- Rename "now" to "vercel" (Closes #738) [`2d780381`](https://github.com/material-extensions/vscode-material-icon-theme/commit/2d780381) +- added .node-version filetype to nodejs association [`1f73b438`](https://github.com/material-extensions/vscode-material-icon-theme/commit/1f73b438) +- Update color of components folder icon [`97744d3f`](https://github.com/material-extensions/vscode-material-icon-theme/commit/97744d3f) +- Add folder icon for widgets (Closes #660 and Closes #726) [`f6ac11ac`](https://github.com/material-extensions/vscode-material-icon-theme/commit/f6ac11ac) +- Update folderIcons.ts [`beb11a80`](https://github.com/material-extensions/vscode-material-icon-theme/commit/beb11a80) +- Add io, stdlib, portability folders (C/C++) [`4bf0ea24`](https://github.com/material-extensions/vscode-material-icon-theme/commit/4bf0ea24) +- Rename tilt icon [`3bd50680`](https://github.com/material-extensions/vscode-material-icon-theme/commit/3bd50680) +- Add folder icon for "sounds" [`6837df48`](https://github.com/material-extensions/vscode-material-icon-theme/commit/6837df48) +- Slightly decrease size of icon [`f23c8c69`](https://github.com/material-extensions/vscode-material-icon-theme/commit/f23c8c69) +- Add GraphQL Resolver icon for Nest [`ad5b5648`](https://github.com/material-extensions/vscode-material-icon-theme/commit/ad5b5648) +- add 'code' to 'folder-src' icon [`8ee2ddfb`](https://github.com/material-extensions/vscode-material-icon-theme/commit/8ee2ddfb) +- tweak: map jest icon to jest.config.(m|c)js [`0214998c`](https://github.com/material-extensions/vscode-material-icon-theme/commit/0214998c) +- Update graphql icon [`c6877f53`](https://github.com/material-extensions/vscode-material-icon-theme/commit/c6877f53) +- Add imba file icon (Closes #715) [`99c21cd0`](https://github.com/material-extensions/vscode-material-icon-theme/commit/99c21cd0) +- Fix typo in comment [`7f69d992`](https://github.com/material-extensions/vscode-material-icon-theme/commit/7f69d992) +- Remove Material Design box per PKief/vscode-material-icon-theme/pull/700#discussion_r416770170 [`61062c6c`](https://github.com/material-extensions/vscode-material-icon-theme/commit/61062c6c) +- Add Opam and Dune support [`adf18656`](https://github.com/material-extensions/vscode-material-icon-theme/commit/adf18656) +- Update icon [`#2`](https://github.com/material-extensions/vscode-material-icon-theme/pull/2) +- Add eslintcache [`9883fbe4`](https://github.com/material-extensions/vscode-material-icon-theme/commit/9883fbe4) +- Added Dune and Opam icons [`0125f324`](https://github.com/material-extensions/vscode-material-icon-theme/commit/0125f324) +- Update fileIcons.ts [`fc4ba300`](https://github.com/material-extensions/vscode-material-icon-theme/commit/fc4ba300) +- fix: change svg according guidelines (ty @lmn8!) [`ccd0296b`](https://github.com/material-extensions/vscode-material-icon-theme/commit/ccd0296b) +- Switch Pawn icons with SVG [`#1`](https://github.com/material-extensions/vscode-material-icon-theme/pull/1) +- Add ReasonML, Reason Lisp (reason-vscode) [`87ff07a4`](https://github.com/material-extensions/vscode-material-icon-theme/commit/87ff07a4) +- Cleanup of new icon [`ba0c40f8`](https://github.com/material-extensions/vscode-material-icon-theme/commit/ba0c40f8) +- Add as SML [`58eb76f3`](https://github.com/material-extensions/vscode-material-icon-theme/commit/58eb76f3) +- Rename ml.svg to sml.svg [`200dffaf`](https://github.com/material-extensions/vscode-material-icon-theme/commit/200dffaf) +- Fix a syntax error [`65e12532`](https://github.com/material-extensions/vscode-material-icon-theme/commit/65e12532) +- Cleanup [`65ee8617`](https://github.com/material-extensions/vscode-material-icon-theme/commit/65ee8617) +- Add *.mlb and *.use extensions [`31f3e01a`](https://github.com/material-extensions/vscode-material-icon-theme/commit/31f3e01a) +- Remove capitalised extension [`482d08e4`](https://github.com/material-extensions/vscode-material-icon-theme/commit/482d08e4) +- Attempt to resolve duplicate file extension [`93abdc4f`](https://github.com/material-extensions/vscode-material-icon-theme/commit/93abdc4f) +- Prevent conflict with OCaml [`3ddc8a3e`](https://github.com/material-extensions/vscode-material-icon-theme/commit/3ddc8a3e) +- Add all ML file extensions [`6ba6e49c`](https://github.com/material-extensions/vscode-material-icon-theme/commit/6ba6e49c) +- Add ML family icon (inc. Standard ML) [`c7398ce5`](https://github.com/material-extensions/vscode-material-icon-theme/commit/c7398ce5) +- Add Forth support Clean up SVG files [`dcfc98d7`](https://github.com/material-extensions/vscode-material-icon-theme/commit/dcfc98d7) +- Add support for Lisp [`54e86277`](https://github.com/material-extensions/vscode-material-icon-theme/commit/54e86277) +- Update fileIcons.ts [`0ca6e45e`](https://github.com/material-extensions/vscode-material-icon-theme/commit/0ca6e45e) +- Update languageIcons.ts [`55981033`](https://github.com/material-extensions/vscode-material-icon-theme/commit/55981033) +- Create pawn.svg [`ba0f529d`](https://github.com/material-extensions/vscode-material-icon-theme/commit/ba0f529d) +- Add icon for Tiltfile (https://tilt.dev/) [`84e8d8fb`](https://github.com/material-extensions/vscode-material-icon-theme/commit/84e8d8fb) +- Add vala icon [`a4b535e4`](https://github.com/material-extensions/vscode-material-icon-theme/commit/a4b535e4) + +#### [v4.1.0](https://github.com/material-extensions/vscode-material-icon-theme/compare/v4.0.1...v4.1.0) > April 26, 2020 -- Remove trailing whitespace [`67f1fd5e`](https://github.com/PKief/vscode-material-icon-theme/commit/67f1fd5e) -- Run linter with GitHub actions [`95671146`](https://github.com/PKief/vscode-material-icon-theme/commit/95671146) -- Update apollo file icon (References #695) [`f4626d9a`](https://github.com/PKief/vscode-material-icon-theme/commit/f4626d9a) -- Align nrwl icon [`574ab087`](https://github.com/PKief/vscode-material-icon-theme/commit/574ab087) -- Add nrwl icon for nx.json [`53533461`](https://github.com/PKief/vscode-material-icon-theme/commit/53533461) -- Merge dhall file extensions from PR #570 [`f4b0e82d`](https://github.com/PKief/vscode-material-icon-theme/commit/f4b0e82d) -- Add dhall file icon (Closes #662) [`1dffab95`](https://github.com/PKief/vscode-material-icon-theme/commit/1dffab95) -- Update commitlint icon [`84296617`](https://github.com/PKief/vscode-material-icon-theme/commit/84296617) -- Add commitlint file icon (Closes #638) [`3bcf866e`](https://github.com/PKief/vscode-material-icon-theme/commit/3bcf866e) -- Finalize UML file icon (References #392) [`ce05042f`](https://github.com/PKief/vscode-material-icon-theme/commit/ce05042f) -- Update laravel file icon (References #637) [`d001f34c`](https://github.com/PKief/vscode-material-icon-theme/commit/d001f34c) -- Add ipa file extension to applescript icon [`6bac54dc`](https://github.com/PKief/vscode-material-icon-theme/commit/6bac54dc) -- Add perl icon to *.raku files (Closes #668) [`7d324df9`](https://github.com/PKief/vscode-material-icon-theme/commit/7d324df9) -- Add buck file icon [`d5ef0310`](https://github.com/PKief/vscode-material-icon-theme/commit/d5ef0310) -- Update folderIcons.png [`45d8bcdc`](https://github.com/PKief/vscode-material-icon-theme/commit/45d8bcdc) -- Update folderIcons.ts [`3edb5c8b`](https://github.com/PKief/vscode-material-icon-theme/commit/3edb5c8b) -- Update folderIcons.ts [`1cd705a6`](https://github.com/PKief/vscode-material-icon-theme/commit/1cd705a6) -- Delete folder-emails.svg [`825cdccc`](https://github.com/PKief/vscode-material-icon-theme/commit/825cdccc) -- Delete folder-emails-open.svg [`cc273e9c`](https://github.com/PKief/vscode-material-icon-theme/commit/cc273e9c) -- Fix django file extension association (Fixes #693) [`f3381211`](https://github.com/PKief/vscode-material-icon-theme/commit/f3381211) -- Update laravel.svg [`abc5b065`](https://github.com/PKief/vscode-material-icon-theme/commit/abc5b065) -- Add "common" as an alias for "shared" [`19d2ac9e`](https://github.com/PKief/vscode-material-icon-theme/commit/19d2ac9e) -- added apollo config icon [`af7736f7`](https://github.com/PKief/vscode-material-icon-theme/commit/af7736f7) -- Add folder email icons [`f7660c0e`](https://github.com/PKief/vscode-material-icon-theme/commit/f7660c0e) -- Update fileIcons.ts [`18f251ee`](https://github.com/PKief/vscode-material-icon-theme/commit/18f251ee) -- Update rollup file icon [`e607049b`](https://github.com/PKief/vscode-material-icon-theme/commit/e607049b) -- Add l10n folder icon (abr. localization) [`c40f9160`](https://github.com/PKief/vscode-material-icon-theme/commit/c40f9160) -- Add Routers folder name to routers [`88a6c624`](https://github.com/PKief/vscode-material-icon-theme/commit/88a6c624) -- Slightly reduce size of meson file icon (References #678) [`6ca0ff6e`](https://github.com/PKief/vscode-material-icon-theme/commit/6ca0ff6e) -- Add margin on all sides [`2acb80a8`](https://github.com/PKief/vscode-material-icon-theme/commit/2acb80a8) -- Apply material color and fix transparency [`4861d90d`](https://github.com/PKief/vscode-material-icon-theme/commit/4861d90d) -- Remove file extension 'build' to make it specific to meson.build filename [`61d18566`](https://github.com/PKief/vscode-material-icon-theme/commit/61d18566) -- Add firebase folder icon (Closes #555) [`cafcc5ce`](https://github.com/PKief/vscode-material-icon-theme/commit/cafcc5ce) -- Update firebase file icon (References #555) [`bfb172ad`](https://github.com/PKief/vscode-material-icon-theme/commit/bfb172ad) -- Add meson icon [`a2a442da`](https://github.com/PKief/vscode-material-icon-theme/commit/a2a442da) -- Fix dependency issue to vscode in preview script [`9831f58f`](https://github.com/PKief/vscode-material-icon-theme/commit/9831f58f) -- Update Adonis file icon (References #658) [`1034fd45`](https://github.com/PKief/vscode-material-icon-theme/commit/1034fd45) -- Add more associations for functions folder icon [`79ffcabb`](https://github.com/PKief/vscode-material-icon-theme/commit/79ffcabb) -- Add .devcontainer folder icon association [`548928b0`](https://github.com/PKief/vscode-material-icon-theme/commit/548928b0) -- Remove unnecessary file names [`1f04fd4e`](https://github.com/PKief/vscode-material-icon-theme/commit/1f04fd4e) -- Remove unused code [`40881707`](https://github.com/PKief/vscode-material-icon-theme/commit/40881707) -- Refactor code [`a133ab0c`](https://github.com/PKief/vscode-material-icon-theme/commit/a133ab0c) -- Refactor code with nullish coalescing and optional chaining [`e4920f5a`](https://github.com/PKief/vscode-material-icon-theme/commit/e4920f5a) -- Bump acorn from 6.4.0 to 6.4.1 [`1ef5eb6f`](https://github.com/PKief/vscode-material-icon-theme/commit/1ef5eb6f) -- Update container folder icon [`7c5a5d62`](https://github.com/PKief/vscode-material-icon-theme/commit/7c5a5d62) -- Add json file extension to babel file association [`3d0be815`](https://github.com/PKief/vscode-material-icon-theme/commit/3d0be815) -- Add stencil folder icon (Closes #659) [`8f31e309`](https://github.com/PKief/vscode-material-icon-theme/commit/8f31e309) -- Update stencil file icon (references #659) [`3e8f10f6`](https://github.com/PKief/vscode-material-icon-theme/commit/3e8f10f6) -- Add icon to fileicons [`b6c065ac`](https://github.com/PKief/vscode-material-icon-theme/commit/b6c065ac) -- [Icon Request] AdonisJs icon [`a85a4676`](https://github.com/PKief/vscode-material-icon-theme/commit/a85a4676) -- Add Dhall icon [`2ca9a8f0`](https://github.com/PKief/vscode-material-icon-theme/commit/2ca9a8f0) -- Remove comment [`3c52d453`](https://github.com/PKief/vscode-material-icon-theme/commit/3c52d453) -- Add UML icon [`173e35ec`](https://github.com/PKief/vscode-material-icon-theme/commit/173e35ec) - -#### [v4.0.1](https://github.com/PKief/vscode-material-icon-theme/compare/v4.0.0...v4.0.1) +- Remove trailing whitespace [`67f1fd5e`](https://github.com/material-extensions/vscode-material-icon-theme/commit/67f1fd5e) +- Run linter with GitHub actions [`95671146`](https://github.com/material-extensions/vscode-material-icon-theme/commit/95671146) +- Update apollo file icon (References #695) [`f4626d9a`](https://github.com/material-extensions/vscode-material-icon-theme/commit/f4626d9a) +- Align nrwl icon [`574ab087`](https://github.com/material-extensions/vscode-material-icon-theme/commit/574ab087) +- Add nrwl icon for nx.json [`53533461`](https://github.com/material-extensions/vscode-material-icon-theme/commit/53533461) +- Merge dhall file extensions from PR #570 [`f4b0e82d`](https://github.com/material-extensions/vscode-material-icon-theme/commit/f4b0e82d) +- Add dhall file icon (Closes #662) [`1dffab95`](https://github.com/material-extensions/vscode-material-icon-theme/commit/1dffab95) +- Update commitlint icon [`84296617`](https://github.com/material-extensions/vscode-material-icon-theme/commit/84296617) +- Add commitlint file icon (Closes #638) [`3bcf866e`](https://github.com/material-extensions/vscode-material-icon-theme/commit/3bcf866e) +- Finalize UML file icon (References #392) [`ce05042f`](https://github.com/material-extensions/vscode-material-icon-theme/commit/ce05042f) +- Update laravel file icon (References #637) [`d001f34c`](https://github.com/material-extensions/vscode-material-icon-theme/commit/d001f34c) +- Add ipa file extension to applescript icon [`6bac54dc`](https://github.com/material-extensions/vscode-material-icon-theme/commit/6bac54dc) +- Add perl icon to *.raku files (Closes #668) [`7d324df9`](https://github.com/material-extensions/vscode-material-icon-theme/commit/7d324df9) +- Add buck file icon [`d5ef0310`](https://github.com/material-extensions/vscode-material-icon-theme/commit/d5ef0310) +- Update folderIcons.png [`45d8bcdc`](https://github.com/material-extensions/vscode-material-icon-theme/commit/45d8bcdc) +- Update folderIcons.ts [`3edb5c8b`](https://github.com/material-extensions/vscode-material-icon-theme/commit/3edb5c8b) +- Update folderIcons.ts [`1cd705a6`](https://github.com/material-extensions/vscode-material-icon-theme/commit/1cd705a6) +- Delete folder-emails.svg [`825cdccc`](https://github.com/material-extensions/vscode-material-icon-theme/commit/825cdccc) +- Delete folder-emails-open.svg [`cc273e9c`](https://github.com/material-extensions/vscode-material-icon-theme/commit/cc273e9c) +- Fix django file extension association (Fixes #693) [`f3381211`](https://github.com/material-extensions/vscode-material-icon-theme/commit/f3381211) +- Update laravel.svg [`abc5b065`](https://github.com/material-extensions/vscode-material-icon-theme/commit/abc5b065) +- Add "common" as an alias for "shared" [`19d2ac9e`](https://github.com/material-extensions/vscode-material-icon-theme/commit/19d2ac9e) +- added apollo config icon [`af7736f7`](https://github.com/material-extensions/vscode-material-icon-theme/commit/af7736f7) +- Add folder email icons [`f7660c0e`](https://github.com/material-extensions/vscode-material-icon-theme/commit/f7660c0e) +- Update fileIcons.ts [`18f251ee`](https://github.com/material-extensions/vscode-material-icon-theme/commit/18f251ee) +- Update rollup file icon [`e607049b`](https://github.com/material-extensions/vscode-material-icon-theme/commit/e607049b) +- Add l10n folder icon (abr. localization) [`c40f9160`](https://github.com/material-extensions/vscode-material-icon-theme/commit/c40f9160) +- Add Routers folder name to routers [`88a6c624`](https://github.com/material-extensions/vscode-material-icon-theme/commit/88a6c624) +- Slightly reduce size of meson file icon (References #678) [`6ca0ff6e`](https://github.com/material-extensions/vscode-material-icon-theme/commit/6ca0ff6e) +- Add margin on all sides [`2acb80a8`](https://github.com/material-extensions/vscode-material-icon-theme/commit/2acb80a8) +- Apply material color and fix transparency [`4861d90d`](https://github.com/material-extensions/vscode-material-icon-theme/commit/4861d90d) +- Remove file extension 'build' to make it specific to meson.build filename [`61d18566`](https://github.com/material-extensions/vscode-material-icon-theme/commit/61d18566) +- Add firebase folder icon (Closes #555) [`cafcc5ce`](https://github.com/material-extensions/vscode-material-icon-theme/commit/cafcc5ce) +- Update firebase file icon (References #555) [`bfb172ad`](https://github.com/material-extensions/vscode-material-icon-theme/commit/bfb172ad) +- Add meson icon [`a2a442da`](https://github.com/material-extensions/vscode-material-icon-theme/commit/a2a442da) +- Fix dependency issue to vscode in preview script [`9831f58f`](https://github.com/material-extensions/vscode-material-icon-theme/commit/9831f58f) +- Update Adonis file icon (References #658) [`1034fd45`](https://github.com/material-extensions/vscode-material-icon-theme/commit/1034fd45) +- Add more associations for functions folder icon [`79ffcabb`](https://github.com/material-extensions/vscode-material-icon-theme/commit/79ffcabb) +- Add .devcontainer folder icon association [`548928b0`](https://github.com/material-extensions/vscode-material-icon-theme/commit/548928b0) +- Remove unnecessary file names [`1f04fd4e`](https://github.com/material-extensions/vscode-material-icon-theme/commit/1f04fd4e) +- Remove unused code [`40881707`](https://github.com/material-extensions/vscode-material-icon-theme/commit/40881707) +- Refactor code [`a133ab0c`](https://github.com/material-extensions/vscode-material-icon-theme/commit/a133ab0c) +- Refactor code with nullish coalescing and optional chaining [`e4920f5a`](https://github.com/material-extensions/vscode-material-icon-theme/commit/e4920f5a) +- Bump acorn from 6.4.0 to 6.4.1 [`1ef5eb6f`](https://github.com/material-extensions/vscode-material-icon-theme/commit/1ef5eb6f) +- Update container folder icon [`7c5a5d62`](https://github.com/material-extensions/vscode-material-icon-theme/commit/7c5a5d62) +- Add json file extension to babel file association [`3d0be815`](https://github.com/material-extensions/vscode-material-icon-theme/commit/3d0be815) +- Add stencil folder icon (Closes #659) [`8f31e309`](https://github.com/material-extensions/vscode-material-icon-theme/commit/8f31e309) +- Update stencil file icon (references #659) [`3e8f10f6`](https://github.com/material-extensions/vscode-material-icon-theme/commit/3e8f10f6) +- Add icon to fileicons [`b6c065ac`](https://github.com/material-extensions/vscode-material-icon-theme/commit/b6c065ac) +- [Icon Request] AdonisJs icon [`a85a4676`](https://github.com/material-extensions/vscode-material-icon-theme/commit/a85a4676) +- Add Dhall icon [`2ca9a8f0`](https://github.com/material-extensions/vscode-material-icon-theme/commit/2ca9a8f0) +- Remove comment [`3c52d453`](https://github.com/material-extensions/vscode-material-icon-theme/commit/3c52d453) +- Add UML icon [`173e35ec`](https://github.com/material-extensions/vscode-material-icon-theme/commit/173e35ec) + +#### [v4.0.1](https://github.com/material-extensions/vscode-material-icon-theme/compare/v4.0.0...v4.0.1) > March 1, 2020 -- Do not ignore CHANGELOG.md [`0a6fcf55`](https://github.com/PKief/vscode-material-icon-theme/commit/0a6fcf55) +- Do not ignore CHANGELOG.md [`0a6fcf55`](https://github.com/material-extensions/vscode-material-icon-theme/commit/0a6fcf55) -#### [v4.0.0](https://github.com/PKief/vscode-material-icon-theme/compare/v3.9.3...v4.0.0) +#### [v4.0.0](https://github.com/material-extensions/vscode-material-icon-theme/compare/v3.9.3...v4.0.0) > March 1, 2020 -- Ignore files to reduce extension size [`d9a6be01`](https://github.com/PKief/vscode-material-icon-theme/commit/d9a6be01) -- Remove unused imports [`196293aa`](https://github.com/PKief/vscode-material-icon-theme/commit/196293aa) -- Remove outdated versioning support [`30d19cb1`](https://github.com/PKief/vscode-material-icon-theme/commit/30d19cb1) -- Add Sketch icon [`32f3e1d9`](https://github.com/PKief/vscode-material-icon-theme/commit/32f3e1d9) -- Update Ruby icon [`f533d23f`](https://github.com/PKief/vscode-material-icon-theme/commit/f533d23f) -- Remove open dependency (Closes #386) [`c41ca8bd`](https://github.com/PKief/vscode-material-icon-theme/commit/c41ca8bd) -- Add "workspace" to extensionKind [`9f413ea0`](https://github.com/PKief/vscode-material-icon-theme/commit/9f413ea0) -- Improve test setup and fix tests [`91b89d22`](https://github.com/PKief/vscode-material-icon-theme/commit/91b89d22) -- Fix test [`fd1b62e2`](https://github.com/PKief/vscode-material-icon-theme/commit/fd1b62e2) -- Rename method for better semantic [`5cae039d`](https://github.com/PKief/vscode-material-icon-theme/commit/5cae039d) -- Add capacitor icon [`a2274907`](https://github.com/PKief/vscode-material-icon-theme/commit/a2274907) -- Prompt to reload dialog is not required anymore for the latest version [`696f0c0a`](https://github.com/PKief/vscode-material-icon-theme/commit/696f0c0a) -- Handle overwriting conflicts with icon generator [`7cd213b7`](https://github.com/PKief/vscode-material-icon-theme/commit/7cd213b7) -- Append hash value to icon file name if content changes [`33a238ac`](https://github.com/PKief/vscode-material-icon-theme/commit/33a238ac) -- Remove side effects of getObjectPropertyValue method [`c803b434`](https://github.com/PKief/vscode-material-icon-theme/commit/c803b434) -- Refactor code [`44f00310`](https://github.com/PKief/vscode-material-icon-theme/commit/44f00310) -- Add husky filename [`be1737ab`](https://github.com/PKief/vscode-material-icon-theme/commit/be1737ab) -- Add azure-pipeline icon to files ending with *.azure-pipelines.yaml [`57d67e88`](https://github.com/PKief/vscode-material-icon-theme/commit/57d67e88) -- Remove outdated build action of NodeJS v8 [`cfda11ef`](https://github.com/PKief/vscode-material-icon-theme/commit/cfda11ef) -- Add ESLint rules [`a850dda5`](https://github.com/PKief/vscode-material-icon-theme/commit/a850dda5) -- Add VSCode extension recommendations [`96fe5fec`](https://github.com/PKief/vscode-material-icon-theme/commit/96fe5fec) -- Apply ESLint rules [`970544c5`](https://github.com/PKief/vscode-material-icon-theme/commit/970544c5) -- Migrate from TSLint to ESLint [`cd9930f5`](https://github.com/PKief/vscode-material-icon-theme/commit/cd9930f5) -- Add coconut icon (Closes #500) [`f76109ba`](https://github.com/PKief/vscode-material-icon-theme/commit/f76109ba) - -#### [v3.9.3](https://github.com/PKief/vscode-material-icon-theme/compare/v3.9.2...v3.9.3) +- Ignore files to reduce extension size [`d9a6be01`](https://github.com/material-extensions/vscode-material-icon-theme/commit/d9a6be01) +- Remove unused imports [`196293aa`](https://github.com/material-extensions/vscode-material-icon-theme/commit/196293aa) +- Remove outdated versioning support [`30d19cb1`](https://github.com/material-extensions/vscode-material-icon-theme/commit/30d19cb1) +- Add Sketch icon [`32f3e1d9`](https://github.com/material-extensions/vscode-material-icon-theme/commit/32f3e1d9) +- Update Ruby icon [`f533d23f`](https://github.com/material-extensions/vscode-material-icon-theme/commit/f533d23f) +- Remove open dependency (Closes #386) [`c41ca8bd`](https://github.com/material-extensions/vscode-material-icon-theme/commit/c41ca8bd) +- Add "workspace" to extensionKind [`9f413ea0`](https://github.com/material-extensions/vscode-material-icon-theme/commit/9f413ea0) +- Improve test setup and fix tests [`91b89d22`](https://github.com/material-extensions/vscode-material-icon-theme/commit/91b89d22) +- Fix test [`fd1b62e2`](https://github.com/material-extensions/vscode-material-icon-theme/commit/fd1b62e2) +- Rename method for better semantic [`5cae039d`](https://github.com/material-extensions/vscode-material-icon-theme/commit/5cae039d) +- Add capacitor icon [`a2274907`](https://github.com/material-extensions/vscode-material-icon-theme/commit/a2274907) +- Prompt to reload dialog is not required anymore for the latest version [`696f0c0a`](https://github.com/material-extensions/vscode-material-icon-theme/commit/696f0c0a) +- Handle overwriting conflicts with icon generator [`7cd213b7`](https://github.com/material-extensions/vscode-material-icon-theme/commit/7cd213b7) +- Append hash value to icon file name if content changes [`33a238ac`](https://github.com/material-extensions/vscode-material-icon-theme/commit/33a238ac) +- Remove side effects of getObjectPropertyValue method [`c803b434`](https://github.com/material-extensions/vscode-material-icon-theme/commit/c803b434) +- Refactor code [`44f00310`](https://github.com/material-extensions/vscode-material-icon-theme/commit/44f00310) +- Add husky filename [`be1737ab`](https://github.com/material-extensions/vscode-material-icon-theme/commit/be1737ab) +- Add azure-pipeline icon to files ending with *.azure-pipelines.yaml [`57d67e88`](https://github.com/material-extensions/vscode-material-icon-theme/commit/57d67e88) +- Remove outdated build action of NodeJS v8 [`cfda11ef`](https://github.com/material-extensions/vscode-material-icon-theme/commit/cfda11ef) +- Add ESLint rules [`a850dda5`](https://github.com/material-extensions/vscode-material-icon-theme/commit/a850dda5) +- Add VSCode extension recommendations [`96fe5fec`](https://github.com/material-extensions/vscode-material-icon-theme/commit/96fe5fec) +- Apply ESLint rules [`970544c5`](https://github.com/material-extensions/vscode-material-icon-theme/commit/970544c5) +- Migrate from TSLint to ESLint [`cd9930f5`](https://github.com/material-extensions/vscode-material-icon-theme/commit/cd9930f5) +- Add coconut icon (Closes #500) [`f76109ba`](https://github.com/material-extensions/vscode-material-icon-theme/commit/f76109ba) + +#### [v3.9.3](https://github.com/material-extensions/vscode-material-icon-theme/compare/v3.9.2...v3.9.3) > February 9, 2020 -- Use CSS variable for background color [`be33e5df`](https://github.com/PKief/vscode-material-icon-theme/commit/be33e5df) -- Update header and badges in Readme [`55aefa56`](https://github.com/PKief/vscode-material-icon-theme/commit/55aefa56) -- Add husky icon (Closes #355) [`d98e55d3`](https://github.com/PKief/vscode-material-icon-theme/commit/d98e55d3) -- Add prolog icon (Closes #519) [`17dd6e5c`](https://github.com/PKief/vscode-material-icon-theme/commit/17dd6e5c) -- Improve zig SVG icon file [`febfebd3`](https://github.com/PKief/vscode-material-icon-theme/commit/febfebd3) -- Add support for .env.staging.local file [`afa3dd8f`](https://github.com/PKief/vscode-material-icon-theme/commit/afa3dd8f) -- Add prolog icon [`d28d2adf`](https://github.com/PKief/vscode-material-icon-theme/commit/d28d2adf) -- Change font of Q# icon [`bec61068`](https://github.com/PKief/vscode-material-icon-theme/commit/bec61068) -- Add tune icon to qa env file [`8bcfd3eb`](https://github.com/PKief/vscode-material-icon-theme/commit/8bcfd3eb) -- Add mobile folder (Closes #605) [`ab022cc8`](https://github.com/PKief/vscode-material-icon-theme/commit/ab022cc8) -- Add icon association for .yarnrc.yml [`96b6990e`](https://github.com/PKief/vscode-material-icon-theme/commit/96b6990e) -- Add pug icon to pug lint files [`af561d4c`](https://github.com/PKief/vscode-material-icon-theme/commit/af561d4c) -- Add webpack.production and webpack.development to webpack detection [`2afed011`](https://github.com/PKief/vscode-material-icon-theme/commit/2afed011) -- #594 Minimize icon size [`cd8110d3`](https://github.com/PKief/vscode-material-icon-theme/commit/cd8110d3) -- updade from shopify to liquid [`50996ee7`](https://github.com/PKief/vscode-material-icon-theme/commit/50996ee7) -- Add zig icon [`3df31148`](https://github.com/PKief/vscode-material-icon-theme/commit/3df31148) -- Add Q# icon [`509387c2`](https://github.com/PKief/vscode-material-icon-theme/commit/509387c2) -- Set json5 icon to json icon [`cba9f085`](https://github.com/PKief/vscode-material-icon-theme/commit/cba9f085) -- Added ".env.sample" to the Tune icon [`4d329433`](https://github.com/PKief/vscode-material-icon-theme/commit/4d329433) -- Map azure-pipelines.yaml to azure-pipelines [`f00c2395`](https://github.com/PKief/vscode-material-icon-theme/commit/f00c2395) -- Add Shopify .liquid file icon [`aabfaaf6`](https://github.com/PKief/vscode-material-icon-theme/commit/aabfaaf6) -- Update kl icon [`a0f013f9`](https://github.com/PKief/vscode-material-icon-theme/commit/a0f013f9) - -#### [v3.9.2](https://github.com/PKief/vscode-material-icon-theme/compare/v3.9.1...v3.9.2) +- Use CSS variable for background color [`be33e5df`](https://github.com/material-extensions/vscode-material-icon-theme/commit/be33e5df) +- Update header and badges in Readme [`55aefa56`](https://github.com/material-extensions/vscode-material-icon-theme/commit/55aefa56) +- Add husky icon (Closes #355) [`d98e55d3`](https://github.com/material-extensions/vscode-material-icon-theme/commit/d98e55d3) +- Add prolog icon (Closes #519) [`17dd6e5c`](https://github.com/material-extensions/vscode-material-icon-theme/commit/17dd6e5c) +- Improve zig SVG icon file [`febfebd3`](https://github.com/material-extensions/vscode-material-icon-theme/commit/febfebd3) +- Add support for .env.staging.local file [`afa3dd8f`](https://github.com/material-extensions/vscode-material-icon-theme/commit/afa3dd8f) +- Add prolog icon [`d28d2adf`](https://github.com/material-extensions/vscode-material-icon-theme/commit/d28d2adf) +- Change font of Q# icon [`bec61068`](https://github.com/material-extensions/vscode-material-icon-theme/commit/bec61068) +- Add tune icon to qa env file [`8bcfd3eb`](https://github.com/material-extensions/vscode-material-icon-theme/commit/8bcfd3eb) +- Add mobile folder (Closes #605) [`ab022cc8`](https://github.com/material-extensions/vscode-material-icon-theme/commit/ab022cc8) +- Add icon association for .yarnrc.yml [`96b6990e`](https://github.com/material-extensions/vscode-material-icon-theme/commit/96b6990e) +- Add pug icon to pug lint files [`af561d4c`](https://github.com/material-extensions/vscode-material-icon-theme/commit/af561d4c) +- Add webpack.production and webpack.development to webpack detection [`2afed011`](https://github.com/material-extensions/vscode-material-icon-theme/commit/2afed011) +- #594 Minimize icon size [`cd8110d3`](https://github.com/material-extensions/vscode-material-icon-theme/commit/cd8110d3) +- updade from shopify to liquid [`50996ee7`](https://github.com/material-extensions/vscode-material-icon-theme/commit/50996ee7) +- Add zig icon [`3df31148`](https://github.com/material-extensions/vscode-material-icon-theme/commit/3df31148) +- Add Q# icon [`509387c2`](https://github.com/material-extensions/vscode-material-icon-theme/commit/509387c2) +- Set json5 icon to json icon [`cba9f085`](https://github.com/material-extensions/vscode-material-icon-theme/commit/cba9f085) +- Added ".env.sample" to the Tune icon [`4d329433`](https://github.com/material-extensions/vscode-material-icon-theme/commit/4d329433) +- Map azure-pipelines.yaml to azure-pipelines [`f00c2395`](https://github.com/material-extensions/vscode-material-icon-theme/commit/f00c2395) +- Add Shopify .liquid file icon [`aabfaaf6`](https://github.com/material-extensions/vscode-material-icon-theme/commit/aabfaaf6) +- Update kl icon [`a0f013f9`](https://github.com/material-extensions/vscode-material-icon-theme/commit/a0f013f9) + +#### [v3.9.2](https://github.com/material-extensions/vscode-material-icon-theme/compare/v3.9.1...v3.9.2) > November 24, 2019 -- Update netlify fileNames with new extensions (Closes #577) [`a6a04aa3`](https://github.com/PKief/vscode-material-icon-theme/commit/a6a04aa3) -- Add file icon for .mjmlconfig [`8d29f972`](https://github.com/PKief/vscode-material-icon-theme/commit/8d29f972) -- Add Fortran icon (Closes #368) [`7c5434fa`](https://github.com/PKief/vscode-material-icon-theme/commit/7c5434fa) -- #534 Remove file extension which is already in use by another icon [`574f24ed`](https://github.com/PKief/vscode-material-icon-theme/commit/574f24ed) -- #534 Update colors and minify svg files [`59159624`](https://github.com/PKief/vscode-material-icon-theme/commit/59159624) -- #534 Add file extensions to prw [`221ce960`](https://github.com/PKief/vscode-material-icon-theme/commit/221ce960) -- Revert "Add MSIX to executable icon definition" [`91be037d`](https://github.com/PKief/vscode-material-icon-theme/commit/91be037d) -- Add MSIX to executable icon definition [`ced792c1`](https://github.com/PKief/vscode-material-icon-theme/commit/ced792c1) -- Add various 3D format [`8eebd043`](https://github.com/PKief/vscode-material-icon-theme/commit/8eebd043) -- Add various raster image format [`7a474aa0`](https://github.com/PKief/vscode-material-icon-theme/commit/7a474aa0) -- Add githooks folder icon [`b5047d71`](https://github.com/PKief/vscode-material-icon-theme/commit/b5047d71) -- Add disc (*.iso) icon [`3b08b211`](https://github.com/PKief/vscode-material-icon-theme/commit/3b08b211) -- #537 Update codecov icon [`d057456f`](https://github.com/PKief/vscode-material-icon-theme/commit/d057456f) -- Add router folder name (Closes #564) [`dd80a8f5`](https://github.com/PKief/vscode-material-icon-theme/commit/dd80a8f5) -- Add .env.testing [`76fb3361`](https://github.com/PKief/vscode-material-icon-theme/commit/76fb3361) -- Add GCP icon (Closes #556) [`3ed2c9fc`](https://github.com/PKief/vscode-material-icon-theme/commit/3ed2c9fc) -- Add apk file extension for android [`00ae57a7`](https://github.com/PKief/vscode-material-icon-theme/commit/00ae57a7) -- #543 Update JSON folder icon [`50207177`](https://github.com/PKief/vscode-material-icon-theme/commit/50207177) -- Add file icon for CODEOWNERS [`bff275cb`](https://github.com/PKief/vscode-material-icon-theme/commit/bff275cb) -- add - icon : json folder [`96a2e9cf`](https://github.com/PKief/vscode-material-icon-theme/commit/96a2e9cf) -- add codecov icon [`4eabe245`](https://github.com/PKief/vscode-material-icon-theme/commit/4eabe245) -- added icons for advpl projects [`d9fd5426`](https://github.com/PKief/vscode-material-icon-theme/commit/d9fd5426) - -#### [v3.9.1](https://github.com/PKief/vscode-material-icon-theme/compare/v3.9.0...v3.9.1) +- Update netlify fileNames with new extensions (Closes #577) [`a6a04aa3`](https://github.com/material-extensions/vscode-material-icon-theme/commit/a6a04aa3) +- Add file icon for .mjmlconfig [`8d29f972`](https://github.com/material-extensions/vscode-material-icon-theme/commit/8d29f972) +- Add Fortran icon (Closes #368) [`7c5434fa`](https://github.com/material-extensions/vscode-material-icon-theme/commit/7c5434fa) +- #534 Remove file extension which is already in use by another icon [`574f24ed`](https://github.com/material-extensions/vscode-material-icon-theme/commit/574f24ed) +- #534 Update colors and minify svg files [`59159624`](https://github.com/material-extensions/vscode-material-icon-theme/commit/59159624) +- #534 Add file extensions to prw [`221ce960`](https://github.com/material-extensions/vscode-material-icon-theme/commit/221ce960) +- Revert "Add MSIX to executable icon definition" [`91be037d`](https://github.com/material-extensions/vscode-material-icon-theme/commit/91be037d) +- Add MSIX to executable icon definition [`ced792c1`](https://github.com/material-extensions/vscode-material-icon-theme/commit/ced792c1) +- Add various 3D format [`8eebd043`](https://github.com/material-extensions/vscode-material-icon-theme/commit/8eebd043) +- Add various raster image format [`7a474aa0`](https://github.com/material-extensions/vscode-material-icon-theme/commit/7a474aa0) +- Add githooks folder icon [`b5047d71`](https://github.com/material-extensions/vscode-material-icon-theme/commit/b5047d71) +- Add disc (*.iso) icon [`3b08b211`](https://github.com/material-extensions/vscode-material-icon-theme/commit/3b08b211) +- #537 Update codecov icon [`d057456f`](https://github.com/material-extensions/vscode-material-icon-theme/commit/d057456f) +- Add router folder name (Closes #564) [`dd80a8f5`](https://github.com/material-extensions/vscode-material-icon-theme/commit/dd80a8f5) +- Add .env.testing [`76fb3361`](https://github.com/material-extensions/vscode-material-icon-theme/commit/76fb3361) +- Add GCP icon (Closes #556) [`3ed2c9fc`](https://github.com/material-extensions/vscode-material-icon-theme/commit/3ed2c9fc) +- Add apk file extension for android [`00ae57a7`](https://github.com/material-extensions/vscode-material-icon-theme/commit/00ae57a7) +- #543 Update JSON folder icon [`50207177`](https://github.com/material-extensions/vscode-material-icon-theme/commit/50207177) +- Add file icon for CODEOWNERS [`bff275cb`](https://github.com/material-extensions/vscode-material-icon-theme/commit/bff275cb) +- add - icon : json folder [`96a2e9cf`](https://github.com/material-extensions/vscode-material-icon-theme/commit/96a2e9cf) +- add codecov icon [`4eabe245`](https://github.com/material-extensions/vscode-material-icon-theme/commit/4eabe245) +- added icons for advpl projects [`d9fd5426`](https://github.com/material-extensions/vscode-material-icon-theme/commit/d9fd5426) + +#### [v3.9.1](https://github.com/material-extensions/vscode-material-icon-theme/compare/v3.9.0...v3.9.1) > October 7, 2019 -- Fix #547 - Create image of contributors profile image list [`088fc539`](https://github.com/PKief/vscode-material-icon-theme/commit/088fc539) -- Update build workflow to support pull requests [`534737b2`](https://github.com/PKief/vscode-material-icon-theme/commit/534737b2) -- Fixes #548 - Exception thrown when using Japanese display language [`16757906`](https://github.com/PKief/vscode-material-icon-theme/commit/16757906) -- Add more jest extensions [`611be50a`](https://github.com/PKief/vscode-material-icon-theme/commit/611be50a) -- Create build.yml [`c4acbbb2`](https://github.com/PKief/vscode-material-icon-theme/commit/c4acbbb2) -- Add types for glob [`2cf7c89e`](https://github.com/PKief/vscode-material-icon-theme/commit/2cf7c89e) -- Add "databases" to "database" folder names [`3ee46c8c`](https://github.com/PKief/vscode-material-icon-theme/commit/3ee46c8c) -- Add build.yml [`a4291642`](https://github.com/PKief/vscode-material-icon-theme/commit/a4291642) +- Fix #547 - Create image of contributors profile image list [`088fc539`](https://github.com/material-extensions/vscode-material-icon-theme/commit/088fc539) +- Update build workflow to support pull requests [`534737b2`](https://github.com/material-extensions/vscode-material-icon-theme/commit/534737b2) +- Fixes #548 - Exception thrown when using Japanese display language [`16757906`](https://github.com/material-extensions/vscode-material-icon-theme/commit/16757906) +- Add more jest extensions [`611be50a`](https://github.com/material-extensions/vscode-material-icon-theme/commit/611be50a) +- Create build.yml [`c4acbbb2`](https://github.com/material-extensions/vscode-material-icon-theme/commit/c4acbbb2) +- Add types for glob [`2cf7c89e`](https://github.com/material-extensions/vscode-material-icon-theme/commit/2cf7c89e) +- Add "databases" to "database" folder names [`3ee46c8c`](https://github.com/material-extensions/vscode-material-icon-theme/commit/3ee46c8c) +- Add build.yml [`a4291642`](https://github.com/material-extensions/vscode-material-icon-theme/commit/a4291642) -#### [v3.9.0](https://github.com/PKief/vscode-material-icon-theme/compare/v3.8.1...v3.9.0) +#### [v3.9.0](https://github.com/material-extensions/vscode-material-icon-theme/compare/v3.8.1...v3.9.0) > August 29, 2019 -- Improve code quality of contributors script [`c8b9a4fb`](https://github.com/PKief/vscode-material-icon-theme/commit/c8b9a4fb) -- Improve logging of check script [`2e2bb343`](https://github.com/PKief/vscode-material-icon-theme/commit/2e2bb343) -- #514 Update color of event folder [`64a7a680`](https://github.com/PKief/vscode-material-icon-theme/commit/64a7a680) -- Add e2e-spec file extension [`00967715`](https://github.com/PKief/vscode-material-icon-theme/commit/00967715) -- #501 Update colors of nest and nest module icons [`52ad75c1`](https://github.com/PKief/vscode-material-icon-theme/commit/52ad75c1) -- #501 Sort enum alphabetically [`bcb29b2f`](https://github.com/PKief/vscode-material-icon-theme/commit/bcb29b2f) -- #501 Update NestJS icons [`a5cf20f1`](https://github.com/PKief/vscode-material-icon-theme/commit/a5cf20f1) -- #520 Remove unused function [`676cda1e`](https://github.com/PKief/vscode-material-icon-theme/commit/676cda1e) -- Add bazel file names [`0558790c`](https://github.com/PKief/vscode-material-icon-theme/commit/0558790c) -- Remove appveyor build badge [`c66742a6`](https://github.com/PKief/vscode-material-icon-theme/commit/c66742a6) -- Added AC3D (.ac) file icon. [`e966f687`](https://github.com/PKief/vscode-material-icon-theme/commit/e966f687) -- Add gitpod file icon [`3c68d3b4`](https://github.com/PKief/vscode-material-icon-theme/commit/3c68d3b4) -- #497 Update riot icon [`b458e50a`](https://github.com/PKief/vscode-material-icon-theme/commit/b458e50a) -- feat: Add `env` to environment folder list [`d279abd2`](https://github.com/PKief/vscode-material-icon-theme/commit/d279abd2) -- feat: Add folder-event icon [`d61d82be`](https://github.com/PKief/vscode-material-icon-theme/commit/d61d82be) -- Update dependencies [`1baf5eb0`](https://github.com/PKief/vscode-material-icon-theme/commit/1baf5eb0) -- Associate ".expo-shared" with the expo folder icon [`56c557b0`](https://github.com/PKief/vscode-material-icon-theme/commit/56c557b0) -- Add inl file extension [`cc717489`](https://github.com/PKief/vscode-material-icon-theme/commit/cc717489) -- Add percy file icon (Closes #508) [`ccfd9979`](https://github.com/PKief/vscode-material-icon-theme/commit/ccfd9979) -- Update appveyor build configuration [`4f34317c`](https://github.com/PKief/vscode-material-icon-theme/commit/4f34317c) -- Remove azure pipelines [`c35be728`](https://github.com/PKief/vscode-material-icon-theme/commit/c35be728) -- Remove unused vscode dependency [`c87193ad`](https://github.com/PKief/vscode-material-icon-theme/commit/c87193ad) -- Add azure pipelines [`7665d279`](https://github.com/PKief/vscode-material-icon-theme/commit/7665d279) -- Update test setup [`2f1e5d12`](https://github.com/PKief/vscode-material-icon-theme/commit/2f1e5d12) -- #470 Update now icons [`5a3ff7e1`](https://github.com/PKief/vscode-material-icon-theme/commit/5a3ff7e1) -- Add jenkins file extensions [`1c36ac27`](https://github.com/PKief/vscode-material-icon-theme/commit/1c36ac27) -- NestJS Icons - add main filetypes to NestJS [`102bbad7`](https://github.com/PKief/vscode-material-icon-theme/commit/102bbad7) -- Adjust check scripts to be case insensitive (Closes #494) [`9fa2dd27`](https://github.com/PKief/vscode-material-icon-theme/commit/9fa2dd27) -- Update riot.svg [`b31fb4de`](https://github.com/PKief/vscode-material-icon-theme/commit/b31fb4de) -- add `.nowignore` to filenames [`4d861c21`](https://github.com/PKief/vscode-material-icon-theme/commit/4d861c21) -- use the `fileNames` attribute instead of `fileExtensions` for `now.json` [`6b21c47d`](https://github.com/PKief/vscode-material-icon-theme/commit/6b21c47d) -- fix now light version [`f94d8d91`](https://github.com/PKief/vscode-material-icon-theme/commit/f94d8d91) -- add now icon for `now.json` [`f96527d6`](https://github.com/PKief/vscode-material-icon-theme/commit/f96527d6) - -#### [v3.8.1](https://github.com/PKief/vscode-material-icon-theme/compare/v3.8.0...v3.8.1) +- Improve code quality of contributors script [`c8b9a4fb`](https://github.com/material-extensions/vscode-material-icon-theme/commit/c8b9a4fb) +- Improve logging of check script [`2e2bb343`](https://github.com/material-extensions/vscode-material-icon-theme/commit/2e2bb343) +- #514 Update color of event folder [`64a7a680`](https://github.com/material-extensions/vscode-material-icon-theme/commit/64a7a680) +- Add e2e-spec file extension [`00967715`](https://github.com/material-extensions/vscode-material-icon-theme/commit/00967715) +- #501 Update colors of nest and nest module icons [`52ad75c1`](https://github.com/material-extensions/vscode-material-icon-theme/commit/52ad75c1) +- #501 Sort enum alphabetically [`bcb29b2f`](https://github.com/material-extensions/vscode-material-icon-theme/commit/bcb29b2f) +- #501 Update NestJS icons [`a5cf20f1`](https://github.com/material-extensions/vscode-material-icon-theme/commit/a5cf20f1) +- #520 Remove unused function [`676cda1e`](https://github.com/material-extensions/vscode-material-icon-theme/commit/676cda1e) +- Add bazel file names [`0558790c`](https://github.com/material-extensions/vscode-material-icon-theme/commit/0558790c) +- Remove appveyor build badge [`c66742a6`](https://github.com/material-extensions/vscode-material-icon-theme/commit/c66742a6) +- Added AC3D (.ac) file icon. [`e966f687`](https://github.com/material-extensions/vscode-material-icon-theme/commit/e966f687) +- Add gitpod file icon [`3c68d3b4`](https://github.com/material-extensions/vscode-material-icon-theme/commit/3c68d3b4) +- #497 Update riot icon [`b458e50a`](https://github.com/material-extensions/vscode-material-icon-theme/commit/b458e50a) +- feat: Add `env` to environment folder list [`d279abd2`](https://github.com/material-extensions/vscode-material-icon-theme/commit/d279abd2) +- feat: Add folder-event icon [`d61d82be`](https://github.com/material-extensions/vscode-material-icon-theme/commit/d61d82be) +- Update dependencies [`1baf5eb0`](https://github.com/material-extensions/vscode-material-icon-theme/commit/1baf5eb0) +- Associate ".expo-shared" with the expo folder icon [`56c557b0`](https://github.com/material-extensions/vscode-material-icon-theme/commit/56c557b0) +- Add inl file extension [`cc717489`](https://github.com/material-extensions/vscode-material-icon-theme/commit/cc717489) +- Add percy file icon (Closes #508) [`ccfd9979`](https://github.com/material-extensions/vscode-material-icon-theme/commit/ccfd9979) +- Update appveyor build configuration [`4f34317c`](https://github.com/material-extensions/vscode-material-icon-theme/commit/4f34317c) +- Remove azure pipelines [`c35be728`](https://github.com/material-extensions/vscode-material-icon-theme/commit/c35be728) +- Remove unused vscode dependency [`c87193ad`](https://github.com/material-extensions/vscode-material-icon-theme/commit/c87193ad) +- Add azure pipelines [`7665d279`](https://github.com/material-extensions/vscode-material-icon-theme/commit/7665d279) +- Update test setup [`2f1e5d12`](https://github.com/material-extensions/vscode-material-icon-theme/commit/2f1e5d12) +- #470 Update now icons [`5a3ff7e1`](https://github.com/material-extensions/vscode-material-icon-theme/commit/5a3ff7e1) +- Add jenkins file extensions [`1c36ac27`](https://github.com/material-extensions/vscode-material-icon-theme/commit/1c36ac27) +- NestJS Icons - add main filetypes to NestJS [`102bbad7`](https://github.com/material-extensions/vscode-material-icon-theme/commit/102bbad7) +- Adjust check scripts to be case insensitive (Closes #494) [`9fa2dd27`](https://github.com/material-extensions/vscode-material-icon-theme/commit/9fa2dd27) +- Update riot.svg [`b31fb4de`](https://github.com/material-extensions/vscode-material-icon-theme/commit/b31fb4de) +- add `.nowignore` to filenames [`4d861c21`](https://github.com/material-extensions/vscode-material-icon-theme/commit/4d861c21) +- use the `fileNames` attribute instead of `fileExtensions` for `now.json` [`6b21c47d`](https://github.com/material-extensions/vscode-material-icon-theme/commit/6b21c47d) +- fix now light version [`f94d8d91`](https://github.com/material-extensions/vscode-material-icon-theme/commit/f94d8d91) +- add now icon for `now.json` [`f96527d6`](https://github.com/material-extensions/vscode-material-icon-theme/commit/f96527d6) + +#### [v3.8.1](https://github.com/material-extensions/vscode-material-icon-theme/compare/v3.8.0...v3.8.1) > July 17, 2019 -- #490 Update folder color and change motive icon from outline to filled icon [`6b720d9a`](https://github.com/PKief/vscode-material-icon-theme/commit/6b720d9a) -- Update dependencies [`2efaf4f6`](https://github.com/PKief/vscode-material-icon-theme/commit/2efaf4f6) -- Removing HPP [`adc80af7`](https://github.com/PKief/vscode-material-icon-theme/commit/adc80af7) -- Removing case sensitive conflicts [`8ff814d3`](https://github.com/PKief/vscode-material-icon-theme/commit/8ff814d3) -- Add moonscript icon (Closes #485) [`ad315cba`](https://github.com/PKief/vscode-material-icon-theme/commit/ad315cba) -- feat: Add jsx and tsx extensions to router icons. [`3c8e2ebe`](https://github.com/PKief/vscode-material-icon-theme/commit/3c8e2ebe) -- feat: Add folder-error to icon map [`3c2594a0`](https://github.com/PKief/vscode-material-icon-theme/commit/3c2594a0) -- feat: Create folder-error icons [`8082ab16`](https://github.com/PKief/vscode-material-icon-theme/commit/8082ab16) -- Add C/C++ cases based on GNU standards [`52f39101`](https://github.com/PKief/vscode-material-icon-theme/commit/52f39101) -- Add env file extension (Closes #484) [`ce9fcceb`](https://github.com/PKief/vscode-material-icon-theme/commit/ce9fcceb) -- Refactor code in change detection [`22966c7f`](https://github.com/PKief/vscode-material-icon-theme/commit/22966c7f) -- Add website folder icon [`a53205d3`](https://github.com/PKief/vscode-material-icon-theme/commit/a53205d3) -- Use tex icon for .dtx and .ltx files [`87af29d2`](https://github.com/PKief/vscode-material-icon-theme/commit/87af29d2) -- Add nest icon [`0212fe87`](https://github.com/PKief/vscode-material-icon-theme/commit/0212fe87) -- Update Readme.md [`80998844`](https://github.com/PKief/vscode-material-icon-theme/commit/80998844) -- #475 Update color of go mod icon [`1aeb951a`](https://github.com/PKief/vscode-material-icon-theme/commit/1aeb951a) -- Change icon name to underscore notation and removed languageIcons entry. [`bd3b0100`](https://github.com/PKief/vscode-material-icon-theme/commit/bd3b0100) -- Added go.mod and go.sum icons [`2a1afd9d`](https://github.com/PKief/vscode-material-icon-theme/commit/2a1afd9d) -- Added certificate icon to unlicense files [`2b0d0e56`](https://github.com/PKief/vscode-material-icon-theme/commit/2b0d0e56) -- #448 Add non breaking spaces to improve layout in readme [`2465eb14`](https://github.com/PKief/vscode-material-icon-theme/commit/2465eb14) -- Add PostCSS file names (Closes #461) [`0a61e12c`](https://github.com/PKief/vscode-material-icon-theme/commit/0a61e12c) -- #448 Remove whitespaces [`0b360d41`](https://github.com/PKief/vscode-material-icon-theme/commit/0b360d41) -- #448 Update readme with contributor images [`02f8712f`](https://github.com/PKief/vscode-material-icon-theme/commit/02f8712f) -- Update readme text [`441ca9f5`](https://github.com/PKief/vscode-material-icon-theme/commit/441ca9f5) -- #448 Update contributors URL [`baf2d52b`](https://github.com/PKief/vscode-material-icon-theme/commit/baf2d52b) -- #448 Create image of contributors list [`bc9a97b3`](https://github.com/PKief/vscode-material-icon-theme/commit/bc9a97b3) -- #448 Add npm script [`25089950`](https://github.com/PKief/vscode-material-icon-theme/commit/25089950) -- #448 Remove output files [`9701f532`](https://github.com/PKief/vscode-material-icon-theme/commit/9701f532) -- remove leading dot [`c8daf321`](https://github.com/PKief/vscode-material-icon-theme/commit/c8daf321) -- #448 Add contributors script [`0d4e02b5`](https://github.com/PKief/vscode-material-icon-theme/commit/0d4e02b5) -- use fileExtensions for gitlab icon [`3b2847da`](https://github.com/PKief/vscode-material-icon-theme/commit/3b2847da) -- Update vim icon color and size [`#458`](https://github.com/PKief/vscode-material-icon-theme/pull/458) -- Add icons for Brotli [`56c9d410`](https://github.com/PKief/vscode-material-icon-theme/commit/56c9d410) -- Add silverstripe icon (Closes #457) [`5b850a97`](https://github.com/PKief/vscode-material-icon-theme/commit/5b850a97) -- fix typo [`2a6bd74e`](https://github.com/PKief/vscode-material-icon-theme/commit/2a6bd74e) -- Add Vim icon [`fc4df5b0`](https://github.com/PKief/vscode-material-icon-theme/commit/fc4df5b0) -- Add nodemon file name (nodemon-debug.json) [`dcb45130`](https://github.com/PKief/vscode-material-icon-theme/commit/dcb45130) - -#### [v3.8.0](https://github.com/PKief/vscode-material-icon-theme/compare/v3.7.0...v3.8.0) +- #490 Update folder color and change motive icon from outline to filled icon [`6b720d9a`](https://github.com/material-extensions/vscode-material-icon-theme/commit/6b720d9a) +- Update dependencies [`2efaf4f6`](https://github.com/material-extensions/vscode-material-icon-theme/commit/2efaf4f6) +- Removing HPP [`adc80af7`](https://github.com/material-extensions/vscode-material-icon-theme/commit/adc80af7) +- Removing case sensitive conflicts [`8ff814d3`](https://github.com/material-extensions/vscode-material-icon-theme/commit/8ff814d3) +- Add moonscript icon (Closes #485) [`ad315cba`](https://github.com/material-extensions/vscode-material-icon-theme/commit/ad315cba) +- feat: Add jsx and tsx extensions to router icons. [`3c8e2ebe`](https://github.com/material-extensions/vscode-material-icon-theme/commit/3c8e2ebe) +- feat: Add folder-error to icon map [`3c2594a0`](https://github.com/material-extensions/vscode-material-icon-theme/commit/3c2594a0) +- feat: Create folder-error icons [`8082ab16`](https://github.com/material-extensions/vscode-material-icon-theme/commit/8082ab16) +- Add C/C++ cases based on GNU standards [`52f39101`](https://github.com/material-extensions/vscode-material-icon-theme/commit/52f39101) +- Add env file extension (Closes #484) [`ce9fcceb`](https://github.com/material-extensions/vscode-material-icon-theme/commit/ce9fcceb) +- Refactor code in change detection [`22966c7f`](https://github.com/material-extensions/vscode-material-icon-theme/commit/22966c7f) +- Add website folder icon [`a53205d3`](https://github.com/material-extensions/vscode-material-icon-theme/commit/a53205d3) +- Use tex icon for .dtx and .ltx files [`87af29d2`](https://github.com/material-extensions/vscode-material-icon-theme/commit/87af29d2) +- Add nest icon [`0212fe87`](https://github.com/material-extensions/vscode-material-icon-theme/commit/0212fe87) +- Update Readme.md [`80998844`](https://github.com/material-extensions/vscode-material-icon-theme/commit/80998844) +- #475 Update color of go mod icon [`1aeb951a`](https://github.com/material-extensions/vscode-material-icon-theme/commit/1aeb951a) +- Change icon name to underscore notation and removed languageIcons entry. [`bd3b0100`](https://github.com/material-extensions/vscode-material-icon-theme/commit/bd3b0100) +- Added go.mod and go.sum icons [`2a1afd9d`](https://github.com/material-extensions/vscode-material-icon-theme/commit/2a1afd9d) +- Added certificate icon to unlicense files [`2b0d0e56`](https://github.com/material-extensions/vscode-material-icon-theme/commit/2b0d0e56) +- #448 Add non breaking spaces to improve layout in readme [`2465eb14`](https://github.com/material-extensions/vscode-material-icon-theme/commit/2465eb14) +- Add PostCSS file names (Closes #461) [`0a61e12c`](https://github.com/material-extensions/vscode-material-icon-theme/commit/0a61e12c) +- #448 Remove whitespaces [`0b360d41`](https://github.com/material-extensions/vscode-material-icon-theme/commit/0b360d41) +- #448 Update readme with contributor images [`02f8712f`](https://github.com/material-extensions/vscode-material-icon-theme/commit/02f8712f) +- Update readme text [`441ca9f5`](https://github.com/material-extensions/vscode-material-icon-theme/commit/441ca9f5) +- #448 Update contributors URL [`baf2d52b`](https://github.com/material-extensions/vscode-material-icon-theme/commit/baf2d52b) +- #448 Create image of contributors list [`bc9a97b3`](https://github.com/material-extensions/vscode-material-icon-theme/commit/bc9a97b3) +- #448 Add npm script [`25089950`](https://github.com/material-extensions/vscode-material-icon-theme/commit/25089950) +- #448 Remove output files [`9701f532`](https://github.com/material-extensions/vscode-material-icon-theme/commit/9701f532) +- remove leading dot [`c8daf321`](https://github.com/material-extensions/vscode-material-icon-theme/commit/c8daf321) +- #448 Add contributors script [`0d4e02b5`](https://github.com/material-extensions/vscode-material-icon-theme/commit/0d4e02b5) +- use fileExtensions for gitlab icon [`3b2847da`](https://github.com/material-extensions/vscode-material-icon-theme/commit/3b2847da) +- Update vim icon color and size [`#458`](https://github.com/material-extensions/vscode-material-icon-theme/pull/458) +- Add icons for Brotli [`56c9d410`](https://github.com/material-extensions/vscode-material-icon-theme/commit/56c9d410) +- Add silverstripe icon (Closes #457) [`5b850a97`](https://github.com/material-extensions/vscode-material-icon-theme/commit/5b850a97) +- fix typo [`2a6bd74e`](https://github.com/material-extensions/vscode-material-icon-theme/commit/2a6bd74e) +- Add Vim icon [`fc4df5b0`](https://github.com/material-extensions/vscode-material-icon-theme/commit/fc4df5b0) +- Add nodemon file name (nodemon-debug.json) [`dcb45130`](https://github.com/material-extensions/vscode-material-icon-theme/commit/dcb45130) + +#### [v3.8.0](https://github.com/material-extensions/vscode-material-icon-theme/compare/v3.7.0...v3.8.0) > May 25, 2019 -- Updated translation keys [`490d2c2d`](https://github.com/PKief/vscode-material-icon-theme/commit/490d2c2d) -- Updated command names [`e59aee94`](https://github.com/PKief/vscode-material-icon-theme/commit/e59aee94) -- Improved compatibility for older versions of VS Code [`3fedead6`](https://github.com/PKief/vscode-material-icon-theme/commit/3fedead6) -- Enable hot reload for hidesExplorerArrows configuration (Closes #454) [`c65d9a69`](https://github.com/PKief/vscode-material-icon-theme/commit/c65d9a69) -- Update nuxt icons (Related to #450) [`42de81dd`](https://github.com/PKief/vscode-material-icon-theme/commit/42de81dd) -- Compress icons [`7dc5faa4`](https://github.com/PKief/vscode-material-icon-theme/commit/7dc5faa4) -- Show language icons in preview (Fixes #421) [`05bde2bd`](https://github.com/PKief/vscode-material-icon-theme/commit/05bde2bd) -- Add Polish translation [`affaca88`](https://github.com/PKief/vscode-material-icon-theme/commit/affaca88) -- Update color of netlify icon [`d6da2f1d`](https://github.com/PKief/vscode-material-icon-theme/commit/d6da2f1d) -- Updated dependencies [`443586e2`](https://github.com/PKief/vscode-material-icon-theme/commit/443586e2) -- Add directives icon [`62a52e01`](https://github.com/PKief/vscode-material-icon-theme/commit/62a52e01) -- Remove whitespace [`7f8553dc`](https://github.com/PKief/vscode-material-icon-theme/commit/7f8553dc) -- Add nuxt icons [`70f053b7`](https://github.com/PKief/vscode-material-icon-theme/commit/70f053b7) -- Updated open dependency [`dfa3c069`](https://github.com/PKief/vscode-material-icon-theme/commit/dfa3c069) -- adds .mocharc.js [`c7323071`](https://github.com/PKief/vscode-material-icon-theme/commit/c7323071) -- adds .mocharc icons [`9e8dab08`](https://github.com/PKief/vscode-material-icon-theme/commit/9e8dab08) -- Add Dutch translation. [`2789ca81`](https://github.com/PKief/vscode-material-icon-theme/commit/2789ca81) -- Set "extensionKind": "ui" to support remote development [`222f6edf`](https://github.com/PKief/vscode-material-icon-theme/commit/222f6edf) -- Added svelte file icon (Closes #439) [`22a83ed4`](https://github.com/PKief/vscode-material-icon-theme/commit/22a83ed4) -- Refactored code [`e7d12a58`](https://github.com/PKief/vscode-material-icon-theme/commit/e7d12a58) -- Added tsbuildinfo [`c408ac8b`](https://github.com/PKief/vscode-material-icon-theme/commit/c408ac8b) -- Added translations [`3e3abc7b`](https://github.com/PKief/vscode-material-icon-theme/commit/3e3abc7b) -- Updated vue icons [`3e5e7d56`](https://github.com/PKief/vscode-material-icon-theme/commit/3e5e7d56) -- Add new 'leex' extension to elixir icon. [`6c0be766`](https://github.com/PKief/vscode-material-icon-theme/commit/6c0be766) -- added tune icon to .env file names supported by Create React App [`b46932d8`](https://github.com/PKief/vscode-material-icon-theme/commit/b46932d8) -- Remove whitespace add router icon for vue theme [`1bc44dd2`](https://github.com/PKief/vscode-material-icon-theme/commit/1bc44dd2) -- Add vue and vuex_vuex theme [`fd6a171c`](https://github.com/PKief/vscode-material-icon-theme/commit/fd6a171c) -- add netlify file icon [`8960ceac`](https://github.com/PKief/vscode-material-icon-theme/commit/8960ceac) - -#### [v3.7.0](https://github.com/PKief/vscode-material-icon-theme/compare/v3.6.3...v3.7.0) +- Updated translation keys [`490d2c2d`](https://github.com/material-extensions/vscode-material-icon-theme/commit/490d2c2d) +- Updated command names [`e59aee94`](https://github.com/material-extensions/vscode-material-icon-theme/commit/e59aee94) +- Improved compatibility for older versions of VS Code [`3fedead6`](https://github.com/material-extensions/vscode-material-icon-theme/commit/3fedead6) +- Enable hot reload for hidesExplorerArrows configuration (Closes #454) [`c65d9a69`](https://github.com/material-extensions/vscode-material-icon-theme/commit/c65d9a69) +- Update nuxt icons (Related to #450) [`42de81dd`](https://github.com/material-extensions/vscode-material-icon-theme/commit/42de81dd) +- Compress icons [`7dc5faa4`](https://github.com/material-extensions/vscode-material-icon-theme/commit/7dc5faa4) +- Show language icons in preview (Fixes #421) [`05bde2bd`](https://github.com/material-extensions/vscode-material-icon-theme/commit/05bde2bd) +- Add Polish translation [`affaca88`](https://github.com/material-extensions/vscode-material-icon-theme/commit/affaca88) +- Update color of netlify icon [`d6da2f1d`](https://github.com/material-extensions/vscode-material-icon-theme/commit/d6da2f1d) +- Updated dependencies [`443586e2`](https://github.com/material-extensions/vscode-material-icon-theme/commit/443586e2) +- Add directives icon [`62a52e01`](https://github.com/material-extensions/vscode-material-icon-theme/commit/62a52e01) +- Remove whitespace [`7f8553dc`](https://github.com/material-extensions/vscode-material-icon-theme/commit/7f8553dc) +- Add nuxt icons [`70f053b7`](https://github.com/material-extensions/vscode-material-icon-theme/commit/70f053b7) +- Updated open dependency [`dfa3c069`](https://github.com/material-extensions/vscode-material-icon-theme/commit/dfa3c069) +- adds .mocharc.js [`c7323071`](https://github.com/material-extensions/vscode-material-icon-theme/commit/c7323071) +- adds .mocharc icons [`9e8dab08`](https://github.com/material-extensions/vscode-material-icon-theme/commit/9e8dab08) +- Add Dutch translation. [`2789ca81`](https://github.com/material-extensions/vscode-material-icon-theme/commit/2789ca81) +- Set "extensionKind": "ui" to support remote development [`222f6edf`](https://github.com/material-extensions/vscode-material-icon-theme/commit/222f6edf) +- Added svelte file icon (Closes #439) [`22a83ed4`](https://github.com/material-extensions/vscode-material-icon-theme/commit/22a83ed4) +- Refactored code [`e7d12a58`](https://github.com/material-extensions/vscode-material-icon-theme/commit/e7d12a58) +- Added tsbuildinfo [`c408ac8b`](https://github.com/material-extensions/vscode-material-icon-theme/commit/c408ac8b) +- Added translations [`3e3abc7b`](https://github.com/material-extensions/vscode-material-icon-theme/commit/3e3abc7b) +- Updated vue icons [`3e5e7d56`](https://github.com/material-extensions/vscode-material-icon-theme/commit/3e5e7d56) +- Add new 'leex' extension to elixir icon. [`6c0be766`](https://github.com/material-extensions/vscode-material-icon-theme/commit/6c0be766) +- added tune icon to .env file names supported by Create React App [`b46932d8`](https://github.com/material-extensions/vscode-material-icon-theme/commit/b46932d8) +- Remove whitespace add router icon for vue theme [`1bc44dd2`](https://github.com/material-extensions/vscode-material-icon-theme/commit/1bc44dd2) +- Add vue and vuex_vuex theme [`fd6a171c`](https://github.com/material-extensions/vscode-material-icon-theme/commit/fd6a171c) +- add netlify file icon [`8960ceac`](https://github.com/material-extensions/vscode-material-icon-theme/commit/8960ceac) + +#### [v3.7.0](https://github.com/material-extensions/vscode-material-icon-theme/compare/v3.6.3...v3.7.0) > March 24, 2019 -- Improved npm scripts [`85365f23`](https://github.com/PKief/vscode-material-icon-theme/commit/85365f23) -- feat: Add `.cson` and `.iced` CoffeeScript extensions [`3c3c819e`](https://github.com/PKief/vscode-material-icon-theme/commit/3c3c819e) -- Updated vscode ignore [`2863fd3f`](https://github.com/PKief/vscode-material-icon-theme/commit/2863fd3f) -- Updated vscode ignore [`5f04a9d7`](https://github.com/PKief/vscode-material-icon-theme/commit/5f04a9d7) -- Added hot reload in change detection [`bee8e0c3`](https://github.com/PKief/vscode-material-icon-theme/commit/bee8e0c3) -- Added svg folder icon (Closes #358) [`94863f0f`](https://github.com/PKief/vscode-material-icon-theme/commit/94863f0f) -- Added svg file icon (Closes #400) [`72663adf`](https://github.com/PKief/vscode-material-icon-theme/commit/72663adf) -- Updated travis-ci badge [`ba1fa2a6`](https://github.com/PKief/vscode-material-icon-theme/commit/ba1fa2a6) -- Updated generation of preview images [`d38de4e5`](https://github.com/PKief/vscode-material-icon-theme/commit/d38de4e5) -- Updated build scripts [`760b3539`](https://github.com/PKief/vscode-material-icon-theme/commit/760b3539) -- Bundle code in production mode [`9f23ebf6`](https://github.com/PKief/vscode-material-icon-theme/commit/9f23ebf6) -- Bundle extension with webpack [`6850337e`](https://github.com/PKief/vscode-material-icon-theme/commit/6850337e) -- Refactored code [`f21ca04c`](https://github.com/PKief/vscode-material-icon-theme/commit/f21ca04c) -- Added pipe folder icon (Closes #403) [`5fc86ecc`](https://github.com/PKief/vscode-material-icon-theme/commit/5fc86ecc) -- Remove extra dot [`74c48935`](https://github.com/PKief/vscode-material-icon-theme/commit/74c48935) -- Use clojure icon for .cljc files [`1295f3a5`](https://github.com/PKief/vscode-material-icon-theme/commit/1295f3a5) -- Update folderIcons.ts [`ae31aebc`](https://github.com/PKief/vscode-material-icon-theme/commit/ae31aebc) -- Allow custom saturation values for icons [`aea186ae`](https://github.com/PKief/vscode-material-icon-theme/commit/aea186ae) -- Added .graphqlconfig [`c7ffad88`](https://github.com/PKief/vscode-material-icon-theme/commit/c7ffad88) -- Add additional gatsby file names [`ed2a1d6a`](https://github.com/PKief/vscode-material-icon-theme/commit/ed2a1d6a) -- Updated badges [`ff560d8d`](https://github.com/PKief/vscode-material-icon-theme/commit/ff560d8d) -- Add config for grayscale icons [`f5a2e4cd`](https://github.com/PKief/vscode-material-icon-theme/commit/f5a2e4cd) -- Add web folder icon [`f2b6a8b9`](https://github.com/PKief/vscode-material-icon-theme/commit/f2b6a8b9) -- Join gatsby filenames to the single array [`21faf349`](https://github.com/PKief/vscode-material-icon-theme/commit/21faf349) -- Fix gatsby config fileName. Add gatsby-node fileName to existing gatsby icon [`79d8cda9`](https://github.com/PKief/vscode-material-icon-theme/commit/79d8cda9) - -#### [v3.6.3](https://github.com/PKief/vscode-material-icon-theme/compare/v3.6.2...v3.6.3) +- Improved npm scripts [`85365f23`](https://github.com/material-extensions/vscode-material-icon-theme/commit/85365f23) +- feat: Add `.cson` and `.iced` CoffeeScript extensions [`3c3c819e`](https://github.com/material-extensions/vscode-material-icon-theme/commit/3c3c819e) +- Updated vscode ignore [`2863fd3f`](https://github.com/material-extensions/vscode-material-icon-theme/commit/2863fd3f) +- Updated vscode ignore [`5f04a9d7`](https://github.com/material-extensions/vscode-material-icon-theme/commit/5f04a9d7) +- Added hot reload in change detection [`bee8e0c3`](https://github.com/material-extensions/vscode-material-icon-theme/commit/bee8e0c3) +- Added svg folder icon (Closes #358) [`94863f0f`](https://github.com/material-extensions/vscode-material-icon-theme/commit/94863f0f) +- Added svg file icon (Closes #400) [`72663adf`](https://github.com/material-extensions/vscode-material-icon-theme/commit/72663adf) +- Updated travis-ci badge [`ba1fa2a6`](https://github.com/material-extensions/vscode-material-icon-theme/commit/ba1fa2a6) +- Updated generation of preview images [`d38de4e5`](https://github.com/material-extensions/vscode-material-icon-theme/commit/d38de4e5) +- Updated build scripts [`760b3539`](https://github.com/material-extensions/vscode-material-icon-theme/commit/760b3539) +- Bundle code in production mode [`9f23ebf6`](https://github.com/material-extensions/vscode-material-icon-theme/commit/9f23ebf6) +- Bundle extension with webpack [`6850337e`](https://github.com/material-extensions/vscode-material-icon-theme/commit/6850337e) +- Refactored code [`f21ca04c`](https://github.com/material-extensions/vscode-material-icon-theme/commit/f21ca04c) +- Added pipe folder icon (Closes #403) [`5fc86ecc`](https://github.com/material-extensions/vscode-material-icon-theme/commit/5fc86ecc) +- Remove extra dot [`74c48935`](https://github.com/material-extensions/vscode-material-icon-theme/commit/74c48935) +- Use clojure icon for .cljc files [`1295f3a5`](https://github.com/material-extensions/vscode-material-icon-theme/commit/1295f3a5) +- Update folderIcons.ts [`ae31aebc`](https://github.com/material-extensions/vscode-material-icon-theme/commit/ae31aebc) +- Allow custom saturation values for icons [`aea186ae`](https://github.com/material-extensions/vscode-material-icon-theme/commit/aea186ae) +- Added .graphqlconfig [`c7ffad88`](https://github.com/material-extensions/vscode-material-icon-theme/commit/c7ffad88) +- Add additional gatsby file names [`ed2a1d6a`](https://github.com/material-extensions/vscode-material-icon-theme/commit/ed2a1d6a) +- Updated badges [`ff560d8d`](https://github.com/material-extensions/vscode-material-icon-theme/commit/ff560d8d) +- Add config for grayscale icons [`f5a2e4cd`](https://github.com/material-extensions/vscode-material-icon-theme/commit/f5a2e4cd) +- Add web folder icon [`f2b6a8b9`](https://github.com/material-extensions/vscode-material-icon-theme/commit/f2b6a8b9) +- Join gatsby filenames to the single array [`21faf349`](https://github.com/material-extensions/vscode-material-icon-theme/commit/21faf349) +- Fix gatsby config fileName. Add gatsby-node fileName to existing gatsby icon [`79d8cda9`](https://github.com/material-extensions/vscode-material-icon-theme/commit/79d8cda9) + +#### [v3.6.3](https://github.com/material-extensions/vscode-material-icon-theme/compare/v3.6.2...v3.6.3) > February 8, 2019 -- Add Prisma Folder Icons [`4d0fbcb4`](https://github.com/PKief/vscode-material-icon-theme/commit/4d0fbcb4) -- Updated buildkite icon (References #354) [`bf754960`](https://github.com/PKief/vscode-material-icon-theme/commit/bf754960) -- Updated buildkite icon (References #354) [`6df27fb2`](https://github.com/PKief/vscode-material-icon-theme/commit/6df27fb2) -- Updated size of graphql icon (References #380) [`128092c5`](https://github.com/PKief/vscode-material-icon-theme/commit/128092c5) -- Added GraphQL folder icon [`ada12853`](https://github.com/PKief/vscode-material-icon-theme/commit/ada12853) -- Added Scheme icon (Closes #364) [`a9194769`](https://github.com/PKief/vscode-material-icon-theme/commit/a9194769) -- Added crystal icon on .ecr ( Embedded Crystal ) [`9afc89c8`](https://github.com/PKief/vscode-material-icon-theme/commit/9afc89c8) -- Added crystal icon on .ecr ( Embedded Crystal ) [`af5eac85`](https://github.com/PKief/vscode-material-icon-theme/commit/af5eac85) -- Updated size and color (References #369) [`074bf180`](https://github.com/PKief/vscode-material-icon-theme/commit/074bf180) -- Added validation(s) folder association (Closes #375) [`b754d7a5`](https://github.com/PKief/vscode-material-icon-theme/commit/b754d7a5) -- Added dot-file-style for AppVeyor [`b1251ae6`](https://github.com/PKief/vscode-material-icon-theme/commit/b1251ae6) -- Added PureScript file extension (Closes #365) [`0f345a37`](https://github.com/PKief/vscode-material-icon-theme/commit/0f345a37) -- Add Tailwind CSS icon [`674fe790`](https://github.com/PKief/vscode-material-icon-theme/commit/674fe790) -- Corrected file [`7792e59b`](https://github.com/PKief/vscode-material-icon-theme/commit/7792e59b) -- added obj icon [`ee01d66c`](https://github.com/PKief/vscode-material-icon-theme/commit/ee01d66c) -- Updated buildkite icon [`00271210`](https://github.com/PKief/vscode-material-icon-theme/commit/00271210) -- add icon for Buildkite [`3e24d1b9`](https://github.com/PKief/vscode-material-icon-theme/commit/3e24d1b9) - -#### [v3.6.2](https://github.com/PKief/vscode-material-icon-theme/compare/v3.6.1...v3.6.2) +- Add Prisma Folder Icons [`4d0fbcb4`](https://github.com/material-extensions/vscode-material-icon-theme/commit/4d0fbcb4) +- Updated buildkite icon (References #354) [`bf754960`](https://github.com/material-extensions/vscode-material-icon-theme/commit/bf754960) +- Updated buildkite icon (References #354) [`6df27fb2`](https://github.com/material-extensions/vscode-material-icon-theme/commit/6df27fb2) +- Updated size of graphql icon (References #380) [`128092c5`](https://github.com/material-extensions/vscode-material-icon-theme/commit/128092c5) +- Added GraphQL folder icon [`ada12853`](https://github.com/material-extensions/vscode-material-icon-theme/commit/ada12853) +- Added Scheme icon (Closes #364) [`a9194769`](https://github.com/material-extensions/vscode-material-icon-theme/commit/a9194769) +- Added crystal icon on .ecr ( Embedded Crystal ) [`9afc89c8`](https://github.com/material-extensions/vscode-material-icon-theme/commit/9afc89c8) +- Added crystal icon on .ecr ( Embedded Crystal ) [`af5eac85`](https://github.com/material-extensions/vscode-material-icon-theme/commit/af5eac85) +- Updated size and color (References #369) [`074bf180`](https://github.com/material-extensions/vscode-material-icon-theme/commit/074bf180) +- Added validation(s) folder association (Closes #375) [`b754d7a5`](https://github.com/material-extensions/vscode-material-icon-theme/commit/b754d7a5) +- Added dot-file-style for AppVeyor [`b1251ae6`](https://github.com/material-extensions/vscode-material-icon-theme/commit/b1251ae6) +- Added PureScript file extension (Closes #365) [`0f345a37`](https://github.com/material-extensions/vscode-material-icon-theme/commit/0f345a37) +- Add Tailwind CSS icon [`674fe790`](https://github.com/material-extensions/vscode-material-icon-theme/commit/674fe790) +- Corrected file [`7792e59b`](https://github.com/material-extensions/vscode-material-icon-theme/commit/7792e59b) +- added obj icon [`ee01d66c`](https://github.com/material-extensions/vscode-material-icon-theme/commit/ee01d66c) +- Updated buildkite icon [`00271210`](https://github.com/material-extensions/vscode-material-icon-theme/commit/00271210) +- add icon for Buildkite [`3e24d1b9`](https://github.com/material-extensions/vscode-material-icon-theme/commit/3e24d1b9) + +#### [v3.6.2](https://github.com/material-extensions/vscode-material-icon-theme/compare/v3.6.1...v3.6.2) > December 20, 2018 -- Updated expo folder icon (References #84) [`bc94e9f3`](https://github.com/PKief/vscode-material-icon-theme/commit/bc94e9f3) -- Added edge icon (Closes #359) [`2a27eb79`](https://github.com/PKief/vscode-material-icon-theme/commit/2a27eb79) -- Added Istanbul icon (Closes #192) [`f9a32ca7`](https://github.com/PKief/vscode-material-icon-theme/commit/f9a32ca7) -- Added Angular related folder icons (References #350) [`49122b4f`](https://github.com/PKief/vscode-material-icon-theme/commit/49122b4f) -- Updated icon name [`c056f2b3`](https://github.com/PKief/vscode-material-icon-theme/commit/c056f2b3) -- Added asciidoc file icon (Closes #352) [`6b0a8bb5`](https://github.com/PKief/vscode-material-icon-theme/commit/6b0a8bb5) -- Added folder icons: - animation - review - rules - syntax [`cfec8f13`](https://github.com/PKief/vscode-material-icon-theme/commit/cfec8f13) -- Added private and secure folder icons [`32f69b16`](https://github.com/PKief/vscode-material-icon-theme/commit/32f69b16) -- Updated folder icons - app - ngrx-state [`ed402f4b`](https://github.com/PKief/vscode-material-icon-theme/commit/ed402f4b) -- Added Ngrx store folder icon (Closes #349) [`45b8030b`](https://github.com/PKief/vscode-material-icon-theme/commit/45b8030b) -- Updated log messages of scripts [`00e49784`](https://github.com/PKief/vscode-material-icon-theme/commit/00e49784) -- Updated screenshots script (References #319) [`61029939`](https://github.com/PKief/vscode-material-icon-theme/commit/61029939) -- Add some alias for build and python test [`e4d3d8f8`](https://github.com/PKief/vscode-material-icon-theme/commit/e4d3d8f8) -- Add alias .webpack for webpack [`cc226c69`](https://github.com/PKief/vscode-material-icon-theme/commit/cc226c69) -- Add .idea folder icon for intellij/jetbrain suite meta folder [`ac265ee1`](https://github.com/PKief/vscode-material-icon-theme/commit/ac265ee1) -- Add alias to syntax folder, definition [`dd1970d9`](https://github.com/PKief/vscode-material-icon-theme/commit/dd1970d9) -- Add flow-typed folder icons [`54adacf9`](https://github.com/PKief/vscode-material-icon-theme/commit/54adacf9) -- Add some folder aliases [`f857ac27`](https://github.com/PKief/vscode-material-icon-theme/commit/f857ac27) -- Reposition two folder icons [`f6aa4a10`](https://github.com/PKief/vscode-material-icon-theme/commit/f6aa4a10) -- Add new folder icons storybook and stylus based on file icon [`fad7282d`](https://github.com/PKief/vscode-material-icon-theme/commit/fad7282d) -- Add new folder icons: mock,syntax,styleguide,scenario,vm [`02febad7`](https://github.com/PKief/vscode-material-icon-theme/commit/02febad7) -- Add a node js icon on filder node :art: [`3f3e520b`](https://github.com/PKief/vscode-material-icon-theme/commit/3f3e520b) -- Add the forgotten docker-compose.test.yml to the dockers file [`e1de3ba8`](https://github.com/PKief/vscode-material-icon-theme/commit/e1de3ba8) -- Add icon for grunt folder [`cdde91d6`](https://github.com/PKief/vscode-material-icon-theme/commit/cdde91d6) -- Singularize screenshot and icon folder icons from images [`92954c65`](https://github.com/PKief/vscode-material-icon-theme/commit/92954c65) -- Add two new folder icon e2e for end to end test and custom [`95e6f7e4`](https://github.com/PKief/vscode-material-icon-theme/commit/95e6f7e4) -- Added file prefix to puppeteer page link [`a95d4b2e`](https://github.com/PKief/vscode-material-icon-theme/commit/a95d4b2e) - -#### [v3.6.1](https://github.com/PKief/vscode-material-icon-theme/compare/v3.6.0...v3.6.1) +- Updated expo folder icon (References #84) [`bc94e9f3`](https://github.com/material-extensions/vscode-material-icon-theme/commit/bc94e9f3) +- Added edge icon (Closes #359) [`2a27eb79`](https://github.com/material-extensions/vscode-material-icon-theme/commit/2a27eb79) +- Added Istanbul icon (Closes #192) [`f9a32ca7`](https://github.com/material-extensions/vscode-material-icon-theme/commit/f9a32ca7) +- Added Angular related folder icons (References #350) [`49122b4f`](https://github.com/material-extensions/vscode-material-icon-theme/commit/49122b4f) +- Updated icon name [`c056f2b3`](https://github.com/material-extensions/vscode-material-icon-theme/commit/c056f2b3) +- Added asciidoc file icon (Closes #352) [`6b0a8bb5`](https://github.com/material-extensions/vscode-material-icon-theme/commit/6b0a8bb5) +- Added folder icons: - animation - review - rules - syntax [`cfec8f13`](https://github.com/material-extensions/vscode-material-icon-theme/commit/cfec8f13) +- Added private and secure folder icons [`32f69b16`](https://github.com/material-extensions/vscode-material-icon-theme/commit/32f69b16) +- Updated folder icons - app - ngrx-state [`ed402f4b`](https://github.com/material-extensions/vscode-material-icon-theme/commit/ed402f4b) +- Added Ngrx store folder icon (Closes #349) [`45b8030b`](https://github.com/material-extensions/vscode-material-icon-theme/commit/45b8030b) +- Updated log messages of scripts [`00e49784`](https://github.com/material-extensions/vscode-material-icon-theme/commit/00e49784) +- Updated screenshots script (References #319) [`61029939`](https://github.com/material-extensions/vscode-material-icon-theme/commit/61029939) +- Add some alias for build and python test [`e4d3d8f8`](https://github.com/material-extensions/vscode-material-icon-theme/commit/e4d3d8f8) +- Add alias .webpack for webpack [`cc226c69`](https://github.com/material-extensions/vscode-material-icon-theme/commit/cc226c69) +- Add .idea folder icon for intellij/jetbrain suite meta folder [`ac265ee1`](https://github.com/material-extensions/vscode-material-icon-theme/commit/ac265ee1) +- Add alias to syntax folder, definition [`dd1970d9`](https://github.com/material-extensions/vscode-material-icon-theme/commit/dd1970d9) +- Add flow-typed folder icons [`54adacf9`](https://github.com/material-extensions/vscode-material-icon-theme/commit/54adacf9) +- Add some folder aliases [`f857ac27`](https://github.com/material-extensions/vscode-material-icon-theme/commit/f857ac27) +- Reposition two folder icons [`f6aa4a10`](https://github.com/material-extensions/vscode-material-icon-theme/commit/f6aa4a10) +- Add new folder icons storybook and stylus based on file icon [`fad7282d`](https://github.com/material-extensions/vscode-material-icon-theme/commit/fad7282d) +- Add new folder icons: mock,syntax,styleguide,scenario,vm [`02febad7`](https://github.com/material-extensions/vscode-material-icon-theme/commit/02febad7) +- Add a node js icon on filder node :art: [`3f3e520b`](https://github.com/material-extensions/vscode-material-icon-theme/commit/3f3e520b) +- Add the forgotten docker-compose.test.yml to the dockers file [`e1de3ba8`](https://github.com/material-extensions/vscode-material-icon-theme/commit/e1de3ba8) +- Add icon for grunt folder [`cdde91d6`](https://github.com/material-extensions/vscode-material-icon-theme/commit/cdde91d6) +- Singularize screenshot and icon folder icons from images [`92954c65`](https://github.com/material-extensions/vscode-material-icon-theme/commit/92954c65) +- Add two new folder icon e2e for end to end test and custom [`95e6f7e4`](https://github.com/material-extensions/vscode-material-icon-theme/commit/95e6f7e4) +- Added file prefix to puppeteer page link [`a95d4b2e`](https://github.com/material-extensions/vscode-material-icon-theme/commit/a95d4b2e) + +#### [v3.6.1](https://github.com/material-extensions/vscode-material-icon-theme/compare/v3.6.0...v3.6.1) > November 21, 2018 -- Updated functions folder icon [`61fbd226`](https://github.com/PKief/vscode-material-icon-theme/commit/61fbd226) -- Improved preview script [`c57466f7`](https://github.com/PKief/vscode-material-icon-theme/commit/c57466f7) -- Minor improvements [`73cea76c`](https://github.com/PKief/vscode-material-icon-theme/commit/73cea76c) -- fix: add missing comma [`64ba4343`](https://github.com/PKief/vscode-material-icon-theme/commit/64ba4343) -- Adding Visual Studio config files & .clang-tidy [`3b817a5d`](https://github.com/PKief/vscode-material-icon-theme/commit/3b817a5d) -- Refined folder icons (References #339) [`86ec9ecb`](https://github.com/PKief/vscode-material-icon-theme/commit/86ec9ecb) -- Adding some docker compose aliases [`442cb337`](https://github.com/PKief/vscode-material-icon-theme/commit/442cb337) -- Refined Razor icon (References #342) [`85b7c635`](https://github.com/PKief/vscode-material-icon-theme/commit/85b7c635) -- Updated dependencies [`d2136472`](https://github.com/PKief/vscode-material-icon-theme/commit/d2136472) -- Updated color of dump folder icon (Related to #339) [`8f1a267f`](https://github.com/PKief/vscode-material-icon-theme/commit/8f1a267f) -- Updated color of examples folder icon (Related to #339) [`ab4087ed`](https://github.com/PKief/vscode-material-icon-theme/commit/ab4087ed) -- Updated generator icon (Related to #339) [`2c06a14f`](https://github.com/PKief/vscode-material-icon-theme/commit/2c06a14f) -- Updated folder icon associations (Related to #339) [`612a148c`](https://github.com/PKief/vscode-material-icon-theme/commit/612a148c) -- Optimized icon colors (Related to #339) [`5ddc2d2c`](https://github.com/PKief/vscode-material-icon-theme/commit/5ddc2d2c) -- Try to apply color guidelines =) [`d75083fd`](https://github.com/PKief/vscode-material-icon-theme/commit/d75083fd) -- Add examples folder icon [`f85c6080`](https://github.com/PKief/vscode-material-icon-theme/commit/f85c6080) -- Updated secondary file icons (vue.config, js.map, css.map) [`e47ad39c`](https://github.com/PKief/vscode-material-icon-theme/commit/e47ad39c) -- Updated python-file (Related to #340) [`331c8e25`](https://github.com/PKief/vscode-material-icon-theme/commit/331c8e25) -- Added .env file icon associations (Fixes #261) [`bf0054ce`](https://github.com/PKief/vscode-material-icon-theme/commit/bf0054ce) -- Add a python-file icon that is assign to python related files [`281f5f88`](https://github.com/PKief/vscode-material-icon-theme/commit/281f5f88) -- Add some alias to existing folder directories [`43c97209`](https://github.com/PKief/vscode-material-icon-theme/commit/43c97209) -- Add mapping for the new icons [`a8b92bbd`](https://github.com/PKief/vscode-material-icon-theme/commit/a8b92bbd) -- Add color to all the new icons :art: :rainbow: [`69ed51df`](https://github.com/PKief/vscode-material-icon-theme/commit/69ed51df) -- Generated all the open folder with a little cut&sed command :wink: [`757007ea`](https://github.com/PKief/vscode-material-icon-theme/commit/757007ea) -- Optimise with svgo and reformat xml [`5268c5db`](https://github.com/PKief/vscode-material-icon-theme/commit/5268c5db) -- Reposition icon with inkscape [`b70ef94a`](https://github.com/PKief/vscode-material-icon-theme/commit/b70ef94a) -- Add a last massive batch of folder icons, no positionning so far [`cf75ccab`](https://github.com/PKief/vscode-material-icon-theme/commit/cf75ccab) -- Declare the serverless folder icon [`71a180df`](https://github.com/PKief/vscode-material-icon-theme/commit/71a180df) -- Optimise serverless and set color [`60694585`](https://github.com/PKief/vscode-material-icon-theme/commit/60694585) -- Reformat all the news icons svg [`ed070795`](https://github.com/PKief/vscode-material-icon-theme/commit/ed070795) -- Second Batch of icons without colors so far [`9c8ad583`](https://github.com/PKief/vscode-material-icon-theme/commit/9c8ad583) -- Add a bunch of new folder icons colorless for now [`d1b54e35`](https://github.com/PKief/vscode-material-icon-theme/commit/d1b54e35) -- Added Procfile.windows [`dbaa5eb8`](https://github.com/PKief/vscode-material-icon-theme/commit/dbaa5eb8) -- Add "typings" and "@types" as a TypeScript folder (Resolves #337) [`ca0b5231`](https://github.com/PKief/vscode-material-icon-theme/commit/ca0b5231) -- Lowercase file names [`69bee83c`](https://github.com/PKief/vscode-material-icon-theme/commit/69bee83c) -- Add docker-compose.staging.yml to Docker icons [`0dd6d1c7`](https://github.com/PKief/vscode-material-icon-theme/commit/0dd6d1c7) -- Added Vagrantfile icon (Closes #324) [`559809f3`](https://github.com/PKief/vscode-material-icon-theme/commit/559809f3) -- Added .tsx icon (Closes #322) [`37938673`](https://github.com/PKief/vscode-material-icon-theme/commit/37938673) -- Added middleware folder icon [`6344e102`](https://github.com/PKief/vscode-material-icon-theme/commit/6344e102) -- Updated powershell icon [`9f4f5de5`](https://github.com/PKief/vscode-material-icon-theme/commit/9f4f5de5) -- added icon for vue.config.js file [`a1adcdc2`](https://github.com/PKief/vscode-material-icon-theme/commit/a1adcdc2) -- Added Azure icons (Closes #321) [`22be92e8`](https://github.com/PKief/vscode-material-icon-theme/commit/22be92e8) -- Add Prisma folder and file icons [`37868e2c`](https://github.com/PKief/vscode-material-icon-theme/commit/37868e2c) - -#### [v3.6.0](https://github.com/PKief/vscode-material-icon-theme/compare/v3.5.3...v3.6.0) +- Updated functions folder icon [`61fbd226`](https://github.com/material-extensions/vscode-material-icon-theme/commit/61fbd226) +- Improved preview script [`c57466f7`](https://github.com/material-extensions/vscode-material-icon-theme/commit/c57466f7) +- Minor improvements [`73cea76c`](https://github.com/material-extensions/vscode-material-icon-theme/commit/73cea76c) +- fix: add missing comma [`64ba4343`](https://github.com/material-extensions/vscode-material-icon-theme/commit/64ba4343) +- Adding Visual Studio config files & .clang-tidy [`3b817a5d`](https://github.com/material-extensions/vscode-material-icon-theme/commit/3b817a5d) +- Refined folder icons (References #339) [`86ec9ecb`](https://github.com/material-extensions/vscode-material-icon-theme/commit/86ec9ecb) +- Adding some docker compose aliases [`442cb337`](https://github.com/material-extensions/vscode-material-icon-theme/commit/442cb337) +- Refined Razor icon (References #342) [`85b7c635`](https://github.com/material-extensions/vscode-material-icon-theme/commit/85b7c635) +- Updated dependencies [`d2136472`](https://github.com/material-extensions/vscode-material-icon-theme/commit/d2136472) +- Updated color of dump folder icon (Related to #339) [`8f1a267f`](https://github.com/material-extensions/vscode-material-icon-theme/commit/8f1a267f) +- Updated color of examples folder icon (Related to #339) [`ab4087ed`](https://github.com/material-extensions/vscode-material-icon-theme/commit/ab4087ed) +- Updated generator icon (Related to #339) [`2c06a14f`](https://github.com/material-extensions/vscode-material-icon-theme/commit/2c06a14f) +- Updated folder icon associations (Related to #339) [`612a148c`](https://github.com/material-extensions/vscode-material-icon-theme/commit/612a148c) +- Optimized icon colors (Related to #339) [`5ddc2d2c`](https://github.com/material-extensions/vscode-material-icon-theme/commit/5ddc2d2c) +- Try to apply color guidelines =) [`d75083fd`](https://github.com/material-extensions/vscode-material-icon-theme/commit/d75083fd) +- Add examples folder icon [`f85c6080`](https://github.com/material-extensions/vscode-material-icon-theme/commit/f85c6080) +- Updated secondary file icons (vue.config, js.map, css.map) [`e47ad39c`](https://github.com/material-extensions/vscode-material-icon-theme/commit/e47ad39c) +- Updated python-file (Related to #340) [`331c8e25`](https://github.com/material-extensions/vscode-material-icon-theme/commit/331c8e25) +- Added .env file icon associations (Fixes #261) [`bf0054ce`](https://github.com/material-extensions/vscode-material-icon-theme/commit/bf0054ce) +- Add a python-file icon that is assign to python related files [`281f5f88`](https://github.com/material-extensions/vscode-material-icon-theme/commit/281f5f88) +- Add some alias to existing folder directories [`43c97209`](https://github.com/material-extensions/vscode-material-icon-theme/commit/43c97209) +- Add mapping for the new icons [`a8b92bbd`](https://github.com/material-extensions/vscode-material-icon-theme/commit/a8b92bbd) +- Add color to all the new icons :art: :rainbow: [`69ed51df`](https://github.com/material-extensions/vscode-material-icon-theme/commit/69ed51df) +- Generated all the open folder with a little cut&sed command :wink: [`757007ea`](https://github.com/material-extensions/vscode-material-icon-theme/commit/757007ea) +- Optimise with svgo and reformat xml [`5268c5db`](https://github.com/material-extensions/vscode-material-icon-theme/commit/5268c5db) +- Reposition icon with inkscape [`b70ef94a`](https://github.com/material-extensions/vscode-material-icon-theme/commit/b70ef94a) +- Add a last massive batch of folder icons, no positionning so far [`cf75ccab`](https://github.com/material-extensions/vscode-material-icon-theme/commit/cf75ccab) +- Declare the serverless folder icon [`71a180df`](https://github.com/material-extensions/vscode-material-icon-theme/commit/71a180df) +- Optimise serverless and set color [`60694585`](https://github.com/material-extensions/vscode-material-icon-theme/commit/60694585) +- Reformat all the news icons svg [`ed070795`](https://github.com/material-extensions/vscode-material-icon-theme/commit/ed070795) +- Second Batch of icons without colors so far [`9c8ad583`](https://github.com/material-extensions/vscode-material-icon-theme/commit/9c8ad583) +- Add a bunch of new folder icons colorless for now [`d1b54e35`](https://github.com/material-extensions/vscode-material-icon-theme/commit/d1b54e35) +- Added Procfile.windows [`dbaa5eb8`](https://github.com/material-extensions/vscode-material-icon-theme/commit/dbaa5eb8) +- Add "typings" and "@types" as a TypeScript folder (Resolves #337) [`ca0b5231`](https://github.com/material-extensions/vscode-material-icon-theme/commit/ca0b5231) +- Lowercase file names [`69bee83c`](https://github.com/material-extensions/vscode-material-icon-theme/commit/69bee83c) +- Add docker-compose.staging.yml to Docker icons [`0dd6d1c7`](https://github.com/material-extensions/vscode-material-icon-theme/commit/0dd6d1c7) +- Added Vagrantfile icon (Closes #324) [`559809f3`](https://github.com/material-extensions/vscode-material-icon-theme/commit/559809f3) +- Added .tsx icon (Closes #322) [`37938673`](https://github.com/material-extensions/vscode-material-icon-theme/commit/37938673) +- Added middleware folder icon [`6344e102`](https://github.com/material-extensions/vscode-material-icon-theme/commit/6344e102) +- Updated powershell icon [`9f4f5de5`](https://github.com/material-extensions/vscode-material-icon-theme/commit/9f4f5de5) +- added icon for vue.config.js file [`a1adcdc2`](https://github.com/material-extensions/vscode-material-icon-theme/commit/a1adcdc2) +- Added Azure icons (Closes #321) [`22be92e8`](https://github.com/material-extensions/vscode-material-icon-theme/commit/22be92e8) +- Add Prisma folder and file icons [`37868e2c`](https://github.com/material-extensions/vscode-material-icon-theme/commit/37868e2c) + +#### [v3.6.0](https://github.com/material-extensions/vscode-material-icon-theme/compare/v3.5.3...v3.6.0) > September 10, 2018 -- Updated restore config command [`ec900d7a`](https://github.com/PKief/vscode-material-icon-theme/commit/ec900d7a) -- Fixed bugs - change detection must not trigger reload for invalid values [`8c6096cf`](https://github.com/PKief/vscode-material-icon-theme/commit/8c6096cf) -- Adapting the extension to the new Settings GUI [`c4bb7af7`](https://github.com/PKief/vscode-material-icon-theme/commit/c4bb7af7) -- Adapting the extension to the new Settings GUI [`818f888f`](https://github.com/PKief/vscode-material-icon-theme/commit/818f888f) -- Improved code quality [`6c1ddf41`](https://github.com/PKief/vscode-material-icon-theme/commit/6c1ddf41) -- Fixed size of godot icons (References #316) [`622d1a59`](https://github.com/PKief/vscode-material-icon-theme/commit/622d1a59) -- Added godot icon [`c1a12bfe`](https://github.com/PKief/vscode-material-icon-theme/commit/c1a12bfe) -- Added folder icons - android, ios (Closes #312) - client, server (References #296) - upload, dowload (References #218) - helpers - tasks (References #218) - tools - themes [`aba8cae7`](https://github.com/PKief/vscode-material-icon-theme/commit/aba8cae7) -- Updated babel icon (Closes #315) [`bdac3d11`](https://github.com/PKief/vscode-material-icon-theme/commit/bdac3d11) -- Added: csx extension to csharp [`c481fe9f`](https://github.com/PKief/vscode-material-icon-theme/commit/c481fe9f) -- Added velocity icon (Closes #311) [`3e8f93bf`](https://github.com/PKief/vscode-material-icon-theme/commit/3e8f93bf) -- Added mint icon (Closes #308) [`38f46abe`](https://github.com/PKief/vscode-material-icon-theme/commit/38f46abe) -- .clang-format + bazel icons [`24546999`](https://github.com/PKief/vscode-material-icon-theme/commit/24546999) -- Added authors icon (references #306) [`ca7c9401`](https://github.com/PKief/vscode-material-icon-theme/commit/ca7c9401) -- Add `authors`, `authors.md`, and `authors.txt` to `credits` [`3de2107d`](https://github.com/PKief/vscode-material-icon-theme/commit/3de2107d) -- Removed bithound config file [`7b1c3f6b`](https://github.com/PKief/vscode-material-icon-theme/commit/7b1c3f6b) - -#### [v3.5.3](https://github.com/PKief/vscode-material-icon-theme/compare/v3.5.2...v3.5.3) +- Updated restore config command [`ec900d7a`](https://github.com/material-extensions/vscode-material-icon-theme/commit/ec900d7a) +- Fixed bugs - change detection must not trigger reload for invalid values [`8c6096cf`](https://github.com/material-extensions/vscode-material-icon-theme/commit/8c6096cf) +- Adapting the extension to the new Settings GUI [`c4bb7af7`](https://github.com/material-extensions/vscode-material-icon-theme/commit/c4bb7af7) +- Adapting the extension to the new Settings GUI [`818f888f`](https://github.com/material-extensions/vscode-material-icon-theme/commit/818f888f) +- Improved code quality [`6c1ddf41`](https://github.com/material-extensions/vscode-material-icon-theme/commit/6c1ddf41) +- Fixed size of godot icons (References #316) [`622d1a59`](https://github.com/material-extensions/vscode-material-icon-theme/commit/622d1a59) +- Added godot icon [`c1a12bfe`](https://github.com/material-extensions/vscode-material-icon-theme/commit/c1a12bfe) +- Added folder icons - android, ios (Closes #312) - client, server (References #296) - upload, dowload (References #218) - helpers - tasks (References #218) - tools - themes [`aba8cae7`](https://github.com/material-extensions/vscode-material-icon-theme/commit/aba8cae7) +- Updated babel icon (Closes #315) [`bdac3d11`](https://github.com/material-extensions/vscode-material-icon-theme/commit/bdac3d11) +- Added: csx extension to csharp [`c481fe9f`](https://github.com/material-extensions/vscode-material-icon-theme/commit/c481fe9f) +- Added velocity icon (Closes #311) [`3e8f93bf`](https://github.com/material-extensions/vscode-material-icon-theme/commit/3e8f93bf) +- Added mint icon (Closes #308) [`38f46abe`](https://github.com/material-extensions/vscode-material-icon-theme/commit/38f46abe) +- .clang-format + bazel icons [`24546999`](https://github.com/material-extensions/vscode-material-icon-theme/commit/24546999) +- Added authors icon (references #306) [`ca7c9401`](https://github.com/material-extensions/vscode-material-icon-theme/commit/ca7c9401) +- Add `authors`, `authors.md`, and `authors.txt` to `credits` [`3de2107d`](https://github.com/material-extensions/vscode-material-icon-theme/commit/3de2107d) +- Removed bithound config file [`7b1c3f6b`](https://github.com/material-extensions/vscode-material-icon-theme/commit/7b1c3f6b) + +#### [v3.5.3](https://github.com/material-extensions/vscode-material-icon-theme/compare/v3.5.2...v3.5.3) > August 19, 2018 -- Updated clojure icon [`93977cb9`](https://github.com/PKief/vscode-material-icon-theme/commit/93977cb9) -- Added racket icon (Closes #299) [`de87927c`](https://github.com/PKief/vscode-material-icon-theme/commit/de87927c) -- Added ballerina icon (Closes #304) [`506c1a6a`](https://github.com/PKief/vscode-material-icon-theme/commit/506c1a6a) -- Add 'stencil.config.ts' to fileIcons [`86409fb3`](https://github.com/PKief/vscode-material-icon-theme/commit/86409fb3) -- Updated dependencies [`b0972216`](https://github.com/PKief/vscode-material-icon-theme/commit/b0972216) -- Added mdx icon (Closes #295) [`f35f38bf`](https://github.com/PKief/vscode-material-icon-theme/commit/f35f38bf) -- Added docker-compose.prod.yml [`#294`](https://github.com/PKief/vscode-material-icon-theme/pull/294) -- Added d icon (Closes #291) [`d24a9914`](https://github.com/PKief/vscode-material-icon-theme/commit/d24a9914) +- Updated clojure icon [`93977cb9`](https://github.com/material-extensions/vscode-material-icon-theme/commit/93977cb9) +- Added racket icon (Closes #299) [`de87927c`](https://github.com/material-extensions/vscode-material-icon-theme/commit/de87927c) +- Added ballerina icon (Closes #304) [`506c1a6a`](https://github.com/material-extensions/vscode-material-icon-theme/commit/506c1a6a) +- Add 'stencil.config.ts' to fileIcons [`86409fb3`](https://github.com/material-extensions/vscode-material-icon-theme/commit/86409fb3) +- Updated dependencies [`b0972216`](https://github.com/material-extensions/vscode-material-icon-theme/commit/b0972216) +- Added mdx icon (Closes #295) [`f35f38bf`](https://github.com/material-extensions/vscode-material-icon-theme/commit/f35f38bf) +- Added docker-compose.prod.yml [`#294`](https://github.com/material-extensions/vscode-material-icon-theme/pull/294) +- Added d icon (Closes #291) [`d24a9914`](https://github.com/material-extensions/vscode-material-icon-theme/commit/d24a9914) -#### [v3.5.2](https://github.com/PKief/vscode-material-icon-theme/compare/v3.5.1...v3.5.2) +#### [v3.5.2](https://github.com/material-extensions/vscode-material-icon-theme/compare/v3.5.1...v3.5.2) > July 21, 2018 -- Added Jekyll folder names (Closes #290) [`56a1829d`](https://github.com/PKief/vscode-material-icon-theme/commit/56a1829d) -- Recognise gql extension as a GraphQL file [`#287`](https://github.com/PKief/vscode-material-icon-theme/pull/287) -- Added jupyter icon (Closes #285) [`eba7d7dc`](https://github.com/PKief/vscode-material-icon-theme/commit/eba7d7dc) -- Fixed bitbucket PR (Closes #283) [`66d4eaea`](https://github.com/PKief/vscode-material-icon-theme/commit/66d4eaea) -- Add babel.config.js to the babel association list [`#286`](https://github.com/PKief/vscode-material-icon-theme/pull/286) -- add bitbucket icon for bitbucket pipeline yaml files [`97f61fca`](https://github.com/PKief/vscode-material-icon-theme/commit/97f61fca) -- Added icon for semantic-release (Closes #279) [`f4de3973`](https://github.com/PKief/vscode-material-icon-theme/commit/f4de3973) -- Added .luacheckrc (Closes #277) [`586b78a2`](https://github.com/PKief/vscode-material-icon-theme/commit/586b78a2) -- Added webassembly icon [`8b407585`](https://github.com/PKief/vscode-material-icon-theme/commit/8b407585) -- Added i18n icon (Closes #276) [`503fd114`](https://github.com/PKief/vscode-material-icon-theme/commit/503fd114) -- Updated dependencies [`b015bdc0`](https://github.com/PKief/vscode-material-icon-theme/commit/b015bdc0) -- Updated folder icons - node - test [`36cf5c79`](https://github.com/PKief/vscode-material-icon-theme/commit/36cf5c79) -- Added alternative node icon (Closes #262) [`0967da81`](https://github.com/PKief/vscode-material-icon-theme/commit/0967da81) -- Updated translations [`7f7f716d`](https://github.com/PKief/vscode-material-icon-theme/commit/7f7f716d) - -#### [v3.5.1](https://github.com/PKief/vscode-material-icon-theme/compare/v3.5.0...v3.5.1) +- Added Jekyll folder names (Closes #290) [`56a1829d`](https://github.com/material-extensions/vscode-material-icon-theme/commit/56a1829d) +- Recognise gql extension as a GraphQL file [`#287`](https://github.com/material-extensions/vscode-material-icon-theme/pull/287) +- Added jupyter icon (Closes #285) [`eba7d7dc`](https://github.com/material-extensions/vscode-material-icon-theme/commit/eba7d7dc) +- Fixed bitbucket PR (Closes #283) [`66d4eaea`](https://github.com/material-extensions/vscode-material-icon-theme/commit/66d4eaea) +- Add babel.config.js to the babel association list [`#286`](https://github.com/material-extensions/vscode-material-icon-theme/pull/286) +- add bitbucket icon for bitbucket pipeline yaml files [`97f61fca`](https://github.com/material-extensions/vscode-material-icon-theme/commit/97f61fca) +- Added icon for semantic-release (Closes #279) [`f4de3973`](https://github.com/material-extensions/vscode-material-icon-theme/commit/f4de3973) +- Added .luacheckrc (Closes #277) [`586b78a2`](https://github.com/material-extensions/vscode-material-icon-theme/commit/586b78a2) +- Added webassembly icon [`8b407585`](https://github.com/material-extensions/vscode-material-icon-theme/commit/8b407585) +- Added i18n icon (Closes #276) [`503fd114`](https://github.com/material-extensions/vscode-material-icon-theme/commit/503fd114) +- Updated dependencies [`b015bdc0`](https://github.com/material-extensions/vscode-material-icon-theme/commit/b015bdc0) +- Updated folder icons - node - test [`36cf5c79`](https://github.com/material-extensions/vscode-material-icon-theme/commit/36cf5c79) +- Added alternative node icon (Closes #262) [`0967da81`](https://github.com/material-extensions/vscode-material-icon-theme/commit/0967da81) +- Updated translations [`7f7f716d`](https://github.com/material-extensions/vscode-material-icon-theme/commit/7f7f716d) + +#### [v3.5.1](https://github.com/material-extensions/vscode-material-icon-theme/compare/v3.5.0...v3.5.1) > June 28, 2018 -- Added makefile icon (Closes #269) [`890665af`](https://github.com/PKief/vscode-material-icon-theme/commit/890665af) -- Added foxpro icon (Closes #239) [`6b743012`](https://github.com/PKief/vscode-material-icon-theme/commit/6b743012) -- Added red lang icon (Closes #265) [`ac68c3e9`](https://github.com/PKief/vscode-material-icon-theme/commit/ac68c3e9) -- Added Stencil icon (Closes #268) [`e3bbe96b`](https://github.com/PKief/vscode-material-icon-theme/commit/e3bbe96b) -- Added Django icon (Closes #267) [`dd7f222c`](https://github.com/PKief/vscode-material-icon-theme/commit/dd7f222c) -- Added wallaby icon (Closes #270) [`1545fd06`](https://github.com/PKief/vscode-material-icon-theme/commit/1545fd06) -- .env files for specific environments (Closes #261) [`8d60336b`](https://github.com/PKief/vscode-material-icon-theme/commit/8d60336b) -- Added san icon (Closes #260) [`97f97e70`](https://github.com/PKief/vscode-material-icon-theme/commit/97f97e70) -- Update Dart logo to match the official logo changes [`#259`](https://github.com/PKief/vscode-material-icon-theme/pull/259) +- Added makefile icon (Closes #269) [`890665af`](https://github.com/material-extensions/vscode-material-icon-theme/commit/890665af) +- Added foxpro icon (Closes #239) [`6b743012`](https://github.com/material-extensions/vscode-material-icon-theme/commit/6b743012) +- Added red lang icon (Closes #265) [`ac68c3e9`](https://github.com/material-extensions/vscode-material-icon-theme/commit/ac68c3e9) +- Added Stencil icon (Closes #268) [`e3bbe96b`](https://github.com/material-extensions/vscode-material-icon-theme/commit/e3bbe96b) +- Added Django icon (Closes #267) [`dd7f222c`](https://github.com/material-extensions/vscode-material-icon-theme/commit/dd7f222c) +- Added wallaby icon (Closes #270) [`1545fd06`](https://github.com/material-extensions/vscode-material-icon-theme/commit/1545fd06) +- .env files for specific environments (Closes #261) [`8d60336b`](https://github.com/material-extensions/vscode-material-icon-theme/commit/8d60336b) +- Added san icon (Closes #260) [`97f97e70`](https://github.com/material-extensions/vscode-material-icon-theme/commit/97f97e70) +- Update Dart logo to match the official logo changes [`#259`](https://github.com/material-extensions/vscode-material-icon-theme/pull/259) -#### [v3.5.0](https://github.com/PKief/vscode-material-icon-theme/compare/v3.4.0...v3.5.0) +#### [v3.5.0](https://github.com/material-extensions/vscode-material-icon-theme/compare/v3.4.0...v3.5.0) > May 31, 2018 -- Improved folder HEX-color validation [`79c5fc00`](https://github.com/PKief/vscode-material-icon-theme/commit/79c5fc00) -- Compressed ansible folder icon References #254 [`ff0c95b5`](https://github.com/PKief/vscode-material-icon-theme/commit/ff0c95b5) -- Add Ansible folder icon [`43d0723d`](https://github.com/PKief/vscode-material-icon-theme/commit/43d0723d) -- Added controller folder icon (Closes #227) References #187 [`b1f1ae1a`](https://github.com/PKief/vscode-material-icon-theme/commit/b1f1ae1a) -- Generalize router file icon References #255 [`40a4a387`](https://github.com/PKief/vscode-material-icon-theme/commit/40a4a387) -- Improved folder icons - export - import [`93741b37`](https://github.com/PKief/vscode-material-icon-theme/commit/93741b37) -- Added command to change opacity [`e6c2c652`](https://github.com/PKief/vscode-material-icon-theme/commit/e6c2c652) -- Updated change detection - Fixed issue that new folder icons override the values of the opacity [`46695a9f`](https://github.com/PKief/vscode-material-icon-theme/commit/46695a9f) -- Updated opacity value type [`5fa8122d`](https://github.com/PKief/vscode-material-icon-theme/commit/5fa8122d) -- Optimized icon sizes [`6d4bdedc`](https://github.com/PKief/vscode-material-icon-theme/commit/6d4bdedc) -- Added helm icon (Closes #250) [`e8143f10`](https://github.com/PKief/vscode-material-icon-theme/commit/e8143f10) -- Added translations for opacity feature [`f844fafb`](https://github.com/PKief/vscode-material-icon-theme/commit/f844fafb) -- Improved generation of opacity attributes [`ca788af8`](https://github.com/PKief/vscode-material-icon-theme/commit/ca788af8) -- Updated opacity value [`58d7a73e`](https://github.com/PKief/vscode-material-icon-theme/commit/58d7a73e) -- Improved opacity feature [`cffaeea0`](https://github.com/PKief/vscode-material-icon-theme/commit/cffaeea0) -- Set opacity of all icons [`6dcdac16`](https://github.com/PKief/vscode-material-icon-theme/commit/6dcdac16) -- More React+Redux Ecosystem Icons (References #255) [`946a1d13`](https://github.com/PKief/vscode-material-icon-theme/commit/946a1d13) -- Storybook: associate typescript stories (Closes #258) [`8cdbcc0d`](https://github.com/PKief/vscode-material-icon-theme/commit/8cdbcc0d) -- Updated go icon (Closes #257) [`8a50a7c0`](https://github.com/PKief/vscode-material-icon-theme/commit/8a50a7c0) -- Updated todo icon (Closes #247) [`23b32b81`](https://github.com/PKief/vscode-material-icon-theme/commit/23b32b81) -- Assign the `console` icon to .fish files [`ec871e8e`](https://github.com/PKief/vscode-material-icon-theme/commit/ec871e8e) -- Updated hcl icons Closes #253 [`e6b1ecc5`](https://github.com/PKief/vscode-material-icon-theme/commit/e6b1ecc5) -- Add HashiCorp Configuration Language icon [`638b7217`](https://github.com/PKief/vscode-material-icon-theme/commit/638b7217) -- Added .htpasswd file icon mapping Closes #251 [`35057bfe`](https://github.com/PKief/vscode-material-icon-theme/commit/35057bfe) -- Adds docker-compose.yaml file association [`b6591416`](https://github.com/PKief/vscode-material-icon-theme/commit/b6591416) -- Added angular.json - Closes #243 [`62aed590`](https://github.com/PKief/vscode-material-icon-theme/commit/62aed590) - -#### [v3.4.0](https://github.com/PKief/vscode-material-icon-theme/compare/v3.3.0...v3.4.0) +- Improved folder HEX-color validation [`79c5fc00`](https://github.com/material-extensions/vscode-material-icon-theme/commit/79c5fc00) +- Compressed ansible folder icon References #254 [`ff0c95b5`](https://github.com/material-extensions/vscode-material-icon-theme/commit/ff0c95b5) +- Add Ansible folder icon [`43d0723d`](https://github.com/material-extensions/vscode-material-icon-theme/commit/43d0723d) +- Added controller folder icon (Closes #227) References #187 [`b1f1ae1a`](https://github.com/material-extensions/vscode-material-icon-theme/commit/b1f1ae1a) +- Generalize router file icon References #255 [`40a4a387`](https://github.com/material-extensions/vscode-material-icon-theme/commit/40a4a387) +- Improved folder icons - export - import [`93741b37`](https://github.com/material-extensions/vscode-material-icon-theme/commit/93741b37) +- Added command to change opacity [`e6c2c652`](https://github.com/material-extensions/vscode-material-icon-theme/commit/e6c2c652) +- Updated change detection - Fixed issue that new folder icons override the values of the opacity [`46695a9f`](https://github.com/material-extensions/vscode-material-icon-theme/commit/46695a9f) +- Updated opacity value type [`5fa8122d`](https://github.com/material-extensions/vscode-material-icon-theme/commit/5fa8122d) +- Optimized icon sizes [`6d4bdedc`](https://github.com/material-extensions/vscode-material-icon-theme/commit/6d4bdedc) +- Added helm icon (Closes #250) [`e8143f10`](https://github.com/material-extensions/vscode-material-icon-theme/commit/e8143f10) +- Added translations for opacity feature [`f844fafb`](https://github.com/material-extensions/vscode-material-icon-theme/commit/f844fafb) +- Improved generation of opacity attributes [`ca788af8`](https://github.com/material-extensions/vscode-material-icon-theme/commit/ca788af8) +- Updated opacity value [`58d7a73e`](https://github.com/material-extensions/vscode-material-icon-theme/commit/58d7a73e) +- Improved opacity feature [`cffaeea0`](https://github.com/material-extensions/vscode-material-icon-theme/commit/cffaeea0) +- Set opacity of all icons [`6dcdac16`](https://github.com/material-extensions/vscode-material-icon-theme/commit/6dcdac16) +- More React+Redux Ecosystem Icons (References #255) [`946a1d13`](https://github.com/material-extensions/vscode-material-icon-theme/commit/946a1d13) +- Storybook: associate typescript stories (Closes #258) [`8cdbcc0d`](https://github.com/material-extensions/vscode-material-icon-theme/commit/8cdbcc0d) +- Updated go icon (Closes #257) [`8a50a7c0`](https://github.com/material-extensions/vscode-material-icon-theme/commit/8a50a7c0) +- Updated todo icon (Closes #247) [`23b32b81`](https://github.com/material-extensions/vscode-material-icon-theme/commit/23b32b81) +- Assign the `console` icon to .fish files [`ec871e8e`](https://github.com/material-extensions/vscode-material-icon-theme/commit/ec871e8e) +- Updated hcl icons Closes #253 [`e6b1ecc5`](https://github.com/material-extensions/vscode-material-icon-theme/commit/e6b1ecc5) +- Add HashiCorp Configuration Language icon [`638b7217`](https://github.com/material-extensions/vscode-material-icon-theme/commit/638b7217) +- Added .htpasswd file icon mapping Closes #251 [`35057bfe`](https://github.com/material-extensions/vscode-material-icon-theme/commit/35057bfe) +- Adds docker-compose.yaml file association [`b6591416`](https://github.com/material-extensions/vscode-material-icon-theme/commit/b6591416) +- Added angular.json - Closes #243 [`62aed590`](https://github.com/material-extensions/vscode-material-icon-theme/commit/62aed590) + +#### [v3.4.0](https://github.com/material-extensions/vscode-material-icon-theme/compare/v3.3.0...v3.4.0) > May 6, 2018 -- Added plugins folder icon [`00e05a67`](https://github.com/PKief/vscode-material-icon-theme/commit/00e05a67) -- Force wildcards to overwrite file names if required - Closes #241 [`ae15ab58`](https://github.com/PKief/vscode-material-icon-theme/commit/ae15ab58) -- Updated size and color of Ruby Gemfile icon References #240 [`9f4e8bc9`](https://github.com/PKief/vscode-material-icon-theme/commit/9f4e8bc9) -- โœจ add Ruby Gemfile icon [`0467aa30`](https://github.com/PKief/vscode-material-icon-theme/commit/0467aa30) -- Improved fastlane icons References #237 [`8bb48448`](https://github.com/PKief/vscode-material-icon-theme/commit/8bb48448) -- ๐Ÿ’„ add Fastlane icons [`85999f5c`](https://github.com/PKief/vscode-material-icon-theme/commit/85999f5c) -- Updated dependencies [`b8ddd00b`](https://github.com/PKief/vscode-material-icon-theme/commit/b8ddd00b) -- Rearranged imports [`0b7a8b9b`](https://github.com/PKief/vscode-material-icon-theme/commit/0b7a8b9b) -- Added cfm icon mapping [`74d10557`](https://github.com/PKief/vscode-material-icon-theme/commit/74d10557) -- Added awk file icon mapping [`47fae343`](https://github.com/PKief/vscode-material-icon-theme/commit/47fae343) -- Added debug folder icon References #236 [`338782f2`](https://github.com/PKief/vscode-material-icon-theme/commit/338782f2) -- Added .cache folder mapping [`9728bd5d`](https://github.com/PKief/vscode-material-icon-theme/commit/9728bd5d) -- Updated version [`bb106bc4`](https://github.com/PKief/vscode-material-icon-theme/commit/bb106bc4) - -#### [v3.3.0](https://github.com/PKief/vscode-material-icon-theme/compare/v3.2.6...v3.3.0) +- Added plugins folder icon [`00e05a67`](https://github.com/material-extensions/vscode-material-icon-theme/commit/00e05a67) +- Force wildcards to overwrite file names if required - Closes #241 [`ae15ab58`](https://github.com/material-extensions/vscode-material-icon-theme/commit/ae15ab58) +- Updated size and color of Ruby Gemfile icon References #240 [`9f4e8bc9`](https://github.com/material-extensions/vscode-material-icon-theme/commit/9f4e8bc9) +- โœจ add Ruby Gemfile icon [`0467aa30`](https://github.com/material-extensions/vscode-material-icon-theme/commit/0467aa30) +- Improved fastlane icons References #237 [`8bb48448`](https://github.com/material-extensions/vscode-material-icon-theme/commit/8bb48448) +- ๐Ÿ’„ add Fastlane icons [`85999f5c`](https://github.com/material-extensions/vscode-material-icon-theme/commit/85999f5c) +- Updated dependencies [`b8ddd00b`](https://github.com/material-extensions/vscode-material-icon-theme/commit/b8ddd00b) +- Rearranged imports [`0b7a8b9b`](https://github.com/material-extensions/vscode-material-icon-theme/commit/0b7a8b9b) +- Added cfm icon mapping [`74d10557`](https://github.com/material-extensions/vscode-material-icon-theme/commit/74d10557) +- Added awk file icon mapping [`47fae343`](https://github.com/material-extensions/vscode-material-icon-theme/commit/47fae343) +- Added debug folder icon References #236 [`338782f2`](https://github.com/material-extensions/vscode-material-icon-theme/commit/338782f2) +- Added .cache folder mapping [`9728bd5d`](https://github.com/material-extensions/vscode-material-icon-theme/commit/9728bd5d) +- Updated version [`bb106bc4`](https://github.com/material-extensions/vscode-material-icon-theme/commit/bb106bc4) + +#### [v3.3.0](https://github.com/material-extensions/vscode-material-icon-theme/compare/v3.2.6...v3.3.0) > April 8, 2018 -- Added __pycache__ folder icon mapping [`c13c060a`](https://github.com/PKief/vscode-material-icon-theme/commit/c13c060a) -- Added META-INF and manifest.mf icon associations [`58811d75`](https://github.com/PKief/vscode-material-icon-theme/commit/58811d75) -- Added option to disable restart message. References #225 [`08a0cbc9`](https://github.com/PKief/vscode-material-icon-theme/commit/08a0cbc9) -- Updated dependencies [`8bdabfde`](https://github.com/PKief/vscode-material-icon-theme/commit/8bdabfde) -- Updated notification after update [`e378bd76`](https://github.com/PKief/vscode-material-icon-theme/commit/e378bd76) -- Added python folder icon [`5b96e34a`](https://github.com/PKief/vscode-material-icon-theme/commit/5b96e34a) -- Added wepy file icon (closes #226) [`07944764`](https://github.com/PKief/vscode-material-icon-theme/commit/07944764) -- Added less folder icon (closes #207) + Improved less file icon [`dcb4b8c4`](https://github.com/PKief/vscode-material-icon-theme/commit/dcb4b8c4) -- Added `jest.teardown.js` icon association Closes #230 [`fa26bbe2`](https://github.com/PKief/vscode-material-icon-theme/commit/fa26bbe2) -- Added Storybook file icon Closes #235 [`8864d0a2`](https://github.com/PKief/vscode-material-icon-theme/commit/8864d0a2) -- Updated html file icon mapping Added html icon for `*.xhtml`. [`92ffea70`](https://github.com/PKief/vscode-material-icon-theme/commit/92ffea70) -- Improved processing icon References #229 [`0c3277df`](https://github.com/PKief/vscode-material-icon-theme/commit/0c3277df) -- added processing icon [`2c8ba32d`](https://github.com/PKief/vscode-material-icon-theme/commit/2c8ba32d) -- Improved Vue.js logo [`6eeb80c6`](https://github.com/PKief/vscode-material-icon-theme/commit/6eeb80c6) -- Fixes issue with config change detection References #225 [`50e40e8e`](https://github.com/PKief/vscode-material-icon-theme/commit/50e40e8e) - -#### [v3.2.6](https://github.com/PKief/vscode-material-icon-theme/compare/v3.2.4...v3.2.6) +- Added __pycache__ folder icon mapping [`c13c060a`](https://github.com/material-extensions/vscode-material-icon-theme/commit/c13c060a) +- Added META-INF and manifest.mf icon associations [`58811d75`](https://github.com/material-extensions/vscode-material-icon-theme/commit/58811d75) +- Added option to disable restart message. References #225 [`08a0cbc9`](https://github.com/material-extensions/vscode-material-icon-theme/commit/08a0cbc9) +- Updated dependencies [`8bdabfde`](https://github.com/material-extensions/vscode-material-icon-theme/commit/8bdabfde) +- Updated notification after update [`e378bd76`](https://github.com/material-extensions/vscode-material-icon-theme/commit/e378bd76) +- Added python folder icon [`5b96e34a`](https://github.com/material-extensions/vscode-material-icon-theme/commit/5b96e34a) +- Added wepy file icon (closes #226) [`07944764`](https://github.com/material-extensions/vscode-material-icon-theme/commit/07944764) +- Added less folder icon (closes #207) + Improved less file icon [`dcb4b8c4`](https://github.com/material-extensions/vscode-material-icon-theme/commit/dcb4b8c4) +- Added `jest.teardown.js` icon association Closes #230 [`fa26bbe2`](https://github.com/material-extensions/vscode-material-icon-theme/commit/fa26bbe2) +- Added Storybook file icon Closes #235 [`8864d0a2`](https://github.com/material-extensions/vscode-material-icon-theme/commit/8864d0a2) +- Updated html file icon mapping Added html icon for `*.xhtml`. [`92ffea70`](https://github.com/material-extensions/vscode-material-icon-theme/commit/92ffea70) +- Improved processing icon References #229 [`0c3277df`](https://github.com/material-extensions/vscode-material-icon-theme/commit/0c3277df) +- added processing icon [`2c8ba32d`](https://github.com/material-extensions/vscode-material-icon-theme/commit/2c8ba32d) +- Improved Vue.js logo [`6eeb80c6`](https://github.com/material-extensions/vscode-material-icon-theme/commit/6eeb80c6) +- Fixes issue with config change detection References #225 [`50e40e8e`](https://github.com/material-extensions/vscode-material-icon-theme/commit/50e40e8e) + +#### [v3.2.6](https://github.com/material-extensions/vscode-material-icon-theme/compare/v3.2.4...v3.2.6) > March 17, 2018 -- Added '.vbs' file icon mapping [`6b374622`](https://github.com/PKief/vscode-material-icon-theme/commit/6b374622) -- Added .nyc-output folder icon mapping #192 [`d275471c`](https://github.com/PKief/vscode-material-icon-theme/commit/d275471c) -- Added jest icon #192 [`cac11bc0`](https://github.com/PKief/vscode-material-icon-theme/commit/cac11bc0) -- added docker icon to the docker-compose.override.yml file [`2507e1be`](https://github.com/PKief/vscode-material-icon-theme/commit/2507e1be) -- Updated tslint rules [`22233123`](https://github.com/PKief/vscode-material-icon-theme/commit/22233123) -- Fixed issue in change detection [`0c274589`](https://github.com/PKief/vscode-material-icon-theme/commit/0c274589) -- Added messages folder icon [`53f07f82`](https://github.com/PKief/vscode-material-icon-theme/commit/53f07f82) -- Added benchmark folder icon [`ff7bec01`](https://github.com/PKief/vscode-material-icon-theme/commit/ff7bec01) -- Fixed issue with wrong color of docker icon (Bugfix 3.2.5) [`cb8e074e`](https://github.com/PKief/vscode-material-icon-theme/commit/cb8e074e) +- Added '.vbs' file icon mapping [`6b374622`](https://github.com/material-extensions/vscode-material-icon-theme/commit/6b374622) +- Added .nyc-output folder icon mapping #192 [`d275471c`](https://github.com/material-extensions/vscode-material-icon-theme/commit/d275471c) +- Added jest icon #192 [`cac11bc0`](https://github.com/material-extensions/vscode-material-icon-theme/commit/cac11bc0) +- added docker icon to the docker-compose.override.yml file [`2507e1be`](https://github.com/material-extensions/vscode-material-icon-theme/commit/2507e1be) +- Updated tslint rules [`22233123`](https://github.com/material-extensions/vscode-material-icon-theme/commit/22233123) +- Fixed issue in change detection [`0c274589`](https://github.com/material-extensions/vscode-material-icon-theme/commit/0c274589) +- Added messages folder icon [`53f07f82`](https://github.com/material-extensions/vscode-material-icon-theme/commit/53f07f82) +- Added benchmark folder icon [`ff7bec01`](https://github.com/material-extensions/vscode-material-icon-theme/commit/ff7bec01) +- Fixed issue with wrong color of docker icon (Bugfix 3.2.5) [`cb8e074e`](https://github.com/material-extensions/vscode-material-icon-theme/commit/cb8e074e) -#### [v3.2.4](https://github.com/PKief/vscode-material-icon-theme/compare/v3.2.3...v3.2.4) +#### [v3.2.4](https://github.com/material-extensions/vscode-material-icon-theme/compare/v3.2.3...v3.2.4) > March 10, 2018 -- Added ci folder icon Closes #209 [`d025a378`](https://github.com/PKief/vscode-material-icon-theme/commit/d025a378) -- Updated grunt file References #213 [`80fe7bb1`](https://github.com/PKief/vscode-material-icon-theme/commit/80fe7bb1) -- Added another common settings extension [`66510004`](https://github.com/PKief/vscode-material-icon-theme/commit/66510004) -- added gruntfile icon [`c8ed7ce7`](https://github.com/PKief/vscode-material-icon-theme/commit/c8ed7ce7) -- Additional folder names [`03727fd2`](https://github.com/PKief/vscode-material-icon-theme/commit/03727fd2) -- Added routes folder icon References #112 [`83fe248b`](https://github.com/PKief/vscode-material-icon-theme/commit/83fe248b) -- Added i18n folder mappings Closes #206 [`67818469`](https://github.com/PKief/vscode-material-icon-theme/commit/67818469) -- Added class folder icon References #112 [`b53f307d`](https://github.com/PKief/vscode-material-icon-theme/commit/b53f307d) -- Updated scripts and dependencies [`bffeaaff`](https://github.com/PKief/vscode-material-icon-theme/commit/bffeaaff) -- Add .cfignore (Cloud Foundry) icon Closes #210 [`59aacd19`](https://github.com/PKief/vscode-material-icon-theme/commit/59aacd19) -- Updated change detection [`30e9b3bf`](https://github.com/PKief/vscode-material-icon-theme/commit/30e9b3bf) -- Optimized icons [`58476c52`](https://github.com/PKief/vscode-material-icon-theme/commit/58476c52) - -#### [v3.2.3](https://github.com/PKief/vscode-material-icon-theme/compare/v3.2.2...v3.2.3) +- Added ci folder icon Closes #209 [`d025a378`](https://github.com/material-extensions/vscode-material-icon-theme/commit/d025a378) +- Updated grunt file References #213 [`80fe7bb1`](https://github.com/material-extensions/vscode-material-icon-theme/commit/80fe7bb1) +- Added another common settings extension [`66510004`](https://github.com/material-extensions/vscode-material-icon-theme/commit/66510004) +- added gruntfile icon [`c8ed7ce7`](https://github.com/material-extensions/vscode-material-icon-theme/commit/c8ed7ce7) +- Additional folder names [`03727fd2`](https://github.com/material-extensions/vscode-material-icon-theme/commit/03727fd2) +- Added routes folder icon References #112 [`83fe248b`](https://github.com/material-extensions/vscode-material-icon-theme/commit/83fe248b) +- Added i18n folder mappings Closes #206 [`67818469`](https://github.com/material-extensions/vscode-material-icon-theme/commit/67818469) +- Added class folder icon References #112 [`b53f307d`](https://github.com/material-extensions/vscode-material-icon-theme/commit/b53f307d) +- Updated scripts and dependencies [`bffeaaff`](https://github.com/material-extensions/vscode-material-icon-theme/commit/bffeaaff) +- Add .cfignore (Cloud Foundry) icon Closes #210 [`59aacd19`](https://github.com/material-extensions/vscode-material-icon-theme/commit/59aacd19) +- Updated change detection [`30e9b3bf`](https://github.com/material-extensions/vscode-material-icon-theme/commit/30e9b3bf) +- Optimized icons [`58476c52`](https://github.com/material-extensions/vscode-material-icon-theme/commit/58476c52) + +#### [v3.2.3](https://github.com/material-extensions/vscode-material-icon-theme/compare/v3.2.2...v3.2.3) > February 20, 2018 -- Added typescript folder icons Improved current typescript file icons Closes #199 [`e8808a49`](https://github.com/PKief/vscode-material-icon-theme/commit/e8808a49) -- Improved folder icons: - Font - Git - Sass - Views [`a4747c32`](https://github.com/PKief/vscode-material-icon-theme/commit/a4747c32) -- Updated mjml icon size #200 [`aa3658ea`](https://github.com/PKief/vscode-material-icon-theme/commit/aa3658ea) -- fix: add .postcssrc (JSON) to supported filenames. [`6b5338ca`](https://github.com/PKief/vscode-material-icon-theme/commit/6b5338ca) -- Added PostgreSQL icon mappings Closes #197 [`7fa96ec0`](https://github.com/PKief/vscode-material-icon-theme/commit/7fa96ec0) -- Added mjml icon [`aabf8bbc`](https://github.com/PKief/vscode-material-icon-theme/commit/aabf8bbc) -- Added "other" folder icon References #187 #192 [`7f2c8393`](https://github.com/PKief/vscode-material-icon-theme/commit/7f2c8393) -- coverage folder icon #192 [`3961dac6`](https://github.com/PKief/vscode-material-icon-theme/commit/3961dac6) -- Added gradle folder icon #112 [`fed271e3`](https://github.com/PKief/vscode-material-icon-theme/commit/fed271e3) -- Updated colors of wordpress icons #194 [`a6ffe876`](https://github.com/PKief/vscode-material-icon-theme/commit/a6ffe876) -- Add Wordpress icons [`2ff2b2cd`](https://github.com/PKief/vscode-material-icon-theme/commit/2ff2b2cd) +- Added typescript folder icons Improved current typescript file icons Closes #199 [`e8808a49`](https://github.com/material-extensions/vscode-material-icon-theme/commit/e8808a49) +- Improved folder icons: - Font - Git - Sass - Views [`a4747c32`](https://github.com/material-extensions/vscode-material-icon-theme/commit/a4747c32) +- Updated mjml icon size #200 [`aa3658ea`](https://github.com/material-extensions/vscode-material-icon-theme/commit/aa3658ea) +- fix: add .postcssrc (JSON) to supported filenames. [`6b5338ca`](https://github.com/material-extensions/vscode-material-icon-theme/commit/6b5338ca) +- Added PostgreSQL icon mappings Closes #197 [`7fa96ec0`](https://github.com/material-extensions/vscode-material-icon-theme/commit/7fa96ec0) +- Added mjml icon [`aabf8bbc`](https://github.com/material-extensions/vscode-material-icon-theme/commit/aabf8bbc) +- Added "other" folder icon References #187 #192 [`7f2c8393`](https://github.com/material-extensions/vscode-material-icon-theme/commit/7f2c8393) +- coverage folder icon #192 [`3961dac6`](https://github.com/material-extensions/vscode-material-icon-theme/commit/3961dac6) +- Added gradle folder icon #112 [`fed271e3`](https://github.com/material-extensions/vscode-material-icon-theme/commit/fed271e3) +- Updated colors of wordpress icons #194 [`a6ffe876`](https://github.com/material-extensions/vscode-material-icon-theme/commit/a6ffe876) +- Add Wordpress icons [`2ff2b2cd`](https://github.com/material-extensions/vscode-material-icon-theme/commit/2ff2b2cd) diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 458f501240..897567a600 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -1,127 +1,127 @@ -# Contributor Covenant Code of Conduct - -## Our Pledge - -We as members, contributors, and leaders pledge to make participation in our -community a harassment-free experience for everyone, regardless of age, body -size, visible or invisible disability, ethnicity, sex characteristics, gender -identity and expression, level of experience, education, socio-economic status, -nationality, personal appearance, race, religion, or sexual identity -and orientation. - -We pledge to act and interact in ways that contribute to an open, welcoming, -diverse, inclusive, and healthy community. - -## Our Standards - -Examples of behavior that contributes to a positive environment for our -community include: - -* Demonstrating empathy and kindness toward other people -* Being respectful of differing opinions, viewpoints, and experiences -* Giving and gracefully accepting constructive feedback -* Accepting responsibility and apologizing to those affected by our mistakes, - and learning from the experience -* Focusing on what is best not just for us as individuals, but for the - overall community - -Examples of unacceptable behavior include: - -* The use of sexualized language or imagery, and sexual attention or - advances of any kind -* Trolling, insulting or derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or email - address, without their explicit permission -* Other conduct which could reasonably be considered inappropriate in a - professional setting - -## Enforcement Responsibilities - -Community leaders are responsible for clarifying and enforcing our standards of -acceptable behavior and will take appropriate and fair corrective action in -response to any behavior that they deem inappropriate, threatening, offensive, -or harmful. - -Community leaders have the right and responsibility to remove, edit, or reject -comments, commits, code, wiki edits, issues, and other contributions that are -not aligned to this Code of Conduct, and will communicate reasons for moderation -decisions when appropriate. - -## Scope - -This Code of Conduct applies within all community spaces, and also applies when -an individual is officially representing the community in public spaces. -Examples of representing our community include using an official e-mail address, -posting via an official social media account, or acting as an appointed -representative at an online or offline event. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported to the community leaders responsible for enforcement at: . -All complaints will be reviewed and investigated promptly and fairly. - -All community leaders are obligated to respect the privacy and security of the -reporter of any incident. - -## Enforcement Guidelines - -Community leaders will follow these Community Impact Guidelines in determining -the consequences for any action they deem in violation of this Code of Conduct: - -### 1. Correction - -**Community Impact**: Use of inappropriate language or other behavior deemed -unprofessional or unwelcome in the community. - -**Consequence**: A private, written warning from community leaders, providing -clarity around the nature of the violation and an explanation of why the -behavior was inappropriate. A public apology may be requested. - -### 2. Warning - -**Community Impact**: A violation through a single incident or series -of actions. - -**Consequence**: A warning with consequences for continued behavior. No -interaction with the people involved, including unsolicited interaction with -those enforcing the Code of Conduct, for a specified period of time. This -includes avoiding interactions in community spaces as well as external channels -like social media. Violating these terms may lead to a temporary or -permanent ban. - -### 3. Temporary Ban - -**Community Impact**: A serious violation of community standards, including -sustained inappropriate behavior. - -**Consequence**: A temporary ban from any sort of interaction or public -communication with the community for a specified period of time. No public or -private interaction with the people involved, including unsolicited interaction -with those enforcing the Code of Conduct, is allowed during this period. -Violating these terms may lead to a permanent ban. - -### 4. Permanent Ban - -**Community Impact**: Demonstrating a pattern of violation of community -standards, including sustained inappropriate behavior, harassment of an -individual, or aggression toward or disparagement of classes of individuals. - -**Consequence**: A permanent ban from any sort of public interaction within -the community. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], -version 2.0, available at -. - -Community Impact Guidelines were inspired by [Mozilla's code of conduct -enforcement ladder](https://github.com/mozilla/diversity). - -[homepage]: https://www.contributor-covenant.org - -For answers to common questions about this code of conduct, see the FAQ at -. Translations are available at -. \ No newline at end of file +# Contributor Covenant Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, religion, or sexual identity +and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the + overall community + +Examples of unacceptable behavior include: + +* The use of sexualized language or imagery, and sexual attention or + advances of any kind +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email + address, without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official e-mail address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement at: . +All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series +of actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or +permanent ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within +the community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.0, available at +. + +Community Impact Guidelines were inspired by [Mozilla's code of conduct +enforcement ladder](https://github.com/mozilla/diversity). + +[homepage]: https://www.contributor-covenant.org + +For answers to common questions about this code of conduct, see the FAQ at +. Translations are available at +. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 1ccc483964..195affbc0f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,3 +1,7 @@ + + +phorm.ai +

How to contribute

Glad you're here and interested in expanding this project ๐ŸŽ‰ In order to make this work in the best possible way, there are hints and tips for successful contributors on this page. Please read everything carefully and your contributions will be valuable and gratefully received. @@ -17,7 +21,7 @@ Glad you're here and interested in expanding this project ๐ŸŽ‰ In order to make - [Designing Pixel Perfect Icons](#pixel-perfect-icons) - [Cloning existing icons](#icon-cloning) - [Add translations](#add-translations) -- [Update API](#update-api) +- [Debug extension](#debug-extension-locally) @@ -45,7 +49,7 @@ flowchart LR ### Creating New Icons Workflow -**Checklist** +#### Checklist 1. [ ] Create icon as SVG ([how to](#create-icon-as-svg)) 2. [ ] Icon color fits to Material Design ([how to](#material-design-colors)) @@ -59,7 +63,7 @@ There are times when we just need to create a variant of an existing icon. For example, we might want to create an icon using the shape of the `typescript` icon, but we want it to be green and associated with the `library.ts` file name. In that case, we don't need to create a new svg. This can be done by configuration. -**Checklist** +#### Checklist 1. [ ] Clone the existing icon adjusting its color ([how to](#icon-cloning)) @@ -77,7 +81,7 @@ These free tools are recommended to create or edit new SVG icons: When you create a folder icon, please keep in mind that two SVG files are needed here: one that represents the folder closed and another that represents it open. -``` +```text ๐Ÿ“ folder-example.svg ๐Ÿ“‚ folder-example-open.svg ``` @@ -94,55 +98,60 @@ An important success factor of this icon extension is the fact that all colors f Now it often happens that many programming languages already have icons with their own colors. To find the matching color from the Material Design color palette based on a known color, there is the [Material Color Converter](https://pkief.github.io/material-color-converter/). With its help any color can be converted into a Material Design color. -You can check if your icon fits the Material Design color palette by running the following command: +You can check if your changed (i.e. not yet committed) icon fits the Material Design color palette by running the following command: ```sh -npm run check-colors +bun run check-colors ``` +Installation of the dependencies is necessary before running the command, see [Debug extension locally](#debug-extension-locally). + +> **Note** +> The colors black (`#000000`) and white (`#ffffff`) are not allowed in the icons. These colors have too much contrast and do not fit into the overall picture of the icons. + Continue reading [here](#design-folder-icons) to find out about colors for the folder icons. -| โœ… | โŒ | -| ----------------------------------------------------------------- | --------------------------------------------------------------------- | -| | | +| โœ… | โŒ | +| :-: | :-: | +| Icon with right color | Icon with wrong color |

Design folder icons

When designing folder icons there are also a few points to consider. A folder icon always consists of two icons - the folder in the background and a motive in the foreground: - +An example of a folder -For the motive, only colors from the second row in the [color palette](https://pkief.com/material-color-converter/) are allowed. For the background choose a slightly darker hue (mostly in rows 4-6 in the palette). +For the motive, only colors from the second row in the [color palette](https://pkief.github.io/material-color-converter/) are allowed. For the background choose a slightly darker hue (mostly in rows 4-6 in the palette). - +Material color palette This uniform color selection makes the folder icons look more consistent and fit well together. This ensures a good quality of the icons. -| โœ… | โŒ | -| ------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------- | -| | | +| โœ… | โŒ | +| :-: | :-: | +| Folder icon with right colors | Folder icon with wrong colors |

Icon spacing

All icons have a small distance to the edge. This way they don't seem so pressed together and have a little more air. It is not defined how much margin you have to leave them, because this is always a bit different. Just make sure that there is a space to the outside. -| โœ… | โŒ | -| ----------------------------------------------------------------- | -------------------------------------------------------------------- | -| | | +| โœ… | โŒ | +| :-: | :-: | +| Icon with a spacing around | Icon without spacing |

Assignment to file and folder names and language ids

Icons are assigned to file names, folder names or registered languages of VS Code in these files: -- [fileIcons.ts](src/icons/fileIcons.ts) -- [folderIcons.ts](src/icons/folderIcons.ts) -- [languageIcons.ts](src/icons/languageIcons.ts) +- [fileIcons.ts](https://github.com/material-extensions/vscode-material-icon-theme/blob/main/src/core/icons/fileIcons.ts) +- [folderIcons.ts](https://github.com/material-extensions/vscode-material-icon-theme/blob/main/src/core/icons/folderIcons.ts) +- [languageIcons.ts](https://github.com/material-extensions/vscode-material-icon-theme/blob/main/src/core/icons/languageIcons.ts) Be careful when assigning icons to files and folders, as not everyone expects a file name to have a special icon based on a framework that is not used by them. A solution for this can be the usage of [Language icon definitions](#language-icons) or [icon packs](#icon-packs). -#### File icons +### File icons -Here's an example of how the SVG icon 'sample.svg' is assigned to file names and extensions: +Here's an example of how the SVG icon `sample.svg` is assigned to file names and extensions: ```ts { @@ -154,7 +163,7 @@ Here's an example of how the SVG icon 'sample.svg' is assigned to file names and This will apply an icon for the files 'sample.js', 'sample.ts' and 'sample.html' as well as for files that end with 'sample' like 'another-file.sample'. -##### Apply patterns +#### Apply patterns It is also possible to use patterns for file names and extensions. This is useful when you want to assign an icon to a group of files that have a common pattern. Here's an example: @@ -167,7 +176,7 @@ It is also possible to use patterns for file names and extensions. This is usefu } ``` -In case of this example the generated file names are "graphql.js", "graphql.mjs", "graphql.cjs", "graphql.ts", "graphql.mts" and "graphql.cts". The pattern is defined in the [patterns.ts](src/icons/patterns/patterns.ts) file. +In case of this example the generated file names are "graphql.js", "graphql.mjs", "graphql.cjs", "graphql.ts", "graphql.mts" and "graphql.cts". The pattern is defined in the [patterns.ts](https://github.com/material-extensions/vscode-material-icon-theme/blob/main/src/core/patterns/patterns.ts) file. Available patterns are right now: @@ -208,9 +217,9 @@ This will apply the sample.svg icon to all files which could be associated by VS VS Code can be customized so that the background color is either light or dark. This must also be considered for the icons, because a dark icon on a dark background does not provide the necessary contrast it needs to be recognizable. -| โœ… | โŒ | -| --------------------------------------------------------------------- | ------------------------------------------------------------------------ | -| | | +| โœ… | โŒ | +| :-: | :-: | +| Icon with good contrast | Icon with bad constrast | Preferably, the icon has a color that looks good on both backgrounds. If this is ever not possible because it would otherwise no longer match the icon's branding, different icons can be provided for the respective color scheme. @@ -259,10 +268,10 @@ Here's an example that shows how two icons can be assigned to the same file name To create an icon pack, the following steps have to be completed: -1. Add the name of the icon pack to the enum in [iconPack.ts](src/models/icons/iconPack.ts) +1. Add the name of the icon pack to the enum in [iconPack.ts](https://github.com/material-extensions/vscode-material-icon-theme/blob/e21e6b1b57f2ce0b6e7306178b26d11c60e2ca0f/src/core/models/icons/iconPack.ts) 2. Add translations to the package.nls.\*.json files under the section `configuration.activeIconPack` (at least to [package.nls.json](package.nls.json), the English translation file) 3. Adjust [package.json](package.json) under `configuration.properties.material-icon-theme.activeIconPack` -4. Use the icon pack inside the [fileIcons.ts](src/icons/fileIcons.ts),[folderIcons.ts](src/icons/folderIcons.ts) or [languageIcons.ts](src/icons/languageIcons.ts) files in the `enabledFor` attribute +4. Use the icon pack inside the [fileIcons.ts](https://github.com/material-extensions/vscode-material-icon-theme/blob/main/src/core/icons/fileIcons.ts),[folderIcons.ts](https://github.com/material-extensions/vscode-material-icon-theme/blob/main/src/core/icons/folderIcons.ts) or [languageIcons.ts](https://github.com/material-extensions/vscode-material-icon-theme/blob/main/src/core/icons/languageIcons.ts) files in the `enabledFor` attribute

Designing Pixel-Perfect Icons

@@ -272,7 +281,7 @@ A known issue is that the icons can appear blurry after resizing them, even to t To avoid blurry icons, it is recommended to design them using a 16x16 grid and trying to align the edges of the icon to it. This will help ensure that the icons look sharp and clear, even at smaller sizes. - +An example of a pixel-perfect icon

Tips for Designing Pixel-Perfect Icons

@@ -282,15 +291,15 @@ The following are some tips to help you design nice and sharp-looking icons. The The following example illustrates an icon with its paths aligned to a 16x16 grid: - + An example of a pixel-perfect folder icon On the other hand, this other example illustrates an icon with its paths not aligned to a 16x16 grid: - + An example of a missaligned folder icon Here is a comparison of both icons rendered at 16px: - + Comparison of the correctly positioned icon and the incorrect one As you can see, the misaligned icon (left) has blurry edges with "ghost pixels" that attempt to simulate "half a pixel". Additionally, the suitcase motif in it is slightly harder to recognize. On the other hand, the aligned icon (right) looks sharper and clearer. @@ -302,21 +311,21 @@ The following are some tips to help you design nice and sharp-looking icons. The Let's consider the following example: - + Elephant icon with too many details The icon is visually appealing, but it has some issues: the trunk, the tail and the negative space separating the ear from the body are too thin. Additionally, the eye is too small, and the shapes, in general, are somewhat complex. While this icon would look great if rendered at 24, 32, or 64 pixels, at 16 pixels, we lack sufficient resolution to effectively convey the concept. Now, let's explore a minimalistic approach to communicating the same concept: - | Concept | Result | - | ------------------------------------------------------------------- | --------------------------------------------------------------------- | - | | | + | Concept | Result | + | --- | --- | + | Elephant icon concept | Elephant ready icon | Indeed, the minimalistic version may lack the level of detail present in the first icon, particularly when viewed at a larger size. However, on the other hand, we are still effectively communicating the concept. It's unmistakably an elephant. Furthermore, all edges and paths are aligned to the grid. Now, let's examine both icons when rendered at 16px: - + Elephant result icon - **Curves vs straight lines**: Let's face it, pixels are square, there's nothing we can do about it. And since pixels are square, drawing a curve actually involves drawing a series of... squares. Consequently, when rendering a curve, we're essentially asking the display to render a fraction of a pixel, which is impossible. As a result, curves tend to appear blurry. This is normal. However, it's perfectly fine to use curves, circles, and rounded edges in your icons. Just keep in mind these limitations if you're wondering why your icon doesn't look as sharp as you'd like. @@ -326,8 +335,8 @@ The extension allows you to clone existing icons and adjust their colors through As we mentioned previously, icons are assigned to filenames, file extensions, and folder names in the following files: -- [fileIcons.ts](src/icons/fileIcons.ts) -- [folderIcons.ts](src/icons/folderIcons.ts) +- [fileIcons.ts](https://github.com/material-extensions/vscode-material-icon-theme/blob/main/src/core/icons/fileIcons.ts) +- [folderIcons.ts](https://github.com/material-extensions/vscode-material-icon-theme/blob/main/src/core/icons/folderIcons.ts) The following example demonstrates how the shapes of the `rust` file icon can be reused to create a clone of it, utilizing different colors and associated with different file names than the original icon. @@ -348,13 +357,13 @@ This will generate a new icon assignment for the file name `lib.rs` with the sam That's it. We don't need to create a new SVG file. The extension will automatically adjust the colors of the existing icon. - +Cloned Rust icon example -The same technique can be applied to folder icons by using the `clone` attribute in the folder icon configuration. +The same technique can be applied to folder icons using the `clone` attribute in the configuration. You might have noticed that we are using aliases for the colors. These aliases correspond to the Material Design color palette. -You can find a list of all available color aliases in the [materialPalette.ts](./src/icons/generator/clones/utils/color/materialPalette.ts) file. +You can find a list of all available color aliases in the [materialPalette.ts](https://github.com/material-extensions/vscode-material-icon-theme/blob/main/src/core/generator/clones/utils/color/materialPalette.ts) file. #### Preventing recoloring in cloned icons @@ -366,7 +375,7 @@ Let's see an example: ![gitlab icon](./images/how-tos/cloned-icon-no-recolor.png) -In this example, we have the `folder-gitlab` folder icon. If we were to clone it, we might want to prevent recoloring from happening over the gitlab logo and only allow recoloring of the folder shape itself. +In this example, we have the `folder-gitlab` folder icon. If we were to clone it, we should prevent recoloring from happening over the gitlab logo and only allow recoloring of the folder shape itself. To do this, we need to set the attribute `data-mit-no-recolor="true"` to the paths, shapes, or groups we do not want to be recolored. @@ -395,9 +404,9 @@ Now if we create a clone of this icon, the paths, shapes, or groups marked with } ``` -Will result in: +This will result in the following: -![result of cloning gitlab icon with selective recoloring](./images/how-tos/cloned-icon-no-recolor-result.png) +![the result of cloning gitlab icon with selective recoloring](./images/how-tos/cloned-icon-no-recolor-result.png) ## Add translations @@ -418,3 +427,25 @@ This icon extension consists not only of icons but also brings some code. This i 6. Run tests with `bun test` You will find more information about the official extension API in the [extension guides of VS Code](https://code.visualstudio.com/api/extension-guides/file-icon-theme). + +### Enable logging + +Logging can be enabled with the following settings: + +```json +{ + "material-icon-theme.enableLogging": true, + "material-icon-theme.logLevel": "debug", +} +``` + +The available log levels are: + +- `error`: Only errors are logged +- `info`: Only info logs are logged +- `debug`: All logs are logged + +Per default the logging is disabled as it can slow down the extension. If logging is enabled, the logs can be found in the output panel of VS Code under "Material Icon Theme". + +> **Note** +> Please restart the extension after changing the logging settings to apply the changes. diff --git a/README.md b/README.md index c032c2e5bf..dc9e80af7f 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ + +


logo @@ -91,7 +93,7 @@ It's possible to add custom icons by adding a path to an SVG file which is locat For example a custom SVG file called `sample.svg` can be placed in an `icons` folder inside of VS Code's `extensions` folder: -``` +```text .vscode โ”— extensions โ”— icons @@ -108,7 +110,7 @@ In the settings.json (User Settings only!) the icon can be associated to a file _Note: The custom file name must be configured in the settings without the file ending `.svg` as shown in the example above._ -#### Custom clones +#### Custom file icon clones It's also possible to clone existing file icons and change their colors to create new icons that can be associated with file names or file extensions. The following example shows how to clone the `rust` icon: @@ -134,8 +136,8 @@ This will create two new icons called `rust-mod` and `rust-lib` that are associa cloned file icons -- Although you can use any `#RRGGBB` color for the `color` and `lightColor` properties, if you want to stick with colors from the material palette, you can check the full list of allowed aliases [here](https://github.com/PKief/vscode-material-icon-theme/blob/main/src/icons/generator/clones/utils/color/materialPalette.ts#L7). -- You can check the full list of available icons to be used as the `base` [here](https://github.com/PKief/vscode-material-icon-theme/blob/main/src/icons/fileIcons.ts). +- Although you can use any `#RRGGBB` color for the `color` and `lightColor` properties, if you want to stick with colors from the material palette, you can check the full list of allowed aliases [here](https://github.com/material-extensions/vscode-material-icon-theme/blob/main/src/core/generator/clones/utils/color/materialPalette.ts). +- You can check the full list of available icons to be used as the `base` [here](https://github.com/material-extensions/vscode-material-icon-theme/blob/main/src/core/icons/fileIcons.ts). ### Folder associations @@ -154,7 +156,7 @@ Similar to the files, it is also possible to reference your own SVG icons for fo In our example we place them into an `icons` folder inside of the `.vscode/extensions` folder: -``` +```text .vscode โ”— extensions โ”— icons @@ -170,7 +172,7 @@ In the settings.json (User Settings only!) the folder icons can be associated to } ``` -#### Custom clones +#### Custom folder icon clones It's also possible to clone existing folder icons and change their colors to create new icons that can be associated with folder names. The following example shows how to clone the `admin` folder icon: @@ -196,8 +198,8 @@ This will create two new icons called `users-admin` and `roles-admin` that are a cloned folder icons -- Although you can use any `#RRGGBB` color for the `color` and `lightColor` properties, if you want to stick with colors from the material palette, you can check the full list of allowed aliases [here](https://github.com/PKief/vscode-material-icon-theme/blob/main/src/icons/generator/clones/utils/color/materialPalette.ts). -- You can check the full list of available icon to be used as the `base` [here](https://github.com/PKief/vscode-material-icon-theme/blob/main/src/icons/folderIcons.ts). +- Although you can use any `#RRGGBB` color for the `color` and `lightColor` properties, if you want to stick with colors from the material palette, you can check the full list of allowed aliases [here](https://github.com/material-extensions/vscode-material-icon-theme/blob/main/src/core/generator/clones/utils/color/materialPalette.ts). +- You can check the full list of available icon to be used as the `base` [here](https://github.com/material-extensions/vscode-material-icon-theme/blob/main/src/core/icons/folderIcons.ts). ### Language associations @@ -239,14 +241,15 @@ Press `Ctrl-Shift-P` to open the command palette and type `Material Icons`. ## Contributors - + Contributors **Would you like to contribute?** -Take a look at the [contribution guidelines](https://github.com/PKief/vscode-material-icon-theme/blob/main/CONTRIBUTING.md) and open a [new issue](https://github.com/PKief/vscode-material-icon-theme/issues) or [pull request](https://github.com/PKief/vscode-material-icon-theme/pulls) on GitHub. +Take a look at the [contribution guidelines](https://github.com/material-extensions/vscode-material-icon-theme/blob/main/CONTRIBUTING.md) and open a [new issue](https://github.com/material-extensions/vscode-material-icon-theme/issues) or [pull request](https://github.com/material-extensions/vscode-material-icon-theme/pulls) on GitHub. ## Related extensions - [Material Icons for GitHub](https://github.com/Claudiohbsantos/github-material-icons-extension) +- [Material Product Icons](https://github.com/material-extensions/vscode-material-product-icons) diff --git a/biome.jsonc b/biome.jsonc index 3d776578a3..1c88af2541 100644 --- a/biome.jsonc +++ b/biome.jsonc @@ -1,5 +1,5 @@ { - "$schema": "https://biomejs.dev/schemas/1.7.3/schema.json", + "$schema": "https://biomejs.dev/schemas/1.8.2/schema.json", "formatter": { "enabled": true, "formatWithErrors": false, @@ -14,8 +14,12 @@ "enabled": true, "rules": { "recommended": false, - "complexity": { "useArrowFunction": "off" }, - "correctness": { "noUnsafeFinally": "error" }, + "complexity": { "useArrowFunction": "error" }, + "correctness": { + "noUnsafeFinally": "error", + "noUnusedVariables": "error", + "noUnusedImports": "error" + }, "security": { "noGlobalEval": "error" }, "style": { "noVar": "error", @@ -28,6 +32,7 @@ }, "suspicious": { "noDoubleEquals": "error", + "noExplicitAny": "error", "useNamespaceKeyword": "error" } } @@ -36,7 +41,7 @@ "formatter": { "jsxQuoteStyle": "single", "quoteProperties": "asNeeded", - "trailingComma": "es5", + "trailingCommas": "es5", "semicolons": "always", "arrowParentheses": "always", "bracketSpacing": true, diff --git a/build/build-with-esbuild.ts b/build/build-with-esbuild.ts new file mode 100644 index 0000000000..1723615c1d --- /dev/null +++ b/build/build-with-esbuild.ts @@ -0,0 +1,13 @@ +import { join } from 'node:path'; +import esbuild from 'esbuild'; +import config from './esbuild.config'; + +const output = await esbuild.build(config).catch(() => process.exit(1)); + +// If metafile is enabled, write it to dist/metafile.json +// Metafiles can be analyzed to determine the dependencies of the build +// https://esbuild.github.io/analyze/ +if (config.metafile) { + const path = join(process.cwd(), 'dist', 'metafile.json'); + await Bun.write(path, JSON.stringify(output.metafile, undefined, 2)); +} diff --git a/build/esbuild.config.ts b/build/esbuild.config.ts new file mode 100644 index 0000000000..7169462800 --- /dev/null +++ b/build/esbuild.config.ts @@ -0,0 +1,28 @@ +import type { BuildOptions } from 'esbuild'; + +const config: BuildOptions = { + entryPoints: [ + './src/extension/desktop/extension.ts', + './src/extension/web/extension.ts', + './src/module/index.ts', + ], + minify: true, + bundle: true, + platform: 'node', + metafile: false, + target: 'node12', + outdir: './dist', + outbase: './src', + outExtension: { + '.js': '.cjs', + }, + format: 'cjs', + external: ['vscode'], + loader: { + '.ts': 'ts', + '.js': 'js', + }, + logLevel: 'info', +}; + +export default config; diff --git a/scripts/watch-with-esbuild.ts b/build/watch-with-esbuild.ts similarity index 56% rename from scripts/watch-with-esbuild.ts rename to build/watch-with-esbuild.ts index 7e98a8ceff..9cb41a8965 100644 --- a/scripts/watch-with-esbuild.ts +++ b/build/watch-with-esbuild.ts @@ -1,9 +1,10 @@ -import esbuild from "esbuild"; -import config from "./esbuild.config"; +import esbuild from 'esbuild'; +import config from './esbuild.config'; try { const context = await esbuild.context(config); await context.watch(); } catch (e) { + console.error(e); process.exit(1); } diff --git a/bun.lockb b/bun.lockb index f734ae8dd0..7c8ba034d5 100644 Binary files a/bun.lockb and b/bun.lockb differ diff --git a/bunfig.toml b/bunfig.toml index d47c19f312..1b02ffbbee 100644 --- a/bunfig.toml +++ b/bunfig.toml @@ -1,3 +1,3 @@ [test] # Load these modules before running tests. -preload = ["./src/tests/mocks"] +preload = ["./src/core/tests/mocks"] diff --git a/changelog.config.json b/changelog.config.json index 375280c089..a68147b605 100644 --- a/changelog.config.json +++ b/changelog.config.json @@ -1,4 +1,4 @@ { - "repositoryUrl": "https://github.com/PKief/vscode-material-icon-theme", + "repositoryUrl": "https://github.com/material-extensions/vscode-material-icon-theme", "blacklistPattern": "^Release \\d+\\.\\d+\\.\\d+|^\\d+\\.\\d+\\.\\d+$" } diff --git a/icons/amplify.svg b/icons/amplify.svg new file mode 100644 index 0000000000..89f42120ba --- /dev/null +++ b/icons/amplify.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/appveyor.svg b/icons/appveyor.svg index d44dbe5fb0..eab0982faa 100644 --- a/icons/appveyor.svg +++ b/icons/appveyor.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/arduino.svg b/icons/arduino.svg index 8fca2e76b2..188f20c4ff 100644 --- a/icons/arduino.svg +++ b/icons/arduino.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/astro-config.svg b/icons/astro-config.svg new file mode 100644 index 0000000000..f5388f5656 --- /dev/null +++ b/icons/astro-config.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/astro.svg b/icons/astro.svg index 7a8fe425b4..a9a0dfa429 100644 --- a/icons/astro.svg +++ b/icons/astro.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/aurelia.svg b/icons/aurelia.svg index dd7be1ada1..1253d0466b 100644 --- a/icons/aurelia.svg +++ b/icons/aurelia.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/auto.svg b/icons/auto.svg index 4ab1e728a7..f51adb4b95 100644 --- a/icons/auto.svg +++ b/icons/auto.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/auto_light.svg b/icons/auto_light.svg index d9e64ebb05..a46a21fe28 100644 --- a/icons/auto_light.svg +++ b/icons/auto_light.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/bazel.svg b/icons/bazel.svg index a8afc0c4d0..b38a90c59a 100644 --- a/icons/bazel.svg +++ b/icons/bazel.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/bench-js.svg b/icons/bench-js.svg new file mode 100644 index 0000000000..c4a51c17d6 --- /dev/null +++ b/icons/bench-js.svg @@ -0,0 +1 @@ + diff --git a/icons/bench-jsx.svg b/icons/bench-jsx.svg new file mode 100644 index 0000000000..ab9db01644 --- /dev/null +++ b/icons/bench-jsx.svg @@ -0,0 +1 @@ + diff --git a/icons/bench-ts.svg b/icons/bench-ts.svg new file mode 100644 index 0000000000..0467b24555 --- /dev/null +++ b/icons/bench-ts.svg @@ -0,0 +1 @@ + diff --git a/icons/bicep.svg b/icons/bicep.svg index d9948caccb..562b39aa4f 100644 --- a/icons/bicep.svg +++ b/icons/bicep.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/bitbucket.svg b/icons/bitbucket.svg index f1e402c90d..c4fa06d33e 100644 --- a/icons/bitbucket.svg +++ b/icons/bitbucket.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/bithound.svg b/icons/bithound.svg index b7e8f7dfb9..39c0b7b289 100644 --- a/icons/bithound.svg +++ b/icons/bithound.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/blink.svg b/icons/blink.svg index 8cba3efa3d..05e7708657 100644 --- a/icons/blink.svg +++ b/icons/blink.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/blink_light.svg b/icons/blink_light.svg index bff5ffbde0..8db0238b7e 100644 --- a/icons/blink_light.svg +++ b/icons/blink_light.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/blitz.svg b/icons/blitz.svg index bd5f02dcc1..7693299988 100644 --- a/icons/blitz.svg +++ b/icons/blitz.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/bower.svg b/icons/bower.svg index 608ae051a5..c71d7a305d 100644 --- a/icons/bower.svg +++ b/icons/bower.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/buildkite.svg b/icons/buildkite.svg index 2b3444f63b..88bf375dc7 100644 --- a/icons/buildkite.svg +++ b/icons/buildkite.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/bun.svg b/icons/bun.svg index 419c918759..124fefd490 100644 --- a/icons/bun.svg +++ b/icons/bun.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/bun_light.svg b/icons/bun_light.svg index 683df1d178..739f6682d0 100644 --- a/icons/bun_light.svg +++ b/icons/bun_light.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/cabal.svg b/icons/cabal.svg index 780ceb7080..fc7f92254b 100644 --- a/icons/cabal.svg +++ b/icons/cabal.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/caddy.svg b/icons/caddy.svg index 37ebf04e90..5ab5f0c29f 100644 --- a/icons/caddy.svg +++ b/icons/caddy.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/cairo.svg b/icons/cairo.svg new file mode 100644 index 0000000000..cd629cf099 --- /dev/null +++ b/icons/cairo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/cds.svg b/icons/cds.svg new file mode 100644 index 0000000000..e637c83121 --- /dev/null +++ b/icons/cds.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/changelog.svg b/icons/changelog.svg index 4461e13fff..3d9031d469 100644 --- a/icons/changelog.svg +++ b/icons/changelog.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/clangd.svg b/icons/clangd.svg new file mode 100644 index 0000000000..f6742e9aef --- /dev/null +++ b/icons/clangd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/code-climate.svg b/icons/code-climate.svg index 0cbc846e49..97cbb4e8fc 100644 --- a/icons/code-climate.svg +++ b/icons/code-climate.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/code-climate_light.svg b/icons/code-climate_light.svg index 57c3820804..dd18ba52b9 100644 --- a/icons/code-climate_light.svg +++ b/icons/code-climate_light.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/codecov.svg b/icons/codecov.svg index 32ce8062ef..48da2f23f8 100644 --- a/icons/codecov.svg +++ b/icons/codecov.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/coderabbit-ai.svg b/icons/coderabbit-ai.svg new file mode 100644 index 0000000000..c5e434028b --- /dev/null +++ b/icons/coderabbit-ai.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/concourse.svg b/icons/concourse.svg index c0b683e846..595cabc036 100644 --- a/icons/concourse.svg +++ b/icons/concourse.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/container.svg b/icons/container.svg deleted file mode 100644 index 68cf12673d..0000000000 --- a/icons/container.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/icons/controller.svg b/icons/controller.svg new file mode 100644 index 0000000000..8c68a50612 --- /dev/null +++ b/icons/controller.svg @@ -0,0 +1 @@ + diff --git a/icons/copilot.svg b/icons/copilot.svg new file mode 100644 index 0000000000..082f79ebb8 --- /dev/null +++ b/icons/copilot.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/copilot_light.svg b/icons/copilot_light.svg new file mode 100644 index 0000000000..d030bd8404 --- /dev/null +++ b/icons/copilot_light.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/crystal.svg b/icons/crystal.svg index 1479a241ae..e3796bfa57 100644 --- a/icons/crystal.svg +++ b/icons/crystal.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/crystal_light.svg b/icons/crystal_light.svg index 9d0fb01de9..ca387f4e95 100644 --- a/icons/crystal_light.svg +++ b/icons/crystal_light.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/cucumber.svg b/icons/cucumber.svg index 090299c5d2..2e1c2c425f 100644 --- a/icons/cucumber.svg +++ b/icons/cucumber.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/cuda.svg b/icons/cuda.svg index e872695258..d4a0f37df4 100644 --- a/icons/cuda.svg +++ b/icons/cuda.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/cypress.svg b/icons/cypress.svg index 354256f9b4..c9ca6cc0b0 100644 --- a/icons/cypress.svg +++ b/icons/cypress.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/dart.svg b/icons/dart.svg index f406c9b34e..f474c78dd1 100644 --- a/icons/dart.svg +++ b/icons/dart.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/deepsource.svg b/icons/deepsource.svg new file mode 100644 index 0000000000..d70fd467c6 --- /dev/null +++ b/icons/deepsource.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/deno.svg b/icons/deno.svg index 16e41c20c8..1ce2a45da2 100644 --- a/icons/deno.svg +++ b/icons/deno.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/deno_light.svg b/icons/deno_light.svg index fbfd463b60..d74ba83881 100644 --- a/icons/deno_light.svg +++ b/icons/deno_light.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/diff.svg b/icons/diff.svg index ccee7215f6..5596f2eb89 100644 --- a/icons/diff.svg +++ b/icons/diff.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/dinophp.svg b/icons/dinophp.svg index 6f6ec9835e..d35ef49454 100644 --- a/icons/dinophp.svg +++ b/icons/dinophp.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/docker.svg b/icons/docker.svg index f53dd30960..5b4da625b3 100644 --- a/icons/docker.svg +++ b/icons/docker.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/document.svg b/icons/document.svg index 4b003e36d6..e496b67219 100644 --- a/icons/document.svg +++ b/icons/document.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/drizzle.svg b/icons/drizzle.svg new file mode 100644 index 0000000000..0de05d7264 --- /dev/null +++ b/icons/drizzle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/duc.svg b/icons/duc.svg new file mode 100644 index 0000000000..cfa947ce15 --- /dev/null +++ b/icons/duc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/dune.svg b/icons/dune.svg index 02ac42460a..247cd36086 100644 --- a/icons/dune.svg +++ b/icons/dune.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/editorconfig.svg b/icons/editorconfig.svg index c4d035ea14..bfcfc426b9 100644 --- a/icons/editorconfig.svg +++ b/icons/editorconfig.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/ejs.svg b/icons/ejs.svg index e18952e2f0..6ead40ebad 100644 --- a/icons/ejs.svg +++ b/icons/ejs.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/elm.svg b/icons/elm.svg index d9c980c0b7..973ded8eed 100644 --- a/icons/elm.svg +++ b/icons/elm.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/email.svg b/icons/email.svg index ae440aff3a..5c7de60de2 100644 --- a/icons/email.svg +++ b/icons/email.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/fastlane.svg b/icons/fastlane.svg index 167adacc08..78cf188ad4 100644 --- a/icons/fastlane.svg +++ b/icons/fastlane.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/flash.svg b/icons/flash.svg index c4426711bf..4d52f1e951 100644 --- a/icons/flash.svg +++ b/icons/flash.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/flow.svg b/icons/flow.svg index af7c385b97..05919810f7 100644 --- a/icons/flow.svg +++ b/icons/flow.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-admin-open.svg b/icons/folder-admin-open.svg index a5d36a2a81..aac8a3d2c2 100644 --- a/icons/folder-admin-open.svg +++ b/icons/folder-admin-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-admin.svg b/icons/folder-admin.svg index 39213b0559..27fc1ae075 100644 --- a/icons/folder-admin.svg +++ b/icons/folder-admin.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-android-open.svg b/icons/folder-android-open.svg index eda3a4255b..c8b970a8f6 100644 --- a/icons/folder-android-open.svg +++ b/icons/folder-android-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-android.svg b/icons/folder-android.svg index cd78ee0a7a..c8d1e70171 100644 --- a/icons/folder-android.svg +++ b/icons/folder-android.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-angular-open.svg b/icons/folder-angular-open.svg index 6fdcce2802..5207d3445f 100644 --- a/icons/folder-angular-open.svg +++ b/icons/folder-angular-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-angular.svg b/icons/folder-angular.svg index 5437640b5c..496dc46b89 100644 --- a/icons/folder-angular.svg +++ b/icons/folder-angular.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-ansible-open.svg b/icons/folder-ansible-open.svg index 073807bc1b..b729f8df25 100644 --- a/icons/folder-ansible-open.svg +++ b/icons/folder-ansible-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-ansible.svg b/icons/folder-ansible.svg index 145b455f05..b20a8ca1bd 100644 --- a/icons/folder-ansible.svg +++ b/icons/folder-ansible.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-api-open.svg b/icons/folder-api-open.svg index 3389f42771..ddf4b1cc27 100644 --- a/icons/folder-api-open.svg +++ b/icons/folder-api-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-api.svg b/icons/folder-api.svg index 963a0c0f4f..54bc5a2d65 100644 --- a/icons/folder-api.svg +++ b/icons/folder-api.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-astro-open.svg b/icons/folder-astro-open.svg new file mode 100644 index 0000000000..f2652fa982 --- /dev/null +++ b/icons/folder-astro-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/folder-astro.svg b/icons/folder-astro.svg new file mode 100644 index 0000000000..163dea4334 --- /dev/null +++ b/icons/folder-astro.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/folder-audio-open.svg b/icons/folder-audio-open.svg index e601a4f72e..a80eeb476c 100644 --- a/icons/folder-audio-open.svg +++ b/icons/folder-audio-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-audio.svg b/icons/folder-audio.svg index 2bab300daf..1acd9d7c45 100644 --- a/icons/folder-audio.svg +++ b/icons/folder-audio.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-aurelia-open.svg b/icons/folder-aurelia-open.svg index fcb2cc48c6..49fb3d8750 100644 --- a/icons/folder-aurelia-open.svg +++ b/icons/folder-aurelia-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-aurelia.svg b/icons/folder-aurelia.svg index 08b4a053bb..1d52a91cc7 100644 --- a/icons/folder-aurelia.svg +++ b/icons/folder-aurelia.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-aws.svg b/icons/folder-aws.svg index d43f682e46..48111a6a0e 100644 --- a/icons/folder-aws.svg +++ b/icons/folder-aws.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-batch-open.svg b/icons/folder-batch-open.svg index 8cb4fd8ca8..84f30bc65c 100644 --- a/icons/folder-batch-open.svg +++ b/icons/folder-batch-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-batch.svg b/icons/folder-batch.svg index e9555f7cf7..b0a88e9c36 100644 --- a/icons/folder-batch.svg +++ b/icons/folder-batch.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-benchmark-open.svg b/icons/folder-benchmark-open.svg index 8a7cdf8918..b12b046f2e 100644 --- a/icons/folder-benchmark-open.svg +++ b/icons/folder-benchmark-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-benchmark.svg b/icons/folder-benchmark.svg index da1a8fccfe..147e1ad123 100644 --- a/icons/folder-benchmark.svg +++ b/icons/folder-benchmark.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-bicep-open.svg b/icons/folder-bicep-open.svg new file mode 100644 index 0000000000..d315c565d7 --- /dev/null +++ b/icons/folder-bicep-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/folder-bicep.svg b/icons/folder-bicep.svg new file mode 100644 index 0000000000..9a529b146a --- /dev/null +++ b/icons/folder-bicep.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/folder-bower-open.svg b/icons/folder-bower-open.svg index 122422241d..186427a996 100644 --- a/icons/folder-bower-open.svg +++ b/icons/folder-bower-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-bower.svg b/icons/folder-bower.svg index c9f841e5c4..785a4d7e3c 100644 --- a/icons/folder-bower.svg +++ b/icons/folder-bower.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-buildkite-open.svg b/icons/folder-buildkite-open.svg index c8aa70d6d3..6b844ac35f 100644 --- a/icons/folder-buildkite-open.svg +++ b/icons/folder-buildkite-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-buildkite.svg b/icons/folder-buildkite.svg index 1b54af29a6..1f94ac097f 100644 --- a/icons/folder-buildkite.svg +++ b/icons/folder-buildkite.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-cart-open.svg b/icons/folder-cart-open.svg index 839a913dcc..edb4911e26 100644 --- a/icons/folder-cart-open.svg +++ b/icons/folder-cart-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-cart.svg b/icons/folder-cart.svg index 33767d67e4..8143c67265 100644 --- a/icons/folder-cart.svg +++ b/icons/folder-cart.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-ci-open.svg b/icons/folder-ci-open.svg index 624e490c50..b133e6b7bf 100644 --- a/icons/folder-ci-open.svg +++ b/icons/folder-ci-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-ci.svg b/icons/folder-ci.svg index bdd2144e15..be5a49cd08 100644 --- a/icons/folder-ci.svg +++ b/icons/folder-ci.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-class-open.svg b/icons/folder-class-open.svg index 6a1bacc7c1..428803159b 100644 --- a/icons/folder-class-open.svg +++ b/icons/folder-class-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-class.svg b/icons/folder-class.svg index 812ebf755a..7b013a62e8 100644 --- a/icons/folder-class.svg +++ b/icons/folder-class.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-client-open.svg b/icons/folder-client-open.svg index cd583f3f8f..051253e746 100644 --- a/icons/folder-client-open.svg +++ b/icons/folder-client-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-client.svg b/icons/folder-client.svg index 9636e7c371..d0c40b916d 100644 --- a/icons/folder-client.svg +++ b/icons/folder-client.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-cloudflare-open.svg b/icons/folder-cloudflare-open.svg index 5fe70111a2..32b1c0848b 100644 --- a/icons/folder-cloudflare-open.svg +++ b/icons/folder-cloudflare-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-cloudflare.svg b/icons/folder-cloudflare.svg index b844302171..7c56b16ff1 100644 --- a/icons/folder-cloudflare.svg +++ b/icons/folder-cloudflare.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-cluster-open.svg b/icons/folder-cluster-open.svg index 68cf4cdc14..09a45360ae 100644 --- a/icons/folder-cluster-open.svg +++ b/icons/folder-cluster-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-cobol-open.svg b/icons/folder-cobol-open.svg index cc339a8506..d2d0b94912 100644 --- a/icons/folder-cobol-open.svg +++ b/icons/folder-cobol-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-cobol.svg b/icons/folder-cobol.svg index 0285ceffd1..a1a160de15 100644 --- a/icons/folder-cobol.svg +++ b/icons/folder-cobol.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-command-open.svg b/icons/folder-command-open.svg index d8712136d1..710d96de71 100644 --- a/icons/folder-command-open.svg +++ b/icons/folder-command-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-command.svg b/icons/folder-command.svg index b7ba57bc57..41fd0ddb53 100644 --- a/icons/folder-command.svg +++ b/icons/folder-command.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-config-open.svg b/icons/folder-config-open.svg index 54ff28edc8..a1f2b15d1d 100644 --- a/icons/folder-config-open.svg +++ b/icons/folder-config-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-config.svg b/icons/folder-config.svg index 13fd705ff5..34f4a8a768 100644 --- a/icons/folder-config.svg +++ b/icons/folder-config.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-connection-open.svg b/icons/folder-connection-open.svg index bb8fa38216..dd3a93e819 100644 --- a/icons/folder-connection-open.svg +++ b/icons/folder-connection-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-connection.svg b/icons/folder-connection.svg index a8f60e36eb..62183e87ee 100644 --- a/icons/folder-connection.svg +++ b/icons/folder-connection.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-constant-open.svg b/icons/folder-constant-open.svg index 29e2b70562..57989fbf12 100644 --- a/icons/folder-constant-open.svg +++ b/icons/folder-constant-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-content-open.svg b/icons/folder-content-open.svg index 4833dfaa25..40ed89c9c1 100644 --- a/icons/folder-content-open.svg +++ b/icons/folder-content-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-content.svg b/icons/folder-content.svg index 43c7c49953..aea422d6b5 100644 --- a/icons/folder-content.svg +++ b/icons/folder-content.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-contract-open.svg b/icons/folder-contract-open.svg index 1381920c85..87324705ae 100644 --- a/icons/folder-contract-open.svg +++ b/icons/folder-contract-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-contract.svg b/icons/folder-contract.svg index 02989b0a14..a562b3fd68 100644 --- a/icons/folder-contract.svg +++ b/icons/folder-contract.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-controller.svg b/icons/folder-controller.svg index b36eef98e3..3b19d1c02c 100644 --- a/icons/folder-controller.svg +++ b/icons/folder-controller.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-core-open.svg b/icons/folder-core-open.svg index 53197fb0ce..7e4b9bd4d2 100644 --- a/icons/folder-core-open.svg +++ b/icons/folder-core-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-core.svg b/icons/folder-core.svg index 9413568d2b..0052d25436 100644 --- a/icons/folder-core.svg +++ b/icons/folder-core.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-coverage-open.svg b/icons/folder-coverage-open.svg index 8fdd660565..56e665c698 100644 --- a/icons/folder-coverage-open.svg +++ b/icons/folder-coverage-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-coverage.svg b/icons/folder-coverage.svg index 66a48d1933..75d19ee5a8 100644 --- a/icons/folder-coverage.svg +++ b/icons/folder-coverage.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-custom-open.svg b/icons/folder-custom-open.svg index 44eef6b52b..148126932b 100644 --- a/icons/folder-custom-open.svg +++ b/icons/folder-custom-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-custom.svg b/icons/folder-custom.svg index 9ac484700b..042a961d5c 100644 --- a/icons/folder-custom.svg +++ b/icons/folder-custom.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-database-open.svg b/icons/folder-database-open.svg index 5997bd7bbf..5aab6ce202 100644 --- a/icons/folder-database-open.svg +++ b/icons/folder-database-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-database.svg b/icons/folder-database.svg index 95042e27f0..94cb76f6e5 100644 --- a/icons/folder-database.svg +++ b/icons/folder-database.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-debug-open.svg b/icons/folder-debug-open.svg index 1c62dfd974..d0c234d58d 100644 --- a/icons/folder-debug-open.svg +++ b/icons/folder-debug-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-debug.svg b/icons/folder-debug.svg index 7b78e3b486..c378f5fe40 100644 --- a/icons/folder-debug.svg +++ b/icons/folder-debug.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-delta-open.svg b/icons/folder-delta-open.svg index 4400df43e2..016e16f3e6 100644 --- a/icons/folder-delta-open.svg +++ b/icons/folder-delta-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-desktop-open.svg b/icons/folder-desktop-open.svg index 65aa0de159..905e422636 100644 --- a/icons/folder-desktop-open.svg +++ b/icons/folder-desktop-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-desktop.svg b/icons/folder-desktop.svg index e5e8882e3a..eb6d4e7187 100644 --- a/icons/folder-desktop.svg +++ b/icons/folder-desktop.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-dist-open.svg b/icons/folder-dist-open.svg index 629a1e9b15..fccb2b5d60 100644 --- a/icons/folder-dist-open.svg +++ b/icons/folder-dist-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-dist.svg b/icons/folder-dist.svg index 4a0ca0e3df..da2236f154 100644 --- a/icons/folder-dist.svg +++ b/icons/folder-dist.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-docker-open.svg b/icons/folder-docker-open.svg index 9ab972ac13..2f9c55fcd2 100644 --- a/icons/folder-docker-open.svg +++ b/icons/folder-docker-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-docker.svg b/icons/folder-docker.svg index 9f773793d9..dea7759a0a 100644 --- a/icons/folder-docker.svg +++ b/icons/folder-docker.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-download-open.svg b/icons/folder-download-open.svg index c1a17a41a6..f0d2908e7f 100644 --- a/icons/folder-download-open.svg +++ b/icons/folder-download-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-download.svg b/icons/folder-download.svg index e590e790cc..e34e717f56 100644 --- a/icons/folder-download.svg +++ b/icons/folder-download.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-drizzle-open.svg b/icons/folder-drizzle-open.svg new file mode 100644 index 0000000000..a62b0e0a23 --- /dev/null +++ b/icons/folder-drizzle-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/folder-drizzle.svg b/icons/folder-drizzle.svg new file mode 100644 index 0000000000..2e6a95b3b3 --- /dev/null +++ b/icons/folder-drizzle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/folder-dump-open.svg b/icons/folder-dump-open.svg index c9358f67a0..0809e0bc2e 100644 --- a/icons/folder-dump-open.svg +++ b/icons/folder-dump-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-dump.svg b/icons/folder-dump.svg index acfab9427b..d78af10d98 100644 --- a/icons/folder-dump.svg +++ b/icons/folder-dump.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-enum-open.svg b/icons/folder-enum-open.svg index f36531e457..57df0fb0f0 100644 --- a/icons/folder-enum-open.svg +++ b/icons/folder-enum-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-enum.svg b/icons/folder-enum.svg index b411ff6abe..fb37913031 100644 --- a/icons/folder-enum.svg +++ b/icons/folder-enum.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-environment-open.svg b/icons/folder-environment-open.svg index 54e24b8c4b..b582a5f384 100644 --- a/icons/folder-environment-open.svg +++ b/icons/folder-environment-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-environment.svg b/icons/folder-environment.svg index 236c7b1fb3..5c2702e167 100644 --- a/icons/folder-environment.svg +++ b/icons/folder-environment.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-error-open.svg b/icons/folder-error-open.svg index 65631c1e56..c69ec98c39 100644 --- a/icons/folder-error-open.svg +++ b/icons/folder-error-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-error.svg b/icons/folder-error.svg index 188c10b638..04ded91124 100644 --- a/icons/folder-error.svg +++ b/icons/folder-error.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-event-open.svg b/icons/folder-event-open.svg index 4a2bbb5a1f..cb080ca477 100644 --- a/icons/folder-event-open.svg +++ b/icons/folder-event-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-event.svg b/icons/folder-event.svg index 580202b3dd..566199b8dd 100644 --- a/icons/folder-event.svg +++ b/icons/folder-event.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-expo-open.svg b/icons/folder-expo-open.svg index 0009ac48ac..4f3b45a655 100644 --- a/icons/folder-expo-open.svg +++ b/icons/folder-expo-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-expo.svg b/icons/folder-expo.svg index 8ed3ed8816..bb3e31eb58 100644 --- a/icons/folder-expo.svg +++ b/icons/folder-expo.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-export-open.svg b/icons/folder-export-open.svg index 06a2d94ce3..aeef17b1a1 100644 --- a/icons/folder-export-open.svg +++ b/icons/folder-export-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-export.svg b/icons/folder-export.svg index 2993cb5ff4..e0903c05a1 100644 --- a/icons/folder-export.svg +++ b/icons/folder-export.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-favicon-open.svg b/icons/folder-favicon-open.svg new file mode 100644 index 0000000000..9501a3eb2f --- /dev/null +++ b/icons/folder-favicon-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/folder-favicon.svg b/icons/folder-favicon.svg new file mode 100644 index 0000000000..548584999a --- /dev/null +++ b/icons/folder-favicon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/folder-firebase-open.svg b/icons/folder-firebase-open.svg index a3e8da3f00..983370bcb3 100644 --- a/icons/folder-firebase-open.svg +++ b/icons/folder-firebase-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-firebase.svg b/icons/folder-firebase.svg index dcf67f7743..f32642102e 100644 --- a/icons/folder-firebase.svg +++ b/icons/folder-firebase.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-flow-open.svg b/icons/folder-flow-open.svg index 1fcee47b46..9c0cd06222 100644 --- a/icons/folder-flow-open.svg +++ b/icons/folder-flow-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-flow.svg b/icons/folder-flow.svg index 9795534205..54d0320709 100644 --- a/icons/folder-flow.svg +++ b/icons/folder-flow.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-flutter-open.svg b/icons/folder-flutter-open.svg new file mode 100644 index 0000000000..9bff57bf09 --- /dev/null +++ b/icons/folder-flutter-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/folder-flutter.svg b/icons/folder-flutter.svg new file mode 100644 index 0000000000..0f460b96c3 --- /dev/null +++ b/icons/folder-flutter.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/folder-font-open.svg b/icons/folder-font-open.svg index 46553bf1e4..b81ccdcab3 100644 --- a/icons/folder-font-open.svg +++ b/icons/folder-font-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-font.svg b/icons/folder-font.svg index e1575efa57..6f69cfd8fa 100644 --- a/icons/folder-font.svg +++ b/icons/folder-font.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-functions-open.svg b/icons/folder-functions-open.svg index 9899632aec..0bfe0016b0 100644 --- a/icons/folder-functions-open.svg +++ b/icons/folder-functions-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-functions.svg b/icons/folder-functions.svg index a27ea0c211..d6e82974cb 100644 --- a/icons/folder-functions.svg +++ b/icons/folder-functions.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-gamemaker-open.svg b/icons/folder-gamemaker-open.svg index c6e8e93129..706341e802 100644 --- a/icons/folder-gamemaker-open.svg +++ b/icons/folder-gamemaker-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-gamemaker.svg b/icons/folder-gamemaker.svg index 04128e9562..3deb6a3bd6 100644 --- a/icons/folder-gamemaker.svg +++ b/icons/folder-gamemaker.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-generator-open.svg b/icons/folder-generator-open.svg index 3e4e2fd9d7..c658b326ac 100644 --- a/icons/folder-generator-open.svg +++ b/icons/folder-generator-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-generator.svg b/icons/folder-generator.svg index 4b8dd95fdc..ee9953af49 100644 --- a/icons/folder-generator.svg +++ b/icons/folder-generator.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-gitea-open.svg b/icons/folder-gitea-open.svg new file mode 100644 index 0000000000..9969800154 --- /dev/null +++ b/icons/folder-gitea-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/folder-gitea.svg b/icons/folder-gitea.svg new file mode 100644 index 0000000000..638d14b835 --- /dev/null +++ b/icons/folder-gitea.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/folder-gitlab-open.svg b/icons/folder-gitlab-open.svg index 8837a4d1d8..2ed8d81fbe 100644 --- a/icons/folder-gitlab-open.svg +++ b/icons/folder-gitlab-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-gradle-open.svg b/icons/folder-gradle-open.svg index 6d37123d5a..3913693cae 100644 --- a/icons/folder-gradle-open.svg +++ b/icons/folder-gradle-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-gradle.svg b/icons/folder-gradle.svg index fc9c1c332d..1161a8cb20 100644 --- a/icons/folder-gradle.svg +++ b/icons/folder-gradle.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-guard-open.svg b/icons/folder-guard-open.svg index d92eaeba8d..316f84236c 100644 --- a/icons/folder-guard-open.svg +++ b/icons/folder-guard-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-guard.svg b/icons/folder-guard.svg index 372f6cd82d..685db5a984 100644 --- a/icons/folder-guard.svg +++ b/icons/folder-guard.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-helm-open.svg b/icons/folder-helm-open.svg new file mode 100644 index 0000000000..c0a6179443 --- /dev/null +++ b/icons/folder-helm-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/folder-helm.svg b/icons/folder-helm.svg new file mode 100644 index 0000000000..c236de8fc9 --- /dev/null +++ b/icons/folder-helm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/folder-helper-open.svg b/icons/folder-helper-open.svg index ee8cf0a53c..67cec67da4 100644 --- a/icons/folder-helper-open.svg +++ b/icons/folder-helper-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-helper.svg b/icons/folder-helper.svg index 829ceb6c18..121f98f45f 100644 --- a/icons/folder-helper.svg +++ b/icons/folder-helper.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-home-open.svg b/icons/folder-home-open.svg index 1c9cec6aa3..2288b509ab 100644 --- a/icons/folder-home-open.svg +++ b/icons/folder-home-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-home.svg b/icons/folder-home.svg index 793abe2749..e9c37ebc24 100644 --- a/icons/folder-home.svg +++ b/icons/folder-home.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-hook-open.svg b/icons/folder-hook-open.svg index e3442e6cbd..13ed873e9f 100644 --- a/icons/folder-hook-open.svg +++ b/icons/folder-hook-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-hook.svg b/icons/folder-hook.svg index 66aa2ba90d..70da64899a 100644 --- a/icons/folder-hook.svg +++ b/icons/folder-hook.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-husky-open.svg b/icons/folder-husky-open.svg index ed4ef282d2..5332da12d3 100644 --- a/icons/folder-husky-open.svg +++ b/icons/folder-husky-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-husky.svg b/icons/folder-husky.svg index 859b7fb6d2..3df4c40776 100644 --- a/icons/folder-husky.svg +++ b/icons/folder-husky.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-import-open.svg b/icons/folder-import-open.svg index ceab335ca1..acb0c11762 100644 --- a/icons/folder-import-open.svg +++ b/icons/folder-import-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-import.svg b/icons/folder-import.svg index edc974cf96..50743a6ad6 100644 --- a/icons/folder-import.svg +++ b/icons/folder-import.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-include-open.svg b/icons/folder-include-open.svg index 73dcc61555..63b4cb7454 100644 --- a/icons/folder-include-open.svg +++ b/icons/folder-include-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-include.svg b/icons/folder-include.svg index 92ef8fb706..f8ae67825e 100644 --- a/icons/folder-include.svg +++ b/icons/folder-include.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-interface-open.svg b/icons/folder-interface-open.svg index 4719ac2b53..d762fb89cb 100644 --- a/icons/folder-interface-open.svg +++ b/icons/folder-interface-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-interface.svg b/icons/folder-interface.svg index 6b7c425f77..74188dfc55 100644 --- a/icons/folder-interface.svg +++ b/icons/folder-interface.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-ios-open.svg b/icons/folder-ios-open.svg index a0785ecdad..d12bf1767a 100644 --- a/icons/folder-ios-open.svg +++ b/icons/folder-ios-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-ios.svg b/icons/folder-ios.svg index 05d177963d..6b45ba1c55 100644 --- a/icons/folder-ios.svg +++ b/icons/folder-ios.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-java-open.svg b/icons/folder-java-open.svg index fb34c94768..d70fb1be52 100644 --- a/icons/folder-java-open.svg +++ b/icons/folder-java-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-java.svg b/icons/folder-java.svg index 57c54d3a8a..6ae16c09b5 100644 --- a/icons/folder-java.svg +++ b/icons/folder-java.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-jinja-open.svg b/icons/folder-jinja-open.svg index 1572ea2905..65145fb941 100644 --- a/icons/folder-jinja-open.svg +++ b/icons/folder-jinja-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-jinja-open_light.svg b/icons/folder-jinja-open_light.svg index cdf7cb7b28..499b22845e 100644 --- a/icons/folder-jinja-open_light.svg +++ b/icons/folder-jinja-open_light.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-jinja.svg b/icons/folder-jinja.svg index f5419e4e8d..a16a0916a7 100644 --- a/icons/folder-jinja.svg +++ b/icons/folder-jinja.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-jinja_light.svg b/icons/folder-jinja_light.svg index 461aff3411..8f502a126f 100644 --- a/icons/folder-jinja_light.svg +++ b/icons/folder-jinja_light.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-job-open.svg b/icons/folder-job-open.svg index f8b0a75447..fbb9468f4f 100644 --- a/icons/folder-job-open.svg +++ b/icons/folder-job-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-job.svg b/icons/folder-job.svg index d46adbab28..85ecf4229a 100644 --- a/icons/folder-job.svg +++ b/icons/folder-job.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-json-open.svg b/icons/folder-json-open.svg index 32b5b92b1b..957bfa102f 100644 --- a/icons/folder-json-open.svg +++ b/icons/folder-json-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-json.svg b/icons/folder-json.svg index 3d9182170f..d53528afd6 100644 --- a/icons/folder-json.svg +++ b/icons/folder-json.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-jupyter-open.svg b/icons/folder-jupyter-open.svg new file mode 100644 index 0000000000..1f01791b5a --- /dev/null +++ b/icons/folder-jupyter-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/folder-jupyter.svg b/icons/folder-jupyter.svg new file mode 100644 index 0000000000..face4ce949 --- /dev/null +++ b/icons/folder-jupyter.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/folder-keys-open.svg b/icons/folder-keys-open.svg index b8151c0b0f..1f502bff17 100644 --- a/icons/folder-keys-open.svg +++ b/icons/folder-keys-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-keys.svg b/icons/folder-keys.svg index e041750b64..9879959336 100644 --- a/icons/folder-keys.svg +++ b/icons/folder-keys.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-kubernetes-open.svg b/icons/folder-kubernetes-open.svg index d6ca5ee38e..27d1f39e3b 100644 --- a/icons/folder-kubernetes-open.svg +++ b/icons/folder-kubernetes-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-kubernetes.svg b/icons/folder-kubernetes.svg index 3c6d20c7d8..76bbac5086 100644 --- a/icons/folder-kubernetes.svg +++ b/icons/folder-kubernetes.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-lefthook-open.svg b/icons/folder-lefthook-open.svg new file mode 100644 index 0000000000..fd1e1e7909 --- /dev/null +++ b/icons/folder-lefthook-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/folder-lefthook.svg b/icons/folder-lefthook.svg new file mode 100644 index 0000000000..d393376186 --- /dev/null +++ b/icons/folder-lefthook.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/folder-less-open.svg b/icons/folder-less-open.svg index affa9110ae..d4cd9af442 100644 --- a/icons/folder-less-open.svg +++ b/icons/folder-less-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-less.svg b/icons/folder-less.svg index fd2582ecc0..37536bb5e4 100644 --- a/icons/folder-less.svg +++ b/icons/folder-less.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-lib-open.svg b/icons/folder-lib-open.svg index 97100f6be9..13061bc2fd 100644 --- a/icons/folder-lib-open.svg +++ b/icons/folder-lib-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-lib.svg b/icons/folder-lib.svg index 6dd1f30f24..560a18311e 100644 --- a/icons/folder-lib.svg +++ b/icons/folder-lib.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-log-open.svg b/icons/folder-log-open.svg index 925179894c..7b66276e39 100644 --- a/icons/folder-log-open.svg +++ b/icons/folder-log-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-log.svg b/icons/folder-log.svg index 80b59cd34a..2aa18653f3 100644 --- a/icons/folder-log.svg +++ b/icons/folder-log.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-lottie-open.svg b/icons/folder-lottie-open.svg index fde412e3fe..daced3275d 100644 --- a/icons/folder-lottie-open.svg +++ b/icons/folder-lottie-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-lottie.svg b/icons/folder-lottie.svg index e4e1c00091..5c65ed530b 100644 --- a/icons/folder-lottie.svg +++ b/icons/folder-lottie.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-mail-open.svg b/icons/folder-mail-open.svg index 8f7d22f9dc..b0f5e147f8 100644 --- a/icons/folder-mail-open.svg +++ b/icons/folder-mail-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-mail.svg b/icons/folder-mail.svg index eec321e457..f70f8f27c7 100644 --- a/icons/folder-mail.svg +++ b/icons/folder-mail.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-mappings-open.svg b/icons/folder-mappings-open.svg index 5edeab16dd..a4ea3c2bf0 100644 --- a/icons/folder-mappings-open.svg +++ b/icons/folder-mappings-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-mappings.svg b/icons/folder-mappings.svg index 777268b502..95d86c13ad 100644 --- a/icons/folder-mappings.svg +++ b/icons/folder-mappings.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-markdown-open.svg b/icons/folder-markdown-open.svg index 0b7363b04d..743e00fe66 100644 --- a/icons/folder-markdown-open.svg +++ b/icons/folder-markdown-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-markdown.svg b/icons/folder-markdown.svg index c4ee5da69e..7e456da4b6 100644 --- a/icons/folder-markdown.svg +++ b/icons/folder-markdown.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-mercurial-open.svg b/icons/folder-mercurial-open.svg index 38a799beb2..0ea9492a81 100644 --- a/icons/folder-mercurial-open.svg +++ b/icons/folder-mercurial-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-mercurial.svg b/icons/folder-mercurial.svg index 22f632efd9..e4fa198cf9 100644 --- a/icons/folder-mercurial.svg +++ b/icons/folder-mercurial.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-messages-open.svg b/icons/folder-messages-open.svg index 275dea3d48..46baa14c79 100644 --- a/icons/folder-messages-open.svg +++ b/icons/folder-messages-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-messages.svg b/icons/folder-messages.svg index 45d5e24582..953318f1c1 100644 --- a/icons/folder-messages.svg +++ b/icons/folder-messages.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-meta-open.svg b/icons/folder-meta-open.svg index 3f6b96bb60..66d3f72ce9 100644 --- a/icons/folder-meta-open.svg +++ b/icons/folder-meta-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-meta.svg b/icons/folder-meta.svg index dccd4328b3..bb587a28c7 100644 --- a/icons/folder-meta.svg +++ b/icons/folder-meta.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-middleware-open.svg b/icons/folder-middleware-open.svg index f9709fcdd3..5a8d74125d 100644 --- a/icons/folder-middleware-open.svg +++ b/icons/folder-middleware-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-middleware.svg b/icons/folder-middleware.svg index 3b6f0c10c1..7ce815cfd4 100644 --- a/icons/folder-middleware.svg +++ b/icons/folder-middleware.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-mobile-open.svg b/icons/folder-mobile-open.svg index b158b0102d..3bbd24ced8 100644 --- a/icons/folder-mobile-open.svg +++ b/icons/folder-mobile-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-mobile.svg b/icons/folder-mobile.svg index 8f7623bd14..dfb6d95ada 100644 --- a/icons/folder-mobile.svg +++ b/icons/folder-mobile.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-mock-open.svg b/icons/folder-mock-open.svg index e81287aef8..2de289ae0f 100644 --- a/icons/folder-mock-open.svg +++ b/icons/folder-mock-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-mock.svg b/icons/folder-mock.svg index e555a59d22..f00ac2ff27 100644 --- a/icons/folder-mock.svg +++ b/icons/folder-mock.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-moon-open.svg b/icons/folder-moon-open.svg index ad5f1d0433..3ee0f83d59 100644 --- a/icons/folder-moon-open.svg +++ b/icons/folder-moon-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-moon.svg b/icons/folder-moon.svg index 0e0de85cc5..c588c2829e 100644 --- a/icons/folder-moon.svg +++ b/icons/folder-moon.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-next-open.svg b/icons/folder-next-open.svg index 1e4216cbc3..5724528ce9 100644 --- a/icons/folder-next-open.svg +++ b/icons/folder-next-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-next.svg b/icons/folder-next.svg index b350f16333..24f0f4ecb9 100644 --- a/icons/folder-next.svg +++ b/icons/folder-next.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-ngrx-actions-open.svg b/icons/folder-ngrx-actions-open.svg index 4b47e50379..a6f007e2da 100644 --- a/icons/folder-ngrx-actions-open.svg +++ b/icons/folder-ngrx-actions-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-ngrx-actions.svg b/icons/folder-ngrx-actions.svg index ff03808852..81f4b7fe7f 100644 --- a/icons/folder-ngrx-actions.svg +++ b/icons/folder-ngrx-actions.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-ngrx-effects-open.svg b/icons/folder-ngrx-effects-open.svg index c109eaa702..61f9006a85 100644 --- a/icons/folder-ngrx-effects-open.svg +++ b/icons/folder-ngrx-effects-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-ngrx-effects.svg b/icons/folder-ngrx-effects.svg index 04e4419a00..c04eafea34 100644 --- a/icons/folder-ngrx-effects.svg +++ b/icons/folder-ngrx-effects.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-ngrx-entities-open.svg b/icons/folder-ngrx-entities-open.svg index d15583be41..1c6f9df94c 100644 --- a/icons/folder-ngrx-entities-open.svg +++ b/icons/folder-ngrx-entities-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-ngrx-entities.svg b/icons/folder-ngrx-entities.svg index dba0d583fa..73576ee5a5 100644 --- a/icons/folder-ngrx-entities.svg +++ b/icons/folder-ngrx-entities.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-ngrx-reducer-open.svg b/icons/folder-ngrx-reducer-open.svg index c50353d242..95eaef63cb 100644 --- a/icons/folder-ngrx-reducer-open.svg +++ b/icons/folder-ngrx-reducer-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-ngrx-reducer.svg b/icons/folder-ngrx-reducer.svg index 40183635cd..2463607a9e 100644 --- a/icons/folder-ngrx-reducer.svg +++ b/icons/folder-ngrx-reducer.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-ngrx-selectors-open.svg b/icons/folder-ngrx-selectors-open.svg index 5679ea3f29..b67b5ef468 100644 --- a/icons/folder-ngrx-selectors-open.svg +++ b/icons/folder-ngrx-selectors-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-ngrx-selectors.svg b/icons/folder-ngrx-selectors.svg index 1c171cfba5..051d3f742c 100644 --- a/icons/folder-ngrx-selectors.svg +++ b/icons/folder-ngrx-selectors.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-ngrx-state-open.svg b/icons/folder-ngrx-state-open.svg index 394efbce1d..4ba8f7a760 100644 --- a/icons/folder-ngrx-state-open.svg +++ b/icons/folder-ngrx-state-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-ngrx-state.svg b/icons/folder-ngrx-state.svg index 71312c255d..6840d81cae 100644 --- a/icons/folder-ngrx-state.svg +++ b/icons/folder-ngrx-state.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-ngrx-store-open.svg b/icons/folder-ngrx-store-open.svg index 6c707d5494..7a075bf8d3 100644 --- a/icons/folder-ngrx-store-open.svg +++ b/icons/folder-ngrx-store-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-ngrx-store.svg b/icons/folder-ngrx-store.svg index 48fafeea6a..778d6f3d6a 100644 --- a/icons/folder-ngrx-store.svg +++ b/icons/folder-ngrx-store.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-node-open.svg b/icons/folder-node-open.svg index eaa2e14b23..ae95a3f2fd 100644 --- a/icons/folder-node-open.svg +++ b/icons/folder-node-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-node.svg b/icons/folder-node.svg index 1e07710e52..3e70a82500 100644 --- a/icons/folder-node.svg +++ b/icons/folder-node.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-other-open.svg b/icons/folder-other-open.svg index e5392af261..ff85854a93 100644 --- a/icons/folder-other-open.svg +++ b/icons/folder-other-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-other.svg b/icons/folder-other.svg index 6a39752ede..3e1908c8bb 100644 --- a/icons/folder-other.svg +++ b/icons/folder-other.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-packages-open.svg b/icons/folder-packages-open.svg index ce67dbd411..f64048f729 100644 --- a/icons/folder-packages-open.svg +++ b/icons/folder-packages-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-packages.svg b/icons/folder-packages.svg index 775af1d126..6930f3a026 100644 --- a/icons/folder-packages.svg +++ b/icons/folder-packages.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-pdf-open.svg b/icons/folder-pdf-open.svg index 7b41c4649a..5a7872cd89 100644 --- a/icons/folder-pdf-open.svg +++ b/icons/folder-pdf-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-pdf.svg b/icons/folder-pdf.svg index b059407c52..d4eda05e51 100644 --- a/icons/folder-pdf.svg +++ b/icons/folder-pdf.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-pdm-open.svg b/icons/folder-pdm-open.svg index cb84136366..8a4a1ab0b4 100644 --- a/icons/folder-pdm-open.svg +++ b/icons/folder-pdm-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-pdm.svg b/icons/folder-pdm.svg index 2063512ed3..345857ed0b 100644 --- a/icons/folder-pdm.svg +++ b/icons/folder-pdm.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-php-open.svg b/icons/folder-php-open.svg index 64b8ac6132..48de71ff02 100644 --- a/icons/folder-php-open.svg +++ b/icons/folder-php-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-php.svg b/icons/folder-php.svg index c69ba68e37..d6fbeacb19 100644 --- a/icons/folder-php.svg +++ b/icons/folder-php.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-phpmailer-open.svg b/icons/folder-phpmailer-open.svg index f042623a95..d8b6ab4927 100644 --- a/icons/folder-phpmailer-open.svg +++ b/icons/folder-phpmailer-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-phpmailer.svg b/icons/folder-phpmailer.svg index 4ae777628a..fd32430531 100644 --- a/icons/folder-phpmailer.svg +++ b/icons/folder-phpmailer.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-pipe-open.svg b/icons/folder-pipe-open.svg index e2e9d64d75..67ca7224d7 100644 --- a/icons/folder-pipe-open.svg +++ b/icons/folder-pipe-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-pipe.svg b/icons/folder-pipe.svg index c13b98882b..26a258cbac 100644 --- a/icons/folder-pipe.svg +++ b/icons/folder-pipe.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-plastic-open.svg b/icons/folder-plastic-open.svg index 662ed21275..f84ab33bbe 100644 --- a/icons/folder-plastic-open.svg +++ b/icons/folder-plastic-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-plastic.svg b/icons/folder-plastic.svg index f2f57e697d..f0493b3fbe 100644 --- a/icons/folder-plastic.svg +++ b/icons/folder-plastic.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-plugin-open.svg b/icons/folder-plugin-open.svg index 0069c51444..b57eb5f348 100644 --- a/icons/folder-plugin-open.svg +++ b/icons/folder-plugin-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-plugin.svg b/icons/folder-plugin.svg index 900902c798..a20d9b25f2 100644 --- a/icons/folder-plugin.svg +++ b/icons/folder-plugin.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-powershell-open.svg b/icons/folder-powershell-open.svg new file mode 100644 index 0000000000..ec222033b3 --- /dev/null +++ b/icons/folder-powershell-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/folder-powershell.svg b/icons/folder-powershell.svg new file mode 100644 index 0000000000..cdc916d6e6 --- /dev/null +++ b/icons/folder-powershell.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/folder-prisma-open.svg b/icons/folder-prisma-open.svg index bd2c994be4..8155f18511 100644 --- a/icons/folder-prisma-open.svg +++ b/icons/folder-prisma-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-prisma.svg b/icons/folder-prisma.svg index 412c3f7a57..cee8727adf 100644 --- a/icons/folder-prisma.svg +++ b/icons/folder-prisma.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-private-open.svg b/icons/folder-private-open.svg index e76be174d2..438c5d4956 100644 --- a/icons/folder-private-open.svg +++ b/icons/folder-private-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-private.svg b/icons/folder-private.svg index 7d5cb62718..45b31fd1d7 100644 --- a/icons/folder-private.svg +++ b/icons/folder-private.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-project-open.svg b/icons/folder-project-open.svg index 5ab05dd85d..b6cb1a8979 100644 --- a/icons/folder-project-open.svg +++ b/icons/folder-project-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-project.svg b/icons/folder-project.svg index 2cf5a36e5c..a9f8c06841 100644 --- a/icons/folder-project.svg +++ b/icons/folder-project.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-proto-open.svg b/icons/folder-proto-open.svg index 3931ed74fa..c6561ff25c 100644 --- a/icons/folder-proto-open.svg +++ b/icons/folder-proto-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-proto.svg b/icons/folder-proto.svg index 83cf69829b..bb0681a729 100644 --- a/icons/folder-proto.svg +++ b/icons/folder-proto.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-python-open.svg b/icons/folder-python-open.svg index 290144d56b..effc3f9fb9 100644 --- a/icons/folder-python-open.svg +++ b/icons/folder-python-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-python.svg b/icons/folder-python.svg index c53f831579..cd85c5c33c 100644 --- a/icons/folder-python.svg +++ b/icons/folder-python.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-quasar-open.svg b/icons/folder-quasar-open.svg index fe27274b0b..47646c9c55 100644 --- a/icons/folder-quasar-open.svg +++ b/icons/folder-quasar-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-quasar.svg b/icons/folder-quasar.svg index 78fec05030..68b08e4974 100644 --- a/icons/folder-quasar.svg +++ b/icons/folder-quasar.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-react-components-open.svg b/icons/folder-react-components-open.svg index 2bcdd58f9d..d7352cd0ab 100644 --- a/icons/folder-react-components-open.svg +++ b/icons/folder-react-components-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-react-components.svg b/icons/folder-react-components.svg index 43575921f6..35c17e15fb 100644 --- a/icons/folder-react-components.svg +++ b/icons/folder-react-components.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-resolver-open.svg b/icons/folder-resolver-open.svg index 61ec0e01ab..bfd7ff61b5 100644 --- a/icons/folder-resolver-open.svg +++ b/icons/folder-resolver-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-resolver.svg b/icons/folder-resolver.svg index 4564ccb4dc..8ee8bad6f1 100644 --- a/icons/folder-resolver.svg +++ b/icons/folder-resolver.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-resource-open.svg b/icons/folder-resource-open.svg index 611d50f004..d030c0c188 100644 --- a/icons/folder-resource-open.svg +++ b/icons/folder-resource-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-resource.svg b/icons/folder-resource.svg index 4a86586089..95f39aa899 100644 --- a/icons/folder-resource.svg +++ b/icons/folder-resource.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-review-open.svg b/icons/folder-review-open.svg index 015d9f29ba..c86f915277 100644 --- a/icons/folder-review-open.svg +++ b/icons/folder-review-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-review.svg b/icons/folder-review.svg index 8ae6462ad3..584bcef5c2 100644 --- a/icons/folder-review.svg +++ b/icons/folder-review.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-robot-open.svg b/icons/folder-robot-open.svg index d92700fe9a..2958448946 100644 --- a/icons/folder-robot-open.svg +++ b/icons/folder-robot-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-robot.svg b/icons/folder-robot.svg index dd5e5ddea0..3690374452 100644 --- a/icons/folder-robot.svg +++ b/icons/folder-robot.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-rules-open.svg b/icons/folder-rules-open.svg index a33fcdc83c..3d95e39d1e 100644 --- a/icons/folder-rules-open.svg +++ b/icons/folder-rules-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-rules.svg b/icons/folder-rules.svg index d399c73448..9b2415d00d 100644 --- a/icons/folder-rules.svg +++ b/icons/folder-rules.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-scala-open.svg b/icons/folder-scala-open.svg index 9fdc3cf15b..021380004f 100644 --- a/icons/folder-scala-open.svg +++ b/icons/folder-scala-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-scala.svg b/icons/folder-scala.svg index 6cdecc18eb..0c490a7234 100644 --- a/icons/folder-scala.svg +++ b/icons/folder-scala.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-seeders-open.svg b/icons/folder-seeders-open.svg index ffbc4f3c72..7863989b42 100644 --- a/icons/folder-seeders-open.svg +++ b/icons/folder-seeders-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-seeders.svg b/icons/folder-seeders.svg index 92c2fce02d..4573a49c4a 100644 --- a/icons/folder-seeders.svg +++ b/icons/folder-seeders.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-server-open.svg b/icons/folder-server-open.svg index 849cb5bf5f..f57d27d2ad 100644 --- a/icons/folder-server-open.svg +++ b/icons/folder-server-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-server.svg b/icons/folder-server.svg index b0943580a9..20319e1550 100644 --- a/icons/folder-server.svg +++ b/icons/folder-server.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-shared-open.svg b/icons/folder-shared-open.svg index 7f423bc1be..402c9a4282 100644 --- a/icons/folder-shared-open.svg +++ b/icons/folder-shared-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-shared.svg b/icons/folder-shared.svg index 80fe2a36d7..e48f9dec15 100644 --- a/icons/folder-shared.svg +++ b/icons/folder-shared.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-snapcraft-open.svg b/icons/folder-snapcraft-open.svg new file mode 100644 index 0000000000..cdc2722512 --- /dev/null +++ b/icons/folder-snapcraft-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/folder-snapcraft.svg b/icons/folder-snapcraft.svg new file mode 100644 index 0000000000..69ee2c35c1 --- /dev/null +++ b/icons/folder-snapcraft.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/folder-snippet-open.svg b/icons/folder-snippet-open.svg new file mode 100644 index 0000000000..0d8f28209d --- /dev/null +++ b/icons/folder-snippet-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/folder-snippet.svg b/icons/folder-snippet.svg new file mode 100644 index 0000000000..0aa593529e --- /dev/null +++ b/icons/folder-snippet.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/folder-src-tauri-open.svg b/icons/folder-src-tauri-open.svg new file mode 100644 index 0000000000..fe25fe18df --- /dev/null +++ b/icons/folder-src-tauri-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/folder-src-tauri.svg b/icons/folder-src-tauri.svg new file mode 100644 index 0000000000..db1d1aa5da --- /dev/null +++ b/icons/folder-src-tauri.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/folder-stack-open.svg b/icons/folder-stack-open.svg index cf18fce224..2ab6c875b9 100644 --- a/icons/folder-stack-open.svg +++ b/icons/folder-stack-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-stack.svg b/icons/folder-stack.svg index b2c7b49da4..68e81b342c 100644 --- a/icons/folder-stack.svg +++ b/icons/folder-stack.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-stencil-open.svg b/icons/folder-stencil-open.svg index eb13bfad6a..2a58ff4cdc 100644 --- a/icons/folder-stencil-open.svg +++ b/icons/folder-stencil-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-stencil.svg b/icons/folder-stencil.svg index 0c939c3a41..0eeab3249d 100644 --- a/icons/folder-stencil.svg +++ b/icons/folder-stencil.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-store-open.svg b/icons/folder-store-open.svg new file mode 100644 index 0000000000..9b64a68a46 --- /dev/null +++ b/icons/folder-store-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/folder-store.svg b/icons/folder-store.svg new file mode 100644 index 0000000000..7e10ad45ac --- /dev/null +++ b/icons/folder-store.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/folder-stylus-open.svg b/icons/folder-stylus-open.svg index 7072413990..023f4df320 100644 --- a/icons/folder-stylus-open.svg +++ b/icons/folder-stylus-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-stylus.svg b/icons/folder-stylus.svg index b7fd954e13..38cc9a64b2 100644 --- a/icons/folder-stylus.svg +++ b/icons/folder-stylus.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-sublime-open.svg b/icons/folder-sublime-open.svg index e8ad2ff075..cb77f55257 100644 --- a/icons/folder-sublime-open.svg +++ b/icons/folder-sublime-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-sublime.svg b/icons/folder-sublime.svg index 609f15226d..d0d63a1504 100644 --- a/icons/folder-sublime.svg +++ b/icons/folder-sublime.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-svelte-open.svg b/icons/folder-svelte-open.svg index b7d97b8b03..40d5ffe281 100644 --- a/icons/folder-svelte-open.svg +++ b/icons/folder-svelte-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-svelte.svg b/icons/folder-svelte.svg index 5001f9df9f..0ce64fb681 100644 --- a/icons/folder-svelte.svg +++ b/icons/folder-svelte.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-svg-open.svg b/icons/folder-svg-open.svg index 2ab5b257dd..288ddac8bb 100644 --- a/icons/folder-svg-open.svg +++ b/icons/folder-svg-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-svg.svg b/icons/folder-svg.svg index 9ea8aa4f23..a11cb049fc 100644 --- a/icons/folder-svg.svg +++ b/icons/folder-svg.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-target-open.svg b/icons/folder-target-open.svg index 0d1dcebbb2..ef45df585a 100644 --- a/icons/folder-target-open.svg +++ b/icons/folder-target-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-target.svg b/icons/folder-target.svg index 46882dce59..19ca85bbe3 100644 --- a/icons/folder-target.svg +++ b/icons/folder-target.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-taskfile-open.svg b/icons/folder-taskfile-open.svg index 736f5f8c71..7100f2f968 100644 --- a/icons/folder-taskfile-open.svg +++ b/icons/folder-taskfile-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-taskfile.svg b/icons/folder-taskfile.svg index abff89ffce..8fc9b22497 100644 --- a/icons/folder-taskfile.svg +++ b/icons/folder-taskfile.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-tasks-open.svg b/icons/folder-tasks-open.svg index 45fd1f2b61..e4e3707982 100644 --- a/icons/folder-tasks-open.svg +++ b/icons/folder-tasks-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-tasks.svg b/icons/folder-tasks.svg index 8d5bc7ab54..20d2b93623 100644 --- a/icons/folder-tasks.svg +++ b/icons/folder-tasks.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-theme-open.svg b/icons/folder-theme-open.svg index 4c0882c083..cf6b1b3178 100644 --- a/icons/folder-theme-open.svg +++ b/icons/folder-theme-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-theme.svg b/icons/folder-theme.svg index b7ed78f327..93247eb49d 100644 --- a/icons/folder-theme.svg +++ b/icons/folder-theme.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-tools-open.svg b/icons/folder-tools-open.svg index 9aaa8f58ad..838ed2a848 100644 --- a/icons/folder-tools-open.svg +++ b/icons/folder-tools-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-tools.svg b/icons/folder-tools.svg index d24412528c..34423d34b4 100644 --- a/icons/folder-tools.svg +++ b/icons/folder-tools.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-turborepo-open.svg b/icons/folder-turborepo-open.svg new file mode 100644 index 0000000000..d6f98d76c9 --- /dev/null +++ b/icons/folder-turborepo-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/folder-turborepo.svg b/icons/folder-turborepo.svg new file mode 100644 index 0000000000..bc5e347571 --- /dev/null +++ b/icons/folder-turborepo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/folder-ui-open.svg b/icons/folder-ui-open.svg new file mode 100644 index 0000000000..6a4de38092 --- /dev/null +++ b/icons/folder-ui-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/folder-ui.svg b/icons/folder-ui.svg new file mode 100644 index 0000000000..51773ec817 --- /dev/null +++ b/icons/folder-ui.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/folder-unity-open.svg b/icons/folder-unity-open.svg index 448e49d417..e7160850e0 100644 --- a/icons/folder-unity-open.svg +++ b/icons/folder-unity-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-unity.svg b/icons/folder-unity.svg index ab05aad816..0079878766 100644 --- a/icons/folder-unity.svg +++ b/icons/folder-unity.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-upload-open.svg b/icons/folder-upload-open.svg index 4710891df1..b1eeef7c25 100644 --- a/icons/folder-upload-open.svg +++ b/icons/folder-upload-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-upload.svg b/icons/folder-upload.svg index add9a79471..e4b0035845 100644 --- a/icons/folder-upload.svg +++ b/icons/folder-upload.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-utils-open.svg b/icons/folder-utils-open.svg index 9343b2d476..64baa67438 100644 --- a/icons/folder-utils-open.svg +++ b/icons/folder-utils-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-utils.svg b/icons/folder-utils.svg index b839bc01af..9b69e61ac5 100644 --- a/icons/folder-utils.svg +++ b/icons/folder-utils.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-vercel-open.svg b/icons/folder-vercel-open.svg index 9439037939..3ce64f3ecd 100644 --- a/icons/folder-vercel-open.svg +++ b/icons/folder-vercel-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-vercel.svg b/icons/folder-vercel.svg index f4680f5675..a5a453741e 100644 --- a/icons/folder-vercel.svg +++ b/icons/folder-vercel.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-video-open.svg b/icons/folder-video-open.svg index 0455cb5b74..74d91511d2 100644 --- a/icons/folder-video-open.svg +++ b/icons/folder-video-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-video.svg b/icons/folder-video.svg index 0562fefe1e..aefea147ff 100644 --- a/icons/folder-video.svg +++ b/icons/folder-video.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-views-open.svg b/icons/folder-views-open.svg index 7b7ec7ea30..99cf6b621e 100644 --- a/icons/folder-views-open.svg +++ b/icons/folder-views-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-views.svg b/icons/folder-views.svg index a4caea6865..d674c8fae2 100644 --- a/icons/folder-views.svg +++ b/icons/folder-views.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-vm-open.svg b/icons/folder-vm-open.svg index 29738317fa..258af2c0c5 100644 --- a/icons/folder-vm-open.svg +++ b/icons/folder-vm-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-vm.svg b/icons/folder-vm.svg index 3079b545b8..82fcf71f8a 100644 --- a/icons/folder-vm.svg +++ b/icons/folder-vm.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-vscode-open.svg b/icons/folder-vscode-open.svg index 3489010608..b2f1417720 100644 --- a/icons/folder-vscode-open.svg +++ b/icons/folder-vscode-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-vscode.svg b/icons/folder-vscode.svg index 2df2cd1acd..1d1d45b3cb 100644 --- a/icons/folder-vscode.svg +++ b/icons/folder-vscode.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-vue-directives-open.svg b/icons/folder-vue-directives-open.svg index 5f88bf6deb..94c7f1ac2f 100644 --- a/icons/folder-vue-directives-open.svg +++ b/icons/folder-vue-directives-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-vue-directives.svg b/icons/folder-vue-directives.svg index 3426f9bad6..6962d8fcce 100644 --- a/icons/folder-vue-directives.svg +++ b/icons/folder-vue-directives.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-vue-open.svg b/icons/folder-vue-open.svg index 78e4908dce..13904c4d75 100644 --- a/icons/folder-vue-open.svg +++ b/icons/folder-vue-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-vue.svg b/icons/folder-vue.svg index 72c0efa38a..79e6c4db83 100644 --- a/icons/folder-vue.svg +++ b/icons/folder-vue.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-vuepress-open.svg b/icons/folder-vuepress-open.svg index ac260bf983..423586ab23 100644 --- a/icons/folder-vuepress-open.svg +++ b/icons/folder-vuepress-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-vuepress.svg b/icons/folder-vuepress.svg index 32cbc9a249..2035d6ec2f 100644 --- a/icons/folder-vuepress.svg +++ b/icons/folder-vuepress.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-webpack-open.svg b/icons/folder-webpack-open.svg index 44d2c1c59d..fae650feda 100644 --- a/icons/folder-webpack-open.svg +++ b/icons/folder-webpack-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-webpack.svg b/icons/folder-webpack.svg index 18fdcc7c28..17243aee60 100644 --- a/icons/folder-webpack.svg +++ b/icons/folder-webpack.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-wordpress-open.svg b/icons/folder-wordpress-open.svg index f8bf3feb15..e285f7ecc7 100644 --- a/icons/folder-wordpress-open.svg +++ b/icons/folder-wordpress-open.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/folder-wordpress.svg b/icons/folder-wordpress.svg index dd787786a5..164a3a70d2 100644 --- a/icons/folder-wordpress.svg +++ b/icons/folder-wordpress.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/freemarker.svg b/icons/freemarker.svg new file mode 100644 index 0000000000..edf98f6df5 --- /dev/null +++ b/icons/freemarker.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/fsharp.svg b/icons/fsharp.svg index 8c00a50771..df4c476cd4 100644 --- a/icons/fsharp.svg +++ b/icons/fsharp.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/fusebox.svg b/icons/fusebox.svg index 53c0a8b8c4..21068bb0a9 100644 --- a/icons/fusebox.svg +++ b/icons/fusebox.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/garden.svg b/icons/garden.svg new file mode 100644 index 0000000000..d350743c45 --- /dev/null +++ b/icons/garden.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/icons/gatsby.svg b/icons/gatsby.svg index e2630c3efd..a7326d0735 100644 --- a/icons/gatsby.svg +++ b/icons/gatsby.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/gemini-ai.svg b/icons/gemini-ai.svg new file mode 100644 index 0000000000..eb0aae4854 --- /dev/null +++ b/icons/gemini-ai.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/github-actions-workflow.svg b/icons/github-actions-workflow.svg new file mode 100644 index 0000000000..0dd1e5b323 --- /dev/null +++ b/icons/github-actions-workflow.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/gitpod.svg b/icons/gitpod.svg index 1063d6192a..3c8455cec6 100644 --- a/icons/gitpod.svg +++ b/icons/gitpod.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/gleam.svg b/icons/gleam.svg index 06bce8347f..2e53ccd78c 100644 --- a/icons/gleam.svg +++ b/icons/gleam.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/go_gopher.svg b/icons/go_gopher.svg index 6a99bde3a7..6de198cdf4 100644 --- a/icons/go_gopher.svg +++ b/icons/go_gopher.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/grafana-alloy.svg b/icons/grafana-alloy.svg new file mode 100644 index 0000000000..b199ede318 --- /dev/null +++ b/icons/grafana-alloy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/graphcool.svg b/icons/graphcool.svg index d787b18c1a..8ff3be725d 100644 --- a/icons/graphcool.svg +++ b/icons/graphcool.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/grunt.svg b/icons/grunt.svg index 94b258cf93..c43b73df59 100644 --- a/icons/grunt.svg +++ b/icons/grunt.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/haxe.svg b/icons/haxe.svg index 8655741f2b..94cb5ac348 100644 --- a/icons/haxe.svg +++ b/icons/haxe.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/heroku.svg b/icons/heroku.svg index 27b1e803d7..f7c4328117 100644 --- a/icons/heroku.svg +++ b/icons/heroku.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/hjson.svg b/icons/hjson.svg index a4c4ca24fd..c151f93a82 100644 --- a/icons/hjson.svg +++ b/icons/hjson.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/horusec.svg b/icons/horusec.svg index 3f73d0d876..4d96097b03 100644 --- a/icons/horusec.svg +++ b/icons/horusec.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/html.svg b/icons/html.svg index c055bca9fc..5012d79449 100644 --- a/icons/html.svg +++ b/icons/html.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/hurl.svg b/icons/hurl.svg new file mode 100644 index 0000000000..a6fa021cda --- /dev/null +++ b/icons/hurl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/i18n.svg b/icons/i18n.svg index ffa7d69ebd..3f6af90c3c 100644 --- a/icons/i18n.svg +++ b/icons/i18n.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/idris.svg b/icons/idris.svg index 4f26f81c6b..67be8f7128 100644 --- a/icons/idris.svg +++ b/icons/idris.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/image.svg b/icons/image.svg index dc2532b33f..0db408538f 100644 --- a/icons/image.svg +++ b/icons/image.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/imba.svg b/icons/imba.svg index 595aaf65ce..ff8b8be554 100644 --- a/icons/imba.svg +++ b/icons/imba.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/ionic.svg b/icons/ionic.svg index 62da8fa3d9..e70fcbd636 100644 --- a/icons/ionic.svg +++ b/icons/ionic.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/jenkins.svg b/icons/jenkins.svg index e7ca36e4be..27bc7045ad 100644 --- a/icons/jenkins.svg +++ b/icons/jenkins.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/jsr.svg b/icons/jsr.svg new file mode 100644 index 0000000000..739f6574e8 --- /dev/null +++ b/icons/jsr.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/jsr_light.svg b/icons/jsr_light.svg new file mode 100644 index 0000000000..c93d452242 --- /dev/null +++ b/icons/jsr_light.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/julia.svg b/icons/julia.svg index 250d9e1970..f9bb791c8e 100644 --- a/icons/julia.svg +++ b/icons/julia.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/just.svg b/icons/just.svg new file mode 100644 index 0000000000..cd949b6b18 --- /dev/null +++ b/icons/just.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/karma.svg b/icons/karma.svg index b721cd0004..42f1c84540 100644 --- a/icons/karma.svg +++ b/icons/karma.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/kcl.svg b/icons/kcl.svg new file mode 100644 index 0000000000..4f10c602ea --- /dev/null +++ b/icons/kcl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/knip.svg b/icons/knip.svg index e7ade8f42a..51a7cc2142 100644 --- a/icons/knip.svg +++ b/icons/knip.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/kusto.svg b/icons/kusto.svg index be249cb2ed..e579a1132d 100644 --- a/icons/kusto.svg +++ b/icons/kusto.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/label.svg b/icons/label.svg new file mode 100644 index 0000000000..8c9387197b --- /dev/null +++ b/icons/label.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/lefthook.svg b/icons/lefthook.svg new file mode 100644 index 0000000000..66a444b08a --- /dev/null +++ b/icons/lefthook.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/liara.svg b/icons/liara.svg new file mode 100644 index 0000000000..2738bec7dc --- /dev/null +++ b/icons/liara.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/lib.svg b/icons/lib.svg index b458971c7c..447aab5d5f 100644 --- a/icons/lib.svg +++ b/icons/lib.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/lighthouse.svg b/icons/lighthouse.svg index b99562c221..5041f35e16 100644 --- a/icons/lighthouse.svg +++ b/icons/lighthouse.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/livescript.svg b/icons/livescript.svg index be95982093..ccca801f7a 100644 --- a/icons/livescript.svg +++ b/icons/livescript.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/log.svg b/icons/log.svg index ce9e71716d..a44f7e2baf 100644 --- a/icons/log.svg +++ b/icons/log.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/markdownlint.svg b/icons/markdownlint.svg new file mode 100644 index 0000000000..37daf0d27a --- /dev/null +++ b/icons/markdownlint.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/mathematica.svg b/icons/mathematica.svg index de7dc11a73..08c25084b5 100644 --- a/icons/mathematica.svg +++ b/icons/mathematica.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/matlab.svg b/icons/matlab.svg index efa9e510d9..a2166f81e3 100644 --- a/icons/matlab.svg +++ b/icons/matlab.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/mercurial.svg b/icons/mercurial.svg index 3e71252173..41f701e23c 100644 --- a/icons/mercurial.svg +++ b/icons/mercurial.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/mermaid.svg b/icons/mermaid.svg index 35366cda4e..23060d414e 100644 --- a/icons/mermaid.svg +++ b/icons/mermaid.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/mint.svg b/icons/mint.svg index 9403f88cf9..659340a8c5 100644 --- a/icons/mint.svg +++ b/icons/mint.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/mjml.svg b/icons/mjml.svg index ee7a531645..0ca04c9a69 100644 --- a/icons/mjml.svg +++ b/icons/mjml.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/nest.svg b/icons/nest.svg index 94c942070a..a454a83e04 100644 --- a/icons/nest.svg +++ b/icons/nest.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/netlify.svg b/icons/netlify.svg index 87dada2b40..41620138a8 100644 --- a/icons/netlify.svg +++ b/icons/netlify.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/netlify_light.svg b/icons/netlify_light.svg index e038f47dfa..127fed5926 100644 --- a/icons/netlify_light.svg +++ b/icons/netlify_light.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/nim.svg b/icons/nim.svg index 9c827d2cb9..8b5f3a164d 100644 --- a/icons/nim.svg +++ b/icons/nim.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/nix.svg b/icons/nix.svg index f96a461282..8d629a4580 100644 --- a/icons/nix.svg +++ b/icons/nix.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/npm.svg b/icons/npm.svg index 172f5c513f..9878c6e625 100644 --- a/icons/npm.svg +++ b/icons/npm.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/nx.svg b/icons/nx.svg index 6dfa07dcf6..3efdc1b97f 100644 --- a/icons/nx.svg +++ b/icons/nx.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/ocaml.svg b/icons/ocaml.svg index 1f090a251a..1d20d08099 100644 --- a/icons/ocaml.svg +++ b/icons/ocaml.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/odin.svg b/icons/odin.svg index b1dbdc2b81..b7904fc4ad 100644 --- a/icons/odin.svg +++ b/icons/odin.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/opa.svg b/icons/opa.svg index 6becb666a9..8957625254 100644 --- a/icons/opa.svg +++ b/icons/opa.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/opam.svg b/icons/opam.svg index 260fc799f7..7e4d358c17 100644 --- a/icons/opam.svg +++ b/icons/opam.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/panda.svg b/icons/panda.svg index 4da8b80b77..dde4122bbe 100644 --- a/icons/panda.svg +++ b/icons/panda.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/payload.svg b/icons/payload.svg index 9aa18220e9..a5392c03a8 100644 --- a/icons/payload.svg +++ b/icons/payload.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/payload_light.svg b/icons/payload_light.svg index 9322f1d98d..4be33861d0 100644 --- a/icons/payload_light.svg +++ b/icons/payload_light.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/pdm.svg b/icons/pdm.svg index c07e283e03..7bb572829e 100644 --- a/icons/pdm.svg +++ b/icons/pdm.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/percy.svg b/icons/percy.svg index a030247361..136a51f63b 100644 --- a/icons/percy.svg +++ b/icons/percy.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/perl.svg b/icons/perl.svg index 1791923ecd..da4f9023da 100644 --- a/icons/perl.svg +++ b/icons/perl.svg @@ -1 +1,3 @@ - \ No newline at end of file + + + diff --git a/icons/php-cs-fixer.svg b/icons/php-cs-fixer.svg index a62ab855d3..2ec1781868 100644 --- a/icons/php-cs-fixer.svg +++ b/icons/php-cs-fixer.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/phpunit.svg b/icons/phpunit.svg index e17b1c1b1d..986dfa4158 100644 --- a/icons/phpunit.svg +++ b/icons/phpunit.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/pinejs.svg b/icons/pinejs.svg index 2a40b00a3d..6fce738d9d 100644 --- a/icons/pinejs.svg +++ b/icons/pinejs.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/playwright.svg b/icons/playwright.svg index d0d9f3d730..f135236c99 100644 --- a/icons/playwright.svg +++ b/icons/playwright.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/plop.svg b/icons/plop.svg index b809105fc2..d2daee452f 100644 --- a/icons/plop.svg +++ b/icons/plop.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/posthtml.svg b/icons/posthtml.svg index cef558913b..9176f8fb3a 100644 --- a/icons/posthtml.svg +++ b/icons/posthtml.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/powerpoint.svg b/icons/powerpoint.svg index 8aeece3ee5..b4d9403443 100644 --- a/icons/powerpoint.svg +++ b/icons/powerpoint.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/pre-commit.svg b/icons/pre-commit.svg new file mode 100644 index 0000000000..f03b7a1035 --- /dev/null +++ b/icons/pre-commit.svg @@ -0,0 +1 @@ + diff --git a/icons/prettier.svg b/icons/prettier.svg index f33bbd5ce7..55b87a6ff7 100644 --- a/icons/prettier.svg +++ b/icons/prettier.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/processing.svg b/icons/processing.svg index 6e65551e13..8a960abd8d 100644 --- a/icons/processing.svg +++ b/icons/processing.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/protractor.svg b/icons/protractor.svg index c28e9d36eb..a9f99b39fe 100644 --- a/icons/protractor.svg +++ b/icons/protractor.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/pug.svg b/icons/pug.svg index 867874cdcf..bb51dcaae8 100644 --- a/icons/pug.svg +++ b/icons/pug.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/puppeteer.svg b/icons/puppeteer.svg index 09b4764d0e..b553df3926 100644 --- a/icons/puppeteer.svg +++ b/icons/puppeteer.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/python.svg b/icons/python.svg index 1415865d4e..311703a3ff 100644 --- a/icons/python.svg +++ b/icons/python.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/qwik.svg b/icons/qwik.svg index 39b62de8c0..fcad5ade5d 100644 --- a/icons/qwik.svg +++ b/icons/qwik.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/racket.svg b/icons/racket.svg index 780c24d9e1..04ca144ba3 100644 --- a/icons/racket.svg +++ b/icons/racket.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/readme.svg b/icons/readme.svg index db793c9c8a..d377df9dea 100644 --- a/icons/readme.svg +++ b/icons/readme.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/red.svg b/icons/red.svg index c12247f2c9..6084231667 100644 --- a/icons/red.svg +++ b/icons/red.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/redux-action.svg b/icons/redux-action.svg index e37c3a9563..bd7dec8dbc 100644 --- a/icons/redux-action.svg +++ b/icons/redux-action.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/redux-reducer.svg b/icons/redux-reducer.svg index c69e8f6d62..d50acdecd5 100644 --- a/icons/redux-reducer.svg +++ b/icons/redux-reducer.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/redux-selector.svg b/icons/redux-selector.svg index 47c10c1cff..31c8df7c67 100644 --- a/icons/redux-selector.svg +++ b/icons/redux-selector.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/redux-store.svg b/icons/redux-store.svg index bbdc7aab03..524e4f9dd5 100644 --- a/icons/redux-store.svg +++ b/icons/redux-store.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/remark.svg b/icons/remark.svg new file mode 100644 index 0000000000..9c4d8d2403 --- /dev/null +++ b/icons/remark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/restql.svg b/icons/restql.svg index 2a088ae659..a4a9f972fa 100644 --- a/icons/restql.svg +++ b/icons/restql.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/roblox.svg b/icons/roblox.svg index 4fa2ee5685..56cc378477 100644 --- a/icons/roblox.svg +++ b/icons/roblox.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/rocket.svg b/icons/rocket.svg new file mode 100644 index 0000000000..bb4fda95a8 --- /dev/null +++ b/icons/rocket.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/rspec.svg b/icons/rspec.svg index ac11765d0b..783eb62172 100644 --- a/icons/rspec.svg +++ b/icons/rspec.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/rubocop.svg b/icons/rubocop.svg index c86da96315..2cdff99093 100644 --- a/icons/rubocop.svg +++ b/icons/rubocop.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/rubocop_light.svg b/icons/rubocop_light.svg index f84be7191a..b8cb9dfa1b 100644 --- a/icons/rubocop_light.svg +++ b/icons/rubocop_light.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/rust.svg b/icons/rust.svg index 60afc824bc..16a404f1f9 100644 --- a/icons/rust.svg +++ b/icons/rust.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/san.svg b/icons/san.svg index 881ce9fb43..8ec6be1d58 100644 --- a/icons/san.svg +++ b/icons/san.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/scala.svg b/icons/scala.svg index 117c962e89..3469205209 100644 --- a/icons/scala.svg +++ b/icons/scala.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/semgrep.svg b/icons/semgrep.svg index 7a1077ea1b..f2e17c12e5 100644 --- a/icons/semgrep.svg +++ b/icons/semgrep.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/sentry.svg b/icons/sentry.svg index 1f9cbd46bb..56cb402447 100644 --- a/icons/sentry.svg +++ b/icons/sentry.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/sequelize.svg b/icons/sequelize.svg index a8e456e9f3..8b238e05a0 100644 --- a/icons/sequelize.svg +++ b/icons/sequelize.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/settings.svg b/icons/settings.svg index a278e7172e..b4307dc28b 100644 --- a/icons/settings.svg +++ b/icons/settings.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/shader.svg b/icons/shader.svg index c200ed5330..fa7546cdbd 100644 --- a/icons/shader.svg +++ b/icons/shader.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/silverstripe.svg b/icons/silverstripe.svg index 5779de98da..0e00d9b1c6 100644 --- a/icons/silverstripe.svg +++ b/icons/silverstripe.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/slint.svg b/icons/slint.svg new file mode 100644 index 0000000000..b6434ec97e --- /dev/null +++ b/icons/slint.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/smarty.svg b/icons/smarty.svg index 6323d15912..0a2d6c6441 100644 --- a/icons/smarty.svg +++ b/icons/smarty.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/sml.svg b/icons/sml.svg index 5d2d8d5b18..576c779f3e 100644 --- a/icons/sml.svg +++ b/icons/sml.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/snyk.svg b/icons/snyk.svg index 6db953cc92..c79c147c02 100644 --- a/icons/snyk.svg +++ b/icons/snyk.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/sonarcloud.svg b/icons/sonarcloud.svg index e09290de32..7d391339c2 100644 --- a/icons/sonarcloud.svg +++ b/icons/sonarcloud.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/spwn.svg b/icons/spwn.svg index b2ab1dba54..08a1394739 100644 --- a/icons/spwn.svg +++ b/icons/spwn.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/stackblitz.svg b/icons/stackblitz.svg new file mode 100644 index 0000000000..f1806a8b28 --- /dev/null +++ b/icons/stackblitz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/stan.svg b/icons/stan.svg index 78dca461a3..b61fb155e9 100644 --- a/icons/stan.svg +++ b/icons/stan.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/steadybit.svg b/icons/steadybit.svg index fee4239a4e..84935db3ac 100644 --- a/icons/steadybit.svg +++ b/icons/steadybit.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/stitches.svg b/icons/stitches.svg index e74c69b740..6b1142f924 100644 --- a/icons/stitches.svg +++ b/icons/stitches.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/stitches_light.svg b/icons/stitches_light.svg index fd4999bab9..bd9986d418 100644 --- a/icons/stitches_light.svg +++ b/icons/stitches_light.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/storybook.svg b/icons/storybook.svg index 25a15d1fb8..f8fdaa4cf5 100644 --- a/icons/storybook.svg +++ b/icons/storybook.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/stryker.svg b/icons/stryker.svg index a3c53ed21a..69b05e4ab8 100644 --- a/icons/stryker.svg +++ b/icons/stryker.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/stylable.svg b/icons/stylable.svg index 478c061f67..4be70bb5df 100644 --- a/icons/stylable.svg +++ b/icons/stylable.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/stylelint.svg b/icons/stylelint.svg index 5318fd90d6..9f713428db 100644 --- a/icons/stylelint.svg +++ b/icons/stylelint.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/stylelint_light.svg b/icons/stylelint_light.svg index 492805b510..f36493ba6d 100644 --- a/icons/stylelint_light.svg +++ b/icons/stylelint_light.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/stylus.svg b/icons/stylus.svg index 42ba5855c7..ae61b48dda 100644 --- a/icons/stylus.svg +++ b/icons/stylus.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/sublime.svg b/icons/sublime.svg index f72bdf97b8..ebb3c9222f 100644 --- a/icons/sublime.svg +++ b/icons/sublime.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/sway.svg b/icons/sway.svg new file mode 100644 index 0000000000..0d93bbbb1b --- /dev/null +++ b/icons/sway.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/swift.svg b/icons/swift.svg index a843b83750..e485d01729 100644 --- a/icons/swift.svg +++ b/icons/swift.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/syncpack.svg b/icons/syncpack.svg index edf8e8bf85..3c4f07c8b5 100644 --- a/icons/syncpack.svg +++ b/icons/syncpack.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/systemd.svg b/icons/systemd.svg new file mode 100755 index 0000000000..943b77f266 --- /dev/null +++ b/icons/systemd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/systemd_light.svg b/icons/systemd_light.svg new file mode 100755 index 0000000000..39e81f63b3 --- /dev/null +++ b/icons/systemd_light.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/tauri.svg b/icons/tauri.svg index b8fc1cc3f4..b5fe7d9abb 100644 --- a/icons/tauri.svg +++ b/icons/tauri.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/taze.svg b/icons/taze.svg new file mode 100644 index 0000000000..596b76d904 --- /dev/null +++ b/icons/taze.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/test-js.svg b/icons/test-js.svg index eda71c6cbd..752b8ffadb 100644 --- a/icons/test-js.svg +++ b/icons/test-js.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/test-jsx.svg b/icons/test-jsx.svg index 85dcd5ac0e..dbcc37aa25 100644 --- a/icons/test-jsx.svg +++ b/icons/test-jsx.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/test-ts.svg b/icons/test-ts.svg index 0960c7004e..69ec23374e 100644 --- a/icons/test-ts.svg +++ b/icons/test-ts.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/textlint.svg b/icons/textlint.svg index 0eae69c262..42af68913e 100644 --- a/icons/textlint.svg +++ b/icons/textlint.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/tldraw.svg b/icons/tldraw.svg index e516c411be..745d1cf3e7 100644 --- a/icons/tldraw.svg +++ b/icons/tldraw.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/tldraw_light.svg b/icons/tldraw_light.svg index cc50821cb5..a0150a17ef 100644 --- a/icons/tldraw_light.svg +++ b/icons/tldraw_light.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/tsil.svg b/icons/tsil.svg new file mode 100644 index 0000000000..261d7cdfec --- /dev/null +++ b/icons/tsil.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/turborepo.svg b/icons/turborepo.svg index 64d653957e..8da0ec5245 100644 --- a/icons/turborepo.svg +++ b/icons/turborepo.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/turborepo_light.svg b/icons/turborepo_light.svg index c57b612282..c631e25352 100644 --- a/icons/turborepo_light.svg +++ b/icons/turborepo_light.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/twig.svg b/icons/twig.svg index d47407653d..b16b12ccba 100644 --- a/icons/twig.svg +++ b/icons/twig.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/uml.svg b/icons/uml.svg index 1ceba5e0cc..92eb9c63c3 100644 --- a/icons/uml.svg +++ b/icons/uml.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/uml_light.svg b/icons/uml_light.svg index 504b403843..4efcd6a48e 100644 --- a/icons/uml_light.svg +++ b/icons/uml_light.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/vagrant.svg b/icons/vagrant.svg index f8dd90b5fd..78c19f9e70 100644 --- a/icons/vagrant.svg +++ b/icons/vagrant.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/vala.svg b/icons/vala.svg index d2acfe1f89..85fbe68e4d 100644 --- a/icons/vala.svg +++ b/icons/vala.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/vedic.svg b/icons/vedic.svg index dcebe3f684..9ae47a1653 100644 --- a/icons/vedic.svg +++ b/icons/vedic.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/velite.svg b/icons/velite.svg new file mode 100644 index 0000000000..5f5aadb5ba --- /dev/null +++ b/icons/velite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/vercel.svg b/icons/vercel.svg index bbe9a746e8..8ff6e492e2 100644 --- a/icons/vercel.svg +++ b/icons/vercel.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/vercel_light.svg b/icons/vercel_light.svg index 975a16af43..314b78cd66 100644 --- a/icons/vercel_light.svg +++ b/icons/vercel_light.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/verdaccio.svg b/icons/verdaccio.svg index 19f1d78855..3b5f1d4127 100644 --- a/icons/verdaccio.svg +++ b/icons/verdaccio.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/verified.svg b/icons/verified.svg new file mode 100644 index 0000000000..1b9edb227b --- /dev/null +++ b/icons/verified.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/vfl.svg b/icons/vfl.svg index 99e548544f..8cce143df5 100644 --- a/icons/vfl.svg +++ b/icons/vfl.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/vuex-store.svg b/icons/vuex-store.svg index 8ae0b45798..c98a851ccd 100644 --- a/icons/vuex-store.svg +++ b/icons/vuex-store.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/wakatime.svg b/icons/wakatime.svg index e2d97fbc15..46f503199c 100644 --- a/icons/wakatime.svg +++ b/icons/wakatime.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/wakatime_light.svg b/icons/wakatime_light.svg index fec94503a0..e4bf771042 100644 --- a/icons/wakatime_light.svg +++ b/icons/wakatime_light.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/watchman.svg b/icons/watchman.svg index 3aaf5a2272..a5e52279f6 100644 --- a/icons/watchman.svg +++ b/icons/watchman.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/webpack.svg b/icons/webpack.svg index d540e7b1ef..95c2d4b0eb 100644 --- a/icons/webpack.svg +++ b/icons/webpack.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/werf.svg b/icons/werf.svg index 9bea412751..8a6323e406 100644 --- a/icons/werf.svg +++ b/icons/werf.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/windicss.svg b/icons/windicss.svg index d9d7b0f579..4f31c55fae 100644 --- a/icons/windicss.svg +++ b/icons/windicss.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/wolframlanguage.svg b/icons/wolframlanguage.svg index 93979cb699..2f0b5aa03d 100644 --- a/icons/wolframlanguage.svg +++ b/icons/wolframlanguage.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/icons/wxt.svg b/icons/wxt.svg new file mode 100644 index 0000000000..d43b742831 --- /dev/null +++ b/icons/wxt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/zeabur.svg b/icons/zeabur.svg new file mode 100644 index 0000000000..37b0ea8b74 --- /dev/null +++ b/icons/zeabur.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icons/zeabur_light.svg b/icons/zeabur_light.svg new file mode 100644 index 0000000000..0d01f2b1c9 --- /dev/null +++ b/icons/zeabur_light.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/images/contributors.png b/images/contributors.png index cf5ef79f2d..2e4b0420bd 100644 Binary files a/images/contributors.png and b/images/contributors.png differ diff --git a/images/fileIcons.png b/images/fileIcons.png index 2df2397a35..d1a1b30aef 100644 Binary files a/images/fileIcons.png and b/images/fileIcons.png differ diff --git a/images/folderIcons.png b/images/folderIcons.png index 868ddd747a..34dedf59fd 100644 Binary files a/images/folderIcons.png and b/images/folderIcons.png differ diff --git a/material-colors.yml b/material-colors.yml index 29cca62ecf..ecc7bb3569 100644 --- a/material-colors.yml +++ b/material-colors.yml @@ -253,5 +253,5 @@ colors: - '#455A64' # blue gray 700 - '#37474F' # blue gray 800 - '#263238' # blue gray 900 - - '#000000' # black - - '#FFFFFF' # white + # - '#000000' # black must not be used + # - '#FFFFFF' # white must not be used diff --git a/package.json b/package.json index 4d87ce635e..63ccfb830a 100644 --- a/package.json +++ b/package.json @@ -2,46 +2,53 @@ "name": "material-icon-theme", "displayName": "Material Icon Theme", "description": "Material Design Icons for Visual Studio Code", - "version": "5.4.2", + "version": "5.12.0", + "license": "MIT", "scripts": { - "build": "bun run ./scripts/build-with-esbuild.ts", - "watch": "bun run ./scripts/watch-with-esbuild.ts", - "changelog": "changelog-machine --config changelog.config.json", - "check-colors": "svg-color-linter --colors material-colors.yml", - "check": "bun ./src/scripts/icons/checks", - "contributors": "bun ./src/scripts/contributors/index.ts", - "generateJson": "bun ./src/scripts/icons/generateJson.ts", - "lint": "npx @biomejs/biome check --apply ./src", - "postcompile": "bun run generateJson && bun run check", - "pretest": "bun run build && tsc -p ./", - "preversion": "bun run contributors && git add images/contributors.png && bun run preview && git add images/fileIcons.png && git add images/folderIcons.png && bun run svgo && git add icons/*.svg", - "preview": "bun ./src/scripts/preview", + "precompile": "rimraf dist && bun run verify", + "compile": "tsc -p ./", + "compile:declarations": "tsc -p ./tsconfig.declarations.json", + "postcompile": "bun run compile:declarations && bun run generateJson && bun run generateClones && bun run check", + "build": "bun run compile && bun ./build/build-with-esbuild.ts", + "watch": "bun ./build/watch-with-esbuild.ts", + "changelog": "changelog-machine --config ./changelog.config.json", + "check-colors": "bun ./src/scripts/svg/checkSvgColors.ts", + "check": "bun ./src/scripts/icons/checks/run.ts", + "contributors": "bun ./src/scripts/contributors/contributors.ts", + "generateJson": "bun ./src/scripts/icons/generateJson.ts > ./dist/material-icons.json", + "generateClones": "bun ./src/scripts/icons/generateClones.ts", + "lint": "biome check --write ./src", + "format": "biome format --write ./src", + "preversion": "bun run contributors && bun run preview && bun run svgo && git add images/*.png icons/*.svg", + "preview": "bun ./src/scripts/preview/run.ts", "svgo": "svgo -i icons -o icons -q", - "test-compile": "tsc -p ./", - "test": "bun ./out/test/runTest.js", + "test": "bun test", "version": "bun run changelog && git add CHANGELOG.md", - "vscode:prepublish": "bun run lint && bun run build && bun run postcompile" + "vscode:prepublish": "bun run lint && bun run build", + "verify": "sheriff verify", + "prepublishOnly": "bun ./src/scripts/module/prepare.ts", + "postpublish": "git checkout package.json && git checkout README.md" }, "publisher": "PKief", "author": { "name": "Philipp Kief", "email": "philipp.kief@gmx.de", - "url": "https://pkief.github.io" + "url": "https://pkief.com" }, "funding": "https://github.com/sponsors/PKief", "sponsor": { "url": "https://github.com/sponsors/PKief" }, "engines": { - "vscode": "^1.51.0" + "vscode": "^1.55.0" }, - "homepage": "https://github.com/PKief/vscode-material-icon-theme/blob/main/README.md", + "homepage": "https://github.com/material-extensions/vscode-material-icon-theme/blob/main/README.md", "repository": { "type": "git", - "url": "https://github.com/PKief/vscode-material-icon-theme.git" + "url": "git+https://github.com/material-extensions/vscode-material-icon-theme.git" }, "bugs": { - "url": "https://github.com/PKief/vscode-material-icon-theme/issues" + "url": "https://github.com/material-extensions/vscode-material-icon-theme/issues" }, "icon": "logo.png", "galleryBanner": { @@ -71,13 +78,11 @@ "activationEvents": [ "onStartupFinished" ], - "main": "./dist/extension.cjs", - "browser": "./dist/web/extension.cjs", + "main": "./dist/extension/desktop/extension.cjs", + "browser": "./dist/extension/web/extension.cjs", + "module": "./dist/module/index.cjs", + "types": "./dist/types/module/index.d.ts", "sideEffects": false, - "files": [ - "icons", - "dist/material-icons.json" - ], "contributes": { "iconThemes": [ { @@ -222,6 +227,38 @@ "items": { "type": "string" } + }, + "activeForPacks": { + "type": "array", + "default": [ + "angular" + ], + "description": "%configuration.customClones.activeForPacks%", + "items": { + "type": "string", + "enumDescriptions": [ + "%configuration.activeIconPack.angular%", + "%configuration.activeIconPack.angular_ngrx%", + "%configuration.activeIconPack.react%", + "%configuration.activeIconPack.react_redux%", + "%configuration.activeIconPack.qwik%", + "%configuration.activeIconPack.vue%", + "%configuration.activeIconPack.vue_vuex%", + "%configuration.activeIconPack.nest%", + "%configuration.activeIconPack.none%" + ], + "enum": [ + "angular", + "angular_ngrx", + "react", + "react_redux", + "qwik", + "vue", + "vue_vuex", + "nest", + "none" + ] + } } } }, @@ -305,32 +342,45 @@ "minimum": 0, "maximum": 1, "description": "%configuration.saturation%" + }, + "material-icon-theme.enableLogging": { + "type": "boolean", + "default": false, + "description": "%configuration.enableLogging%" + }, + "material-icon-theme.logLevel": { + "type": "string", + "default": "info", + "enum": [ + "info", + "error", + "debug" + ], + "description": "%configuration.logLevel%" } } } }, "dependencies": { "chroma-js": "^2.4.2", - "lodash.merge": "4.6.2", - "svgson": "^5.3.1" + "fast-deep-equal": "^3.1.3", + "svgson": "^5.3.1", + "events": "^3.3.0" }, "devDependencies": { - "@biomejs/biome": "1.7.3", + "@biomejs/biome": "1.8.2", + "@softarc/sheriff-core": "^0.15.1", "@types/chroma-js": "^2.4.4", - "@types/glob": "^7.2.0", - "@types/lodash.merge": "^4.6.7", - "@types/puppeteer": "^5.4.6", - "@types/vscode": "~1.51.0", - "@vscode/test-electron": "^2.3.9", - "axios": "^1.4.0", - "bun-types": "^1.1.12", - "changelog-machine": "^1.0.2", - "esbuild": "^0.21.4", - "glob": "^8.0.3", - "puppeteer": "^22.11.0", - "rimraf": "^3.0.2", - "svg-color-linter": "^1.3.0", + "@types/puppeteer": "^5.4.7", + "@types/vscode": "~1.55.0", + "axios": "^1.7.2", + "bun-types": "^1.1.20", + "changelog-machine": "^1.1.0", + "esbuild": "^0.21.5", + "puppeteer": "^22.13.1", + "rimraf": "^6.0.1", + "svg-color-linter": "^1.4.0", "svgo": "^2.8.0", - "typescript": "^4.7.2" + "typescript": "^5.5.4" } } diff --git a/package.nls.id.json b/package.nls.id.json new file mode 100644 index 0000000000..0ffd516c33 --- /dev/null +++ b/package.nls.id.json @@ -0,0 +1,46 @@ +{ + "command.activateIcons": "Material Icons: Aktifkan Tema Ikon", + "command.toggleIconPacks": "Material Icons: Konfigurasi Paket Ikon", + "command.changeFolderTheme": "Material Icons: Ubah Tema Folder", + "command.changeFolderColor": "Material Icons: Ubah Warna Folder", + "command.changeFileColor": "Material Icons: Ubah Warna File", + "command.restoreDefaultConfig": "Material Icons: Pulihkan Konfigurasi Default", + "command.toggleExplorerArrows": "Material Icons: Alihkan Panah Explorer", + "command.changeOpacity": "Material Icons: Ubah Opasitas", + "command.toggleGrayscale": "Material Icons: Alihkan Grayscale", + "command.changeSaturation": "Material Icons: Ubah Saturasi", + "configuration.title": "Material Icons", + "configuration.files.associations": "Tetapkan asosiasi ikon file kustom.", + "configuration.folders.associations": "Tetapkan asosiasi ikon folder kustom.", + "configuration.languages.associations": "Tetapkan asosiasi ikon bahasa kustom.", + "configuration.customClones": "Klon ikon yang ada dan buat yang baru dengan warna dan asosiasi kustom", + "configuration.customClones.base": "Ikon yang digunakan sebagai dasar untuk membuat ikon klon kustom", + "configuration.customClones.name": "Nama ikon kustom", + "configuration.customClones.color": "Warna yang digunakan sebagai dasar untuk mengubah warna ikon", + "configuration.customClones.lightColor": "Warna yang digunakan sebagai dasar untuk mengubah warna ikon ketika tema terang", + "configuration.customClones.fileNames": "Nama file yang akan diasosiasikan dengan ikon kustom", + "configuration.customClones.fileExtensions": "Ekstensi file yang akan diasosiasikan dengan ikon kustom", + "configuration.customClones.folderNames": "Nama folder yang akan diasosiasikan dengan ikon kustom", + "configuration.customClones.activeForPacks": "Hanya buat klon ini ketika paket ikon aktif adalah salah satu dari ini.", + "configuration.activeIconPack": "Pilih paket ikon yang mengaktifkan ikon tertentu.", + "configuration.activeIconPack.angular": "Ikon untuk Angular.", + "configuration.activeIconPack.angular_ngrx": "Ikon untuk Angular dan ngrx.", + "configuration.activeIconPack.react": "Ikon untuk React.", + "configuration.activeIconPack.react_redux": "Ikon untuk React dan Redux.", + "configuration.activeIconPack.qwik": "Ikon untuk Qwik.", + "configuration.activeIconPack.vue": "Ikon untuk Vue.", + "configuration.activeIconPack.vue_vuex": "Ikon untuk Vue dan Vuex.", + "configuration.activeIconPack.nest": "Ikon untuk NestJS.", + "configuration.activeIconPack.none": "Tidak ada paket ikon yang diaktifkan.", + "configuration.folders.theme": "Tetapkan jenis untuk ikon folder.", + "configuration.folders.theme.specific": "Pilih ikon folder spesifik.", + "configuration.folders.theme.classic": "Pilih ikon folder klasik.", + "configuration.folders.theme.none": "Tidak ada ikon folder.", + "configuration.folders.color": "Ubah warna ikon folder.", + "configuration.files.color": "Ubah warna ikon file.", + "configuration.hidesExplorerArrows": "Sembunyikan panah explorer sebelum folder.", + "configuration.opacity": "Ubah opasitas ikon.", + "configuration.saturation": "Ubah saturasi ikon.", + "configuration.enableLogging": "Aktifkan pencatatan ke saluran output.", + "configuration.logLevel": "Tetapkan level log untuk pesan output." +} diff --git a/package.nls.json b/package.nls.json index f5d10776ee..7f81e1ebc4 100644 --- a/package.nls.json +++ b/package.nls.json @@ -21,6 +21,7 @@ "configuration.customClones.fileNames": "File names to associate with the custom icon", "configuration.customClones.fileExtensions": "File extensions to associate with the custom icon", "configuration.customClones.folderNames": "Folder names to associate with the custom icon", + "configuration.customClones.activeForPacks": "Only generate this clone when the active icon pack is one of these.", "configuration.activeIconPack": "Select an icon pack that enables specific icons.", "configuration.activeIconPack.angular": "Icons for Angular.", "configuration.activeIconPack.angular_ngrx": "Icons for Angular and ngrx.", @@ -39,5 +40,7 @@ "configuration.files.color": "Change the color of the file icons.", "configuration.hidesExplorerArrows": "Hide explorer arrows before folder.", "configuration.opacity": "Change the opacity of the icons.", - "configuration.saturation": "Change the saturation of the icons." + "configuration.saturation": "Change the saturation of the icons.", + "configuration.enableLogging": "Enable logging to the output channel.", + "configuration.logLevel": "Set the log level for output messages." } diff --git a/package.nls.ko.json b/package.nls.ko.json index 39dd97dd3b..6a1f9723ad 100644 --- a/package.nls.ko.json +++ b/package.nls.ko.json @@ -32,4 +32,4 @@ "configuration.hidesExplorerArrows": "ํŒŒ์ผ ํƒ์ƒ‰๊ธฐ์˜ ํด๋” ํ™”์‚ดํ‘œ ์ˆจ๊ธฐ๊ธฐ.", "configuration.opacity": "์•„์ด์ฝ˜์˜ ํˆฌ๋ช…๋„ ๋ณ€๊ฒฝ.", "configuration.saturation": "์•„์ด์ฝ˜์˜ ์ฑ„๋„ ๋ณ€๊ฒฝ." -} \ No newline at end of file +} diff --git a/scripts/build-with-esbuild.ts b/scripts/build-with-esbuild.ts deleted file mode 100644 index 9a3723649c..0000000000 --- a/scripts/build-with-esbuild.ts +++ /dev/null @@ -1,4 +0,0 @@ -import esbuild from "esbuild"; -import config from "./esbuild.config"; - -esbuild.build(config).catch(() => process.exit(1)); diff --git a/scripts/esbuild.config.ts b/scripts/esbuild.config.ts deleted file mode 100644 index 8598e2d6e6..0000000000 --- a/scripts/esbuild.config.ts +++ /dev/null @@ -1,22 +0,0 @@ -import type { BuildOptions } from "esbuild"; - -const config: BuildOptions = { - entryPoints: ["./src/extension.ts", "./src/web/extension.ts"], - bundle: true, - platform: "node", - target: "node12", - outdir: "./dist", - outbase: "./src", - outExtension: { - ".js": ".cjs", - }, - format: "cjs", - external: ["vscode"], - loader: { - ".ts": "ts", - ".js": "js", - }, - logLevel: "info", -}; - -export default config; diff --git a/sheriff.config.ts b/sheriff.config.ts new file mode 100644 index 0000000000..c9baee7f79 --- /dev/null +++ b/sheriff.config.ts @@ -0,0 +1,17 @@ +import { type SheriffConfig } from '@softarc/sheriff-core'; + +export const sheriffConfig: SheriffConfig = { + entryFile: 'src/module/index.ts', + version: 1, + autoTagging: true, + tagging: { + 'src/extension': 'extension', + 'src/core': 'core', + 'src/module': 'module', + }, + depRules: { + root: ['core'], + extension: ['core'], + module: ['core'], + }, +}; diff --git a/src/architecture.md b/src/architecture.md new file mode 100644 index 0000000000..fa7f017e5d --- /dev/null +++ b/src/architecture.md @@ -0,0 +1,27 @@ +# Architecture + +The project is structured in a way that the core logic is separated from the extension logic. The core logic is used for the generation of the icon manifest, for the definition of the icon associations and for the translation logic. The extension logic is used for the interaction with the VS Code extension API (e.g. getting the user configuration, providing commands etc.). + +```text +๐Ÿ“ฆ src + โ”ฃ ๐Ÿ“‚ core <-- Logic for generating icon manifest, icon associations, translation logic, models, tests + โ”ฃ ๐Ÿ“‚ extension <-- Code which uses VS Code extension API (get user config, providing commands etc) + โ”ฃ ๐Ÿ“‚ module <-- Control which part of the core is exposed to the npm module + โ”— ๐Ÿ“‚ scripts <-- Scripts which are executed during build time (in the package.json) +``` + +By using the [sheriff](https://github.com/softarc-consulting/sheriff) library dependencies between the modules can be verified. The command `bun run verify` checks if the imports between the modules are allowed. For instance it's not allowed, that any of the other modules imports something from the `extension` module because of it's dependency to `vscode`. But the `extension` module itself is allowed to import from `core`. + +This is realized by using the dependency rules in the sheriff.config.ts file: + +```ts +depRules: { + root: ['core'], + extension: ['core'], + module: ['core'], +} +``` + +## Npm module + +The npm module exposes some of the functions so that the icon manifest can be generated programmatically. More information can be found in the [README.md](./module/README.md) of the module. diff --git a/src/commands/index.ts b/src/commands/index.ts deleted file mode 100644 index 2796d51903..0000000000 --- a/src/commands/index.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { commands } from 'vscode'; -import { activateIcons } from './activate'; -import { toggleExplorerArrows } from './explorerArrows'; -import { changeFileColor } from './fileColor'; -import { changeFolderColor } from './folderColor'; -import { changeFolderTheme } from './folders'; -import { toggleGrayscale } from './grayscale'; -import { toggleIconPacks } from './iconPacks'; -import { changeOpacity } from './opacity'; -import { restoreDefaultConfig } from './restoreConfig'; -import { changeSaturation } from './saturation'; - -const extensionCommands: { [commmand: string]: () => Promise } = { - activateIcons, - toggleIconPacks, - changeFolderTheme, - changeFolderColor, - changeFileColor, - restoreDefaultConfig, - toggleExplorerArrows, - changeOpacity, - toggleGrayscale, - changeSaturation, -}; - -export const registered = Object.keys(extensionCommands).map((commandName) => { - const callCommand = () => extensionCommands[commandName](); - return commands.registerCommand( - `material-icon-theme.${commandName}`, - callCommand - ); -}); diff --git a/src/commands/restoreConfig.ts b/src/commands/restoreConfig.ts deleted file mode 100644 index 29ac3ce1f1..0000000000 --- a/src/commands/restoreConfig.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { setThemeConfig } from './../helpers'; - -/** Restore all configurations to default. */ -export const restoreDefaultConfig = async () => { - await setThemeConfig('activeIconPack', undefined, true); - await setThemeConfig('folders.theme', undefined, true); - await setThemeConfig('folders.color', undefined, true); - await setThemeConfig('files.color', undefined, true); - await setThemeConfig('hidesExplorerArrows', undefined, true); - await setThemeConfig('opacity', undefined, true); - await setThemeConfig('saturation', undefined, true); - await setThemeConfig('files.associations', undefined, true); - await setThemeConfig('folders.associations', undefined, true); - await setThemeConfig('languages.associations', undefined, true); -}; diff --git a/src/core/generator/applyConfigToIcons.ts b/src/core/generator/applyConfigToIcons.ts new file mode 100644 index 0000000000..ca0f7b3f1d --- /dev/null +++ b/src/core/generator/applyConfigToIcons.ts @@ -0,0 +1,36 @@ +import type { Config } from '../models/icons/config'; +import { generateFileIcons } from './fileGenerator'; +import { generateFolderIcons } from './folderGenerator'; +import { setIconOpacity } from './iconOpacity'; +import { setIconSaturation } from './iconSaturation'; + +/** + * Apply the configuration to the icons. But only if the configuration has changed. + * If the affectedConfig is not set then all icons will be updated. + * + * @param config Configuration that customizes the icons and the manifest. + * @param affectedConfig Set of configuration keys that have changed so that not all functions need to be executed. + */ +export const applyConfigToIcons = async (config: Config, oldConfig: Config) => { + if (config.files.color !== oldConfig.files.color) { + await generateFileIcons( + config.files.color, + config.opacity, + config.saturation + ); + } + if (config.folders.color !== oldConfig.folders.color) { + await generateFolderIcons( + config.folders.color, + config.opacity, + config.saturation + ); + } + + if (config.opacity !== oldConfig.opacity) { + await setIconOpacity(config.opacity, config.files.associations); + } + if (config.saturation !== oldConfig.saturation) { + await setIconSaturation(config.saturation, config.files.associations); + } +}; diff --git a/src/icons/generator/clones/clonesGenerator.ts b/src/core/generator/clones/clonesGenerator.ts similarity index 59% rename from src/icons/generator/clones/clonesGenerator.ts rename to src/core/generator/clones/clonesGenerator.ts index 7efd0545b6..c9b99b8ff1 100644 --- a/src/icons/generator/clones/clonesGenerator.ts +++ b/src/core/generator/clones/clonesGenerator.ts @@ -1,61 +1,65 @@ -import { writeFileSync } from 'node:fs'; -import merge from 'lodash.merge'; -import { getFileConfigHash } from '../../../helpers/fileConfig'; -import { - type CustomClone, - type FileIconClone, - type FileIcons, - type FolderIconClone, - type FolderTheme, - IconConfiguration, - type IconJsonOptions, -} from '../../../models'; +import { getFileConfigHash } from '../../helpers/configHash'; +import { merge } from '../../helpers/object'; +import { writeToFile } from '../../helpers/writeFile'; +import { logger } from '../../logging/logger'; +import type { + Config, + CustomClone, + FileIconClone, + FolderIconClone, +} from '../../models/icons/config'; +import type { FileIcons } from '../../models/icons/files/fileTypes'; +import type { FolderTheme } from '../../models/icons/folders/folderTheme'; +import type { Manifest } from '../../models/manifest'; import { cloneIconExtension, clonesFolder } from '../constants'; -import { - Variant, - clearCloneFolder, - getCloneData, - isFolder, -} from './utils/cloneData'; +import { Variant, getCloneData, isFolder } from './utils/cloneData'; import { cloneIcon, createCloneConfig } from './utils/cloning'; /** * Creates custom icons by cloning already existing icons and changing * their colors, based on the user's provided configurations. */ -export function customClonesIcons( - config: IconConfiguration, - options: IconJsonOptions -): IconConfiguration { - clearCloneFolder(hasCustomClones(options)); - - let clonedIconsConfig: IconConfiguration = new IconConfiguration(); - const hash = getFileConfigHash(options); +export const customClonesIcons = async ( + manifest: Manifest, + config: Config +): Promise => { + let clonedIconsManifest = merge({}, manifest); + const hash = getFileConfigHash(config); // create folder clones as specified by the user in the options - options.folders?.customClones?.forEach((clone) => { - const cloneCfg = createIconClone(clone, config, hash); - clonedIconsConfig = merge(clonedIconsConfig, cloneCfg); - }); + for (const clone of config.folders?.customClones ?? []) { + if ( + clone.activeForPacks === undefined || + clone.activeForPacks.includes(config.activeIconPack) + ) { + const cloneCfg = await createIconClone(clone, manifest, hash); + clonedIconsManifest = merge(clonedIconsManifest, cloneCfg); + } + } // create file clones as specified by the user in the options - options.files?.customClones?.forEach((clone) => { - const cloneCfg = createIconClone(clone, config, hash); - clonedIconsConfig = merge(clonedIconsConfig, cloneCfg); - }); + for (const clone of config.files?.customClones ?? []) { + if ( + clone.activeForPacks === undefined || + clone.activeForPacks.includes(config.activeIconPack) + ) { + const cloneCfg = await createIconClone(clone, manifest, hash); + clonedIconsManifest = merge(clonedIconsManifest, cloneCfg); + } + } - return clonedIconsConfig; -} + return clonedIconsManifest; +}; /** * Creates custom icons by cloning already existing icons and changing * their colors, based on the configurations provided by the extension. * (this is meant to be called at build time) */ -export function generateConfiguredClones( +export const generateConfiguredClones = async ( iconsList: FolderTheme[] | FileIcons, - config: IconConfiguration -) { + manifest: Manifest +) => { let iconsToClone: CustomClone[] = []; if (Array.isArray(iconsList)) { @@ -82,66 +86,66 @@ export function generateConfiguredClones( ); } - iconsToClone?.forEach((clone) => { - const clones = getCloneData(clone, config, '', '', cloneIconExtension); + for (const icon of iconsToClone) { + const clones = getCloneData(icon, manifest, '', '', cloneIconExtension); if (!clones) { return; } - clones.forEach((clone) => { + for (const clone of clones) { try { // generates the new icon content (svg) - const content = cloneIcon(clone.base.path, clone.color); + const content = await cloneIcon(clone.base.path, clone.color); // write the new .svg file to the disk - writeFileSync(clone.path, content); + await writeToFile(clone.path, content); } catch (error) { - console.error(error); + logger.error(error); return; } - }); - }); -} + } + } +}; /** Checks if there are any custom clones to be created */ -export function hasCustomClones(options: IconJsonOptions): boolean { +export const hasCustomClones = (config: Config): boolean => { return ( - (options.folders?.customClones?.length ?? 0) > 0 || - (options.files?.customClones?.length ?? 0) > 0 + (config.folders?.customClones?.length ?? 0) > 0 || + (config.files?.customClones?.length ?? 0) > 0 ); -} +}; /** * Generates a clone of an icon. * @param cloneOpts options and configurations on how to clone the icon - * @param config global icon configuration (used to get the base icon) + * @param manifest global icon configuration (used to get the base icon) * @param hash current hash being applied to the icons * @returns a partial icon configuration for the new icon */ -function createIconClone( +const createIconClone = async ( cloneOpts: FolderIconClone | FileIconClone, - config: IconConfiguration, + manifest: Manifest, hash: string -): IconConfiguration { +): Promise => { // get clones to be created - const clones = getCloneData(cloneOpts, config, clonesFolder, hash); + const clones = getCloneData(cloneOpts, manifest, clonesFolder, hash); if (!clones) { - return {}; + return manifest; } const clonesConfig = createCloneConfig(); - clones.forEach((clone) => { + for (const clone of clones) { try { // generates the new icon content (svg) - const content = cloneIcon(clone.base.path, clone.color, hash); + const content = await cloneIcon(clone.base.path, clone.color, hash); try { // write the new .svg file to the disk - writeFileSync(clone.path, content); + await writeToFile(clone.path, content); } catch (error) { - console.error(error); - return; + logger.error(error); + return manifest; } // sets the icon path for the cloned icon in the configuration @@ -183,9 +187,9 @@ function createIconClone( }); } } catch (error) { - console.error(error); + logger.error(error); } - }); + } return clonesConfig; -} +}; diff --git a/src/icons/generator/clones/utils/cloneData.ts b/src/core/generator/clones/utils/cloneData.ts similarity index 75% rename from src/icons/generator/clones/utils/cloneData.ts rename to src/core/generator/clones/utils/cloneData.ts index ade967e50f..0a3eeb9961 100644 --- a/src/icons/generator/clones/utils/cloneData.ts +++ b/src/core/generator/clones/utils/cloneData.ts @@ -1,11 +1,13 @@ -import { existsSync, mkdirSync, rmSync } from 'node:fs'; +import { existsSync } from 'node:fs'; +import { mkdir, rm } from 'node:fs/promises'; import { basename, dirname, join } from 'node:path'; -import { +import { resolvePath } from '../../../helpers/resolvePath'; +import type { CustomClone, FileIconClone, FolderIconClone, - IconConfiguration, -} from '../../../../models'; +} from '../../../models/icons/config'; +import type { Manifest } from '../../../models/manifest'; import { iconFolderPath, lightColorFileEnding, @@ -24,28 +26,18 @@ export enum Type { File, } -export interface IconData { +export type IconData = { type: Type; path: string; variant: Variant; -} +}; -export interface CloneData extends IconData { +export type CloneData = IconData & { name: string; color: string; inConfigPath: string; base: IconData; -} - -/** resolves the path of the icon depending on the caller */ -export function resolvePath(path: string): string { - if (basename(__dirname) === 'dist') { - return join(__dirname, String(path)); - } else { - // executed via script - return join(__dirname, '..', '..', '..', '..', String(path)); - } -} +}; /** checks if a `CustomClone` configuration is a `FolderIconClone` */ export const isFolder = (clone: CustomClone): clone is FolderIconClone => { @@ -59,19 +51,19 @@ const isDark = (daa: IconData) => /** * get cloning information from configuration * @param cloneOpts the clone configuration - * @param config the current configuration of the extension + * @param manifest the current configuration of the extension * @param hash the current hash being applied to the icons */ -export function getCloneData( +export const getCloneData = ( cloneOpts: CustomClone, - config: IconConfiguration, + manifest: Manifest, subFolder: string, hash: string, ext?: string -): CloneData[] | undefined { +): CloneData[] | undefined => { const baseIcon = isFolder(cloneOpts) - ? getFolderIconBaseData(cloneOpts, config) - : getFileIconBaseData(cloneOpts, config); + ? getFolderIconBaseData(cloneOpts, manifest) + : getFileIconBaseData(cloneOpts, manifest); if (baseIcon) { return baseIcon.map((base) => { @@ -92,17 +84,17 @@ export function getCloneData( }; }); } -} +}; /** returns path, type and variant for the base file icons to be cloned */ -function getFileIconBaseData( +const getFileIconBaseData = ( cloneOpts: FileIconClone, - config: IconConfiguration -): IconData[] | undefined { + manifest: Manifest +): IconData[] | undefined => { const icons = []; - const base = config.iconDefinitions?.[`${cloneOpts.base}`]?.iconPath; + const base = manifest.iconDefinitions?.[`${cloneOpts.base}`]?.iconPath; let light = - config.iconDefinitions?.[`${cloneOpts.base}${lightColorFileEnding}`] + manifest.iconDefinitions?.[`${cloneOpts.base}${lightColorFileEnding}`] ?.iconPath; if (cloneOpts.lightColor && !light) { @@ -124,16 +116,16 @@ function getFileIconBaseData( }); return icons; } -} +}; /** creates and returns the path of the cloned file icon */ -function getFileIconCloneData( +const getFileIconCloneData = ( base: IconData, cloneOpts: FileIconClone, hash: string, subFolder: string, ext = '.svg' -): IconData { +): IconData => { const name = getIconName(cloneOpts.name, base); const clonePath = join(dirname(base.path), subFolder, `${name}${hash}${ext}`); @@ -142,13 +134,13 @@ function getFileIconCloneData( type: base.type, path: clonePath, }; -} +}; /** returns path, type and variant for the base folder icons to be cloned */ -function getFolderIconBaseData( +const getFolderIconBaseData = ( clone: FolderIconClone, - config: IconConfiguration -): IconData[] | undefined { + manifest: Manifest +): IconData[] | undefined => { const icons = []; const folderBase = clone.base === 'folder' @@ -157,13 +149,14 @@ function getFolderIconBaseData( ? clone.base : `folder-${clone.base}`; - const base = config.iconDefinitions?.[`${folderBase}`]?.iconPath; + const base = manifest.iconDefinitions?.[`${folderBase}`]?.iconPath; const open = - config.iconDefinitions?.[`${folderBase}${openedFolder}`]?.iconPath; + manifest.iconDefinitions?.[`${folderBase}${openedFolder}`]?.iconPath; let light = - config.iconDefinitions?.[`${folderBase}${lightColorFileEnding}`]?.iconPath; + manifest.iconDefinitions?.[`${folderBase}${lightColorFileEnding}`] + ?.iconPath; let lightOpen = - config.iconDefinitions?.[ + manifest.iconDefinitions?.[ `${folderBase}${openedFolder}${lightColorFileEnding}` ]?.iconPath; @@ -204,38 +197,38 @@ function getFolderIconBaseData( return icons; } -} +}; /** creates and returns the path of the cloned folder icon */ -function getFolderIconCloneData( +const getFolderIconCloneData = ( base: IconData, cloneOpts: FolderIconClone, hash: string, subFolder: string, ext = '.svg' -): IconData { +): IconData => { const name = getIconName(cloneOpts.name, base); const path = join(dirname(base.path), subFolder, `${name}${hash}${ext}`); return { type: base.type, variant: base.variant, path }; -} +}; /** * removes the clones folder if it exists * and creates a new one if `keep` is true */ -export function clearCloneFolder(keep: boolean = true): void { +export const clearCloneFolder = async (keep = true): Promise => { const clonesFolderPath = resolvePath('./../icons/clones'); if (existsSync(clonesFolderPath)) { - rmSync(clonesFolderPath, { recursive: true }); + await rm(clonesFolderPath, { recursive: true }); } if (keep) { - mkdirSync(clonesFolderPath); + await mkdir(clonesFolderPath); } -} +}; -function getIconName(baseName: string, data: IconData): string { +const getIconName = (baseName: string, data: IconData): string => { let prefix = ''; let suffix = ''; @@ -265,4 +258,4 @@ function getIconName(baseName: string, data: IconData): string { } return `${prefix}${baseName}${suffix}`; -} +}; diff --git a/src/icons/generator/clones/utils/cloning.ts b/src/core/generator/clones/utils/cloning.ts similarity index 73% rename from src/icons/generator/clones/utils/cloning.ts rename to src/core/generator/clones/utils/cloning.ts index 4931db2478..367c7d0535 100644 --- a/src/icons/generator/clones/utils/cloning.ts +++ b/src/core/generator/clones/utils/cloning.ts @@ -1,17 +1,17 @@ -import { readFileSync } from 'node:fs'; -import { type INode, parseSync, stringify } from 'svgson'; -import { IconConfiguration } from '../../../../models'; +import { readFile } from 'node:fs/promises'; +import { type INode, parse, stringify } from 'svgson'; +import { createEmptyManifest } from '../../../models/manifest'; import { getColorList, replacementMap } from './color/colors'; /** * Recursively walks through an SVG node tree and its children, * calling a callback on each node. */ -export function traverse( +export const traverse = ( node: INode, callback: (node: INode) => void, filter = true -) { +) => { if (node.attributes['data-mit-no-recolor'] !== 'true' || !filter) { callback(node); @@ -19,37 +19,41 @@ export function traverse( node.children.forEach((child) => traverse(child, callback, filter)); } } -} +}; /** Reads an icon from the file system and returns its content. */ -export function readIcon(path: string, hash: string): string { +export const readIcon = async (path: string, hash: string): Promise => { try { - return readFileSync(path, 'utf8'); - } catch (error) { + return await readFile(path, 'utf8'); + } catch { const unhashedPath = path.replace(hash, ''); - return readFileSync(unhashedPath, 'utf8'); + return await readFile(unhashedPath, 'utf8'); } -} +}; /** Clones an icon and changes its colors according to the clone options. */ -export function cloneIcon(path: string, color: string, hash = ''): string { - const baseContent = readIcon(path, hash); - const svg = parseSync(baseContent); +export const cloneIcon = async ( + path: string, + color: string, + hash = '' +): Promise => { + const baseContent = await readIcon(path, hash); + const svg = await parse(baseContent); const replacements = replacementMap(color, getColorList(svg)); replaceColors(svg, replacements); return stringify(svg); -} +}; /** Gets the style attribute of an SVG node if it exists. */ -export function getStyle(node: INode) { +export const getStyle = (node: INode) => { if (node && node.attributes && node.attributes.style) { return parseStyle(node.attributes.style); } return {}; -} +}; /** Parses the style attribute of an SVG node. */ -function parseStyle(css: string) { +const parseStyle = (css: string) => { const rules = css.split(';'); const result: Record = {}; rules.forEach((rule) => { @@ -57,17 +61,20 @@ function parseStyle(css: string) { result[key.trim()] = value.trim(); }); return result; -} +}; /** Converts object to css style string. */ -export function stringifyStyle(css: Record) { +export const stringifyStyle = (css: Record) => { return Object.entries(css) .map(([key, value]) => `${key}:${value}`) .join(';'); -} +}; /** Replaces colors in an SVG node using a replacement map. */ -export function replaceColors(node: INode, replacements: Map) { +export const replaceColors = ( + node: INode, + replacements: Map +) => { traverse(node, (node) => { // replace colors in style attribute const style = getStyle(node); @@ -103,17 +110,17 @@ export function replaceColors(node: INode, replacements: Map) { } } }); -} +}; /** Creates a clone configuration with empty light object. */ -export function createCloneConfig() { - const config = new IconConfiguration(); - config.light = { +export const createCloneConfig = () => { + const manifest = createEmptyManifest(); + manifest.light = { fileExtensions: {}, fileNames: {}, folderNames: {}, folderNamesExpanded: {}, }; - return config; -} + return manifest; +}; diff --git a/src/icons/generator/clones/utils/color/colors.ts b/src/core/generator/clones/utils/color/colors.ts similarity index 90% rename from src/icons/generator/clones/utils/color/colors.ts rename to src/core/generator/clones/utils/color/colors.ts index 82c7548f24..edc3f2dc56 100644 --- a/src/icons/generator/clones/utils/color/colors.ts +++ b/src/core/generator/clones/utils/color/colors.ts @@ -1,5 +1,5 @@ -import chroma, { Color, valid } from 'chroma-js'; -import { INode } from 'svgson'; +import chroma, { type Color, valid } from 'chroma-js'; +import { type INode } from 'svgson'; import { getStyle, traverse } from '../cloning'; import { closerMaterialColorTo, @@ -7,7 +7,7 @@ import { } from './materialPalette'; /** Get all the colors used in the SVG node as a `Set` list. **/ -export function getColorList(node: INode) { +export const getColorList = (node: INode) => { const colors = new Set(); traverse(node, (node) => { @@ -43,10 +43,10 @@ export function getColorList(node: INode) { }); return colors; -} +}; /** given a set of colors, orders them from dark to light. **/ -export function orderDarkToLight(colors: Set) { +export const orderDarkToLight = (colors: Set) => { const colorArray = Array.from(colors); return colorArray.sort((a, b) => { // sort by lightness @@ -61,19 +61,19 @@ export function orderDarkToLight(colors: Set) { return 0; } }); -} +}; /** Lightens a color by a given percentage. **/ const lighten = (color: Color, hslPercent: number) => color.set('hsl.l', color.get('hsl.l') + hslPercent); /** checks if a string is a valid color. **/ -export function isValidColor(color: string | undefined): boolean { +export const isValidColor = (color: string | undefined): boolean => { if (color === undefined) { return false; } return valid(color); -} +}; /** * Creates a map of color replacements based on the base color and @@ -84,7 +84,7 @@ export function isValidColor(color: string | undefined): boolean { * the material palette to find the most appropriate color for the rest * in the list. */ -export function replacementMap(baseColor: string, colors: Set) { +export const replacementMap = (baseColor: string, colors: Set) => { if (!isValidColor(baseColor)) { // try to get it from the material palette by key const matCol = getMaterialColorByKey(baseColor); @@ -126,4 +126,4 @@ export function replacementMap(baseColor: string, colors: Set) { } return replacement; -} +}; diff --git a/src/icons/generator/clones/utils/color/materialPalette.ts b/src/core/generator/clones/utils/color/materialPalette.ts similarity index 98% rename from src/icons/generator/clones/utils/color/materialPalette.ts rename to src/core/generator/clones/utils/color/materialPalette.ts index f5c4db24b4..1d20172db3 100644 --- a/src/icons/generator/clones/utils/color/materialPalette.ts +++ b/src/core/generator/clones/utils/color/materialPalette.ts @@ -264,19 +264,19 @@ export const materialPalette = { * Gets the material color from the material palette * @param key the key of the material color e.g. 'blue-grey-500' */ -export function getMaterialColorByKey(key: string): string | undefined { +export const getMaterialColorByKey = (key: string): string | undefined => { if (key in materialPalette) { return materialPalette[key as keyof typeof materialPalette]; } return undefined; -} +}; /** * Given a color, returns the closest material color from the * material palette. */ -export function closerMaterialColorTo(color: string): string { +export const closerMaterialColorTo = (color: string): string => { const palette = Object.values(materialPalette); if (!isValidColor(color)) { @@ -294,4 +294,4 @@ export function closerMaterialColorTo(color: string): string { .sort((a, b) => a.distance - b.distance); return distances[0].color; -} +}; diff --git a/src/core/generator/config/defaultConfig.ts b/src/core/generator/config/defaultConfig.ts new file mode 100644 index 0000000000..e99d1a4ee0 --- /dev/null +++ b/src/core/generator/config/defaultConfig.ts @@ -0,0 +1,41 @@ +import { merge } from '../../helpers/object'; +import type { Config } from '../../models/icons/config'; +import type { RecursivePartial } from '../../types/recursivePartial'; + +/** + * The options control the generator and decide which icons are disabled or not. + */ +export const getDefaultConfig = (): Required => ({ + folders: { + theme: 'specific', + color: '#90a4ae', + associations: {}, + customClones: [], + }, + activeIconPack: 'angular', + hidesExplorerArrows: false, + opacity: 1, + saturation: 1, + files: { + color: '#90a4ae', + associations: {}, + customClones: [], + }, + languages: { associations: {} }, + enableLogging: false, + logLevel: 'info', +}); + +/** + * Fill in missing configuration values with the default values. + * + * @param config Configuration object + * @returns New configuration object with default values + */ +export const padWithDefaultConfig = ( + config?: RecursivePartial +): Config => { + const withDefaultConfig = merge(getDefaultConfig(), config ?? {}) as Config; + + return withDefaultConfig; +}; diff --git a/src/core/generator/constants.ts b/src/core/generator/constants.ts new file mode 100644 index 0000000000..74a6fe77dd --- /dev/null +++ b/src/core/generator/constants.ts @@ -0,0 +1,54 @@ +/** + * Name of the VS Code extension. + */ +export const extensionName = 'material-icon-theme'; + +/** + * Name of the extension publisher. + */ +export const extensionPublisher = 'PKief'; + +/** + * Key to identify the log event. + */ +export const logEventKey = `${extensionName}-log-event`; + +/** + * Path where the icons are located. + */ +export const iconFolderPath = './../icons/'; + +/** + * File name of the JSON file that will be generated to the out folder. + */ +export const manifestName = 'material-icons.json'; + +/** + * File ending for opened folders. + */ +export const openedFolder = '-open'; + +/** + * File ending for light icons. + */ +export const lightColorFileEnding = '_light'; + +/** + * File ending for high contrast icons. + */ +export const highContrastColorFileEnding = '_highContrast'; + +/** + * Pattern to match the file icon definition. + */ +export const cloneIconExtension = '.clone.svg'; + +/** + * User Defined Clones subfolder + */ +export const clonesFolder = 'clones/'; + +/** + * Pattern to match wildcards for custom file icon mappings. + */ +export const wildcardPattern = new RegExp(/^\*{1,2}\./); diff --git a/src/icons/generator/fileGenerator.ts b/src/core/generator/fileGenerator.ts similarity index 58% rename from src/icons/generator/fileGenerator.ts rename to src/core/generator/fileGenerator.ts index f8d4df48bb..afb51f5698 100644 --- a/src/icons/generator/fileGenerator.ts +++ b/src/core/generator/fileGenerator.ts @@ -1,12 +1,10 @@ -import merge from 'lodash.merge'; -import { getFileConfigHash } from '../../helpers/fileConfig'; -import { - type FileIcon, - type FileIcons, - type IconAssociations, - IconConfiguration, - type IconJsonOptions, -} from '../../models/index'; +import { getFileConfigHash } from '../helpers/configHash'; +import { logger } from '../logging/logger'; +import type { Config, IconAssociations } from '../models/icons/config'; +import type { FileIcon } from '../models/icons/files/fileIcon'; +import type { FileIcons } from '../models/icons/files/fileTypes'; +import type { IconPackValue } from '../models/icons/iconPack'; +import type { Manifest } from '../models/manifest'; import { cloneIconExtension, highContrastColorFileEnding, @@ -14,116 +12,99 @@ import { lightColorFileEnding, wildcardPattern, } from './constants'; -import { - getPath, - getSVG, - validateHEXColorCode, - writeSVGFiles, -} from './folderGenerator'; +import { getPath, getSVG, writeSVGFiles } from './shared/svg'; +import { validateHEXColorCode } from './shared/validation'; /** * Get all file icons that can be used in this theme. */ export const loadFileIconDefinitions = ( fileIcons: FileIcons, - config: IconConfiguration, - options: IconJsonOptions -): IconConfiguration => { - config = merge({}, config); - const enabledIcons = disableIconsByPack( - fileIcons, - options.activeIconPack ?? '' - ); - const customIcons = getCustomIcons(options.files?.associations); + config: Config, + manifest: Manifest +): Manifest => { + const enabledIcons = disableIconsByPack(fileIcons, config.activeIconPack); + const customIcons = getCustomIcons(config.files?.associations); const allFileIcons = [...enabledIcons, ...customIcons]; allFileIcons.forEach((icon) => { if (icon.disabled) return; const isClone = icon.clone !== undefined; - config = merge({}, config, setIconDefinition(config, icon.name, isClone)); + manifest = setIconDefinition(manifest, config, icon.name, isClone); if (icon.light) { - config = merge( - {}, + manifest = setIconDefinition( + manifest, config, - setIconDefinition(config, icon.name, isClone, lightColorFileEnding) + icon.name, + isClone, + lightColorFileEnding ); } if (icon.highContrast) { - config = merge( - {}, + manifest = setIconDefinition( + manifest, config, - setIconDefinition( - config, - icon.name, - isClone, - highContrastColorFileEnding - ) + icon.name, + isClone, + highContrastColorFileEnding ); } if (icon.fileExtensions) { - config = merge( - {}, - config, - mapSpecificFileIcons(icon, FileMappingType.FileExtensions) + manifest = mapSpecificFileIcons( + icon, + FileMappingType.FileExtensions, + manifest ); } if (icon.fileNames) { - config = merge( - {}, - config, - mapSpecificFileIcons( - icon, - FileMappingType.FileNames, - options.files?.associations - ) + manifest = mapSpecificFileIcons( + icon, + FileMappingType.FileNames, + manifest, + config.files?.associations ); } }); // set default file icon - config = merge( - {}, + manifest = setIconDefinition( + manifest, config, - setIconDefinition(config, fileIcons.defaultIcon.name, false) + fileIcons.defaultIcon.name, + false ); - config.file = fileIcons.defaultIcon.name; + manifest.file = fileIcons.defaultIcon.name; - if (fileIcons.defaultIcon.light && config.light) { - config = merge( - {}, + if (fileIcons.defaultIcon.light && manifest.light) { + manifest = setIconDefinition( + manifest, config, - setIconDefinition( - config, - fileIcons.defaultIcon.name, - false, - lightColorFileEnding - ) + fileIcons.defaultIcon.name, + false, + lightColorFileEnding ); - if (config.light) { - config.light.file = fileIcons.defaultIcon.name + lightColorFileEnding; + if (manifest.light) { + manifest.light.file = fileIcons.defaultIcon.name + lightColorFileEnding; } } if (fileIcons.defaultIcon.highContrast) { - config = merge( - {}, + manifest = setIconDefinition( + manifest, config, - setIconDefinition( - config, - fileIcons.defaultIcon.name, - false, - highContrastColorFileEnding - ) + fileIcons.defaultIcon.name, + false, + highContrastColorFileEnding ); - if (config.highContrast) { - config.highContrast.file = + if (manifest.highContrast) { + manifest.highContrast.file = fileIcons.defaultIcon.name + highContrastColorFileEnding; } } - return config; + return manifest; }; /** @@ -132,12 +113,12 @@ export const loadFileIconDefinitions = ( const mapSpecificFileIcons = ( icon: FileIcon, mappingType: FileMappingType, + manifest: Manifest, customFileAssociation: IconAssociations = {} ) => { - const config = new IconConfiguration(); const iconMappingType = icon[mappingType as keyof FileIcon] as string[]; if (iconMappingType === undefined) { - return; + return manifest; } iconMappingType.forEach((name) => { // if the custom file extension should also overwrite the file names @@ -154,9 +135,9 @@ const mapSpecificFileIcons = ( ); // if overwrite is enabled then do not continue to set the icons for file names containing the file extension - const configMappingType = config[mappingType]; - const configLightMappingType = config.light?.[mappingType]; - const configHighContrastMappingType = config.highContrast?.[mappingType]; + const configMappingType = manifest[mappingType]; + const configLightMappingType = manifest.light?.[mappingType]; + const configHighContrastMappingType = manifest.highContrast?.[mappingType]; if ( shouldOverwriteFileNames || @@ -175,7 +156,7 @@ const mapSpecificFileIcons = ( `${icon.name}${highContrastColorFileEnding}`; } }); - return config; + return manifest; }; /** @@ -183,42 +164,52 @@ const mapSpecificFileIcons = ( */ const disableIconsByPack = ( fileIcons: FileIcons, - activatedIconPack: string + activeIconPack: IconPackValue ): FileIcon[] => { return fileIcons.icons.filter((icon) => { return !icon.enabledFor ? true - : icon.enabledFor.some((p) => p === activatedIconPack); + : icon.enabledFor.some((p) => p === activeIconPack); }); }; const setIconDefinition = ( - config: IconConfiguration, + manifest: Manifest, + config: Config, iconName: string, isClone: boolean, appendix: string = '' ) => { - const obj: Partial = { iconDefinitions: {} }; const ext = isClone ? cloneIconExtension : '.svg'; const key = `${iconName}${appendix}`; - if (config.options && !config.iconDefinitions![key]) { - const fileConfigHash = getFileConfigHash(config.options); - obj.iconDefinitions![key] = { + manifest.iconDefinitions ??= {}; + if (!manifest.iconDefinitions![key]) { + const fileConfigHash = getFileConfigHash(config); + manifest.iconDefinitions![key] = { iconPath: `${iconFolderPath}${iconName}${appendix}${fileConfigHash}${ext}`, }; } - return obj; + return manifest; }; -export const generateFileIcons = (color: string | undefined) => { +export const generateFileIcons = async ( + color: string, + opacity: number, + saturation: number +) => { if (!color || !validateHEXColorCode(color)) { - return console.error('Invalid color code for file icons'); + return logger.error('Invalid color code for file icons'); } const fileIcon = 'M13 9h5.5L13 3.5V9M6 2h8l6 6v12a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4c0-1.11.89-2 2-2m5 2H6v16h12v-9h-7V4z'; - writeSVGFiles('file', getSVG(getPath(fileIcon, color), 24)); + await writeSVGFiles( + 'file', + getSVG(getPath(fileIcon, color), 24), + opacity, + saturation + ); }; const getCustomIcons = (fileAssociations: IconAssociations | undefined) => { diff --git a/src/icons/generator/folderGenerator.ts b/src/core/generator/folderGenerator.ts similarity index 59% rename from src/icons/generator/folderGenerator.ts rename to src/core/generator/folderGenerator.ts index 347a480266..ba15c9b7e1 100644 --- a/src/icons/generator/folderGenerator.ts +++ b/src/core/generator/folderGenerator.ts @@ -1,15 +1,12 @@ -import { writeFileSync } from 'node:fs'; -import { basename, join } from 'node:path'; -import merge from 'lodash.merge'; -import { getFileConfigHash } from '../../helpers/fileConfig'; -import { - type DefaultIcon, - type FolderIcon, - type FolderTheme, - type IconAssociations, - IconConfiguration, - type IconJsonOptions, -} from '../../models/index'; +import { getFileConfigHash } from '../helpers/configHash'; +import { merge } from '../helpers/object'; +import { logger } from '../logging/logger'; +import type { Config, IconAssociations } from '../models/icons/config'; +import type { DefaultIcon } from '../models/icons/defaultIcon'; +import type { FolderIcon } from '../models/icons/folders/folderIcon'; +import type { FolderTheme } from '../models/icons/folders/folderTheme'; +import type { IconPackValue } from '../models/icons/iconPack'; +import type { Manifest } from '../models/manifest'; import { cloneIconExtension, highContrastColorFileEnding, @@ -17,55 +14,51 @@ import { lightColorFileEnding, openedFolder, } from './constants'; +import { getPath, getSVG, writeSVGFiles } from './shared/svg'; +import { validateHEXColorCode } from './shared/validation'; /** * Get the folder icon definitions as object. */ export const loadFolderIconDefinitions = ( - folderThemes: FolderTheme[], - config: IconConfiguration, - options: IconJsonOptions -): IconConfiguration => { - config = merge({}, config); - config.hidesExplorerArrows = options.hidesExplorerArrows; - const activeTheme = getEnabledFolderTheme( - folderThemes, - options.folders?.theme - ); + folderIcons: FolderTheme[], + config: Config, + manifest: Manifest +): Manifest => { + manifest.hidesExplorerArrows = config.hidesExplorerArrows; + const activeTheme = getEnabledFolderTheme(folderIcons, config.folders?.theme); if (!activeTheme) { - return {}; + return manifest; } - const enabledIcons = disableIconsByPack(activeTheme, options.activeIconPack); - const customIcons = getCustomIcons(options.folders?.associations); + const enabledIcons = disableIconsByPack(activeTheme, config.activeIconPack); + const customIcons = getCustomIcons(config.folders?.associations); const allIcons = [...enabledIcons, ...customIcons]; - if (options.folders?.theme === 'none') { - return config; + if (config.folders?.theme === 'none') { + return manifest; } allIcons.forEach((icon) => { if (icon.disabled) return; const folderNames = extendFolderNames(icon.folderNames); - config = setIconDefinitions(config, icon); - config = merge({}, config, setFolderNames(icon.name, folderNames)); - config.light = icon.light + manifest = setIconDefinitions(manifest, config, icon); + manifest = merge(manifest, setFolderNames(icon.name, folderNames)); + manifest.light = icon.light ? merge( - {}, - config.light, + manifest.light, setFolderNames(icon.name, folderNames, lightColorFileEnding) ) - : config.light; - config.highContrast = icon.highContrast + : manifest.light; + manifest.highContrast = icon.highContrast ? merge( - {}, - config.highContrast, + manifest.highContrast, setFolderNames(icon.name, folderNames, highContrastColorFileEnding) ) - : config.highContrast; + : manifest.highContrast; }); - config = setDefaultFolderIcons(activeTheme, config); - return config; + manifest = setDefaultFolderIcons(activeTheme, manifest, config); + return manifest; }; /** @@ -73,74 +66,68 @@ export const loadFolderIconDefinitions = ( */ const setDefaultFolderIcons = ( theme: FolderTheme, - config: IconConfiguration -): IconConfiguration => { - config = merge({}, config); + manifest: Manifest, + config: Config +): Manifest => { const hasFolderIcons = !!theme.defaultIcon.name && theme.defaultIcon.name.length > 0; if (hasFolderIcons) { - config = setIconDefinitions(config, theme.defaultIcon); + manifest = setIconDefinitions(manifest, config, theme.defaultIcon); } - config = merge( - {}, - config, + manifest = merge( + manifest, createDefaultIconConfigObject(hasFolderIcons, theme, '') ); - config.light = theme.defaultIcon.light + manifest.light = theme.defaultIcon.light ? merge( - {}, - config.light, + manifest.light, createDefaultIconConfigObject( hasFolderIcons, theme, lightColorFileEnding ) ) - : config.light; - config.highContrast = theme.defaultIcon.highContrast + : manifest.light; + manifest.highContrast = theme.defaultIcon.highContrast ? merge( - {}, - config.highContrast, + manifest.highContrast, createDefaultIconConfigObject( hasFolderIcons, theme, highContrastColorFileEnding ) ) - : config.highContrast; + : manifest.highContrast; - config = merge( - {}, - config, + manifest = merge( + manifest, createRootIconConfigObject(hasFolderIcons, theme, '') ); if (theme.rootFolder) { - config = setIconDefinitions(config, theme.rootFolder); - config.light = theme.rootFolder.light + manifest = setIconDefinitions(manifest, config, theme.rootFolder); + manifest.light = theme.rootFolder.light ? merge( - {}, - config.light, + manifest.light, createRootIconConfigObject( hasFolderIcons, theme, lightColorFileEnding ) ) - : config.light; - config.highContrast = theme.rootFolder.highContrast + : manifest.light; + manifest.highContrast = theme.rootFolder.highContrast ? merge( - {}, - config.highContrast, + manifest.highContrast, createRootIconConfigObject( hasFolderIcons, theme, highContrastColorFileEnding ) ) - : config.highContrast; + : manifest.highContrast; } - return config; + return manifest; }; /** @@ -158,7 +145,7 @@ const getEnabledFolderTheme = ( */ const disableIconsByPack = ( folderIcons: FolderTheme | undefined, - activatedIconPack: string | undefined + activatedIconPack: IconPackValue | undefined ): FolderIcon[] => { if (!folderIcons?.icons || folderIcons.icons.length === 0) { return []; @@ -171,25 +158,30 @@ const disableIconsByPack = ( }; const setIconDefinitions = ( - config: IconConfiguration, + manifest: Manifest, + config: Config, icon: FolderIcon | DefaultIcon ) => { const isClone = (icon as FolderIcon).clone !== undefined; - config = merge({}, config); - config = createIconDefinitions(config, icon.name, '', isClone); + manifest = createIconDefinitions(manifest, config, icon.name, '', isClone); if (icon.light) { - config = merge( - {}, - config, - createIconDefinitions(config, icon.name, lightColorFileEnding, isClone) + manifest = merge( + manifest, + createIconDefinitions( + manifest, + config, + icon.name, + lightColorFileEnding, + isClone + ) ); } if (icon.highContrast) { - config = merge( - {}, - config, + manifest = merge( + manifest, createIconDefinitions( + manifest, config, icon.name, highContrastColorFileEnding, @@ -197,18 +189,18 @@ const setIconDefinitions = ( ) ); } - return config; + return manifest; }; const createIconDefinitions = ( - config: IconConfiguration, + manifest: Manifest, + config: Config, iconName: string, appendix: string = '', isClone = false ) => { - config = merge({}, config); - const fileConfigHash = getFileConfigHash(config.options ?? {}); - const configIconDefinitions = config.iconDefinitions; + const fileConfigHash = getFileConfigHash(config); + const configIconDefinitions = manifest.iconDefinitions; const ext = isClone ? cloneIconExtension : '.svg'; const key = `${iconName}${appendix}`; const openedKey = `${iconName}${openedFolder}${appendix}`; @@ -226,7 +218,7 @@ const createIconDefinitions = ( }; } } - return config; + return manifest; }; const extendFolderNames = (folderNames: string[]) => { @@ -250,16 +242,16 @@ const setFolderNames = ( folderNames: string[], appendix: string = '' ) => { - const obj: Partial = { + const obj: Partial = { folderNames: {}, folderNamesExpanded: {}, }; folderNames.forEach((name) => { if (obj.folderNames) { - obj.folderNames[name as keyof IconConfiguration] = iconName + appendix; + obj.folderNames[name as keyof Manifest] = iconName + appendix; } if (obj.folderNamesExpanded) { - obj.folderNamesExpanded[name as keyof IconConfiguration] = + obj.folderNamesExpanded[name as keyof Manifest] = `${iconName}${openedFolder}${appendix}`; } }); @@ -319,9 +311,13 @@ const getCustomIcons = (folderAssociations: IconAssociations | undefined) => { return icons; }; -export const generateFolderIcons = (color: string | undefined) => { +export const generateFolderIcons = async ( + color: string, + opacity: number, + saturation: number +) => { if (!color || !validateHEXColorCode(color)) { - return console.error('Invalid color code for folder icons'); + return logger.error('Invalid color code for folder icons'); } const folderIcon = @@ -333,38 +329,28 @@ export const generateFolderIcons = (color: string | undefined) => { const rootFolderIconOpen = 'M16,5A11,11,0,1,1,5,16,11.01245,11.01245,0,0,1,16,5m0-3A14,14,0,1,0,30,16,14,14,0,0,0,16,2Z'; - writeSVGFiles('folder', getSVG(getPath(folderIcon, color))); - writeSVGFiles('folder-open', getSVG(getPath(folderIconOpen, color))); - writeSVGFiles('folder-root', getSVG(getPath(rootFolderIcon, color))); - writeSVGFiles('folder-root-open', getSVG(getPath(rootFolderIconOpen, color))); -}; - -export const getPath = (d: string, color: string) => - ``; -export const getSVG = (path: string, viewBoxSize = 32) => - `${path}`; - -export const writeSVGFiles = (iconName: string, svg: string) => { - let iconsPath; - if (basename(__dirname) === 'dist') { - iconsPath = join(__dirname, '..', 'icons'); - } else { - // executed via script - iconsPath = join(__dirname, '..', '..', '..', 'icons'); - } - const iconsFolderPath = join(iconsPath, `${iconName}.svg`); - try { - writeFileSync(iconsFolderPath, svg); - } catch (error) { - console.error(error); - } -}; - -/** - * Validate the HEX color code - * @param color HEX code - */ -export const validateHEXColorCode = (color: string = '') => { - const hexPattern = new RegExp(/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/); - return color.length > 0 && hexPattern.test(color); + await writeSVGFiles( + 'folder', + getSVG(getPath(folderIcon, color)), + opacity, + saturation + ); + await writeSVGFiles( + 'folder-open', + getSVG(getPath(folderIconOpen, color)), + opacity, + saturation + ); + await writeSVGFiles( + 'folder-root', + getSVG(getPath(rootFolderIcon, color)), + opacity, + saturation + ); + await writeSVGFiles( + 'folder-root-open', + getSVG(getPath(rootFolderIconOpen, color)), + opacity, + saturation + ); }; diff --git a/src/core/generator/generateManifest.ts b/src/core/generator/generateManifest.ts new file mode 100644 index 0000000000..685d2a3187 --- /dev/null +++ b/src/core/generator/generateManifest.ts @@ -0,0 +1,42 @@ +import { merge } from '../helpers/object'; +import { fileIcons } from '../icons/fileIcons'; +import { folderIcons } from '../icons/folderIcons'; +import { languageIcons } from '../icons/languageIcons'; +import { + type Manifest, + type ManifestConfig, + createEmptyManifest, +} from '../models/manifest'; +import { padWithDefaultConfig } from './config/defaultConfig'; +import { loadFileIconDefinitions } from './fileGenerator'; +import { loadFolderIconDefinitions } from './folderGenerator'; +import { loadLanguageIconDefinitions } from './languageGenerator'; + +/** + * Generate the manifest that will be written as JSON file. + */ +export const generateManifest = (config?: ManifestConfig): Manifest => { + const refinedConfig = padWithDefaultConfig(config); + const manifest = createEmptyManifest(); + const languageIconDefinitions = loadLanguageIconDefinitions( + languageIcons, + refinedConfig, + manifest + ); + const fileIconDefinitions = loadFileIconDefinitions( + fileIcons, + refinedConfig, + manifest + ); + const folderIconDefinitions = loadFolderIconDefinitions( + folderIcons, + refinedConfig, + manifest + ); + + return merge( + languageIconDefinitions, + fileIconDefinitions, + folderIconDefinitions + ); +}; diff --git a/src/core/generator/iconOpacity.ts b/src/core/generator/iconOpacity.ts new file mode 100644 index 0000000000..0e41a20373 --- /dev/null +++ b/src/core/generator/iconOpacity.ts @@ -0,0 +1,118 @@ +import { lstat, readFile, readdir } from 'node:fs/promises'; +import { join } from 'node:path'; +import { getCustomIconPaths } from '../helpers/customIconPaths'; +import { resolvePath } from '../helpers/resolvePath'; +import { writeToFile } from '../helpers/writeFile'; +import { logger } from '../logging/logger'; +import { iconFolderPath } from './constants'; + +/** + * Changes the opacity of all icons in the set. + * @param config Icon JSON options which include the opacity value. + */ +export const setIconOpacity = async ( + opacity: number, + filesAssociations: Record +) => { + if (!validateOpacityValue(opacity)) { + return logger.error( + 'Invalid opacity value! Opacity must be a decimal number between 0 and 1!' + ); + } + + logger.info(`Setting opacity to ${opacity}...`); + + const iconsPath = resolvePath(iconFolderPath); + const customIconPaths = getCustomIconPaths(filesAssociations); + const iconFiles = await readdir(iconsPath); + + try { + // read all icon files from the icons folder + for (const iconFileName of iconFiles) { + await processSVGFile(iconsPath, iconFileName, opacity); + } + + for (const iconPath of customIconPaths) { + const customIcons = await readdir(iconPath); + for (const iconFileName of customIcons) { + await processSVGFile(iconPath, iconFileName, opacity); + } + } + } catch (error) { + logger.error(error); + } +}; + +/** + * Validate the opacity value. + * @param opacity Opacity value + */ +export const validateOpacityValue = (opacity: number | undefined) => { + return opacity !== undefined && opacity <= 1 && opacity >= 0; +}; + +/** + * Get the SVG root element. + * @param svg SVG file as string. + */ +const getSVGRootElement = (svg: string) => { + const result = new RegExp(/]*>/).exec(svg); + return result?.[0]; +}; + +/** + * Add an opacity attribute to the SVG icon to control the opacity of the icon. + * @param svgRoot Root element of the SVG icon. + * @param opacity Opacity value. + */ +const addOpacityAttribute = (svgRoot: string, opacity: number) => { + const pattern = new RegExp(/\sopacity="[\d.]+"/); + // if the opacity attribute already exists + if (pattern.test(svgRoot)) { + return svgRoot.replace(pattern, ` opacity="${opacity}"`); + } else { + return svgRoot.replace(/^ { + const pattern = new RegExp(/\sopacity="[\d.]+"/); + return svgRoot.replace(pattern, ''); +}; + +/** Function to add or remove opacity from a given SVG string */ +export const updateSVGOpacity = (svg: string, opacity: number): string => { + const svgRootElement = getSVGRootElement(svg); + if (!svgRootElement) return svg; + + let updatedRootElement: string; + if (opacity < 1) { + updatedRootElement = addOpacityAttribute(svgRootElement, opacity); + } else { + updatedRootElement = removeOpacityAttribute(svgRootElement); + } + return svg.replace(/]*>/, updatedRootElement); +}; + +/** Function to read an SVG file, update its opacity, and write it back */ +const processSVGFile = async ( + iconPath: string, + iconFileName: string, + opacity: number +): Promise => { + const svgFilePath = join(iconPath, iconFileName); + if (!(await lstat(svgFilePath)).isFile()) { + return; + } + + // Read SVG file + const svg = await readFile(svgFilePath, 'utf-8'); + const updatedSVG = updateSVGOpacity(svg, opacity); + + if (updatedSVG.trim().length === 0) return; + await writeToFile(svgFilePath, updatedSVG); +}; diff --git a/src/core/generator/iconSaturation.ts b/src/core/generator/iconSaturation.ts new file mode 100644 index 0000000000..15899c1e28 --- /dev/null +++ b/src/core/generator/iconSaturation.ts @@ -0,0 +1,152 @@ +import { lstat, readFile, readdir } from 'node:fs/promises'; +import { join } from 'node:path'; +import { getCustomIconPaths } from '../helpers/customIconPaths'; +import { resolvePath } from '../helpers/resolvePath'; +import { writeToFile } from '../helpers/writeFile'; +import { logger } from '../logging/logger'; +import { iconFolderPath } from './constants'; + +/** + * Changes saturation of all icons in the set. + * @param config Icon JSON options which include the saturation value. + * @param fileNames Only change the saturation of certain file names. + */ +export const setIconSaturation = async ( + saturation: number, + filesAssociations: Record +) => { + if (!validateSaturationValue(saturation)) { + return logger.error( + 'Invalid saturation value! Saturation must be a decimal number between 0 and 1!' + ); + } + + logger.info(`Setting saturation to ${saturation}...`); + + const iconsPath = resolvePath(iconFolderPath); + const customIconPaths = getCustomIconPaths(filesAssociations); + const iconFiles = await readdir(iconsPath); + + // read all icon files from the icons folder + try { + for (const iconFileName of iconFiles) { + await processSVGFileForSaturation(iconsPath, iconFileName, saturation); + } + + for (const iconPath of customIconPaths) { + const customIcons = await readdir(iconPath); + for (const iconFileName of customIcons) { + await processSVGFileForSaturation(iconPath, iconFileName, saturation); + } + } + } catch (error) { + logger.error(error); + } +}; + +/** + * Get the SVG root element. + * @param svg SVG file as string. + */ +const getSVGRootElement = (svg: string) => { + const result = new RegExp(/]*>/).exec(svg); + return result?.[0]; +}; + +/** + * Add an filter attribute to the SVG icon. + * @param svgRoot Root element of the SVG icon. + */ +const addFilterAttribute = (svgRoot: string) => { + const pattern = new RegExp(/\sfilter="[^"]+?"/); + // if the filter attribute already exists + if (pattern.test(svgRoot)) { + return svgRoot.replace(pattern, ' filter="url(#saturation)"'); + } else { + return svgRoot.replace(/^ { + const pattern = new RegExp(/\sfilter="[^"]+?"/); + return svgRoot.replace(pattern, ''); +}; + +/** + * Add filter element to the SVG icon. + * @param svg SVG file as string. + */ +const addFilterElement = (svg: string, saturation: number) => { + const pattern = new RegExp(/(.*<\/svg>)/); + const filterElement = ``; + if (pattern.test(svg)) { + return svg.replace(pattern, `${filterElement}$1`); + } else { + return svg.replace(/<\/svg>/, `${filterElement}`); + } +}; + +/** + * Remove filter element from the SVG icon. + * @param svg SVG file as string. + */ +const removeFilterElement = (svg: string) => { + const pattern = new RegExp(/(.*<\/svg>)/); + return svg.replace(pattern, '$1'); +}; + +/** + * Validate the saturation value. + * @param saturation Saturation value + */ +export const validateSaturationValue = (saturation: number | undefined) => { + return saturation !== undefined && saturation <= 1 && saturation >= 0; +}; + +/** Function to adjust the saturation of a given SVG string */ +export const adjustSVGSaturation = ( + svg: string, + saturation: number +): string => { + // Get the root element of the SVG + const svgRootElement = getSVGRootElement(svg); + if (!svgRootElement) return svg; + + let updatedRootElement: string; + + if (saturation < 1) { + updatedRootElement = addFilterAttribute(svgRootElement); + } else { + updatedRootElement = removeFilterAttribute(svgRootElement); + } + + let updatedSVG = svg.replace(/]*>/, updatedRootElement); + + if (saturation < 1) { + updatedSVG = addFilterElement(updatedSVG, saturation); + } else { + updatedSVG = removeFilterElement(updatedSVG); + } + + return updatedSVG; +}; + +/** Function to read an SVG file, adjust its saturation, and write it back */ +const processSVGFileForSaturation = async ( + iconPath: string, + iconFileName: string, + saturation: number +): Promise => { + const svgFilePath = join(iconPath, iconFileName); + if (!(await lstat(svgFilePath)).isFile()) return; + + // Read SVG file + const svg = await readFile(svgFilePath, 'utf-8'); + const updatedSVG = adjustSVGSaturation(svg, saturation); + + await writeToFile(svgFilePath, updatedSVG); +}; diff --git a/src/core/generator/languageGenerator.ts b/src/core/generator/languageGenerator.ts new file mode 100644 index 0000000000..42b83e103f --- /dev/null +++ b/src/core/generator/languageGenerator.ts @@ -0,0 +1,124 @@ +import { getFileConfigHash } from '../helpers/configHash'; +import { merge } from '../helpers/object'; +import type { Config, IconAssociations } from '../models/icons/config'; +import type { DefaultIcon } from '../models/icons/defaultIcon'; +import type { IconPackValue } from '../models/icons/iconPack'; +import type { LanguageIcon } from '../models/icons/languages/languageIdentifier'; +import type { Manifest } from '../models/manifest'; +import { + highContrastColorFileEnding, + iconFolderPath, + lightColorFileEnding, +} from './constants'; + +/** + * Get all file icons that can be used in this theme. + */ +export const loadLanguageIconDefinitions = ( + languageIcons: LanguageIcon[], + config: Config, + manifest: Manifest +): Manifest => { + const enabledLanguages = disableLanguagesByPack( + languageIcons, + config.activeIconPack + ); + const customIcons = getCustomIcons(config.languages?.associations); + const allLanguageIcons = [...enabledLanguages, ...customIcons]; + + allLanguageIcons.forEach((lang) => { + if (lang.disabled) return; + manifest = setIconDefinitions(manifest, config, lang.icon); + manifest = merge( + manifest, + setLanguageIdentifiers(lang.icon.name, lang.ids) + ); + manifest.light = lang.icon.light + ? merge( + manifest.light, + setLanguageIdentifiers( + lang.icon.name + lightColorFileEnding, + lang.ids + ) + ) + : manifest.light; + manifest.highContrast = lang.icon.highContrast + ? merge( + manifest.highContrast, + setLanguageIdentifiers( + lang.icon.name + highContrastColorFileEnding, + lang.ids + ) + ) + : manifest.highContrast; + }); + + return manifest; +}; + +const setIconDefinitions = ( + manifest: Manifest, + config: Config, + icon: DefaultIcon +) => { + createIconDefinitions(manifest, config, icon.name); + + if (icon.light) { + createIconDefinitions(manifest, config, icon.name + lightColorFileEnding); + } + if (icon.highContrast) { + createIconDefinitions( + manifest, + config, + icon.name + highContrastColorFileEnding + ); + } + + return manifest; +}; + +const createIconDefinitions = ( + manifest: Manifest, + config: Config, + iconName: string +) => { + const fileConfigHash = getFileConfigHash(config); + if (manifest.iconDefinitions) { + manifest.iconDefinitions[iconName] = { + iconPath: `${iconFolderPath}${iconName}${fileConfigHash}.svg`, + }; + } +}; + +const setLanguageIdentifiers = (iconName: string, languageIds: string[]) => { + const obj: Partial = { languageIds: {} }; + languageIds.forEach((id) => { + obj.languageIds![id as keyof Manifest] = iconName; + }); + return obj; +}; + +const getCustomIcons = (languageAssociations: IconAssociations | undefined) => { + if (!languageAssociations) return []; + + const icons: LanguageIcon[] = Object.keys(languageAssociations).map((fa) => ({ + icon: { name: languageAssociations[fa].toLowerCase() }, + ids: [fa.toLowerCase()], + })); + + return icons; +}; + +/** + * Disable all file icons that are in a pack which is disabled. + */ +const disableLanguagesByPack = ( + languageIcons: LanguageIcon[], + activatedIconPack: IconPackValue | undefined +) => { + return languageIcons.filter((language) => { + return !language.enabledFor + ? true + : language.enabledFor.some((p) => p === activatedIconPack); + }); +}; diff --git a/src/core/generator/renameIconFiles.ts b/src/core/generator/renameIconFiles.ts new file mode 100644 index 0000000000..6fd01f5a77 --- /dev/null +++ b/src/core/generator/renameIconFiles.ts @@ -0,0 +1,54 @@ +import { existsSync, readdirSync, renameSync, unlinkSync } from 'node:fs'; +import { join } from 'node:path'; +import { getFileConfigHash } from '../helpers/configHash'; +import { getCustomIconPaths } from '../helpers/customIconPaths'; +import { resolvePath } from '../helpers/resolvePath'; +import { logger } from '../logging/logger'; +import type { Config } from '../models/icons/config'; +import { iconFolderPath } from './constants'; + +/** + * Rename all icon files according their respective config. + * + * The rename triggers a change event in VS Code, which will update the icons in the UI. + * @param config Icon Json Options + */ +export const renameIconFiles = (config: Config) => { + const defaultIconPath = resolvePath(iconFolderPath); + const customPaths = getCustomIconPaths(config.files.associations); + const iconPaths = [defaultIconPath, ...customPaths]; + const fileConfigHash = getFileConfigHash(config); + + for (const iconPath of iconPaths) { + const files = readdirSync(iconPath).filter((f) => f.match(/\.svg/gi)); + + for (const f of files) { + const filePath = join(iconPath, f); + + // append file config to file name + const newFilePath = join( + iconPath, + f.replace(/(^[^\.~]+).*?(\.clone\.svg|\.svg)/, `$1${fileConfigHash}$2`) + ); + + try { + // if generated files are already in place, do not overwrite them + if (filePath !== newFilePath) { + if (existsSync(newFilePath)) { + if (existsSync(filePath)) { + logger.debug(`Deleting existing file: ${filePath}`); + unlinkSync(filePath); + } + } else { + if (existsSync(filePath)) { + logger.debug(`Renaming file: ${filePath} to ${newFilePath}`); + renameSync(filePath, newFilePath); + } + } + } + } catch (error) { + logger.error(error); + } + } + } +}; diff --git a/src/core/generator/shared/svg.ts b/src/core/generator/shared/svg.ts new file mode 100644 index 0000000000..5f4d1eea72 --- /dev/null +++ b/src/core/generator/shared/svg.ts @@ -0,0 +1,32 @@ +import { join } from 'node:path'; +import { resolvePath } from '../../helpers/resolvePath'; +import { writeToFile } from '../../helpers/writeFile'; +import { logger } from '../../logging/logger'; +import { iconFolderPath } from '../constants'; +import { updateSVGOpacity } from '../iconOpacity'; +import { adjustSVGSaturation } from '../iconSaturation'; + +export const writeSVGFiles = async ( + iconName: string, + svg: string, + opacity: number, + saturation: number +) => { + // Update the opacity and saturation of the SVG + const updatedOpacity = updateSVGOpacity(svg, opacity); + const updatedSaturation = adjustSVGSaturation(updatedOpacity, saturation); + + const iconsPath = resolvePath(iconFolderPath); + const iconsFolderPath = join(iconsPath, `${iconName}.svg`); + try { + await writeToFile(iconsFolderPath, updatedSaturation); + } catch (error) { + logger.error(error); + } +}; + +export const getPath = (d: string, color: string) => + ``; + +export const getSVG = (path: string, viewBoxSize = 32) => + `${path}`; diff --git a/src/core/generator/shared/validation.ts b/src/core/generator/shared/validation.ts new file mode 100644 index 0000000000..d7bfb9c6a7 --- /dev/null +++ b/src/core/generator/shared/validation.ts @@ -0,0 +1,8 @@ +/** + * Validate the HEX color code + * @param color HEX code + */ +export const validateHEXColorCode = (color: string = '') => { + const hexPattern = new RegExp(/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/); + return color.length > 0 && hexPattern.test(color); +}; diff --git a/src/core/helpers/configHash.ts b/src/core/helpers/configHash.ts new file mode 100644 index 0000000000..c1fa4eee90 --- /dev/null +++ b/src/core/helpers/configHash.ts @@ -0,0 +1,51 @@ +import { getDefaultConfig } from '../generator/config/defaultConfig'; +import { logger } from '../logging/logger'; +import type { Config } from '../models/icons/config'; + +/** + * Generate a config hashed string that is appended to each icon file name. + * @param config Icon Configuration object + */ +export const getFileConfigHash = (config: Partial): string => { + try { + const defaults = getDefaultConfig(); + let fileConfigString = ''; + if ( + config.saturation !== defaults.saturation || + config.opacity !== defaults.opacity || + config.folders?.color !== defaults.folders.color || + config.files?.color !== defaults.files.color || + (config.files?.customClones?.length ?? 0) > 0 || + (config.folders?.customClones?.length ?? 0) > 0 + ) { + // Any changes that are hashed will trigger a refresh of the icon in the VS Code UI + fileConfigString += `~${getHash( + JSON.stringify({ + saturation: config.saturation, + opacity: config.opacity, + foldersColor: config.folders?.color, + filesColor: config.files?.color, + fileClones: config.files?.customClones, + folderClones: config.folders?.customClones, + }) + )}`; + } + return fileConfigString; + } catch (error) { + logger.error(error); + return ''; + } +}; + +const getHash = (value: string) => { + let hash = 0; + let chr = 0; + + if (value.length === 0) return hash; + for (let i = 0; i < value.length; i++) { + chr = value.charCodeAt(i); + hash = (hash << 5) - hash + chr; + hash |= 0; // Convert to 32bit integer + } + return hash; +}; diff --git a/src/core/helpers/customIconPaths.ts b/src/core/helpers/customIconPaths.ts new file mode 100644 index 0000000000..f6afb16c76 --- /dev/null +++ b/src/core/helpers/customIconPaths.ts @@ -0,0 +1,10 @@ +import { dirname } from 'node:path'; +import { resolvePath } from './resolvePath'; + +export const getCustomIconPaths = ( + filesAssociations: Record = {} +) => { + return Object.values(filesAssociations) + .filter((fileName) => fileName.match(/^[.\/]+/)) // <- custom dirs have a relative path to the dist folder + .map((fileName) => dirname(resolvePath(fileName))); +}; diff --git a/src/core/helpers/iconPacks.ts b/src/core/helpers/iconPacks.ts new file mode 100644 index 0000000000..f84ff94921 --- /dev/null +++ b/src/core/helpers/iconPacks.ts @@ -0,0 +1,4 @@ +import { IconPack, type IconPackValue } from '../models/icons/iconPack'; + +/** Get all packs that can be used in this icon theme. */ +export const availableIconPacks: IconPackValue[] = Object.values(IconPack); diff --git a/src/core/helpers/object.ts b/src/core/helpers/object.ts new file mode 100644 index 0000000000..adff1d3701 --- /dev/null +++ b/src/core/helpers/object.ts @@ -0,0 +1,108 @@ +/** + * Get the nested properties of an object. + * This solution is lighter than the lodash get-version. + * Source: http://stackoverflow.com/a/6491621/6942210 + */ +export const get = (obj: Object, path: string): T | undefined => { + const pathArray = path + .replace(/\[(\w+)\]/g, '.$1') // convert indexes to properties + .replace(/^\./, '') // strip a leading dot + .split('.'); // separate paths in array + + /** Avoid errors in the getValue function. */ + const isObject = (object: unknown) => { + return object === Object(object); + }; + let result = structuredClone(obj); + + for (let i = 0; i < pathArray.length; ++i) { + const k = pathArray[i]; + if (isObject(result) && k in result) { + result = (result as Record)[k] as Object; + } else { + return; + } + } + return result as T; +}; + +/** + * Set a value for a nested object property. + * @param obj Object + * @param path Properties as string e.g. `'a.b.c'` + * @param value Value to be set for the given property + * Source: https://stackoverflow.com/a/13719799/6942210 + */ +export const set = ( + // biome-ignore lint/suspicious/noExplicitAny: Multiple unknown types due to recursive function + obj: { [key: string]: any }, + path: string | string[], + value: unknown +) => { + if (typeof path === 'string') { + path = path.split('.'); + } + + if (path.length > 1) { + const e = path.shift() ?? ''; + set( + (obj[e] = + Object.prototype.toString.call(obj[e]) === '[object Object]' + ? obj[e] + : {}), + path, + value + ); + } else { + obj[path[0]] = value; + } +}; + +/** + * Merges given objects recursively. + * + * @param objects Provide the objects that should be merged. + * @returns A new object that is the result of the merge. + */ +export const merge = >( + ...objects: (T | undefined | null)[] +): T => { + return objects.reduce((acc, obj) => { + Object.keys(obj ?? {}).forEach((key) => { + const accValue = (acc as Record)[key]; + const objValue = obj?.[key]; + + // Check if one of the values is null or undefined and the other is not + if ( + (accValue === undefined || accValue === null) && + objValue !== undefined && + objValue !== null + ) { + (acc as Record)[key] = objValue; + } else if ( + (objValue === undefined || objValue === null) && + accValue !== undefined && + accValue !== null + ) { + // No need to assign acc[key] to itself + } else if (Array.isArray(objValue) && Array.isArray(accValue)) { + (acc as Record)[key] = [ + ...new Set(accValue.concat(objValue)), + ]; + } else if ( + typeof objValue === 'object' && + objValue !== null && + typeof accValue === 'object' && + accValue !== null + ) { + (acc as Record)[key] = merge( + accValue as Record, + objValue as Record + ); + } else { + (acc as Record)[key] = objValue; + } + }); + return acc; + }, {} as T); +}; diff --git a/src/core/helpers/resolvePath.ts b/src/core/helpers/resolvePath.ts new file mode 100644 index 0000000000..1dbae2a9f2 --- /dev/null +++ b/src/core/helpers/resolvePath.ts @@ -0,0 +1,5 @@ +import { join } from 'node:path'; + +export const resolvePath = (path: string): string => { + return join(__dirname, '..', '..', path); +}; diff --git a/src/core/helpers/titlecase.ts b/src/core/helpers/titlecase.ts new file mode 100644 index 0000000000..2757a705c0 --- /dev/null +++ b/src/core/helpers/titlecase.ts @@ -0,0 +1,11 @@ +/** Capitalize the first letter of a string */ +export const capitalizeFirstLetter = (name: string): string => + name.charAt(0).toUpperCase() + name.slice(1); + +/** TitleCase all words in a string */ +export const toTitleCase = (value: string) => { + return value.replace( + /\w\S*/g, + (text) => text.charAt(0).toUpperCase() + text.substring(1).toLowerCase() + ); +}; diff --git a/src/core/helpers/writeFile.ts b/src/core/helpers/writeFile.ts new file mode 100644 index 0000000000..87f01f2cfe --- /dev/null +++ b/src/core/helpers/writeFile.ts @@ -0,0 +1,21 @@ +import { writeFile } from 'node:fs/promises'; +import { logger } from '../logging/logger'; + +/** + * Write content to a file. + * + * @param filePath File path to write to + * @param data Content to write to the file + */ +export const writeToFile = async ( + filePath: string, + data: string, + encoding?: BufferEncoding +) => { + if (!filePath || !data || data.trim().length === 0) { + logger.error('Invalid file path or data to write! File path: ' + filePath); + return; + } + logger.debug('Writing to file: ' + filePath); + await writeFile(filePath, data, encoding); +}; diff --git a/src/i18n/index.ts b/src/core/i18n/translate.ts similarity index 61% rename from src/i18n/index.ts rename to src/core/i18n/translate.ts index 7e58f08968..de35efe398 100644 --- a/src/i18n/index.ts +++ b/src/core/i18n/translate.ts @@ -1,24 +1,22 @@ -import { env } from 'vscode'; -import { getObjectPropertyValue } from '../helpers/objects'; -import type { Translation } from '../models'; -import { translation as langCs } from './lang-cs'; -import { translation as langDe } from './lang-de'; -import { translation as langEn } from './lang-en'; -import { translation as langEs } from './lang-es'; -import { translation as langFr } from './lang-fr'; -import { translation as langJa } from './lang-ja'; -import { translation as langKo } from './lang-ko'; -import { translation as langNl } from './lang-nl'; -import { translation as langPl } from './lang-pl'; -import { translation as langPtBr } from './lang-pt-br'; -import { translation as langPtPt } from './lang-pt-pt'; -import { translation as langRu } from './lang-ru'; -import { translation as langUk } from './lang-uk'; -import { translation as langZhCn } from './lang-zh-cn'; -import { translation as langZhTw } from './lang-zh-tw'; - -// Get current language of the vs code workspace -export const getCurrentLanguage = (): string => env.language; +import { get } from '../helpers/object'; +import { logger } from '../logging/logger'; +import type { Translation } from '../models/i18n/translation'; +import { translation as langCs } from './translations/lang-cs'; +import { translation as langDe } from './translations/lang-de'; +import { translation as langEn } from './translations/lang-en'; +import { translation as langEs } from './translations/lang-es'; +import { translation as langFr } from './translations/lang-fr'; +import { translation as langId } from './translations/lang-id'; +import { translation as langJa } from './translations/lang-ja'; +import { translation as langKo } from './translations/lang-ko'; +import { translation as langNl } from './translations/lang-nl'; +import { translation as langPl } from './translations/lang-pl'; +import { translation as langPtBr } from './translations/lang-pt-br'; +import { translation as langPtPt } from './translations/lang-pt-pt'; +import { translation as langRu } from './translations/lang-ru'; +import { translation as langUk } from './translations/lang-uk'; +import { translation as langZhCn } from './translations/lang-zh-cn'; +import { translation as langZhTw } from './translations/lang-zh-tw'; let currentTranslation: Translation; let fallbackTranslation: Translation; @@ -26,12 +24,13 @@ let fallbackTranslation: Translation; const placeholder = '%'; /** Initialize the translations */ -export const initTranslations = async () => { +export const initTranslations = async (language: string) => { try { - currentTranslation = await loadTranslation(getCurrentLanguage()); + currentTranslation = await loadTranslation(language); fallbackTranslation = await loadTranslation('en'); + logger.info('Translations initialized.'); } catch (error) { - console.error(error); + logger.error(error); } }; @@ -39,7 +38,7 @@ export const initTranslations = async () => { const loadTranslation = async (language: string) => { try { return await getTranslationObject(language); - } catch (error) { + } catch { return await getTranslationObject('en'); } }; @@ -57,6 +56,8 @@ const getTranslationObject = async (language: string): Promise => { return langEs; case 'fr': return langFr; + case 'id': + return langId; case 'ja': return langJa; case 'ko': @@ -93,10 +94,7 @@ export const getTranslationValue = ( translations = currentTranslation, fallback = fallbackTranslation ): string | undefined => { - return ( - getObjectPropertyValue(translations, key) ?? - getObjectPropertyValue(fallback, key) - ); + return get(translations, key) ?? get(fallback, key); }; /** diff --git a/src/i18n/lang-cs.ts b/src/core/i18n/translations/lang-cs.ts similarity index 95% rename from src/i18n/lang-cs.ts rename to src/core/i18n/translations/lang-cs.ts index 1cec92282c..ce259019ed 100644 --- a/src/i18n/lang-cs.ts +++ b/src/core/i18n/translations/lang-cs.ts @@ -1,4 +1,4 @@ -import { type Translation } from '../models'; +import type { Translation } from '../../models/i18n/translation'; export const translation: Translation = { activate: 'Aktivovat', diff --git a/src/i18n/lang-de.ts b/src/core/i18n/translations/lang-de.ts similarity index 94% rename from src/i18n/lang-de.ts rename to src/core/i18n/translations/lang-de.ts index f626acf021..fdef538a65 100644 --- a/src/i18n/lang-de.ts +++ b/src/core/i18n/translations/lang-de.ts @@ -1,4 +1,4 @@ -import { type Translation } from '../models'; +import type { Translation } from '../../models/i18n/translation'; export const translation: Translation = { activate: 'Aktivieren', diff --git a/src/i18n/lang-en.ts b/src/core/i18n/translations/lang-en.ts similarity index 94% rename from src/i18n/lang-en.ts rename to src/core/i18n/translations/lang-en.ts index 24bd3a638a..98567d81a4 100644 --- a/src/i18n/lang-en.ts +++ b/src/core/i18n/translations/lang-en.ts @@ -1,4 +1,4 @@ -import { type Translation } from '../models'; +import type { Translation } from '../../models/i18n/translation'; export const translation: Translation = { activate: 'Activate', diff --git a/src/i18n/lang-es.ts b/src/core/i18n/translations/lang-es.ts similarity index 95% rename from src/i18n/lang-es.ts rename to src/core/i18n/translations/lang-es.ts index 68fd1a8178..e27277f59f 100644 --- a/src/i18n/lang-es.ts +++ b/src/core/i18n/translations/lang-es.ts @@ -1,4 +1,4 @@ -import { type Translation } from '../models'; +import type { Translation } from '../../models/i18n/translation'; export const translation: Translation = { activate: 'Activar', diff --git a/src/i18n/lang-fr.ts b/src/core/i18n/translations/lang-fr.ts similarity index 95% rename from src/i18n/lang-fr.ts rename to src/core/i18n/translations/lang-fr.ts index 7c2b03f39e..b3c47480dc 100644 --- a/src/i18n/lang-fr.ts +++ b/src/core/i18n/translations/lang-fr.ts @@ -1,4 +1,4 @@ -import { type Translation } from '../models'; +import type { Translation } from '../../models/i18n/translation'; export const translation: Translation = { activate: 'Activer', diff --git a/src/core/i18n/translations/lang-id.ts b/src/core/i18n/translations/lang-id.ts new file mode 100644 index 0000000000..f411072e9f --- /dev/null +++ b/src/core/i18n/translations/lang-id.ts @@ -0,0 +1,45 @@ +import type { Translation } from '../../models/i18n/translation'; + +export const translation: Translation = { + activate: "Aktifkan", + activated: "Tema Ikon Material aktif.", + iconPacks: { + selectPack: "Pilih paket ikon", + description: "Pilih paket ikon '%0'", + disabled: "Nonaktifkan paket ikon" + }, + folders: { + toggleIcons: "Pilih tema folder", + disabled: "Tidak ada ikon folder", + theme: { + description: "Pilih tema folder '%0'" + } + }, + colorSelect: { + color: "Pilih warna", + hexCode: "Masukkan kode warna HEX", + wrongHexCode: "Kode warna HEX tidak valid!" + }, + opacity: { + inputPlaceholder: "Nilai opasitas (antara 0 dan 1)", + wrongValue: "Silakan masukkan angka desimal antara 0 dan 1." + }, + toggleSwitch: { + on: "AKTIF", + off: "NONAKTIF" + }, + explorerArrows: { + toggle: "Alihkan panah folder di Explorer", + enable: "Tampilkan panah folder di Explorer", + disable: "Sembunyikan panah folder di Explorer" + }, + grayscale: { + toggle: "Alihkan ikon grayscale", + enable: "Aktifkan ikon grayscale", + disable: "Nonaktifkan ikon grayscale" + }, + saturation: { + inputPlaceholder: "Nilai saturasi (antara 0 dan 1)", + wrongValue: "Silakan masukkan angka desimal antara 0 dan 1." + } +}; diff --git a/src/i18n/lang-ja.ts b/src/core/i18n/translations/lang-ja.ts similarity index 95% rename from src/i18n/lang-ja.ts rename to src/core/i18n/translations/lang-ja.ts index a353706a0e..e93f7d41fd 100644 --- a/src/i18n/lang-ja.ts +++ b/src/core/i18n/translations/lang-ja.ts @@ -1,4 +1,4 @@ -import { type Translation } from '../models'; +import type { Translation } from '../../models/i18n/translation'; export const translation: Translation = { activate: 'ๆœ‰ๅŠนๅŒ–', diff --git a/src/i18n/lang-ko.ts b/src/core/i18n/translations/lang-ko.ts similarity index 95% rename from src/i18n/lang-ko.ts rename to src/core/i18n/translations/lang-ko.ts index 2ade25abfb..ae46858310 100644 --- a/src/i18n/lang-ko.ts +++ b/src/core/i18n/translations/lang-ko.ts @@ -1,4 +1,4 @@ -import { type Translation } from '../models'; +import type { Translation } from '../../models/i18n/translation'; export const translation: Translation = { activate: 'ํ™œ์„ฑํ™”', diff --git a/src/i18n/lang-nl.ts b/src/core/i18n/translations/lang-nl.ts similarity index 94% rename from src/i18n/lang-nl.ts rename to src/core/i18n/translations/lang-nl.ts index 426c3a34eb..77fa55285c 100644 --- a/src/i18n/lang-nl.ts +++ b/src/core/i18n/translations/lang-nl.ts @@ -1,4 +1,4 @@ -import { type Translation } from '../models'; +import type { Translation } from '../../models/i18n/translation'; export const translation: Translation = { activate: 'Activeer', diff --git a/src/i18n/lang-pl.ts b/src/core/i18n/translations/lang-pl.ts similarity index 94% rename from src/i18n/lang-pl.ts rename to src/core/i18n/translations/lang-pl.ts index 07b962b658..d44fe024da 100644 --- a/src/i18n/lang-pl.ts +++ b/src/core/i18n/translations/lang-pl.ts @@ -1,4 +1,4 @@ -import { type Translation } from '../models'; +import type { Translation } from '../../models/i18n/translation'; export const translation: Translation = { activate: 'Aktywuj', diff --git a/src/i18n/lang-pt-br.ts b/src/core/i18n/translations/lang-pt-br.ts similarity index 95% rename from src/i18n/lang-pt-br.ts rename to src/core/i18n/translations/lang-pt-br.ts index 4019088c60..ecbbe3fcda 100644 --- a/src/i18n/lang-pt-br.ts +++ b/src/core/i18n/translations/lang-pt-br.ts @@ -1,4 +1,4 @@ -import { type Translation } from '../models'; +import type { Translation } from '../../models/i18n/translation'; export const translation: Translation = { activate: 'Ativar', diff --git a/src/i18n/lang-pt-pt.ts b/src/core/i18n/translations/lang-pt-pt.ts similarity index 95% rename from src/i18n/lang-pt-pt.ts rename to src/core/i18n/translations/lang-pt-pt.ts index 58c2afc29a..ba093f7c98 100644 --- a/src/i18n/lang-pt-pt.ts +++ b/src/core/i18n/translations/lang-pt-pt.ts @@ -1,4 +1,4 @@ -import { type Translation } from '../models'; +import type { Translation } from '../../models/i18n/translation'; export const translation: Translation = { activate: 'Habilitar', diff --git a/src/i18n/lang-ru.ts b/src/core/i18n/translations/lang-ru.ts similarity index 96% rename from src/i18n/lang-ru.ts rename to src/core/i18n/translations/lang-ru.ts index 2eebd7560f..f30c909112 100644 --- a/src/i18n/lang-ru.ts +++ b/src/core/i18n/translations/lang-ru.ts @@ -1,4 +1,4 @@ -import { type Translation } from '../models'; +import type { Translation } from '../../models/i18n/translation'; export const translation: Translation = { activate: 'ะะบั‚ะธะฒะธั€ะพะฒะฐั‚ัŒ', diff --git a/src/i18n/lang-uk.ts b/src/core/i18n/translations/lang-uk.ts similarity index 96% rename from src/i18n/lang-uk.ts rename to src/core/i18n/translations/lang-uk.ts index 4cfc8c82a0..982d509750 100644 --- a/src/i18n/lang-uk.ts +++ b/src/core/i18n/translations/lang-uk.ts @@ -1,4 +1,4 @@ -import { type Translation } from '../models'; +import type { Translation } from '../../models/i18n/translation'; export const translation: Translation = { activate: 'ะะบั‚ะธะฒัƒะฒะฐั‚ะธ', diff --git a/src/i18n/lang-zh-cn.ts b/src/core/i18n/translations/lang-zh-cn.ts similarity index 94% rename from src/i18n/lang-zh-cn.ts rename to src/core/i18n/translations/lang-zh-cn.ts index 653e5a6a5f..033a4612f2 100644 --- a/src/i18n/lang-zh-cn.ts +++ b/src/core/i18n/translations/lang-zh-cn.ts @@ -1,4 +1,4 @@ -import { type Translation } from '../models'; +import type { Translation } from '../../models/i18n/translation'; export const translation: Translation = { activate: 'ๆฟ€ๆดป', diff --git a/src/i18n/lang-zh-tw.ts b/src/core/i18n/translations/lang-zh-tw.ts similarity index 94% rename from src/i18n/lang-zh-tw.ts rename to src/core/i18n/translations/lang-zh-tw.ts index 815000f44d..2dd985d7b1 100644 --- a/src/i18n/lang-zh-tw.ts +++ b/src/core/i18n/translations/lang-zh-tw.ts @@ -1,4 +1,4 @@ -import { type Translation } from '../models'; +import type { Translation } from '../../models/i18n/translation'; export const translation: Translation = { activate: 'ๆฟ€ๆดป', diff --git a/src/icons/folderIcons.ts b/src/core/icons/folderIcons.ts similarity index 90% rename from src/icons/folderIcons.ts rename to src/core/icons/folderIcons.ts index e1285029bb..bd06bf155f 100644 --- a/src/icons/folderIcons.ts +++ b/src/core/icons/folderIcons.ts @@ -1,4 +1,5 @@ -import { type FolderTheme, IconPack } from '../models'; +import type { FolderTheme } from '../models/icons/folders/folderTheme'; +import { IconPack } from '../models/icons/iconPack'; /** * Defines folder icons @@ -19,7 +20,15 @@ export const folderIcons: FolderTheme[] = [ }, { name: 'folder-dist', - folderNames: ['dist', 'out', 'build', 'release', 'bin'], + folderNames: [ + 'dist', + 'out', + 'output', + 'build', + 'release', + 'bin', + 'distribution', + ], }, { name: 'folder-css', @@ -62,7 +71,7 @@ export const folderIcons: FolderTheme[] = [ name: 'folder-scripts', folderNames: ['script', 'scripts', 'scripting'], }, - { name: 'folder-node', folderNames: ['node_modules'] }, + { name: 'folder-node', folderNames: ['node', 'nodejs', 'node_modules'] }, { name: 'folder-javascript', folderNames: ['js', 'javascript', 'javascripts'], @@ -104,6 +113,7 @@ export const folderIcons: FolderTheme[] = [ folderNames: ['git', 'patches', 'githooks', 'submodules'], }, { name: 'folder-github', folderNames: ['github'] }, + { name: 'folder-gitea', folderNames: ['gitea'] }, { name: 'folder-gitlab', folderNames: ['gitlab'] }, { name: 'folder-vscode', folderNames: ['vscode', 'vscode-test'] }, { @@ -191,6 +201,7 @@ export const folderIcons: FolderTheme[] = [ 'vendor', 'vendors', 'third-party', + 'lib64', ], }, { @@ -221,11 +232,18 @@ export const folderIcons: FolderTheme[] = [ }, { name: 'folder-include', - folderNames: ['inc', 'include', 'includes', 'partial', 'partials'], + folderNames: [ + 'inc', + 'include', + 'includes', + 'partial', + 'partials', + 'inc64', + ], }, { name: 'folder-docker', - folderNames: ['docker', 'dockerfiles'], + folderNames: ['docker', 'dockerfiles', 'dockerhub'], }, { name: 'folder-ngrx-effects', @@ -287,6 +305,10 @@ export const folderIcons: FolderTheme[] = [ folderNames: ['components', 'react', 'jsx', 'reactjs'], enabledFor: [IconPack.React, IconPack.Redux], }, + { + name: 'folder-astro', + folderNames: ['astro'], + }, { name: 'folder-database', folderNames: ['db', 'data', 'database', 'databases', 'sql'], @@ -297,7 +319,7 @@ export const folderIcons: FolderTheme[] = [ name: 'folder-temp', folderNames: ['temp', 'tmp', 'cached', 'cache'], }, - { name: 'folder-aws', folderNames: ['aws'] }, + { name: 'folder-aws', folderNames: ['aws', 'azure', 'gcp']}, { name: 'folder-audio', folderNames: [ @@ -363,6 +385,7 @@ export const folderIcons: FolderTheme[] = [ ], }, { name: 'folder-lua', folderNames: ['lua'] }, + { name: 'folder-turborepo', folderNames: ['turbo'] }, { name: 'folder-typescript', folderNames: ['typescript', 'ts', 'typings', '@types', 'types'], @@ -458,6 +481,10 @@ export const folderIcons: FolderTheme[] = [ { name: 'folder-tasks', folderNames: ['tasks', 'tickets'] }, { name: 'folder-android', folderNames: ['android'] }, { name: 'folder-ios', folderNames: ['ios'] }, + { + name: 'folder-ui', + folderNames: ['presentation', 'gui', 'ui', 'ux'], + }, { name: 'folder-upload', folderNames: ['uploads', 'upload'] }, { name: 'folder-download', folderNames: ['downloads', 'download'] }, { @@ -469,6 +496,7 @@ export const folderIcons: FolderTheme[] = [ 'toolbox', 'toolboxes', 'tooling', + 'devtools', ], }, { name: 'folder-helper', folderNames: ['helpers', 'helper'] }, @@ -618,8 +646,11 @@ export const folderIcons: FolderTheme[] = [ { name: 'folder-supabase', folderNames: ['supabase'] }, { name: 'folder-private', folderNames: ['private'] }, { name: 'folder-linux', folderNames: ['linux', 'linuxbsd', 'unix'] }, - { name: 'folder-windows', folderNames: ['windows', 'win'] }, - { name: 'folder-macos', folderNames: ['macos', 'mac', 'DS_Store'] }, + { name: 'folder-windows', folderNames: ['windows', 'win', 'win32'] }, + { + name: 'folder-macos', + folderNames: ['macos', 'mac', 'osx', 'DS_Store'], + }, { name: 'folder-error', folderNames: ['error', 'errors', 'err', 'errs', 'crash', 'crashes'], @@ -682,7 +713,7 @@ export const folderIcons: FolderTheme[] = [ folderNames: ['anim', 'anims', 'animation', 'animations', 'animated'], }, { name: 'folder-guard', folderNames: ['guard', 'guards'] }, - { name: 'folder-prisma', folderNames: ['prisma'] }, + { name: 'folder-prisma', folderNames: ['prisma', 'prisma/schema'] }, { name: 'folder-pipe', folderNames: ['pipe', 'pipes'] }, { name: 'folder-svg', folderNames: ['svg', 'svgs'] }, { @@ -693,7 +724,6 @@ export const folderIcons: FolderTheme[] = [ { name: 'folder-nuxt', folderNames: ['nuxt'], - enabledFor: [IconPack.Vuex, IconPack.Vue], }, { name: 'folder-vue-directives', @@ -734,6 +764,10 @@ export const folderIcons: FolderTheme[] = [ 'moderators', ], }, + { + name: 'folder-jupyter', + folderNames: ['jupyter', 'notebook', 'notebooks', 'ipynb'], + }, { name: 'folder-scala', folderNames: ['scala'] }, { name: 'folder-connection', @@ -742,6 +776,8 @@ export const folderIcons: FolderTheme[] = [ 'connections', 'integration', 'integrations', + 'remote', + 'remotes', ], }, { name: 'folder-quasar', folderNames: ['quasar'] }, @@ -787,6 +823,10 @@ export const folderIcons: FolderTheme[] = [ 'contract-tests', ], }, + { + name: 'folder-helm', + folderNames: ['helm', 'helmchart', 'helmcharts'], + }, { name: 'folder-queue', folderNames: ['queue', 'queues', 'bull', 'mq'], @@ -851,6 +891,10 @@ export const folderIcons: FolderTheme[] = [ name: 'folder-taskfile', folderNames: ['taskfile', 'taskfiles'], }, + { + name: 'folder-drizzle', + folderNames: ['drizzle'], + }, { name: 'folder-cloudflare', folderNames: ['cloudflare'], @@ -859,6 +903,36 @@ export const folderIcons: FolderTheme[] = [ name: 'folder-seeders', folderNames: ['seeds', 'seeders', 'seed', 'seeding'], }, + { + name: 'folder-store', + folderNames: ['store', 'stores'], + enabledFor: [IconPack.Angular], + }, + { name: 'folder-bicep', folderNames: ['bicep'] }, + { name: 'folder-snapcraft', folderNames: ['snap', 'snapcraft'] }, + { + name: 'folder-development', + folderNames: ['dev', 'development'], + clone: { + base: 'folder-src', + color: 'light-blue-700', + }, + }, + { name: 'folder-flutter', folderNames: ['flutter'] }, + { name: 'folder-snippet', folderNames: ['snippet', 'snippets'] }, + { + name: 'folder-src-tauri', + folderNames: ['src-tauri'], + }, + { + name: 'folder-favicon', + folderNames: ['favicon', 'favicons'], + }, + { name: 'folder-lefthook', folderNames: ['lefthook', 'lefthook-local'] }, + { + name: 'folder-powershell', + folderNames: ["powershell", "ps", "ps1"] + } ], }, { diff --git a/src/icons/languageIcons.ts b/src/core/icons/languageIcons.ts similarity index 93% rename from src/icons/languageIcons.ts rename to src/core/icons/languageIcons.ts index dc24dbaf52..4522d0b8a5 100644 --- a/src/icons/languageIcons.ts +++ b/src/core/icons/languageIcons.ts @@ -1,19 +1,17 @@ -import { type LanguageIcon } from '../models'; +import type { LanguageIcon } from '../models/icons/languages/languageIdentifier'; /** * Defines icons for language ids */ export const languageIcons: LanguageIcon[] = [ { icon: { name: 'git' }, ids: ['git', 'git-commit', 'git-rebase', 'ignore'] }, + { + icon: { name: 'github-actions-workflow' }, + ids: ['github-actions-workflow'], + }, { icon: { name: 'yaml' }, - ids: [ - 'yaml', - 'github-actions-workflow', - 'spring-boot-properties-yaml', - 'ansible', - 'ansible-jinja', - ], + ids: ['yaml', 'spring-boot-properties-yaml', 'ansible', 'ansible-jinja'], }, { icon: { name: 'xml' }, ids: ['xml', 'xquery', 'xsl'] }, { icon: { name: 'matlab' }, ids: ['matlab'] }, @@ -153,8 +151,17 @@ export const languageIcons: LanguageIcon[] = [ { icon: { name: 'stylable' }, ids: ['stylable'] }, { icon: { name: 'hjson' }, ids: ['hjson'] }, { icon: { name: 'huff' }, ids: ['huff'] }, + { + icon: { name: 'cds' }, + ids: ['cds', 'capnb', 'cds-markdown-injection'], + }, { icon: { name: 'concourse' }, ids: ['concourse-pipeline-yaml', 'concourse-task-yaml'], }, + { + icon: { name: 'systemd', light: true }, + ids: ['systemd-conf', 'systemd-unit-file'], + }, + { icon: { name: 'slint' }, ids: ['slint'] }, ]; diff --git a/src/core/index.ts b/src/core/index.ts new file mode 100644 index 0000000000..039d03137c --- /dev/null +++ b/src/core/index.ts @@ -0,0 +1,57 @@ +export { applyConfigToIcons } from './generator/applyConfigToIcons'; +export { + customClonesIcons, + generateConfiguredClones, + hasCustomClones, +} from './generator/clones/clonesGenerator'; +export { clearCloneFolder } from './generator/clones/utils/cloneData'; +export { + getDefaultConfig, + padWithDefaultConfig, +} from './generator/config/defaultConfig'; +export { + extensionName, + extensionPublisher, + highContrastColorFileEnding, + lightColorFileEnding, + logEventKey, + manifestName, + openedFolder, +} from './generator/constants'; +export { generateFileIcons } from './generator/fileGenerator'; +export { generateFolderIcons } from './generator/folderGenerator'; +export { generateManifest } from './generator/generateManifest'; +export { validateOpacityValue } from './generator/iconOpacity'; +export { validateSaturationValue } from './generator/iconSaturation'; +export { renameIconFiles } from './generator/renameIconFiles'; +export { validateHEXColorCode } from './generator/shared/validation'; +export { availableIconPacks } from './helpers/iconPacks'; +export { get, merge, set } from './helpers/object'; +export { resolvePath } from './helpers/resolvePath'; +export { capitalizeFirstLetter, toTitleCase } from './helpers/titlecase'; +export { writeToFile } from './helpers/writeFile'; +export { initTranslations, translate } from './i18n/translate'; +export { fileIcons } from './icons/fileIcons'; +export { folderIcons } from './icons/folderIcons'; +export { languageIcons } from './icons/languageIcons'; +export { + createLoggingObserver, + logger, + type LogEvent, + type LogLevel, +} from './logging/logger'; +export type { CloneOptions } from './models/icons/cloneOptions'; +export type { Config, IconAssociations } from './models/icons/config'; +export type { DefaultIcon } from './models/icons/defaultIcon'; +export type { FileIcon } from './models/icons/files/fileIcon'; +export type { FileIcons } from './models/icons/files/fileTypes'; +export type { FolderIcon } from './models/icons/folders/folderIcon'; +export type { + FolderTheme, + FolderThemeName, +} from './models/icons/folders/folderTheme'; +export { IconPack, type IconPackValue } from './models/icons/iconPack'; +export type { LanguageIcon } from './models/icons/languages/languageIdentifier'; +export { FileNamePattern } from './models/icons/patterns/patterns'; +export { type Manifest, type ManifestConfig } from './models/manifest'; +export { parseByPattern } from './patterns/patterns'; diff --git a/src/core/logging/logger.ts b/src/core/logging/logger.ts new file mode 100644 index 0000000000..bc67ed3353 --- /dev/null +++ b/src/core/logging/logger.ts @@ -0,0 +1,60 @@ +import { EventEmitter } from 'node:events'; +import { logEventKey } from '../generator/constants'; + +export type LogLevel = 'info' | 'error' | 'debug'; +const loggerEmitter = new EventEmitter({ + captureRejections: true, +}); + +// Mapping log levels to numeric values for comparison +const logLevelValues: { [Key in LogLevel]: number } = { + debug: 1, + info: 2, + error: 3, +}; + +export type LogEvent = { + level: LogLevel; + message: string; +}; + +/** + * Create a logger that emits log events. + */ +const createLogger = () => { + const emitLogEvent = (level: LogLevel, message: unknown) => { + const timestamp = new Date().toISOString(); + const logEvent: LogEvent = { + level, + message: `[${level.toUpperCase()}] ${timestamp} - ${message}`, + }; + loggerEmitter.emit(logEventKey, logEvent); + }; + + return { + info: (message: unknown) => emitLogEvent('info', message), + error: (message: unknown) => emitLogEvent('error', message), + debug: (message: unknown) => emitLogEvent('debug', message), + }; +}; + +/** + * Create a logging observer that listens to log events and calls a callback function when a log event is emitted. + * + * @param minLogLevel Minimum log level to observe + * @param callback Callback function to be called when a log event is emitted + */ +export const createLoggingObserver = ( + minLogLevel: LogLevel, + callback: (event: LogEvent) => void +): EventEmitter => { + const minLogLevelValue = logLevelValues[minLogLevel]; + + return loggerEmitter.on(logEventKey, (event: LogEvent) => { + if (logLevelValues[event.level] >= minLogLevelValue) { + callback(event); + } + }); +}; + +export const logger = createLogger(); diff --git a/src/models/i18n/translation.ts b/src/core/models/i18n/translation.ts similarity index 95% rename from src/models/i18n/translation.ts rename to src/core/models/i18n/translation.ts index 49584c86a7..151699f356 100644 --- a/src/models/i18n/translation.ts +++ b/src/core/models/i18n/translation.ts @@ -1,4 +1,4 @@ -export interface Translation { +export type Translation = { activate: string; activated: string; iconPacks: { @@ -40,4 +40,4 @@ export interface Translation { inputPlaceholder: string; wrongValue: string; }; -} +}; diff --git a/src/models/icons/cloneOptions.ts b/src/core/models/icons/cloneOptions.ts similarity index 62% rename from src/models/icons/cloneOptions.ts rename to src/core/models/icons/cloneOptions.ts index 7d1d1e737c..9d1b903bda 100644 --- a/src/models/icons/cloneOptions.ts +++ b/src/core/models/icons/cloneOptions.ts @@ -1,5 +1,5 @@ -export interface CloneOptions { +export type CloneOptions = { base: string; color: string; lightColor?: string; -} +}; diff --git a/src/core/models/icons/config.ts b/src/core/models/icons/config.ts new file mode 100644 index 0000000000..ec2f140ea6 --- /dev/null +++ b/src/core/models/icons/config.ts @@ -0,0 +1,47 @@ +import type { LogLevel } from '../../logging/logger'; +import type { FolderThemeName } from './folders/folderTheme'; +import type { IconPackValue } from './iconPack'; + +export type Config = { + activeIconPack: IconPackValue; + hidesExplorerArrows: boolean; + opacity: number; + saturation: number; + folders: { + theme: FolderThemeName; + color: string; + associations: IconAssociations; + customClones: FolderIconClone[]; + }; + files: { + color: string; + associations: IconAssociations; + customClones: FileIconClone[]; + }; + languages: { + associations: IconAssociations; + }; + enableLogging: boolean; + logLevel: LogLevel; +}; + +export type IconAssociations = { + [pattern: string]: string; +}; + +export type CustomClone = { + name: string; + base: string; + color: string; + lightColor?: string; + activeForPacks?: IconPackValue[]; +}; + +export type FileIconClone = CustomClone & { + fileExtensions?: string[]; + fileNames?: string[]; +}; + +export type FolderIconClone = CustomClone & { + folderNames: string[]; +}; diff --git a/src/models/icons/defaultIcon.ts b/src/core/models/icons/defaultIcon.ts similarity index 75% rename from src/models/icons/defaultIcon.ts rename to src/core/models/icons/defaultIcon.ts index a8de24d1d3..2fb5961e98 100644 --- a/src/models/icons/defaultIcon.ts +++ b/src/core/models/icons/defaultIcon.ts @@ -1,6 +1,6 @@ -export interface DefaultIcon { +export type DefaultIcon = { /** - * Name of the icon, e.g. 'src' + * Name of the icon, e.g. `src` */ name: string; @@ -13,4 +13,4 @@ export interface DefaultIcon { * Define if there is a high contrast icon available. */ highContrast?: boolean; -} +}; diff --git a/src/models/icons/files/fileIcon.ts b/src/core/models/icons/files/fileIcon.ts similarity index 66% rename from src/models/icons/files/fileIcon.ts rename to src/core/models/icons/files/fileIcon.ts index 64ca70cf32..bc0f5d2390 100644 --- a/src/models/icons/files/fileIcon.ts +++ b/src/core/models/icons/files/fileIcon.ts @@ -1,23 +1,23 @@ -import { type RequireAtLeastOne } from '../../../helpers/types'; -import { type CloneOptions } from '../cloneOptions'; -import { IconPack } from '../index'; -import { type Patterns } from '../patterns'; +import type { RequireAtLeastOne } from '../../../types/requiredAtLeastOne'; +import type { CloneOptions } from '../cloneOptions'; +import type { IconPack } from '../iconPack'; +import type { Patterns } from '../patterns/patterns'; -interface BasicFileIcon { +type BasicFileIcon = { /** - * Name of the icon, e.g. 'javascript' + * Name of the icon, e.g. `javascript` */ name: string; /** * Define the file extensions that should use this icon. - * E.g. ['js'] + * E.g. `['js']` */ fileExtensions?: string[]; /** * Define if there are some static file names that should apply this icon. - * E.g. ['sample.js'] + * E.g. `['sample.js']` */ fileNames?: string[]; @@ -50,12 +50,12 @@ interface BasicFileIcon { * Options for generating an icon based on another icon. */ clone?: CloneOptions; -} +}; /** - * Type for a FileIcon. In addition to the `name` property, either a `fileExtensions` or `fileNames` property is required. + * Type for a `FileIcon`. In addition to the `name` property, either a `fileExtensions` or `fileNames` property is required. */ export type FileIcon = RequireAtLeastOne< BasicFileIcon, - 'fileExtensions' | 'fileNames' + 'fileExtensions' | 'fileNames' | 'patterns' >; diff --git a/src/models/icons/files/fileTypes.ts b/src/core/models/icons/files/fileTypes.ts similarity index 83% rename from src/models/icons/files/fileTypes.ts rename to src/core/models/icons/files/fileTypes.ts index c396e00a19..8d0612318c 100644 --- a/src/models/icons/files/fileTypes.ts +++ b/src/core/models/icons/files/fileTypes.ts @@ -1,5 +1,5 @@ import { type DefaultIcon } from '../defaultIcon'; -import { type FileIcon } from './index'; +import type { FileIcon } from './fileIcon'; export type FileIcons = { /** diff --git a/src/models/icons/folders/folderIcon.ts b/src/core/models/icons/folders/folderIcon.ts similarity index 83% rename from src/models/icons/folders/folderIcon.ts rename to src/core/models/icons/folders/folderIcon.ts index 78e0c68cb5..a55dfed126 100644 --- a/src/models/icons/folders/folderIcon.ts +++ b/src/core/models/icons/folders/folderIcon.ts @@ -1,15 +1,15 @@ import { type CloneOptions } from '../cloneOptions'; -import { IconPack } from '../index'; +import type { IconPack } from '../iconPack'; -export interface FolderIcon { +export type FolderIcon = { /** - * Name of the icon, e.g. 'src' + * Name of the icon, e.g. `src` */ name: string; /** * Define the folder names that should apply the icon. - * E.g. ['src', 'source'] + * E.g. `['src', 'source']` */ folderNames: string[]; @@ -37,4 +37,4 @@ export interface FolderIcon { * Options for generating an icon based on another icon. */ clone?: CloneOptions; -} +}; diff --git a/src/models/icons/folders/folderTheme.ts b/src/core/models/icons/folders/folderTheme.ts similarity index 56% rename from src/models/icons/folders/folderTheme.ts rename to src/core/models/icons/folders/folderTheme.ts index 2fc5e5e7a3..5822246a36 100644 --- a/src/models/icons/folders/folderTheme.ts +++ b/src/core/models/icons/folders/folderTheme.ts @@ -1,10 +1,11 @@ -import { type DefaultIcon, type FolderIcon } from '../index'; +import type { DefaultIcon } from '../defaultIcon'; +import type { FolderIcon } from './folderIcon'; -export interface FolderTheme { +export type FolderTheme = { /** * Name of the theme */ - name: string; + name: FolderThemeName; /** * Define the default icon for folders in a theme. @@ -20,4 +21,6 @@ export interface FolderTheme { * Defines folder icons for specific folder names. */ icons?: FolderIcon[]; -} +}; + +export type FolderThemeName = 'specific' | 'classic' | 'none'; diff --git a/src/models/icons/iconPack.ts b/src/core/models/icons/iconPack.ts similarity index 82% rename from src/models/icons/iconPack.ts rename to src/core/models/icons/iconPack.ts index 6954f5758c..bf0dfdb2b3 100644 --- a/src/models/icons/iconPack.ts +++ b/src/core/models/icons/iconPack.ts @@ -11,3 +11,5 @@ export enum IconPack { Vue = 'vue', Vuex = 'vue_vuex', } + +export type IconPackValue = `${IconPack}` | ''; diff --git a/src/models/icons/languages/languageIdentifier.ts b/src/core/models/icons/languages/languageIdentifier.ts similarity index 74% rename from src/models/icons/languages/languageIdentifier.ts rename to src/core/models/icons/languages/languageIdentifier.ts index 3e12c8ba42..66fbeb0b6b 100644 --- a/src/models/icons/languages/languageIdentifier.ts +++ b/src/core/models/icons/languages/languageIdentifier.ts @@ -1,13 +1,14 @@ -import { type DefaultIcon, IconPack } from '../index'; +import type { DefaultIcon } from '../defaultIcon'; +import type { IconPack } from '../iconPack'; -export interface LanguageIcon { +export type LanguageIcon = { /** * Icon for the language identifier */ icon: DefaultIcon; /** - * Language ID, e.g. 'javascript' + * Language ID, e.g. `javascript` * * According to official VS Code documentation: * https://code.visualstudio.com/docs/languages/identifiers @@ -23,4 +24,4 @@ export interface LanguageIcon { * Defines a pack to which this icon belongs. A pack can be toggled and all icons inside this pack can be enabled or disabled together. */ enabledFor?: IconPack[]; -} +}; diff --git a/src/models/icons/patterns/patterns.ts b/src/core/models/icons/patterns/patterns.ts similarity index 75% rename from src/models/icons/patterns/patterns.ts rename to src/core/models/icons/patterns/patterns.ts index 221bbdbe19..45bcb0c3ca 100644 --- a/src/models/icons/patterns/patterns.ts +++ b/src/core/models/icons/patterns/patterns.ts @@ -1,4 +1,4 @@ -import { type FileIcon } from '..'; +import type { FileIcon } from '../files/fileIcon'; export enum FileNamePattern { /** Adds the following extensions to the file name: `js`, `mjs`, `cjs`, `ts`, `mts`, `cts`. */ @@ -10,7 +10,7 @@ export enum FileNamePattern { /** Adds the following extensions to the file name: `js`, `mjs`, `cjs`, `ts`, `mts`, `cts`, `json`, `jsonc`, `json5`, `yaml`, `yml`, `toml`. */ NodeEcosystem = 'nodeEcosystem', - /** It adjusts the name with the following patterns: '.fileNamerc', '.config/fileNamerc', 'fileName.config' and combines that with the pattern NodeEcosystem */ + /** It adjusts the name with the following patterns: `.fileNamerc`, `.config/fileNamerc`, `fileName.config` and combines that with the pattern `NodeEcosystem` */ Cosmiconfig = 'cosmiconfig', } diff --git a/src/core/models/manifest.ts b/src/core/models/manifest.ts new file mode 100644 index 0000000000..d9004111b9 --- /dev/null +++ b/src/core/models/manifest.ts @@ -0,0 +1,47 @@ +import type { RecursivePartial } from '../types/recursivePartial'; +import type { Config } from './icons/config'; + +/** + * Configuration for the manifest. It contains the configuration which is used to generate the manifest. + */ +export type ManifestConfig = RecursivePartial< + Pick & { + files: Pick; + } & { + folders: Pick; + } +>; + +export type Manifest = { + file?: string; + folder?: string; + folderExpanded?: string; + folderNames?: Record; + folderNamesExpanded?: Record; + rootFolder?: string; + rootFolderExpanded?: string; + fileExtensions?: Record; + fileNames?: Record; + languageIds?: Record; + iconDefinitions?: Record; + light?: Manifest; + highContrast?: Manifest; + hidesExplorerArrows?: boolean; +}; + +export const createEmptyManifest = (): Manifest => ({ + iconDefinitions: {}, + folderNames: {}, + folderNamesExpanded: {}, + fileExtensions: {}, + fileNames: {}, + languageIds: {}, + light: { + fileExtensions: {}, + fileNames: {}, + }, + highContrast: { + fileExtensions: {}, + fileNames: {}, + }, +}); diff --git a/src/icons/patterns/patterns.ts b/src/core/patterns/patterns.ts similarity index 97% rename from src/icons/patterns/patterns.ts rename to src/core/patterns/patterns.ts index 71bde05b0b..f877bfe676 100644 --- a/src/icons/patterns/patterns.ts +++ b/src/core/patterns/patterns.ts @@ -1,9 +1,9 @@ +import type { FileIcon } from '../models/icons/files/fileIcon'; import { - type FileIcon, type FileIconWithPatterns, FileNamePattern, type Patterns, -} from '../../models'; +} from '../models/icons/patterns/patterns'; /** * Maps the patterns to an array of strings. diff --git a/src/core/tests/helpers/object.test.ts b/src/core/tests/helpers/object.test.ts new file mode 100644 index 0000000000..44f44fa554 --- /dev/null +++ b/src/core/tests/helpers/object.test.ts @@ -0,0 +1,106 @@ +import { describe, expect, it } from 'bun:test'; +import { merge, set } from '../../helpers/object'; + +describe('set function its', () => { + it('should set value at root level', () => { + const obj: { a: number; b: number; c?: number } = { a: 1, b: 2 }; + set(obj, 'c', 3); + expect(obj).toEqual({ a: 1, b: 2, c: 3 }); + }); + + it('should set value in a nested object', () => { + const obj: { a: { b: number; c?: number } } = { a: { b: 2 } }; + set(obj, 'a.c', 3); + expect(obj).toEqual({ a: { b: 2, c: 3 } }); + }); + + it('should override existing value', () => { + const obj = { a: 1 }; + set(obj, 'a', 2); + expect(obj.a).toBe(2); + }); + + it('should set value with array notation', () => { + const obj = {}; + set(obj, ['a', 'b', 'c'], 3); + expect(obj).toEqual({ a: { b: { c: 3 } } }); + }); + + it('should create nested structure if not exist', () => { + const obj = {}; + set(obj, 'a.b.c', 3); + expect(obj).toEqual({ a: { b: { c: 3 } } }); + }); + + it('should set value with complex path', () => { + const obj: { a: { b: { c: number; d?: { e?: number } } } } = { + a: { b: { c: 1 } }, + }; + set(obj, 'a.b.d.e', 2); + expect(obj).toEqual({ a: { b: { c: 1, d: { e: 2 } } } }); + }); + + it('should set value to null', () => { + const obj: { a: number; b?: null } = { a: 1 }; + set(obj, 'b', null); + expect(obj).toEqual({ a: 1, b: null }); + }); + + it('should set value to undefined', () => { + const obj: { a: number; b?: undefined } = { a: 1 }; + set(obj, 'b', undefined); + expect(obj).toEqual({ a: 1, b: undefined }); + }); +}); + +describe('merge function its', () => { + it('should merge objects with primitive values', () => { + type Obj = { a: number; b?: string; c?: boolean }; + const obj1: Obj = { a: 1, b: 'text' }; + const obj2: Obj = { a: 2, c: true }; + const result = merge(obj1, obj2); + expect(result).toEqual({ a: 2, b: 'text', c: true }); + }); + + it('should merge objects with nested objects', () => { + type Obj = { a: { x?: number; y?: number }; b?: string; c?: boolean }; + const obj1: Obj = { a: { x: 1 }, b: 'text' }; + const obj2: Obj = { a: { y: 2 }, c: true }; + const result = merge(obj1, obj2); + expect(result).toEqual({ a: { x: 1, y: 2 }, b: 'text', c: true }); + }); + + it('should merge objects with arrays', () => { + type Obj = { a: number[]; b?: string; c?: boolean }; + const obj1: Obj = { a: [1, 2], b: 'text' }; + const obj2: Obj = { a: [3, 4], c: true }; + const result = merge(obj1, obj2); + expect(result).toEqual({ a: [1, 2, 3, 4], b: 'text', c: true }); + }); + + it('should handle null and undefined correctly', () => { + type Obj = { + a: { x: number } | null; + b: string | undefined; + }; + const obj1: Obj = { a: null, b: undefined }; + const obj2: Obj = { a: { x: 1 }, b: 'text' }; + const result = merge(obj1, obj2); + expect(result).toEqual({ a: { x: 1 }, b: 'text' }); + }); + + it('should prefer the truthy value when one value is undefined or null and the other is truthy', () => { + type Obj = { + key1?: string | null; + key2?: string | null; + key3?: string | null; + }; + const obj1: Obj = { key1: null, key2: 'value2', key3: undefined }; + const obj2: Obj = { key1: 'value1', key2: null, key3: 'value3' }; + + const expectedResult = { key1: 'value1', key2: 'value2', key3: 'value3' }; + const result = merge(obj1, obj2); + + expect(result).toEqual(expectedResult); + }); +}); diff --git a/src/tests/i18n/i18n.test.ts b/src/core/tests/i18n/i18n.test.ts similarity index 83% rename from src/tests/i18n/i18n.test.ts rename to src/core/tests/i18n/i18n.test.ts index 2ca9dc7808..da2723009f 100644 --- a/src/tests/i18n/i18n.test.ts +++ b/src/core/tests/i18n/i18n.test.ts @@ -1,7 +1,7 @@ import { describe, expect, it } from 'bun:test'; -import { getObjectPropertyValue } from '../../helpers/objects'; -import { getTranslationValue, replace } from '../../i18n'; -import type { Translation } from '../../models'; +import { get } from '../../helpers/object'; +import { getTranslationValue, replace } from '../../i18n/translate'; +import type { Translation } from '../../models/i18n/translation'; describe('i18n', () => { it('should translate key', () => { @@ -38,7 +38,7 @@ describe('i18n', () => { }, }; - const result = getObjectPropertyValue(translation, 'a.b.c'); + const result = get(translation, 'a.b.c'); expect(result).toBe('c'); }); diff --git a/src/tests/icons/cloning.test.ts b/src/core/tests/icons/cloning.test.ts similarity index 60% rename from src/tests/icons/cloning.test.ts rename to src/core/tests/icons/cloning.test.ts index 4282a5b29d..6184c2268e 100644 --- a/src/tests/icons/cloning.test.ts +++ b/src/core/tests/icons/cloning.test.ts @@ -1,39 +1,36 @@ import { beforeAll, describe, expect, it, mock } from 'bun:test'; -import merge from 'lodash.merge'; -import { type INode, parseSync } from 'svgson'; -import { getFileConfigHash } from '../../helpers/fileConfig'; -import { - clonesFolder, - iconFolderPath, - lightColorFileEnding, - openedFolder, -} from '../../icons'; -import { customClonesIcons } from '../../icons/generator/clones/clonesGenerator'; +import { type INode, parse } from 'svgson'; +import { customClonesIcons } from '../../generator/clones/clonesGenerator'; import { Type, Variant, getCloneData, - resolvePath, -} from '../../icons/generator/clones/utils/cloneData'; +} from '../../generator/clones/utils/cloneData'; import { cloneIcon, getStyle, traverse, -} from '../../icons/generator/clones/utils/cloning'; -import { - isValidColor, - orderDarkToLight, -} from '../../icons/generator/clones/utils/color/colors'; +} from '../../generator/clones/utils/cloning'; import { closerMaterialColorTo, materialPalette as palette, -} from '../../icons/generator/clones/utils/color/materialPalette'; +} from '../../generator/clones/utils/color/materialPalette'; +import { padWithDefaultConfig } from '../../generator/config/defaultConfig'; import { - type FileIconClone, - type FolderIconClone, - IconConfiguration, - type IconJsonOptions, -} from '../../models'; + clonesFolder, + iconFolderPath, + lightColorFileEnding, + openedFolder, +} from '../../generator/constants'; +import { getFileConfigHash } from '../../helpers/configHash'; +import { merge } from '../../helpers/object'; +import { resolvePath } from '../../helpers/resolvePath'; +import type { FileIconClone, FolderIconClone } from '../../models/icons/config'; +import { type Manifest, createEmptyManifest } from '../../models/manifest'; +import { + isValidColor, + orderDarkToLight, +} from './../../generator/clones/utils/color/colors'; import * as icon from './data/icons'; describe('cloning: color manipulation', () => { @@ -84,10 +81,10 @@ describe('cloning: icon cloning', () => { const subFolder = 'sub/'; const hash = '~-fakehash123456789'; const ext = '.ext'; - let config: Partial; + let manifest: Manifest; beforeAll(() => { - config = { + manifest = { iconDefinitions: { base: { iconPath: 'icons/icon.svg', @@ -118,7 +115,7 @@ describe('cloning: icon cloning', () => { iconPath: 'icons/folder-base2_open_light.svg', }, }, - }; + } as Partial as Manifest; }); describe('clone data generation for file icons', () => { @@ -131,12 +128,12 @@ describe('cloning: icon cloning', () => { fileNames: ['file.xyz'], }; - const result = getCloneData(cloneOpts, config, subFolder, hash, ext); + const result = getCloneData(cloneOpts, manifest, subFolder, hash, ext); const expected = [ { base: { - path: resolvePath(config.iconDefinitions!.base.iconPath), + path: resolvePath(manifest.iconDefinitions!.base.iconPath), type: Type.File, variant: Variant.Base, }, @@ -161,12 +158,12 @@ describe('cloning: icon cloning', () => { fileNames: ['file.xyz'], }; - const result = getCloneData(cloneOpts, config, subFolder, hash, ext); + const result = getCloneData(cloneOpts, manifest, subFolder, hash, ext); const expected = [ { base: { - path: resolvePath(config.iconDefinitions!.base2.iconPath), + path: resolvePath(manifest.iconDefinitions!.base2.iconPath), type: Type.File, variant: Variant.Base, }, @@ -179,7 +176,9 @@ describe('cloning: icon cloning', () => { }, { base: { - path: resolvePath(config.iconDefinitions!.base2_light!.iconPath), + path: resolvePath( + manifest.iconDefinitions!.base2_light!.iconPath + ), type: Type.File, variant: Variant.Light, }, @@ -207,12 +206,12 @@ describe('cloning: icon cloning', () => { fileNames: ['file.xyz'], }; - const result = getCloneData(cloneOpts, config, subFolder, hash, ext); + const result = getCloneData(cloneOpts, manifest, subFolder, hash, ext); const expected = [ { base: { - path: resolvePath(config.iconDefinitions!.base.iconPath), + path: resolvePath(manifest.iconDefinitions!.base.iconPath), type: Type.File, variant: Variant.Base, }, @@ -227,7 +226,7 @@ describe('cloning: icon cloning', () => { base: { // since light version of icon base doesn't exist, the base icon is used as a base // to clone the light version - path: resolvePath(config.iconDefinitions!.base.iconPath), + path: resolvePath(manifest.iconDefinitions!.base.iconPath), type: Type.File, variant: Variant.Light, }, @@ -255,13 +254,13 @@ describe('cloning: icon cloning', () => { folderNames: ['bar'], }; - const result = getCloneData(cloneOpts, config, subFolder, hash, ext); + const result = getCloneData(cloneOpts, manifest, subFolder, hash, ext); const expected = [ { base: { path: resolvePath( - config.iconDefinitions!['folder-base'].iconPath + manifest.iconDefinitions!['folder-base'].iconPath ), type: Type.Folder, variant: Variant.Base, @@ -276,7 +275,7 @@ describe('cloning: icon cloning', () => { { base: { path: resolvePath( - config.iconDefinitions!['folder-base-open'].iconPath + manifest.iconDefinitions!['folder-base-open'].iconPath ), type: Type.Folder, variant: Variant.Open, @@ -303,13 +302,13 @@ describe('cloning: icon cloning', () => { folderNames: ['bar'], }; - const result = getCloneData(cloneOpts, config, subFolder, hash, ext); + const result = getCloneData(cloneOpts, manifest, subFolder, hash, ext); const expected = [ { base: { path: resolvePath( - config.iconDefinitions!['folder-base2'].iconPath + manifest.iconDefinitions!['folder-base2'].iconPath ), type: Type.Folder, variant: Variant.Base, @@ -324,7 +323,7 @@ describe('cloning: icon cloning', () => { { base: { path: resolvePath( - config.iconDefinitions!['folder-base2-open'].iconPath + manifest.iconDefinitions!['folder-base2-open'].iconPath ), type: Type.Folder, variant: Variant.Open, @@ -341,7 +340,7 @@ describe('cloning: icon cloning', () => { { base: { path: resolvePath( - config.iconDefinitions!['folder-base2_light']!.iconPath + manifest.iconDefinitions!['folder-base2_light']!.iconPath ), type: Type.Folder, variant: Variant.Light, @@ -358,7 +357,7 @@ describe('cloning: icon cloning', () => { { base: { path: resolvePath( - config.iconDefinitions!['folder-base2-open_light']!.iconPath + manifest.iconDefinitions!['folder-base2-open_light']!.iconPath ), type: Type.Folder, variant: Variant.LightOpen, @@ -386,13 +385,13 @@ describe('cloning: icon cloning', () => { folderNames: ['bar'], }; - const result = getCloneData(cloneOpts, config, subFolder, hash, ext); + const result = getCloneData(cloneOpts, manifest, subFolder, hash, ext); const expected = [ { base: { path: resolvePath( - config.iconDefinitions!['folder-base'].iconPath + manifest.iconDefinitions!['folder-base'].iconPath ), type: Type.Folder, variant: Variant.Base, @@ -407,7 +406,7 @@ describe('cloning: icon cloning', () => { { base: { path: resolvePath( - config.iconDefinitions!['folder-base-open'].iconPath + manifest.iconDefinitions!['folder-base-open'].iconPath ), type: Type.Folder, variant: Variant.Open, @@ -426,7 +425,7 @@ describe('cloning: icon cloning', () => { // since light version of icon base doesn't exist, the base icon is used as a base // to clone the light version path: resolvePath( - config.iconDefinitions!['folder-base'].iconPath + manifest.iconDefinitions!['folder-base'].iconPath ), type: Type.Folder, variant: Variant.Light, @@ -445,7 +444,7 @@ describe('cloning: icon cloning', () => { // since light version of icon base doesn't exist, the base icon is used as a base // to clone the light version path: resolvePath( - config.iconDefinitions!['folder-base-open'].iconPath + manifest.iconDefinitions!['folder-base-open'].iconPath ), type: Type.Folder, variant: Variant.LightOpen, @@ -484,17 +483,17 @@ describe('cloning: icon cloning', () => { palette['blue-A700'], ]; - it('should replace the color with the given color', () => { - mock.module('fs', () => { + it('should replace the color with the given color', async () => { + mock.module('node:fs/promises', () => { return { - readFileSync: () => icon.file, + readFile: () => Promise.resolve(icon.file), }; }); // mock the fs.readFileSync method to return the desired icon file - const result = cloneIcon('fake/path/to/icon.svg', 'blue-600', ''); + const result = await cloneIcon('fake/path/to/icon.svg', 'blue-600', ''); - const colorCount = forEachColor(parseSync(result), (color, loc) => { + const colorCount = forEachColor(await parse(result), (color, loc) => { expect(color).toBe(palette['blue-600']); expect(loc).toBe('style:fill'); }); @@ -502,16 +501,16 @@ describe('cloning: icon cloning', () => { expect(colorCount).toBe(1); }); - it('should replace the color with the given color if color is in fill attribute', () => { + it('should replace the color with the given color if color is in fill attribute', async () => { // mock the fs.readFileSync method to return the desired icon file - mock.module('fs', () => { + mock.module('node:fs/promises', () => { return { - readFileSync: () => icon.fileFill, + readFile: () => Promise.resolve(icon.fileFill), }; }); - const result = cloneIcon('fake/path/to/icon.svg', 'blue-600', ''); + const result = await cloneIcon('fake/path/to/icon.svg', 'blue-600', ''); - const colorCount = forEachColor(parseSync(result), (color, loc) => { + const colorCount = forEachColor(await parse(result), (color, loc) => { expect(color).toBe(palette['blue-600']); expect(loc).toBe('attr:fill'); }); @@ -519,15 +518,15 @@ describe('cloning: icon cloning', () => { expect(colorCount).toBe(1); }); - it('should replace the color with the given color if color is in stop-color attribute', () => { - mock.module('fs', () => { + it('should replace the color with the given color if color is in stop-color attribute', async () => { + mock.module('node:fs/promises', () => { return { - readFileSync: () => icon.gradient, + readFile: () => Promise.resolve(icon.gradient), }; }); - const result = cloneIcon('fake/path/to/icon.svg', 'blue-600', ''); + const result = await cloneIcon('fake/path/to/icon.svg', 'blue-600', ''); - const colorCount = forEachColor(parseSync(result), (color, loc) => { + const colorCount = forEachColor(await parse(result), (color, loc) => { expect(bluePalette).toContain(color); expect(loc).toBe('attr:stop-color'); }); @@ -535,16 +534,16 @@ describe('cloning: icon cloning', () => { expect(colorCount).toBe(3); }); - it('should replace colors on icons with multiple nodes', () => { - mock.module('fs', () => { + it('should replace colors on icons with multiple nodes', async () => { + mock.module('node:fs/promises', () => { return { - readFileSync: () => icon.folder, + readFile: () => Promise.resolve(icon.folder), }; }); - const result = cloneIcon('fake/path/to/icon.svg', 'blue-600', ''); + const result = await cloneIcon('fake/path/to/icon.svg', 'blue-600', ''); const colors: string[] = []; - const colorCount = forEachColor(parseSync(result), (color, loc) => { + const colorCount = forEachColor(await parse(result), (color, loc) => { colors.push(color); expect(bluePalette).toContain(color); expect(loc).toBe('style:fill'); @@ -557,15 +556,15 @@ describe('cloning: icon cloning', () => { }); describe('`data-mit-no-recolor` attribute', () => { - it('should not replace the color if the node has the `data-mit-no-recolor` attribute', () => { - mock.module('fs', () => { + it('should not replace the color if the node has the `data-mit-no-recolor` attribute', async () => { + mock.module('node:fs/promises', () => { return { - readFileSync: () => icon.folderIgnores, + readFile: () => Promise.resolve(icon.folderIgnores), }; }); - const result = cloneIcon('fake/path/to/icon.svg', 'blue-600', ''); - const parsed = parseSync(result); + const result = await cloneIcon('fake/path/to/icon.svg', 'blue-600', ''); + const parsed = await parse(result); const changedNodeStyle = getStyle(parsed.children[0]); const unchangedNodeStyle = getStyle(parsed.children[1]); @@ -573,15 +572,15 @@ describe('cloning: icon cloning', () => { expect(unchangedNodeStyle.fill).toBe('red'); }); - it('should not replace the color of any child of a node with the `data-mit-no-recolor` attribute', () => { - mock.module('fs', () => { + it('should not replace the color of any child of a node with the `data-mit-no-recolor` attribute', async () => { + mock.module('node:fs/promises', () => { return { - readFileSync: () => icon.gradientIgnore, + readFile: () => Promise.resolve(icon.gradientIgnore), }; }); - const result = cloneIcon('fake/path/to/icon.svg', 'blue-600', ''); + const result = await cloneIcon('fake/path/to/icon.svg', 'blue-600', ''); - const colorCount = forEachColor(parseSync(result), (color, loc) => { + const colorCount = forEachColor(await parse(result), (color, loc) => { expect(['#00695c', '#26a69a', '#b2dfdb']).toContain(color); expect(bluePalette).not.toContain(color); expect(loc).toBe('attr:stop-color'); @@ -594,10 +593,10 @@ describe('cloning: icon cloning', () => { }); /** helper function to traverse the svg tree and notify the colors found */ -function forEachColor( +const forEachColor = ( node: INode, callback: (color: string, loc?: string) => void -) { +) => { let colorCount = 0; const notify = (color: string, loc: string) => { @@ -630,19 +629,19 @@ function forEachColor( ); return colorCount; -} +}; describe('cloning: json config generation from user options', () => { beforeAll(() => { - mock.module('fs', () => { + mock.module('node:fs/promises', () => { return { - readFileSync: () => icon.file, - writeFileSync: () => {}, + readFile: () => Promise.resolve(icon.file), + writeFile: () => Promise.resolve(), }; }); }); - const getDefinition = (hash: string, options: IconJsonOptions) => { + const getManifest = (hash: string) => { return { iconDefinitions: { foo: { iconPath: `./../icons/foo${hash}.svg` }, @@ -650,14 +649,24 @@ describe('cloning: json config generation from user options', () => { 'folder-foo': { iconPath: `./../icons/folder${hash}.svg` }, 'folder-foo-open': { iconPath: `./../icons/folder-open${hash}.svg` }, }, + folderNames: {}, + folderNamesExpanded: {}, + fileExtensions: {}, fileNames: { 'foo.bar': 'foo' }, - options, file: 'file', + languageIds: {}, + light: { + fileExtensions: {}, + fileNames: {}, + folderNames: {}, + folderNamesExpanded: {}, + }, + highContrast: { fileExtensions: {}, fileNames: {} }, }; }; - it('should generate the json config from the user options', () => { - const options: IconJsonOptions = { + it('should generate the manifest from the config', async () => { + const config = padWithDefaultConfig({ files: { customClones: [ { @@ -681,12 +690,24 @@ describe('cloning: json config generation from user options', () => { }, ], }, - }; - const hash = getFileConfigHash(options); - const result = customClonesIcons(getDefinition(hash, options), options); + }); + const hash = getFileConfigHash(config); + const result = await customClonesIcons(getManifest(hash), config); - const expected = merge(new IconConfiguration(), { + const expected = merge(createEmptyManifest(), { iconDefinitions: { + file: { + iconPath: `./../icons/file${hash}.svg`, + }, + 'folder-foo': { + iconPath: `./../icons/folder${hash}.svg`, + }, + 'folder-foo-open': { + iconPath: `./../icons/folder${openedFolder}${hash}.svg`, + }, + foo: { + iconPath: `./../icons/foo${hash}.svg`, + }, 'folder-foo-clone': { iconPath: `./../icons/${clonesFolder}folder-foo-clone${hash}.svg`, }, @@ -709,7 +730,8 @@ describe('cloning: json config generation from user options', () => { folderNames: { bar: 'folder-foo-clone' }, folderNamesExpanded: { bar: `folder-foo-clone${openedFolder}` }, fileExtensions: { baz: 'foo-clone' }, - fileNames: { 'bar.foo': 'foo-clone' }, + fileNames: { 'bar.foo': 'foo-clone', 'foo.bar': 'foo' }, + file: 'file', languageIds: {}, light: { fileExtensions: { baz: `foo-clone${lightColorFileEnding}` }, @@ -720,7 +742,227 @@ describe('cloning: json config generation from user options', () => { }, }, highContrast: { fileExtensions: {}, fileNames: {} }, - options: {}, + }); + + expect(result).toStrictEqual(expected); + }); + + it('should not generate clones for icons not in the active pack', async () => { + const config = padWithDefaultConfig({ + files: { + customClones: [ + { + base: 'foo', + name: 'foo-clone', + fileNames: ['bar.foo'], + fileExtensions: ['baz'], + color: 'green-400', + lightColor: 'green-800', + activeForPacks: ['nest'], + }, + ], + }, + folders: { + customClones: [ + { + base: 'folder-foo', + name: 'folder-foo-clone', + folderNames: ['bar'], + color: 'green-400', + lightColor: 'green-800', + activeForPacks: ['nest'], + }, + ], + }, + }); + const hash = getFileConfigHash(config); + const result = await customClonesIcons(getManifest(hash), config); + + const expected = merge(createEmptyManifest(), { + iconDefinitions: { + file: { + iconPath: `./../icons/file${hash}.svg`, + }, + 'folder-foo': { + iconPath: `./../icons/folder${hash}.svg`, + }, + 'folder-foo-open': { + iconPath: `./../icons/folder${openedFolder}${hash}.svg`, + }, + foo: { + iconPath: `./../icons/foo${hash}.svg`, + }, + }, + folderNames: {}, + folderNamesExpanded: {}, + fileExtensions: {}, + fileNames: { 'foo.bar': 'foo' }, + file: 'file', + languageIds: {}, + light: { + fileExtensions: {}, + fileNames: {}, + folderNames: {}, + folderNamesExpanded: {}, + }, + highContrast: { fileExtensions: {}, fileNames: {} }, + }); + + expect(result).toStrictEqual(expected); + }); + + it('should generate clones for icons in the active pack, or whose pack is unspecified', async () => { + const config = padWithDefaultConfig({ + files: { + customClones: [ + { + base: 'foo', + name: 'foo-clone', + fileNames: ['bar.foo'], + fileExtensions: ['baz'], + color: 'green-400', + lightColor: 'green-800', + activeForPacks: ['nest'], + }, + { + base: 'foo', + name: 'foo-angular-clone', + fileNames: ['bar.foo.angular'], + fileExtensions: ['baz.angular'], + color: 'green-500', + lightColor: 'green-900', + activeForPacks: ['angular'], + }, + { + base: 'foo', + name: 'foo-any-clone', + fileNames: ['bar.foo.any'], + fileExtensions: ['baz.any'], + color: 'green-600', + lightColor: 'green-100', + }, + ], + }, + folders: { + customClones: [ + { + base: 'folder-foo', + name: 'folder-foo-clone', + folderNames: ['bar'], + color: 'green-400', + lightColor: 'green-800', + activeForPacks: ['nest'], + }, + { + base: 'folder-foo', + name: 'folder-foo-angular-clone', + folderNames: ['bar.angular'], + color: 'green-500', + lightColor: 'green-900', + activeForPacks: ['angular'], + }, + { + base: 'folder-foo', + name: 'folder-foo-any-clone', + folderNames: ['bar.any'], + color: 'green-600', + lightColor: 'green-100', + }, + ], + }, + }); + const hash = getFileConfigHash(config); + const result = await customClonesIcons(getManifest(hash), config); + + const expected = merge(createEmptyManifest(), { + iconDefinitions: { + file: { + iconPath: `./../icons/file${hash}.svg`, + }, + 'folder-foo': { + iconPath: `./../icons/folder${hash}.svg`, + }, + 'folder-foo-open': { + iconPath: `./../icons/folder${openedFolder}${hash}.svg`, + }, + foo: { + iconPath: `./../icons/foo${hash}.svg`, + }, + 'folder-foo-angular-clone': { + iconPath: `./../icons/${clonesFolder}folder-foo-angular-clone${hash}.svg`, + }, + 'folder-foo-angular-clone-open': { + iconPath: `./../icons/${clonesFolder}folder-foo-angular-clone${openedFolder}${hash}.svg`, + }, + 'folder-foo-angular-clone_light': { + iconPath: `./../icons/${clonesFolder}folder-foo-angular-clone${lightColorFileEnding}${hash}.svg`, + }, + 'folder-foo-angular-clone-open_light': { + iconPath: `./../icons/${clonesFolder}folder-foo-angular-clone${openedFolder}${lightColorFileEnding}${hash}.svg`, + }, + 'folder-foo-any-clone': { + iconPath: `./../icons/${clonesFolder}folder-foo-any-clone${hash}.svg`, + }, + 'folder-foo-any-clone-open': { + iconPath: `./../icons/${clonesFolder}folder-foo-any-clone${openedFolder}${hash}.svg`, + }, + 'folder-foo-any-clone_light': { + iconPath: `./../icons/${clonesFolder}folder-foo-any-clone${lightColorFileEnding}${hash}.svg`, + }, + 'folder-foo-any-clone-open_light': { + iconPath: `./../icons/${clonesFolder}folder-foo-any-clone${openedFolder}${lightColorFileEnding}${hash}.svg`, + }, + 'foo-angular-clone': { + iconPath: `./../icons/${clonesFolder}foo-angular-clone${hash}.svg`, + }, + 'foo-angular-clone_light': { + iconPath: `./../icons/${clonesFolder}foo-angular-clone${lightColorFileEnding}${hash}.svg`, + }, + 'foo-any-clone': { + iconPath: `./../icons/${clonesFolder}foo-any-clone${hash}.svg`, + }, + 'foo-any-clone_light': { + iconPath: `./../icons/${clonesFolder}foo-any-clone${lightColorFileEnding}${hash}.svg`, + }, + }, + folderNames: { + 'bar.angular': 'folder-foo-angular-clone', + 'bar.any': 'folder-foo-any-clone', + }, + folderNamesExpanded: { + 'bar.angular': `folder-foo-angular-clone${openedFolder}`, + 'bar.any': `folder-foo-any-clone${openedFolder}`, + }, + fileExtensions: { + 'baz.angular': 'foo-angular-clone', + 'baz.any': 'foo-any-clone', + }, + fileNames: { + 'bar.foo.angular': 'foo-angular-clone', + 'bar.foo.any': 'foo-any-clone', + 'foo.bar': 'foo', + }, + file: 'file', + languageIds: {}, + light: { + fileExtensions: { + 'baz.angular': `foo-angular-clone${lightColorFileEnding}`, + 'baz.any': `foo-any-clone${lightColorFileEnding}`, + }, + fileNames: { + 'bar.foo.angular': `foo-angular-clone${lightColorFileEnding}`, + 'bar.foo.any': `foo-any-clone${lightColorFileEnding}`, + }, + folderNames: { + 'bar.angular': `folder-foo-angular-clone${lightColorFileEnding}`, + 'bar.any': `folder-foo-any-clone${lightColorFileEnding}`, + }, + folderNamesExpanded: { + 'bar.angular': `folder-foo-angular-clone${openedFolder}${lightColorFileEnding}`, + 'bar.any': `folder-foo-any-clone${openedFolder}${lightColorFileEnding}`, + }, + }, + highContrast: { fileExtensions: {}, fileNames: {} }, }); expect(result).toStrictEqual(expected); diff --git a/src/tests/icons/data/icons.ts b/src/core/tests/icons/data/icons.ts similarity index 100% rename from src/tests/icons/data/icons.ts rename to src/core/tests/icons/data/icons.ts diff --git a/src/tests/icons/fileIcons.test.ts b/src/core/tests/icons/fileIcons.test.ts similarity index 70% rename from src/tests/icons/fileIcons.test.ts rename to src/core/tests/icons/fileIcons.test.ts index 505289dcd0..157181ff93 100644 --- a/src/tests/icons/fileIcons.test.ts +++ b/src/core/tests/icons/fileIcons.test.ts @@ -1,15 +1,18 @@ import { beforeEach, describe, expect, it } from 'bun:test'; -import merge from 'lodash.merge'; -import { getDefaultIconOptions, loadFileIconDefinitions } from '../../icons'; -import { type FileIcons, IconConfiguration, IconPack } from '../../models'; +import { getDefaultConfig } from '../../generator/config/defaultConfig'; +import { loadFileIconDefinitions } from '../../generator/fileGenerator'; +import type { Config } from '../../models/icons/config'; +import type { FileIcons } from '../../models/icons/files/fileTypes'; +import { IconPack } from '../../models/icons/iconPack'; +import { type Manifest, createEmptyManifest } from '../../models/manifest'; describe('file icons', () => { - let expectedConfig: IconConfiguration; + let expectedManifest: Manifest; + let config: Config; beforeEach(() => { - expectedConfig = merge({}, new IconConfiguration(), { - options: getDefaultIconOptions(), - }); + config = getDefaultConfig(); + expectedManifest = createEmptyManifest(); }); it('should configure icon definitions', () => { @@ -28,15 +31,15 @@ describe('file icons', () => { }, ], }; - const options = getDefaultIconOptions(); - const iconConfig = merge({}, new IconConfiguration(), { options }); + + const manifest = createEmptyManifest(); const iconDefinitions = loadFileIconDefinitions( fileIcons, - iconConfig, - options + config, + manifest ); - expectedConfig.iconDefinitions = { + expectedManifest.iconDefinitions = { angular: { iconPath: './../icons/angular.svg', }, @@ -47,17 +50,17 @@ describe('file icons', () => { iconPath: './../icons/file.svg', }, }; - expectedConfig.file = 'file'; - expectedConfig.fileExtensions = { + expectedManifest.file = 'file'; + expectedManifest.fileExtensions = { js: 'javascript', }; - expectedConfig.fileNames = { + expectedManifest.fileNames = { '.angular-cli.json': 'angular', 'angular-cli.json': 'angular', 'filename.js': 'javascript', }; - expect(iconDefinitions).toStrictEqual(expectedConfig); + expect(iconDefinitions).toStrictEqual(expectedManifest); }); it('should disable icon packs', () => { @@ -77,16 +80,15 @@ describe('file icons', () => { ], }; - const options = getDefaultIconOptions(); - options.activeIconPack = ''; - const iconConfig = merge({}, new IconConfiguration(), { options }); + const manifest = createEmptyManifest(); + config.activeIconPack = ''; const iconDefinitions = loadFileIconDefinitions( fileIcons, - iconConfig, - options + config, + manifest ); - expectedConfig.iconDefinitions = { + expectedManifest.iconDefinitions = { file: { iconPath: './../icons/file.svg', }, @@ -94,18 +96,15 @@ describe('file icons', () => { iconPath: './../icons/javascript.svg', }, }; - expectedConfig.file = 'file'; - expectedConfig.fileExtensions = { + expectedManifest.file = 'file'; + expectedManifest.fileExtensions = { js: 'javascript', }; - expectedConfig.fileNames = { + expectedManifest.fileNames = { 'filename.js': 'javascript', }; - // disable default icon pack by using empty string - expectedConfig.options!.activeIconPack = ''; - - expect(iconDefinitions).toStrictEqual(expectedConfig); + expect(iconDefinitions).toStrictEqual(expectedManifest); }); it('should configure custom icon associations', () => { @@ -123,19 +122,19 @@ describe('file icons', () => { }, ], }; - const options = getDefaultIconOptions(); - options.files.associations = { + const config = getDefaultConfig(); + config.files.associations = { '*.sample.ts': 'angular', 'sample.js': 'javascript', }; - const iconConfig = merge({}, new IconConfiguration(), { options }); + const manifest = createEmptyManifest(); const iconDefinitions = loadFileIconDefinitions( fileIcons, - iconConfig, - options + config, + manifest ); - expectedConfig.iconDefinitions = { + expectedManifest.iconDefinitions = { file: { iconPath: './../icons/file.svg', }, @@ -146,23 +145,24 @@ describe('file icons', () => { iconPath: './../icons/angular.svg', }, }; - expectedConfig.file = 'file'; - expectedConfig.fileExtensions = { + expectedManifest.file = 'file'; + expectedManifest.fileExtensions = { js: 'javascript', 'sample.ts': 'angular', }; - expectedConfig.fileNames = { + expectedManifest.fileNames = { '.angular-cli.json': 'angular', 'angular-cli.json': 'angular', 'sample.js': 'javascript', 'filename.js': 'javascript', }; - expectedConfig.options!.files!.associations = { + + config.files.associations = { '*.sample.ts': 'angular', 'sample.js': 'javascript', }; - expect(iconDefinitions).toStrictEqual(expectedConfig); + expect(iconDefinitions).toStrictEqual(expectedManifest); }); it('should configure language icons for light and high contrast', () => { @@ -183,14 +183,14 @@ describe('file icons', () => { }, ], }; - const options = getDefaultIconOptions(); - const iconConfig = merge({}, new IconConfiguration(), { options }); + + const manifest = createEmptyManifest(); const iconDefinitions = loadFileIconDefinitions( fileIcons, - iconConfig, - options + config, + manifest ); - expectedConfig.iconDefinitions = { + expectedManifest.iconDefinitions = { file: { iconPath: './../icons/file.svg', }, @@ -217,11 +217,11 @@ describe('file icons', () => { iconPath: './../icons/angular.svg', }, }; - expectedConfig.file = 'file'; - expectedConfig.fileExtensions = { + expectedManifest.file = 'file'; + expectedManifest.fileExtensions = { js: 'javascript', }; - expectedConfig.light = { + expectedManifest.light = { file: 'file_light', fileExtensions: { js: 'javascript_light', @@ -230,7 +230,7 @@ describe('file icons', () => { 'filename.js': 'javascript_light', }, }; - expectedConfig.highContrast = { + expectedManifest.highContrast = { file: 'file_highContrast', fileExtensions: { js: 'javascript_highContrast', @@ -239,13 +239,13 @@ describe('file icons', () => { 'filename.js': 'javascript_highContrast', }, }; - expectedConfig.fileNames = { + expectedManifest.fileNames = { '.angular-cli.json': 'angular', 'angular-cli.json': 'angular', 'filename.js': 'javascript', }; - expect(iconDefinitions).toStrictEqual(expectedConfig); + expect(iconDefinitions).toStrictEqual(expectedManifest); }); it('should generate cloned file icons config', () => { @@ -270,15 +270,14 @@ describe('file icons', () => { ], }; - const options = getDefaultIconOptions(); - const iconConfig = merge({}, new IconConfiguration(), { options }); + const manifest = createEmptyManifest(); const iconDefinitions = loadFileIconDefinitions( fileIcons, - iconConfig, - options + config, + manifest ); - expectedConfig.iconDefinitions = { + expectedManifest.iconDefinitions = { foo: { iconPath: './../icons/foo.svg', }, @@ -292,7 +291,7 @@ describe('file icons', () => { iconPath: './../icons/file.svg', }, }; - expectedConfig.light = { + expectedManifest.light = { fileExtensions: { baz: 'foo-clone_light', }, @@ -300,16 +299,16 @@ describe('file icons', () => { 'bar.foo': 'foo-clone_light', }, }; - expectedConfig.fileNames = { + expectedManifest.fileNames = { 'foo.bar': 'foo', 'bar.foo': 'foo-clone', }; - expectedConfig.fileExtensions = { + expectedManifest.fileExtensions = { baz: 'foo-clone', }; - expectedConfig.file = 'file'; + expectedManifest.file = 'file'; - expect(iconDefinitions).toStrictEqual(expectedConfig); + expect(iconDefinitions).toStrictEqual(expectedManifest); }); it('should allow interoperability between cloned and user custom associations', () => { @@ -332,20 +331,18 @@ describe('file icons', () => { ], }; - const options = getDefaultIconOptions(); - options.files.associations = { + config.files.associations = { '*.baz': 'bar', // assigned to the clone }; - const iconConfig = merge({}, new IconConfiguration(), { options }); + const manifest = createEmptyManifest(); const iconDefinitions = loadFileIconDefinitions( fileIcons, - iconConfig, - options + config, + manifest ); - expectedConfig.options = options; - expectedConfig.iconDefinitions = { + expectedManifest.iconDefinitions = { foo: { iconPath: './../icons/foo.svg', }, @@ -356,14 +353,14 @@ describe('file icons', () => { iconPath: './../icons/file.svg', }, }; - expectedConfig.fileNames = {}; - expectedConfig.fileExtensions = { + expectedManifest.fileNames = {}; + expectedManifest.fileExtensions = { foo: 'foo', bar: 'bar', baz: 'bar', }; - expectedConfig.file = 'file'; + expectedManifest.file = 'file'; - expect(iconDefinitions).toStrictEqual(expectedConfig); + expect(iconDefinitions).toStrictEqual(expectedManifest); }); }); diff --git a/src/tests/icons/filename-pattern.test.ts b/src/core/tests/icons/filename-pattern.test.ts similarity index 92% rename from src/tests/icons/filename-pattern.test.ts rename to src/core/tests/icons/filename-pattern.test.ts index 9163dcb8b3..8cc54316b2 100644 --- a/src/tests/icons/filename-pattern.test.ts +++ b/src/core/tests/icons/filename-pattern.test.ts @@ -1,10 +1,10 @@ import { describe, expect, it } from 'bun:test'; -import { parseByPattern } from '../../icons/patterns'; +import type { FileIcon } from '../../models/icons/files/fileIcon'; import { - type FileIcon, type FileIconWithPatterns, FileNamePattern, -} from '../../models'; +} from '../../models/icons/patterns/patterns'; +import { parseByPattern } from '../../patterns/patterns'; describe('File name patterns', () => { it('should add a pattern to the file names', () => { diff --git a/src/tests/icons/folderIcons.test.ts b/src/core/tests/icons/folderIcons.test.ts similarity index 70% rename from src/tests/icons/folderIcons.test.ts rename to src/core/tests/icons/folderIcons.test.ts index f0fa90db30..200ee65c30 100644 --- a/src/tests/icons/folderIcons.test.ts +++ b/src/core/tests/icons/folderIcons.test.ts @@ -1,11 +1,15 @@ import { beforeAll, beforeEach, describe, expect, it } from 'bun:test'; -import merge from 'lodash.merge'; -import { getDefaultIconOptions, loadFolderIconDefinitions } from '../../icons'; -import { type FolderTheme, IconConfiguration, IconPack } from '../../models'; +import { getDefaultConfig } from '../../generator/config/defaultConfig'; +import { loadFolderIconDefinitions } from '../../generator/folderGenerator'; +import type { Config } from '../../models/icons/config'; +import type { FolderTheme } from '../../models/icons/folders/folderTheme'; +import { IconPack } from '../../models/icons/iconPack'; +import { type Manifest, createEmptyManifest } from '../../models/manifest'; describe('folder icons', () => { let folderIcons: FolderTheme[]; - let expectedConfig: IconConfiguration; + let expectedManifest: Manifest; + let config: Config; beforeAll(() => { folderIcons = [ @@ -22,32 +26,25 @@ describe('folder icons', () => { }, ], }, - { - name: 'blue', - defaultIcon: { name: 'folder-blue' }, - icons: [{ name: 'folder-blue-src', folderNames: ['src', 'source'] }], - }, { name: 'classic', defaultIcon: { name: 'folder' } }, { name: 'none', defaultIcon: { name: '' } }, ]; }); beforeEach(() => { - expectedConfig = merge({}, new IconConfiguration(), { - options: getDefaultIconOptions(), - }); + config = getDefaultConfig(); + expectedManifest = createEmptyManifest(); }); it('should configure icon definitions', () => { - const options = getDefaultIconOptions(); - const iconConfig = merge({}, new IconConfiguration(), { options }); + const manifest = createEmptyManifest(); const iconDefinitions = loadFolderIconDefinitions( folderIcons, - iconConfig, - options + config, + manifest ); - expectedConfig.iconDefinitions = { + expectedManifest.iconDefinitions = { folder: { iconPath: './../icons/folder.svg', }, @@ -73,11 +70,11 @@ describe('folder icons', () => { iconPath: './../icons/folder-angular-open.svg', }, }; - expectedConfig.folder = 'folder'; - expectedConfig.folderExpanded = 'folder-open'; - expectedConfig.rootFolder = 'folder-root'; - expectedConfig.rootFolderExpanded = 'folder-root-open'; - expectedConfig.folderNames = { + expectedManifest.folder = 'folder'; + expectedManifest.folderExpanded = 'folder-open'; + expectedManifest.rootFolder = 'folder-root'; + expectedManifest.rootFolderExpanded = 'folder-root-open'; + expectedManifest.folderNames = { src: 'folder-src', source: 'folder-src', angular: 'folder-angular', @@ -95,7 +92,7 @@ describe('folder icons', () => { '.angular': 'folder-angular', '.ng': 'folder-angular', }; - expectedConfig.folderNamesExpanded = { + expectedManifest.folderNamesExpanded = { src: 'folder-src-open', source: 'folder-src-open', angular: 'folder-angular-open', @@ -113,96 +110,67 @@ describe('folder icons', () => { '.angular': 'folder-angular-open', '.ng': 'folder-angular-open', }; - expectedConfig.hidesExplorerArrows = false; + expectedManifest.hidesExplorerArrows = false; - expect(iconDefinitions).toStrictEqual(expectedConfig); + expect(iconDefinitions).toStrictEqual(expectedManifest); }); it('should deactivate folder icons', () => { - const options = getDefaultIconOptions(); - options.folders.theme = 'none'; - const iconConfig = merge({}, new IconConfiguration(), { options }); + config.folders.theme = 'none'; + const manifest = createEmptyManifest(); const iconDefinitions = loadFolderIconDefinitions( folderIcons, - iconConfig, - options + config, + manifest ); - expectedConfig.iconDefinitions = {}; - expectedConfig.folderNames = {}; - expectedConfig.folderNamesExpanded = {}; - expectedConfig.hidesExplorerArrows = false; - expectedConfig.options!.folders!.theme = 'none'; + expectedManifest.iconDefinitions = {}; + expectedManifest.folderNames = {}; + expectedManifest.folderNamesExpanded = {}; + expectedManifest.hidesExplorerArrows = false; - expect(iconDefinitions).toStrictEqual(expectedConfig); + expect(iconDefinitions).toStrictEqual(expectedManifest); }); - it('should enable folder theme', () => { - const options = getDefaultIconOptions(); - options.folders.theme = 'blue'; - const iconConfig = merge({}, new IconConfiguration(), { options }); + it('should change folder theme', () => { + config.folders.theme = 'classic'; + const manifest = createEmptyManifest(); const iconDefinitions = loadFolderIconDefinitions( folderIcons, - iconConfig, - options + config, + manifest ); - expectedConfig.iconDefinitions = { - 'folder-blue': { - iconPath: './../icons/folder-blue.svg', - }, - 'folder-blue-open': { - iconPath: './../icons/folder-blue-open.svg', - }, - 'folder-blue-src': { - iconPath: './../icons/folder-blue-src.svg', + expectedManifest.iconDefinitions = { + folder: { + iconPath: './../icons/folder.svg', }, - 'folder-blue-src-open': { - iconPath: './../icons/folder-blue-src-open.svg', + 'folder-open': { + iconPath: './../icons/folder-open.svg', }, }; - expectedConfig.folder = 'folder-blue'; - expectedConfig.folderExpanded = 'folder-blue-open'; - expectedConfig.rootFolder = 'folder-blue'; - expectedConfig.rootFolderExpanded = 'folder-blue-open'; - expectedConfig.folderNames = { - src: 'folder-blue-src', - source: 'folder-blue-src', - _src: 'folder-blue-src', - _source: 'folder-blue-src', - __src__: 'folder-blue-src', - __source__: 'folder-blue-src', - '.src': 'folder-blue-src', - '.source': 'folder-blue-src', - }; - expectedConfig.folderNamesExpanded = { - src: 'folder-blue-src-open', - source: 'folder-blue-src-open', - _src: 'folder-blue-src-open', - _source: 'folder-blue-src-open', - __src__: 'folder-blue-src-open', - __source__: 'folder-blue-src-open', - '.src': 'folder-blue-src-open', - '.source': 'folder-blue-src-open', - }; - expectedConfig.hidesExplorerArrows = false; - expectedConfig.options!.folders!.theme = 'blue'; + expectedManifest.folder = 'folder'; + expectedManifest.folderExpanded = 'folder-open'; + expectedManifest.rootFolder = 'folder'; + expectedManifest.rootFolderExpanded = 'folder-open'; + expectedManifest.folderNames = {}; + expectedManifest.folderNamesExpanded = {}; + expectedManifest.hidesExplorerArrows = false; - expect(iconDefinitions).toStrictEqual(expectedConfig); + expect(iconDefinitions).toStrictEqual(expectedManifest); }); it('should configure custom icon associations', () => { - const options = getDefaultIconOptions(); - options.folders.associations = { + config.folders.associations = { sample: 'src', }; - const iconConfig = merge({}, new IconConfiguration(), { options }); + const manifest = createEmptyManifest(); const iconDefinitions = loadFolderIconDefinitions( folderIcons, - iconConfig, - options + config, + manifest ); - expectedConfig.iconDefinitions = { + expectedManifest.iconDefinitions = { folder: { iconPath: './../icons/folder.svg', }, @@ -228,11 +196,11 @@ describe('folder icons', () => { iconPath: './../icons/folder-angular-open.svg', }, }; - expectedConfig.folder = 'folder'; - expectedConfig.folderExpanded = 'folder-open'; - expectedConfig.rootFolder = 'folder-root'; - expectedConfig.rootFolderExpanded = 'folder-root-open'; - expectedConfig.folderNames = { + expectedManifest.folder = 'folder'; + expectedManifest.folderExpanded = 'folder-open'; + expectedManifest.rootFolder = 'folder-root'; + expectedManifest.rootFolderExpanded = 'folder-root-open'; + expectedManifest.folderNames = { src: 'folder-src', source: 'folder-src', angular: 'folder-angular', @@ -254,7 +222,7 @@ describe('folder icons', () => { '.ng': 'folder-angular', '.sample': 'folder-src', }; - expectedConfig.folderNamesExpanded = { + expectedManifest.folderNamesExpanded = { src: 'folder-src-open', source: 'folder-src-open', angular: 'folder-angular-open', @@ -276,24 +244,20 @@ describe('folder icons', () => { '.ng': 'folder-angular-open', '.sample': 'folder-src-open', }; - expectedConfig.hidesExplorerArrows = false; - expectedConfig.options!.folders!.associations = { - sample: 'src', - }; + expectedManifest.hidesExplorerArrows = false; - expect(iconDefinitions).toStrictEqual(expectedConfig); + expect(iconDefinitions).toStrictEqual(expectedManifest); }); it('should disable icon packs', () => { - const options = getDefaultIconOptions(); - options.activeIconPack = ''; - const iconConfig = merge({}, new IconConfiguration(), { options }); + const manifest = createEmptyManifest(); + config.activeIconPack = ''; const iconDefinitions = loadFolderIconDefinitions( folderIcons, - iconConfig, - options + config, + manifest ); - expectedConfig.iconDefinitions = { + expectedManifest.iconDefinitions = { folder: { iconPath: './../icons/folder.svg', }, @@ -313,11 +277,11 @@ describe('folder icons', () => { iconPath: './../icons/folder-src-open.svg', }, }; - expectedConfig.folder = 'folder'; - expectedConfig.folderExpanded = 'folder-open'; - expectedConfig.rootFolder = 'folder-root'; - expectedConfig.rootFolderExpanded = 'folder-root-open'; - expectedConfig.folderNames = { + expectedManifest.folder = 'folder'; + expectedManifest.folderExpanded = 'folder-open'; + expectedManifest.rootFolder = 'folder-root'; + expectedManifest.rootFolderExpanded = 'folder-root-open'; + expectedManifest.folderNames = { src: 'folder-src', source: 'folder-src', _src: 'folder-src', @@ -327,7 +291,7 @@ describe('folder icons', () => { '.src': 'folder-src', '.source': 'folder-src', }; - expectedConfig.folderNamesExpanded = { + expectedManifest.folderNamesExpanded = { src: 'folder-src-open', source: 'folder-src-open', _src: 'folder-src-open', @@ -337,16 +301,12 @@ describe('folder icons', () => { '.src': 'folder-src-open', '.source': 'folder-src-open', }; - expectedConfig.hidesExplorerArrows = false; - - // disable default icon pack by using empty string - expectedConfig.options!.activeIconPack = ''; + expectedManifest.hidesExplorerArrows = false; - expect(iconDefinitions).toStrictEqual(expectedConfig); + expect(iconDefinitions).toStrictEqual(expectedManifest); }); it('should configure folder icons for light and high contrast', () => { - const options = getDefaultIconOptions(); const lightHighContrastFolderIcons: FolderTheme[] = [ { name: 'specific', @@ -362,13 +322,13 @@ describe('folder icons', () => { ], }, ]; - const iconConfig = merge({}, new IconConfiguration(), { options }); + const manifest = createEmptyManifest(); const iconDefinitions = loadFolderIconDefinitions( lightHighContrastFolderIcons, - iconConfig, - options + config, + manifest ); - expectedConfig.iconDefinitions = { + expectedManifest.iconDefinitions = { folder: { iconPath: './../icons/folder.svg', }, @@ -426,11 +386,11 @@ describe('folder icons', () => { iconPath: './../icons/folder-src-open_highContrast.svg', }, }; - expectedConfig.folder = 'folder'; - expectedConfig.folderExpanded = 'folder-open'; - expectedConfig.rootFolder = 'folder-root'; - expectedConfig.rootFolderExpanded = 'folder-root-open'; - expectedConfig.folderNames = { + expectedManifest.folder = 'folder'; + expectedManifest.folderExpanded = 'folder-open'; + expectedManifest.rootFolder = 'folder-root'; + expectedManifest.rootFolderExpanded = 'folder-root-open'; + expectedManifest.folderNames = { src: 'folder-src', source: 'folder-src', _src: 'folder-src', @@ -440,7 +400,7 @@ describe('folder icons', () => { '.src': 'folder-src', '.source': 'folder-src', }; - expectedConfig.folderNamesExpanded = { + expectedManifest.folderNamesExpanded = { src: 'folder-src-open', source: 'folder-src-open', _src: 'folder-src-open', @@ -450,7 +410,7 @@ describe('folder icons', () => { '.src': 'folder-src-open', '.source': 'folder-src-open', }; - expectedConfig.light = { + expectedManifest.light = { fileExtensions: {}, fileNames: {}, folder: 'folder_light', @@ -478,7 +438,7 @@ describe('folder icons', () => { '.source': 'folder-src-open_light', }, }; - expectedConfig.highContrast = { + expectedManifest.highContrast = { fileExtensions: {}, fileNames: {}, folder: 'folder_highContrast', @@ -506,18 +466,17 @@ describe('folder icons', () => { '.source': 'folder-src-open_highContrast', }, }; - expectedConfig.hidesExplorerArrows = false; - expect(iconDefinitions).toStrictEqual(expectedConfig); + expectedManifest.hidesExplorerArrows = false; + expect(iconDefinitions).toStrictEqual(expectedManifest); }); it('should hide explorer arrows', () => { - const options = getDefaultIconOptions(); - options.hidesExplorerArrows = true; - const iconConfig = merge({}, new IconConfiguration(), { options }); + const manifest = createEmptyManifest(); + config.hidesExplorerArrows = true; const iconDefinitions = loadFolderIconDefinitions( folderIcons, - iconConfig, - options + config, + manifest ); expect(iconDefinitions.hidesExplorerArrows).toBe(true); @@ -545,15 +504,14 @@ describe('folder icons', () => { }, ]; - const options = getDefaultIconOptions(); - const iconConfig = merge({}, new IconConfiguration(), { options }); + const manifest = createEmptyManifest(); const iconDefinitions = loadFolderIconDefinitions( folderTheme, - iconConfig, - options + config, + manifest ); - expectedConfig.iconDefinitions = { + expectedManifest.iconDefinitions = { foo: { iconPath: './../icons/foo.svg' }, 'foo-open': { iconPath: './../icons/foo-open.svg' }, 'foo-clone': { iconPath: './../icons/foo-clone.clone.svg' }, @@ -567,11 +525,11 @@ describe('folder icons', () => { 'folder-root-open': { iconPath: './../icons/folder-root-open.svg' }, folder: { iconPath: './../icons/folder.svg' }, }; - expectedConfig.folder = 'folder'; - expectedConfig.folderExpanded = 'folder-open'; - expectedConfig.rootFolder = 'folder-root'; - expectedConfig.rootFolderExpanded = 'folder-root-open'; - expectedConfig.folderNames = { + expectedManifest.folder = 'folder'; + expectedManifest.folderExpanded = 'folder-open'; + expectedManifest.rootFolder = 'folder-root'; + expectedManifest.rootFolderExpanded = 'folder-root-open'; + expectedManifest.folderNames = { foo: 'foo', '.foo': 'foo', _foo: 'foo', @@ -589,7 +547,7 @@ describe('folder icons', () => { _qux: 'foo-clone', __qux__: 'foo-clone', }; - expectedConfig.folderNamesExpanded = { + expectedManifest.folderNamesExpanded = { foo: 'foo-open', '.foo': 'foo-open', _foo: 'foo-open', @@ -607,7 +565,7 @@ describe('folder icons', () => { _qux: 'foo-clone-open', __qux__: 'foo-clone-open', }; - expectedConfig.light = { + expectedManifest.light = { fileExtensions: {}, fileNames: {}, folderNames: { @@ -631,9 +589,9 @@ describe('folder icons', () => { __qux__: 'foo-clone-open_light', }, }; - expectedConfig.hidesExplorerArrows = false; + expectedManifest.hidesExplorerArrows = false; - expect(iconDefinitions).toStrictEqual(expectedConfig); + expect(iconDefinitions).toStrictEqual(expectedManifest); }); it('should allow interoperability between cloned and user custom associations', () => { @@ -656,20 +614,18 @@ describe('folder icons', () => { }, ]; - const options = getDefaultIconOptions(); - options.folders.associations = { + config.folders.associations = { baz: 'bar', // assigned to the clone }; - const iconConfig = merge({}, new IconConfiguration(), { options }); + const manifest = createEmptyManifest(); const iconDefinitions = loadFolderIconDefinitions( folderTheme, - iconConfig, - options + config, + manifest ); - expectedConfig.options = options; - expectedConfig.iconDefinitions = { + expectedManifest.iconDefinitions = { 'folder-foo': { iconPath: './../icons/folder-foo.svg' }, 'folder-foo-open': { iconPath: './../icons/folder-foo-open.svg' }, 'folder-bar': { iconPath: './../icons/folder-bar.clone.svg' }, @@ -679,11 +635,11 @@ describe('folder icons', () => { 'folder-root': { iconPath: './../icons/folder-root.svg' }, 'folder-root-open': { iconPath: './../icons/folder-root-open.svg' }, }; - expectedConfig.folder = 'folder'; - expectedConfig.folderExpanded = 'folder-open'; - expectedConfig.rootFolder = 'folder-root'; - expectedConfig.rootFolderExpanded = 'folder-root-open'; - expectedConfig.folderNames = { + expectedManifest.folder = 'folder'; + expectedManifest.folderExpanded = 'folder-open'; + expectedManifest.rootFolder = 'folder-root'; + expectedManifest.rootFolderExpanded = 'folder-root-open'; + expectedManifest.folderNames = { '.bar': 'folder-bar', '.baz': 'folder-bar', '.foo': 'folder-foo', @@ -697,7 +653,7 @@ describe('folder icons', () => { baz: 'folder-bar', foo: 'folder-foo', }; - expectedConfig.folderNamesExpanded = { + expectedManifest.folderNamesExpanded = { '.bar': 'folder-bar-open', '.baz': 'folder-bar-open', '.foo': 'folder-foo-open', @@ -712,12 +668,12 @@ describe('folder icons', () => { foo: 'folder-foo-open', }; - expectedConfig.light = { + expectedManifest.light = { fileExtensions: {}, fileNames: {}, }; - expectedConfig.hidesExplorerArrows = false; + expectedManifest.hidesExplorerArrows = false; - expect(iconDefinitions).toStrictEqual(expectedConfig); + expect(iconDefinitions).toStrictEqual(expectedManifest); }); }); diff --git a/src/tests/icons/languageIcons.test.ts b/src/core/tests/icons/languageIcons.test.ts similarity index 60% rename from src/tests/icons/languageIcons.test.ts rename to src/core/tests/icons/languageIcons.test.ts index f3580d814e..a8d415f4a9 100644 --- a/src/tests/icons/languageIcons.test.ts +++ b/src/core/tests/icons/languageIcons.test.ts @@ -1,18 +1,18 @@ import { beforeEach, describe, expect, it } from 'bun:test'; -import merge from 'lodash.merge'; -import { - getDefaultIconOptions, - loadLanguageIconDefinitions, -} from '../../icons'; -import { IconConfiguration, IconPack, type LanguageIcon } from '../../models'; +import { getDefaultConfig } from '../../generator/config/defaultConfig'; +import { loadLanguageIconDefinitions } from '../../generator/languageGenerator'; +import type { Config } from '../../models/icons/config'; +import { IconPack } from '../../models/icons/iconPack'; +import type { LanguageIcon } from '../../models/icons/languages/languageIdentifier'; +import { type Manifest, createEmptyManifest } from '../../models/manifest'; describe('language icons', () => { - let expectedConfig: IconConfiguration; + let expectedManifest: Manifest; + let config: Config; beforeEach(() => { - expectedConfig = merge({}, new IconConfiguration(), { - options: getDefaultIconOptions(), - }); + expectedManifest = createEmptyManifest(); + config = getDefaultConfig(); }); it('should configure icon definitions', () => { @@ -21,15 +21,14 @@ describe('language icons', () => { { icon: { name: 'b' }, ids: ['b'] }, { icon: { name: 'c' }, ids: ['c', 'd'] }, ]; - const options = getDefaultIconOptions(); - const iconConfig = merge({}, new IconConfiguration(), { options }); + const manifest = createEmptyManifest(); const iconDefinitions = loadLanguageIconDefinitions( languageIcons, - iconConfig, - options + config, + manifest ); - expectedConfig.iconDefinitions = { + expectedManifest.iconDefinitions = { a: { iconPath: './../icons/a.svg', }, @@ -40,13 +39,13 @@ describe('language icons', () => { iconPath: './../icons/c.svg', }, }; - expectedConfig.languageIds = { + expectedManifest.languageIds = { a: 'a', b: 'b', c: 'c', d: 'c', }; - expect(iconDefinitions).toStrictEqual(expectedConfig); + expect(iconDefinitions).toStrictEqual(expectedManifest); }); it('should disable icon definitions', () => { @@ -54,23 +53,22 @@ describe('language icons', () => { { icon: { name: 'a' }, ids: ['a'] }, { icon: { name: 'c' }, ids: ['c', 'd'], disabled: true }, ]; - const options = getDefaultIconOptions(); - const iconConfig = merge({}, new IconConfiguration(), { options }); + const manifest = createEmptyManifest(); const iconDefinitions = loadLanguageIconDefinitions( languageIcons, - iconConfig, - options + config, + manifest ); - expectedConfig.iconDefinitions = { + expectedManifest.iconDefinitions = { a: { iconPath: './../icons/a.svg', }, }; - expectedConfig.languageIds = { + expectedManifest.languageIds = { a: 'a', }; - expect(iconDefinitions).toStrictEqual(expectedConfig); + expect(iconDefinitions).toStrictEqual(expectedManifest); }); it('should disable icon packs', () => { @@ -78,17 +76,18 @@ describe('language icons', () => { { icon: { name: 'a' }, ids: ['a'], enabledFor: [IconPack.Angular] }, { icon: { name: 'c' }, ids: ['c', 'd'], disabled: true }, ]; - const options = getDefaultIconOptions(); - const iconConfig = merge({}, new IconConfiguration(), { options }); + + config.activeIconPack = ''; + const manifest = createEmptyManifest(); const iconDefinitions = loadLanguageIconDefinitions( languageIcons, - iconConfig, - { ...options, activeIconPack: '' } + config, + manifest ); - expectedConfig.iconDefinitions = {}; - expectedConfig.languageIds = {}; - expect(iconDefinitions).toStrictEqual(expectedConfig); + expectedManifest.iconDefinitions = {}; + expectedManifest.languageIds = {}; + expect(iconDefinitions).toStrictEqual(expectedManifest); }); it('should configure language icons for light and high contrast', () => { @@ -96,14 +95,14 @@ describe('language icons', () => { { icon: { name: 'a', light: true, highContrast: true }, ids: ['a'] }, { icon: { name: 'b', light: true, highContrast: true }, ids: ['b'] }, ]; - const options = getDefaultIconOptions(); - const iconConfig = merge({}, new IconConfiguration(), { options }); + + const manifest = createEmptyManifest(); const iconDefinitions = loadLanguageIconDefinitions( languageIcons, - iconConfig, - options + config, + manifest ); - expectedConfig.iconDefinitions = { + expectedManifest.iconDefinitions = { a: { iconPath: './../icons/a.svg', }, @@ -127,11 +126,11 @@ describe('language icons', () => { iconPath: './../icons/b_highContrast.svg', }, }; - expectedConfig.languageIds = { + expectedManifest.languageIds = { a: 'a', b: 'b', }; - expectedConfig.light = { + expectedManifest.light = { fileExtensions: {}, fileNames: {}, languageIds: { @@ -139,7 +138,7 @@ describe('language icons', () => { b: 'b_light', }, }; - expectedConfig.highContrast = { + expectedManifest.highContrast = { fileExtensions: {}, fileNames: {}, languageIds: { @@ -147,36 +146,36 @@ describe('language icons', () => { b: 'b_highContrast', }, }; - expect(iconDefinitions).toStrictEqual(expectedConfig); + expect(iconDefinitions).toStrictEqual(expectedManifest); }); it('should configure custom icon associations', () => { const languageIcons: LanguageIcon[] = [ { icon: { name: 'json' }, ids: ['a'] }, ]; - const options = getDefaultIconOptions(); - options.languages.associations = { - xml: 'json', + + const manifest = createEmptyManifest(); + config.languages = { + associations: { + xml: 'json', + }, }; - const iconConfig = merge({}, new IconConfiguration(), { options }); const iconDefinitions = loadLanguageIconDefinitions( languageIcons, - iconConfig, - options + config, + manifest ); - expectedConfig.iconDefinitions = { + expectedManifest.iconDefinitions = { json: { iconPath: './../icons/json.svg', }, }; - expectedConfig.languageIds = { + expectedManifest.languageIds = { a: 'json', xml: 'json', }; - expectedConfig.options!.languages!.associations = { - xml: 'json', - }; - expect(iconDefinitions).toStrictEqual(expectedConfig); + + expect(iconDefinitions).toStrictEqual(expectedManifest); }); }); diff --git a/src/tests/mocks/index.ts b/src/core/tests/mocks/index.ts similarity index 100% rename from src/tests/mocks/index.ts rename to src/core/tests/mocks/index.ts diff --git a/src/tests/mocks/vscode.ts b/src/core/tests/mocks/vscode.ts similarity index 100% rename from src/tests/mocks/vscode.ts rename to src/core/tests/mocks/vscode.ts diff --git a/src/core/types/recursivePartial.ts b/src/core/types/recursivePartial.ts new file mode 100644 index 0000000000..2c0042c2e4 --- /dev/null +++ b/src/core/types/recursivePartial.ts @@ -0,0 +1,3 @@ +export type RecursivePartial = { + [P in keyof T]?: RecursivePartial; +}; diff --git a/src/helpers/types.ts b/src/core/types/requiredAtLeastOne.ts similarity index 100% rename from src/helpers/types.ts rename to src/core/types/requiredAtLeastOne.ts diff --git a/src/extension.ts b/src/extension.ts deleted file mode 100644 index fe481ba96a..0000000000 --- a/src/extension.ts +++ /dev/null @@ -1,37 +0,0 @@ -'use strict'; - -import { type ExtensionContext, window as codeWindow, workspace } from 'vscode'; -import { registered } from './commands'; -import { detectConfigChanges } from './helpers/changeDetection'; -import { initTranslations } from './i18n'; - -/** - * This method is called when the extension is activated. - * It initializes the core functionality of the extension. - */ -export const activate = async (context: ExtensionContext) => { - try { - await initTranslations(); - - // Subscribe to the extension commands - context.subscriptions.push(...registered); - - // Initially trigger the config change detection - detectConfigChanges(); - - // Observe changes in the config - workspace.onDidChangeConfiguration(detectConfigChanges); - - // Observe if the window got focused to trigger config changes - codeWindow.onDidChangeWindowState((state) => { - if (state.focused) { - detectConfigChanges(); - } - }); - } catch (error) { - console.error(error); - } -}; - -/** This method is called when the extension is deactivated */ -export const deactivate = () => {}; diff --git a/src/commands/activate.ts b/src/extension/commands/activate.ts similarity index 54% rename from src/commands/activate.ts rename to src/extension/commands/activate.ts index 0b60bb5289..e5c625da50 100644 --- a/src/commands/activate.ts +++ b/src/extension/commands/activate.ts @@ -1,6 +1,6 @@ import { window as codeWindow } from 'vscode'; -import { getConfig } from '../helpers'; -import { translate } from '../i18n'; +import { extensionName, logger, translate } from '../../core'; +import { getConfig } from '../shared/config'; /** Activate the icon theme by changing the settings for the iconTheme. */ export const activateIcons = () => { @@ -11,18 +11,15 @@ export const activateIcons = () => { const setIconTheme = async () => { // global user config try { - await getConfig().update( - 'workbench.iconTheme', - 'material-icon-theme', - true - ); + const section = 'workbench.iconTheme'; + await getConfig().update(section, extensionName, true); // local workspace config - if (getConfig().inspect('workbench.iconTheme')?.workspaceValue) { - getConfig().update('workbench.iconTheme', 'material-icon-theme'); + if (getConfig().inspect(section)?.workspaceValue) { + getConfig().update(section, extensionName); } codeWindow.showInformationMessage(translate('activated')); } catch (error) { - console.error(error); + logger.error(error); } }; diff --git a/src/commands/explorerArrows.ts b/src/extension/commands/explorerArrows.ts similarity index 82% rename from src/commands/explorerArrows.ts rename to src/extension/commands/explorerArrows.ts index 182d47d32a..99ea78dc3f 100644 --- a/src/commands/explorerArrows.ts +++ b/src/extension/commands/explorerArrows.ts @@ -1,15 +1,15 @@ import { type QuickPickItem, window as codeWindow } from 'vscode'; -import { getMaterialIconsJSON, setThemeConfig } from '../helpers'; -import { translate } from '../i18n'; +import { logger, translate } from '../../core'; +import { getThemeConfig, setThemeConfig } from '../shared/config'; /** Command to toggle the explorer arrows. */ export const toggleExplorerArrows = async () => { try { - const status = checkArrowStatus(); + const status = areExplorerArrowsHidden(); const response = await showQuickPickItems(status); return handleQuickPickActions(response); } catch (error) { - console.error(error); + logger.error(error); } }; @@ -49,7 +49,6 @@ const handleQuickPickActions = (value: QuickPickItem | undefined) => { } }; -/** Check if arrows are enabled. */ -export const checkArrowStatus = (): boolean => { - return !!getMaterialIconsJSON()?.hidesExplorerArrows; +export const areExplorerArrowsHidden = (): boolean => { + return getThemeConfig('hidesExplorerArrows') === true; }; diff --git a/src/commands/fileColor.ts b/src/extension/commands/fileColor.ts similarity index 86% rename from src/commands/fileColor.ts rename to src/extension/commands/fileColor.ts index 34825f243c..bd1fb3d6c9 100644 --- a/src/commands/fileColor.ts +++ b/src/extension/commands/fileColor.ts @@ -1,12 +1,16 @@ import { type QuickPickItem, window as codeWindow } from 'vscode'; -import { getMaterialIconsJSON, setThemeConfig } from '../helpers'; -import { translate } from '../i18n'; -import { getDefaultIconOptions, validateHEXColorCode } from '../icons'; +import { + getDefaultConfig, + logger, + translate, + validateHEXColorCode, +} from '../../core'; +import { getThemeConfig, setThemeConfig } from '../shared/config'; -interface FileColor { +type FileColor = { label: string; hex: string; -} +}; const iconPalette: FileColor[] = [ { label: 'Grey (Default)', hex: '#90a4ae' }, @@ -28,7 +32,7 @@ export const changeFileColor = async () => { handleQuickPickActions(response); } } catch (error) { - console.error(error); + logger.error(error); } }; @@ -77,9 +81,8 @@ const validateColorInput = (colorInput: string) => { /** Check status of the file color */ export const checkFileColorStatus = (): string => { - const defaultOptions = getDefaultIconOptions(); - const config = getMaterialIconsJSON(); - return config?.options?.files?.color ?? defaultOptions.files.color!; + const defaultConfig = getDefaultConfig(); + return getThemeConfig('files.color') ?? defaultConfig.files.color; }; const setColorConfig = (value: string) => { diff --git a/src/commands/folderColor.ts b/src/extension/commands/folderColor.ts similarity index 86% rename from src/commands/folderColor.ts rename to src/extension/commands/folderColor.ts index db5a880132..78046490a9 100644 --- a/src/commands/folderColor.ts +++ b/src/extension/commands/folderColor.ts @@ -1,12 +1,16 @@ import { type QuickPickItem, window as codeWindow } from 'vscode'; -import { getMaterialIconsJSON, setThemeConfig } from '../helpers'; -import { translate } from '../i18n'; -import { getDefaultIconOptions, validateHEXColorCode } from '../icons'; +import { + getDefaultConfig, + logger, + translate, + validateHEXColorCode, +} from '../../core'; +import { getThemeConfig, setThemeConfig } from '../shared/config'; -interface FolderColor { +type FolderColor = { label: string; hex: string; -} +}; const iconPalette: FolderColor[] = [ { label: 'Grey (Default)', hex: '#90a4ae' }, @@ -28,7 +32,7 @@ export const changeFolderColor = async () => { handleQuickPickActions(response); } } catch (error) { - console.error(error); + logger.error(error); } }; @@ -77,9 +81,9 @@ const validateColorInput = (colorInput: string) => { /** Check status of the folder color */ export const checkFolderColorStatus = (): string => { - const defaultOptions = getDefaultIconOptions(); - const config = getMaterialIconsJSON(); - return config?.options?.folders?.color ?? defaultOptions.folders.color!; + const defaultConfig = getDefaultConfig(); + const folderColorConfig = getThemeConfig('folders.color'); + return folderColorConfig ?? defaultConfig.folders.color!; }; const setColorConfig = (value: string) => { diff --git a/src/commands/folders.ts b/src/extension/commands/folders.ts similarity index 79% rename from src/commands/folders.ts rename to src/extension/commands/folders.ts index 1ed62a7ba5..24406aba74 100644 --- a/src/commands/folders.ts +++ b/src/extension/commands/folders.ts @@ -1,11 +1,12 @@ import { type QuickPickItem, window as codeWindow } from 'vscode'; import { + type FolderThemeName, capitalizeFirstLetter, - getMaterialIconsJSON, - setThemeConfig, -} from '../helpers'; -import { translate } from '../i18n'; -import { folderIcons } from '../icons'; + folderIcons, + logger, + translate, +} from '../../core'; +import { getThemeConfig, setThemeConfig } from '../shared/config'; /** Command to toggle the folder icons. */ export const changeFolderTheme = async () => { @@ -16,12 +17,12 @@ export const changeFolderTheme = async () => { handleQuickPickActions(response); } } catch (error) { - console.error(error); + logger.error(error); } }; /** Show QuickPick items to select preferred configuration for the folder icons. */ -const showQuickPickItems = (activeTheme: string) => { +const showQuickPickItems = (activeTheme: FolderThemeName) => { const options = folderIcons.map( (theme): QuickPickItem => ({ description: capitalizeFirstLetter(theme.name), @@ -50,6 +51,6 @@ const handleQuickPickActions = (value: QuickPickItem) => { }; /** Get the current folder theme. */ -export const getFolderIconTheme = (): string => { - return getMaterialIconsJSON()?.options?.folders?.theme ?? ''; +export const getFolderIconTheme = () => { + return getThemeConfig('folders.theme') ?? 'none'; }; diff --git a/src/commands/grayscale.ts b/src/extension/commands/grayscale.ts similarity index 88% rename from src/commands/grayscale.ts rename to src/extension/commands/grayscale.ts index 392e816a63..70f7bcc430 100644 --- a/src/commands/grayscale.ts +++ b/src/extension/commands/grayscale.ts @@ -1,6 +1,6 @@ import { type QuickPickItem, window as codeWindow } from 'vscode'; -import { getMaterialIconsJSON, setThemeConfig } from '../helpers'; -import { translate } from '../i18n'; +import { logger, translate } from '../../core'; +import { getThemeConfig, setThemeConfig } from '../shared/config'; /** Command to toggle grayscale. */ export const toggleGrayscale = async () => { @@ -11,7 +11,7 @@ export const toggleGrayscale = async () => { handleQuickPickActions(response); } } catch (error) { - console.error(error); + logger.error(error); } }; @@ -51,5 +51,5 @@ const handleQuickPickActions = (value: QuickPickItem) => { /** Is grayscale icons enabled? */ export const checkGrayscaleStatus = (): boolean => { - return getMaterialIconsJSON()?.options?.saturation === 0; + return getThemeConfig('saturation') === 0; }; diff --git a/src/commands/iconPacks.ts b/src/extension/commands/iconPacks.ts similarity index 72% rename from src/commands/iconPacks.ts rename to src/extension/commands/iconPacks.ts index 0b76924463..2524bde521 100644 --- a/src/commands/iconPacks.ts +++ b/src/extension/commands/iconPacks.ts @@ -1,7 +1,8 @@ import { type QuickPickItem, window as codeWindow } from 'vscode'; -import { getMaterialIconsJSON, setThemeConfig, toTitleCase } from '../helpers'; -import { translate } from '../i18n'; -import { IconPack } from '../models'; +import { logger, toTitleCase, translate } from '../../core'; +import { availableIconPacks } from '../../core/helpers/iconPacks'; +import type { IconPackValue } from '../../core/models/icons/iconPack'; +import { getThemeConfig, setThemeConfig } from '../shared/config'; /** Command to toggle the icons packs */ export const toggleIconPacks = async () => { @@ -12,13 +13,16 @@ export const toggleIconPacks = async () => { handleQuickPickActions(response); } } catch (error) { - console.error(error); + logger.error(error); } }; /** Show QuickPick items to select preferred configuration for the icon packs. */ -const showQuickPickItems = (activePack: string) => { - const packs = [...getAllIconPacks().sort(), 'none']; +const showQuickPickItems = (activePack: IconPackValue) => { + const packs = [...availableIconPacks.sort(), 'none'] as ( + | IconPackValue + | 'none' + )[]; const options = packs.map((pack): QuickPickItem => { const packLabel = toTitleCase(pack.replace('_', ' + ')); const active = isPackActive(activePack, pack); @@ -45,18 +49,15 @@ const showQuickPickItems = (activePack: string) => { /** Handle the actions from the QuickPick. */ const handleQuickPickActions = (value: QuickPickItem) => { if (!value || !value.description) return; - const decision = value.description.replace(' + ', '_').toLowerCase(); + const decision = value.description.replace(' + ', '_').toLowerCase() as + | IconPackValue + | 'none'; setThemeConfig('activeIconPack', decision === 'none' ? '' : decision, true); }; -const getActiveIconPack = (): string => { - return getMaterialIconsJSON()?.options?.activeIconPack ?? ''; -}; - -/** Get all packs that can be used in this icon theme. */ -export const getAllIconPacks = (): string[] => { - return Object.values(IconPack).map((p) => p.toLowerCase()); +const getActiveIconPack = () => { + return getThemeConfig('activeIconPack') ?? ''; }; const isPackActive = (activePack: string, pack: string) => { diff --git a/src/commands/opacity.ts b/src/extension/commands/opacity.ts similarity index 75% rename from src/commands/opacity.ts rename to src/extension/commands/opacity.ts index 7d8f80d589..3776c7a126 100644 --- a/src/commands/opacity.ts +++ b/src/extension/commands/opacity.ts @@ -1,7 +1,11 @@ import { window as codeWindow } from 'vscode'; -import { getMaterialIconsJSON, setThemeConfig } from '../helpers'; -import { translate } from '../i18n'; -import { getDefaultIconOptions, validateOpacityValue } from '../icons'; +import { + getDefaultConfig, + logger, + translate, + validateOpacityValue, +} from '../../core'; +import { getThemeConfig, setThemeConfig } from '../shared/config'; /** Command to toggle the folder icons. */ export const changeOpacity = async () => { @@ -12,7 +16,7 @@ export const changeOpacity = async () => { await setOpacityConfig(+response); } } catch (error) { - console.error(error); + logger.error(error); } }; @@ -36,9 +40,8 @@ const validateOpacityInput = (opacityInput: string) => { /** Get the current value of the opacity of the icons. */ export const getCurrentOpacityValue = (): number => { - const defaultOptions = getDefaultIconOptions(); - const config = getMaterialIconsJSON(); - return config?.options?.opacity ?? defaultOptions.opacity; + const defaultConfig = getDefaultConfig(); + return getThemeConfig('opacity') ?? defaultConfig.opacity; }; const setOpacityConfig = (opacity: number) => { diff --git a/src/extension/commands/restoreConfig.ts b/src/extension/commands/restoreConfig.ts new file mode 100644 index 0000000000..388c1b7ec8 --- /dev/null +++ b/src/extension/commands/restoreConfig.ts @@ -0,0 +1,11 @@ +import { getConfigProperties, setConfig } from '../shared/config'; + +/** Restore all configurations to default. */ +export const restoreDefaultConfig = async () => { + const configProperties = Object.keys(getConfigProperties()); + await Promise.all( + configProperties.map((configProperty) => + setConfig(configProperty, undefined, true) + ) + ); +}; diff --git a/src/commands/saturation.ts b/src/extension/commands/saturation.ts similarity index 76% rename from src/commands/saturation.ts rename to src/extension/commands/saturation.ts index a639109944..d19f18129d 100644 --- a/src/commands/saturation.ts +++ b/src/extension/commands/saturation.ts @@ -1,7 +1,11 @@ import { window as codeWindow } from 'vscode'; -import { getMaterialIconsJSON, setThemeConfig } from '../helpers'; -import { translate } from '../i18n'; -import { getDefaultIconOptions, validateSaturationValue } from '../icons'; +import { + getDefaultConfig, + logger, + translate, + validateSaturationValue, +} from '../../core'; +import { getThemeConfig, setThemeConfig } from '../shared/config'; /** Command to toggle the folder icons. */ export const changeSaturation = async () => { @@ -12,7 +16,7 @@ export const changeSaturation = async () => { await setSaturationConfig(+response); } } catch (error) { - console.error(error); + logger.error(error); } }; @@ -36,9 +40,8 @@ const validateSaturationInput = (saturationInput: string) => { /** Get the current value of the saturation of the icons. */ export const getCurrentSaturationValue = (): number => { - const defaultOptions = getDefaultIconOptions(); - const config = getMaterialIconsJSON(); - return config?.options?.saturation ?? defaultOptions.saturation; + const defaultConfig = getDefaultConfig(); + return getThemeConfig('saturation') ?? defaultConfig.saturation; }; const setSaturationConfig = (saturation: number) => { diff --git a/src/extension/desktop/extension.ts b/src/extension/desktop/extension.ts new file mode 100644 index 0000000000..0341500c20 --- /dev/null +++ b/src/extension/desktop/extension.ts @@ -0,0 +1,41 @@ +'use strict'; + +import { type ExtensionContext, env, workspace } from 'vscode'; +import { initTranslations, logger } from '../../core'; +import { disableLogObserver, observeLogs } from '../logging/logger'; +import { detectConfigChanges } from '../tools/changeDetection'; +import { registered } from '../tools/registered'; + +/** + * This method is called when the extension is activated. + * It initializes the core functionality of the extension. + */ +export const activate = async (context: ExtensionContext) => { + try { + observeLogs(); + + await initTranslations(env.language); + + // Subscribe to the extension commands + context.subscriptions.push(...registered); + + // Initially trigger the config change detection + await detectConfigChanges(undefined, context); + + // Observe changes in the config + context.subscriptions.push( + workspace.onDidChangeConfiguration( + async (event) => await detectConfigChanges(event, context) + ) + ); + + logger.info('Extension activated!'); + } catch (error) { + logger.error(error); + } +}; + +/** This method is called when the extension is deactivated */ +export const deactivate = () => { + disableLogObserver(); +}; diff --git a/src/extension/logging/logger.ts b/src/extension/logging/logger.ts new file mode 100644 index 0000000000..41a058cf97 --- /dev/null +++ b/src/extension/logging/logger.ts @@ -0,0 +1,42 @@ +import { EventEmitter } from 'node:events'; +import { type OutputChannel, window } from 'vscode'; +import { + type LogLevel, + createLoggingObserver, + extensionName, + toTitleCase, +} from '../../core'; +import { getThemeConfig } from '../shared/config'; + +let eventEmitter: EventEmitter | undefined; + +/** + * Observe log events and write them to the output channel. + */ +export const observeLogs = () => { + const logLevel = getThemeConfig('logLevel') ?? 'info'; + const isLoggingEnabled = getThemeConfig('enableLogging') ?? false; + + let outputChannel: OutputChannel | undefined; + + if (isLoggingEnabled) { + // Create the output channel only if logging is enabled + outputChannel = window.createOutputChannel( + toTitleCase(extensionName.replaceAll('-', ' ')) + ); + } + + eventEmitter = createLoggingObserver(logLevel, (event) => { + if (outputChannel) { + outputChannel.appendLine(event.message); + } else { + console.log(event.message); + } + }); +}; + +export const disableLogObserver = () => { + if (eventEmitter) { + eventEmitter.removeAllListeners(); + } +}; diff --git a/src/extension/shared/config.ts b/src/extension/shared/config.ts new file mode 100644 index 0000000000..d73f2360b4 --- /dev/null +++ b/src/extension/shared/config.ts @@ -0,0 +1,114 @@ +import { extensions, workspace } from 'vscode'; +import { type Config, extensionName, extensionPublisher } from '../../core'; +import { merge, set } from '../../core/helpers/object'; + +/** Get configuration of vs code. */ +export const getConfig = (section?: string) => { + return workspace.getConfiguration(section); +}; + +/** Get list of configuration entries of package.json */ +export const getConfigProperties = (): { [config: string]: unknown } => { + return extensions.getExtension(`${extensionPublisher}.${extensionName}`) + ?.packageJSON?.contributes?.configuration?.properties; +}; + +/** Get list of all configration properties */ +export const configPropertyNames = Object.keys(getConfigProperties()); + +/** Update configuration of vs code. */ +export const setConfig = (section: string, value: unknown, global = false) => { + return getConfig().update(section, value, global); +}; + +/** Get current configuration of the theme from the vscode config */ +export const getThemeConfig = (section: string): T | undefined => { + const themeConfig = getConfig(extensionName).inspect(section); + return getConfigValue(themeConfig); +}; + +/** Set the config of the theme. */ +export const setThemeConfig = ( + section: string, + value: unknown, + global = false +) => { + return getConfig(extensionName).update(section, value, global); +}; + +/** + * Checks if the theme is the active icon theme + * @param{boolean} global false by default + */ +export const isThemeActivated = (global = false): boolean => { + return global + ? getConfig().inspect('workbench.iconTheme')?.globalValue === extensionName + : getConfig().inspect('workbench.iconTheme')?.workspaceValue === + extensionName; +}; + +/** Checks if the theme is not the active icon theme */ +export const isThemeNotVisible = (): boolean => { + const config = getConfig().inspect('workbench.iconTheme'); + return ( + (!isThemeActivated(true) && !config?.workspaceValue) || // no workspace and not global + (!isThemeActivated() && !!config?.workspaceValue) + ); +}; + +/** + * Returns the value of a specific configuration by checking the workspace and the user configuration and fallback to the default value. + * + * @param themeConfig Theme configuration + * @returns Actual theme configuration value + */ +const getConfigValue = ( + themeConfig: Partial< + | { + globalValue: T; + workspaceValue: T; + defaultValue: T; + } + | undefined + > +) => { + let configValue: T | undefined; + if (themeConfig === undefined) { + return undefined; + } + if ( + typeof themeConfig.workspaceValue === 'object' && + themeConfig.workspaceValue && + themeConfig.globalValue + ) { + configValue = merge(themeConfig.workspaceValue, themeConfig.globalValue); + } else { + configValue = + themeConfig.workspaceValue ?? + themeConfig.globalValue ?? + themeConfig.defaultValue; + } + return configValue; +}; + +/** + * Get the current configuration of the theme. + * + * @returns Current configuration + */ +export const getCurrentConfig = (): Config => { + const updatedConfig = configPropertyNames.reduce>( + (acc, configNameWithExtensionId) => { + const configName = configNameWithExtensionId.replace( + `${extensionName}.`, + '' + ); + const configValue = getThemeConfig(configName) ?? null; + set(acc, configName, configValue); + return acc; + }, + {} + ); + + return updatedConfig as Config; +}; diff --git a/src/extension/tools/changeDetection.ts b/src/extension/tools/changeDetection.ts new file mode 100644 index 0000000000..4fcd3bf383 --- /dev/null +++ b/src/extension/tools/changeDetection.ts @@ -0,0 +1,83 @@ +import { join } from 'node:path'; +import deepEqual from 'fast-deep-equal'; +import type { ConfigurationChangeEvent, ExtensionContext } from 'vscode'; +import { + type Config, + applyConfigToIcons, + clearCloneFolder, + customClonesIcons, + extensionName, + generateManifest, + hasCustomClones, + logger, + manifestName, + merge, + padWithDefaultConfig, + renameIconFiles, + resolvePath, + writeToFile, +} from '../../core'; +import { getCurrentConfig } from '../shared/config'; + +/** Compare the workspace and the user configurations with the current setup of the icons. */ +export const detectConfigChanges = async ( + event: ConfigurationChangeEvent | undefined, + context: ExtensionContext +) => { + // if the changed config is not related to the extension + if (event?.affectsConfiguration(extensionName) === false) return; + + const oldConfig = getConfigFromStorage(context); + const config = getCurrentConfig(); + + // if the configuration has not changed + if (deepEqual(config, oldConfig)) return; + + await applyConfigToIcons(config, oldConfig); + + logger.info('Configuration changes detected and applied!'); + + await renameIconFiles(config); + const manifest = generateManifest(config); + + // clear the clone folder + await clearCloneFolder(hasCustomClones(config)); + + const manifestWithClones = merge( + manifest, + await customClonesIcons(manifest, config) + ); + + const iconJsonPath = join(resolvePath(manifestName)); + await writeToFile( + iconJsonPath, + JSON.stringify(manifestWithClones, undefined, 2), + 'utf-8' + ); + + logger.info('Updated the manifest file.'); + + logger.debug( + 'Applied configuration: ' + JSON.stringify(config, undefined, 2) + ); + + syncConfigWithStorage(config, context); +}; + +const syncConfigWithStorage = (config: Config, context: ExtensionContext) => { + context.globalState.update('config', { + version: context.extension.packageJSON.version, + config, + }); +}; + +const getConfigFromStorage = (context: ExtensionContext): Config => { + const config = context.globalState.get<{ version: string; config: Config }>( + 'config' + ); + if (context.extension.packageJSON.version === config?.version) { + return padWithDefaultConfig(config?.config); + } else { + return padWithDefaultConfig(); + } +}; diff --git a/src/extension/tools/registered.ts b/src/extension/tools/registered.ts new file mode 100644 index 0000000000..d97ff59be1 --- /dev/null +++ b/src/extension/tools/registered.ts @@ -0,0 +1,33 @@ +import { commands } from 'vscode'; +import { extensionName } from '../../core'; +import { activateIcons } from '../commands/activate'; +import { toggleExplorerArrows } from '../commands/explorerArrows'; +import { changeFileColor } from '../commands/fileColor'; +import { changeFolderColor } from '../commands/folderColor'; +import { changeFolderTheme } from '../commands/folders'; +import { toggleGrayscale } from '../commands/grayscale'; +import { toggleIconPacks } from '../commands/iconPacks'; +import { changeOpacity } from '../commands/opacity'; +import { restoreDefaultConfig } from '../commands/restoreConfig'; +import { changeSaturation } from '../commands/saturation'; + +const extensionCommands: { [commmand: string]: () => Promise } = { + activateIcons, + toggleIconPacks, + changeFolderTheme, + changeFolderColor, + changeFileColor, + restoreDefaultConfig, + toggleExplorerArrows, + changeOpacity, + toggleGrayscale, + changeSaturation, +}; + +export const registered = Object.keys(extensionCommands).map((commandName) => { + const callCommand = () => extensionCommands[commandName](); + return commands.registerCommand( + `${extensionName}.${commandName}`, + callCommand + ); +}); diff --git a/src/web/extension.ts b/src/extension/web/extension.ts similarity index 100% rename from src/web/extension.ts rename to src/extension/web/extension.ts diff --git a/src/helpers/changeDetection.ts b/src/helpers/changeDetection.ts deleted file mode 100644 index 0362f7064c..0000000000 --- a/src/helpers/changeDetection.ts +++ /dev/null @@ -1,109 +0,0 @@ -import merge from 'lodash.merge'; -import { getConfigProperties, getMaterialIconsJSON, getThemeConfig } from '.'; -import { createIconFile } from '../icons/index'; -import { IconJsonOptions } from '../models'; -import { getObjectPropertyValue, setObjectPropertyValue } from './objects'; - -/** Compare the workspace and the user configurations with the current setup of the icons. */ -export const detectConfigChanges = () => { - const changes = compareConfigs(); - - // if there's nothing to update - if (Object.keys(changes.updatedConfigs).length === 0) return; - - try { - // update icon json file with new options - createIconFile(changes.updatedConfigs, changes.updatedJSONConfig); - } catch (error) { - console.error(error); - } -}; - -/** - * Compares a specific configuration in the settings with a current configuration state. - * The current configuration state is read from the icons json file. - * @returns List of configurations that needs to be updated. - */ -const compareConfigs = (): { - updatedConfigs: IconJsonOptions; - updatedJSONConfig: IconJsonOptions; -} => { - const configPropertyNames = Object.keys(getConfigProperties()) - .map((c) => c.split('.').slice(1).join('.')) - // remove configurable notification messages - .filter((c) => !/show(Welcome|Update|Reload)Message/g.test(c)); - - const json = getMaterialIconsJSON(); - return configPropertyNames.reduce( - (result, configName) => { - try { - const themeConfig = getThemeConfig(configName) ?? { - globalValue: '', - workspaceValue: '', - defaultValue: '', - }; - - const configValue = getConfigValue( - themeConfig as { - globalValue: unknown; - workspaceValue: unknown; - defaultValue: unknown; - } - ); - - const currentState = getObjectPropertyValue( - json.options ?? {}, - configName - ); - - if (JSON.stringify(configValue) !== JSON.stringify(currentState)) { - setObjectPropertyValue(json.options as {}, configName, configValue); - setObjectPropertyValue( - result.updatedConfigs, - configName, - configValue - ); - } - } catch (error) { - console.error(error); - } - - return result; - }, - { - updatedConfigs: {} as IconJsonOptions, - updatedJSONConfig: json.options as IconJsonOptions, - } - ); -}; - -/** - * Returns the value of a specific configuration by checking the workspace and the user configuration and fallback to the default value. - * - * @param themeConfig Theme configuration - * @returns Actual theme configuration value - */ -const getConfigValue = (themeConfig: { - globalValue: unknown; - workspaceValue: unknown; - defaultValue: unknown; -}) => { - let configValue; - if ( - typeof themeConfig.workspaceValue === 'object' && - themeConfig.workspaceValue && - themeConfig.globalValue - ) { - configValue = merge( - {}, - themeConfig.workspaceValue, - themeConfig.globalValue - ); - } else { - configValue = - themeConfig.workspaceValue ?? - themeConfig.globalValue ?? - themeConfig.defaultValue; - } - return configValue; -}; diff --git a/src/helpers/customIcons.ts b/src/helpers/customIcons.ts deleted file mode 100644 index cc7c5b6d30..0000000000 --- a/src/helpers/customIcons.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { dirname, join } from 'node:path'; -import { IconJsonOptions } from '../models'; - -export const getCustomIconPaths = (options: IconJsonOptions) => { - return Object.values(options?.files?.associations ?? {}) - .filter((v) => v.match(/^[.\/]+/)) // <- custom dirs have a relative path to the dist folder - .map((v) => dirname(join(__dirname, v))); -}; diff --git a/src/helpers/fileConfig.ts b/src/helpers/fileConfig.ts deleted file mode 100644 index 6f53ed5dff..0000000000 --- a/src/helpers/fileConfig.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { getDefaultIconOptions } from '../icons'; -import { IconJsonOptions } from '../models'; - -/** - * Generate a config hashed string that is appended to each icon file name. - * @param config Icon Configuration object - */ -export const getFileConfigHash = (options: IconJsonOptions): string => { - try { - const defaults = getDefaultIconOptions(); - let fileConfigString = ''; - if ( - options.saturation !== defaults.saturation || - options.opacity !== defaults.opacity || - options.folders?.color !== defaults.folders.color || - options.files?.color !== defaults.files.color || - (options.files?.customClones?.length ?? 0) > 0 || - (options.folders?.customClones?.length ?? 0) > 0 - ) { - fileConfigString += `~${getHash(JSON.stringify(options))}`; - } - return fileConfigString; - } catch (error) { - console.error(error); - return ''; - } -}; - -const getHash = (value: string) => { - let hash = 0; - let chr = 0; - - if (value.length === 0) return hash; - for (let i = 0; i < value.length; i++) { - chr = value.charCodeAt(i); - hash = (hash << 5) - hash + chr; - hash |= 0; // Convert to 32bit integer - } - return hash; -}; diff --git a/src/helpers/index.ts b/src/helpers/index.ts deleted file mode 100644 index e4e4c45517..0000000000 --- a/src/helpers/index.ts +++ /dev/null @@ -1,88 +0,0 @@ -import { readFileSync } from 'node:fs'; -import { join } from 'node:path'; -import { extensions, workspace } from 'vscode'; -import { iconJsonName } from '../icons/index'; -import { IconConfiguration } from '../models/index'; - -/** Get configuration of vs code. */ -export const getConfig = (section?: string) => { - return workspace.getConfiguration(section); -}; - -/** Get list of configuration entries of package.json */ -export const getConfigProperties = (): { [config: string]: unknown } => { - return extensions.getExtension('PKief.material-icon-theme')?.packageJSON - ?.contributes?.configuration?.properties; -}; - -/** Update configuration of vs code. */ -export const setConfig = ( - section: string, - value: any, - global: boolean = false -) => { - return getConfig().update(section, value, global); -}; - -export const getThemeConfig = (section: string) => { - return getConfig('material-icon-theme').inspect(section); -}; - -/** Set the config of the theme. */ -export const setThemeConfig = ( - section: string, - value: any, - global: boolean = false -) => { - return getConfig('material-icon-theme').update(section, value, global); -}; - -/** - * Checks if the theme is the active icon theme - * @param{boolean} global false by default - */ -export const isThemeActivated = (global: boolean = false): boolean => { - return global - ? getConfig().inspect('workbench.iconTheme')?.globalValue === - 'material-icon-theme' - : getConfig().inspect('workbench.iconTheme')?.workspaceValue === - 'material-icon-theme'; -}; - -/** Checks if the theme is not the active icon theme */ -export const isThemeNotVisible = (): boolean => { - const config = getConfig().inspect('workbench.iconTheme'); - return ( - (!isThemeActivated(true) && !config?.workspaceValue) || // no workspace and not global - (!isThemeActivated() && !!config?.workspaceValue) - ); -}; - -/** Return the path of the extension in the file system. */ -const getExtensionPath = () => - extensions.getExtension('PKief.material-icon-theme')?.extensionPath ?? ''; - -/** Get the configuration of the icons as JSON Object */ -export const getMaterialIconsJSON = (): IconConfiguration => { - const iconJSONPath = join(getExtensionPath(), 'dist', iconJsonName); - - try { - const data = readFileSync(iconJSONPath, 'utf8'); - return JSON.parse(data); - } catch (error) { - console.error(error); - return {}; - } -}; - -/** Capitalize the first letter of a string */ -export const capitalizeFirstLetter = (name: string): string => - name.charAt(0).toUpperCase() + name.slice(1); - -/** TitleCase all words in a string */ -export const toTitleCase = (value: string) => { - return value.replace( - /\w\S*/g, - (text) => text.charAt(0).toUpperCase() + text.substr(1).toLowerCase() - ); -}; diff --git a/src/helpers/objects.ts b/src/helpers/objects.ts deleted file mode 100644 index 82711d006a..0000000000 --- a/src/helpers/objects.ts +++ /dev/null @@ -1,58 +0,0 @@ -/** - * Get the nested properties of an object. - * This solution is lighter than the lodash get-version. - * Source: http://stackoverflow.com/a/6491621/6942210 - */ -export const getObjectPropertyValue = (obj: Object, path: string) => { - const pathArray = path - .replace(/\[(\w+)\]/g, '.$1') // convert indexes to properties - .replace(/^\./, '') // strip a leading dot - .split('.'); // separate paths in array - - /** Avoid errors in the getValue function. */ - const isObject = (object: unknown) => { - return object === Object(object); - }; - let result = JSON.parse(JSON.stringify(obj)); - - for (let i = 0; i < pathArray.length; ++i) { - const k = pathArray[i]; - if (isObject(result) && k in result) { - result = result[k]; - } else { - return; - } - } - return result; -}; - -/** - * Set a value for a nested object property. - * @param obj Object - * @param path Properties as string e.g. `'a.b.c'` - * @param value Value to be set for the given property - * Source: https://stackoverflow.com/a/13719799/6942210 - */ -export const setObjectPropertyValue = ( - obj: { [key: string]: any }, - path: string | string[], - value: any -) => { - if (typeof path === 'string') { - path = path.split('.'); - } - - if (path.length > 1) { - const e = path.shift() ?? ''; - setObjectPropertyValue( - (obj[e] = - Object.prototype.toString.call(obj[e]) === '[object Object]' - ? obj[e] - : {}), - path, - value - ); - } else { - obj[path[0]] = value; - } -}; diff --git a/src/icons/generator/constants.ts b/src/icons/generator/constants.ts deleted file mode 100644 index fbf1cf3f3e..0000000000 --- a/src/icons/generator/constants.ts +++ /dev/null @@ -1,39 +0,0 @@ -/** - * Path where the icons are located. - */ -export const iconFolderPath: string = './../icons/'; - -/** - * File name of the JSON file that will be generated to the out folder. - */ -export const iconJsonName: string = 'material-icons.json'; - -/** - * File ending for opened folders. - */ -export const openedFolder: string = '-open'; - -/** - * File ending for light icons. - */ -export const lightColorFileEnding: string = '_light'; - -/** - * File ending for high contrast icons. - */ -export const highContrastColorFileEnding: string = '_highContrast'; - -/** - * Pattern to match the file icon definition. - */ -export const cloneIconExtension: string = '.clone.svg'; - -/** - * User Defined Clones subfolder - */ -export const clonesFolder: string = 'clones/'; - -/** - * Pattern to match wildcards for custom file icon mappings. - */ -export const wildcardPattern = new RegExp(/^\*{1,2}\./); diff --git a/src/icons/generator/iconOpacity.ts b/src/icons/generator/iconOpacity.ts deleted file mode 100644 index cdc9bceaa2..0000000000 --- a/src/icons/generator/iconOpacity.ts +++ /dev/null @@ -1,114 +0,0 @@ -import { lstatSync, readFileSync, readdirSync, writeFileSync } from 'node:fs'; -import { basename, join } from 'node:path'; -import { getCustomIconPaths } from '../../helpers/customIcons'; -import { type IconJsonOptions } from '../../models'; - -/** - * Changes the opacity of all icons in the set. - * @param options Icon JSON options which include the opacity value. - * @param fileNames Only change the opacity of certain file names. - */ -export const setIconOpacity = ( - options: IconJsonOptions, - fileNames?: string[] -) => { - if (!validateOpacityValue(options.opacity)) { - return console.error( - 'Invalid opacity value! Opacity must be a decimal number between 0 and 1!' - ); - } - - let iconsPath = ''; - if (basename(__dirname) === 'dist') { - iconsPath = join(__dirname, '..', 'icons'); - } else { - // executed via script - iconsPath = join(__dirname, '..', '..', '..', 'icons'); - } - - const customIconPaths = getCustomIconPaths(options); - const iconFiles = readdirSync(iconsPath); - - try { - // read all icon files from the icons folder - (fileNames || iconFiles).forEach(adjustOpacity(iconsPath, options)); - - customIconPaths.forEach((iconPath) => { - const customIcons = readdirSync(iconPath); - customIcons.forEach(adjustOpacity(iconPath, options)); - }); - } catch (error) { - console.error(error); - } -}; - -/** - * Validate the opacity value. - * @param opacity Opacity value - */ -export const validateOpacityValue = (opacity: number | undefined) => { - return opacity !== undefined && opacity <= 1 && opacity >= 0; -}; - -/** - * Get the SVG root element. - * @param svg SVG file as string. - */ -const getSVGRootElement = (svg: string) => { - const result = new RegExp(/]*>/).exec(svg); - return result?.[0]; -}; - -/** - * Add an opacity attribute to the SVG icon to control the opacity of the icon. - * @param svgRoot Root element of the SVG icon. - * @param opacity Opacity value. - */ -const addOpacityAttribute = (svgRoot: string, opacity: number) => { - const pattern = new RegExp(/\sopacity="[\d.]+"/); - // if the opacity attribute already exists - if (pattern.test(svgRoot)) { - return svgRoot.replace(pattern, ` opacity="${opacity}"`); - } else { - return svgRoot.replace(/^ { - const pattern = new RegExp(/\sopacity="[\d.]+"/); - return svgRoot.replace(pattern, ''); -}; - -const adjustOpacity = ( - iconPath: string, - options: IconJsonOptions -): ((value: string, index: number, array: string[]) => void) => { - return (iconFileName) => { - const svgFilePath = join(iconPath, iconFileName); - if (!lstatSync(svgFilePath).isFile()) { - return; - } - - // Read SVG file - const svg = readFileSync(svgFilePath, 'utf-8'); - - // Get the root element of the SVG file - const svgRootElement = getSVGRootElement(svg); - if (!svgRootElement) return; - - let updatedRootElement: string; - - if (options.opacity !== undefined && options.opacity < 1) { - updatedRootElement = addOpacityAttribute(svgRootElement, options.opacity); - } else { - updatedRootElement = removeOpacityAttribute(svgRootElement); - } - const updatedSVG = svg.replace(/]*>/, updatedRootElement); - - writeFileSync(svgFilePath, updatedSVG); - }; -}; diff --git a/src/icons/generator/iconSaturation.ts b/src/icons/generator/iconSaturation.ts deleted file mode 100644 index 91875c9247..0000000000 --- a/src/icons/generator/iconSaturation.ts +++ /dev/null @@ -1,143 +0,0 @@ -import { lstatSync, readFileSync, readdirSync, writeFileSync } from 'node:fs'; -import { basename, join } from 'node:path'; -import { getCustomIconPaths } from '../../helpers/customIcons'; -import { type IconJsonOptions } from '../../models'; - -/** - * Changes saturation of all icons in the set. - * @param options Icon JSON options which include the saturation value. - * @param fileNames Only change the saturation of certain file names. - */ -export const setIconSaturation = ( - options: IconJsonOptions, - fileNames?: string[] -) => { - if (!validateSaturationValue(options.saturation)) { - return console.error( - 'Invalid saturation value! Saturation must be a decimal number between 0 and 1!' - ); - } - - let iconsPath = ''; - if (basename(__dirname) === 'dist') { - iconsPath = join(__dirname, '..', 'icons'); - } else { - // executed via script - iconsPath = join(__dirname, '..', '..', '..', 'icons'); - } - - const customIconPaths = getCustomIconPaths(options); - const iconFiles = readdirSync(iconsPath); - - // read all icon files from the icons folder - try { - (fileNames || iconFiles).forEach(adjustSaturation(iconsPath, options)); - - customIconPaths.forEach((iconPath) => { - const customIcons = readdirSync(iconPath); - customIcons.forEach(adjustSaturation(iconPath, options)); - }); - } catch (error) { - console.error(error); - } -}; - -/** - * Get the SVG root element. - * @param svg SVG file as string. - */ -const getSVGRootElement = (svg: string) => { - const result = new RegExp(/]*>/).exec(svg); - return result?.[0]; -}; - -/** - * Add an filter attribute to the SVG icon. - * @param svgRoot Root element of the SVG icon. - */ -const addFilterAttribute = (svgRoot: string) => { - const pattern = new RegExp(/\sfilter="[^"]+?"/); - // if the filter attribute already exists - if (pattern.test(svgRoot)) { - return svgRoot.replace(pattern, ' filter="url(#saturation)"'); - } else { - return svgRoot.replace(/^ { - const pattern = new RegExp(/\sfilter="[^"]+?"/); - return svgRoot.replace(pattern, ''); -}; - -/** - * Add filter element to the SVG icon. - * @param svg SVG file as string. - */ -const addFilterElement = (svg: string, value: number) => { - const pattern = new RegExp(/(.*<\/svg>)/); - const filterElement = ``; - if (pattern.test(svg)) { - return svg.replace(pattern, `${filterElement}$1`); - } else { - return svg.replace(/<\/svg>/, `${filterElement}`); - } -}; - -/** - * Remove filter element from the SVG icon. - * @param svg SVG file as string. - */ -const removeFilterElement = (svg: string) => { - const pattern = new RegExp(/(.*<\/svg>)/); - return svg.replace(pattern, '$1'); -}; - -/** - * Validate the saturation value. - * @param saturation Saturation value - */ -export const validateSaturationValue = (saturation: number | undefined) => { - return saturation !== undefined && saturation <= 1 && saturation >= 0; -}; - -const adjustSaturation = ( - iconsPath: any, - options: IconJsonOptions -): ((value: string, index: number, array: string[]) => void) => { - return (iconFileName) => { - const svgFilePath = join(iconsPath, iconFileName); - if (!lstatSync(svgFilePath).isFile()) { - return; - } - - // Read SVG file - const svg = readFileSync(svgFilePath, 'utf-8'); - - // Get the root element of the SVG file - const svgRootElement = getSVGRootElement(svg); - if (!svgRootElement) return; - - let updatedRootElement: string; - - if (options.saturation !== undefined && options.saturation < 1) { - updatedRootElement = addFilterAttribute(svgRootElement); - } else { - updatedRootElement = removeFilterAttribute(svgRootElement); - } - - let updatedSVG = svg.replace(/]*>/, updatedRootElement); - - if (options.saturation !== undefined && options.saturation < 1) { - updatedSVG = addFilterElement(updatedSVG, options.saturation); - } else { - updatedSVG = removeFilterElement(updatedSVG); - } - - writeFileSync(svgFilePath, updatedSVG); - }; -}; diff --git a/src/icons/generator/index.ts b/src/icons/generator/index.ts deleted file mode 100644 index 005e431f84..0000000000 --- a/src/icons/generator/index.ts +++ /dev/null @@ -1,7 +0,0 @@ -export * from './fileGenerator'; -export * from './folderGenerator'; -export * from './languageGenerator'; -export * from './constants'; -export * from './jsonGenerator'; -export * from './iconOpacity'; -export * from './iconSaturation'; diff --git a/src/icons/generator/jsonGenerator.ts b/src/icons/generator/jsonGenerator.ts deleted file mode 100644 index 0d109f4cbd..0000000000 --- a/src/icons/generator/jsonGenerator.ts +++ /dev/null @@ -1,226 +0,0 @@ -import { - existsSync, - readdirSync, - renameSync, - unlinkSync, - writeFileSync, -} from 'node:fs'; -import { basename, join } from 'node:path'; -import merge from 'lodash.merge'; -import { getCustomIconPaths } from '../../helpers/customIcons'; -import { getFileConfigHash } from '../../helpers/fileConfig'; -import { IconConfiguration, type IconJsonOptions } from '../../models/index'; -import { fileIcons } from '../fileIcons'; -import { folderIcons } from '../folderIcons'; -import { languageIcons } from '../languageIcons'; -import { - customClonesIcons, - generateConfiguredClones, -} from './clones/clonesGenerator'; -import { iconJsonName } from './constants'; -import { - generateFileIcons, - generateFolderIcons, - loadFileIconDefinitions, - loadFolderIconDefinitions, - loadLanguageIconDefinitions, - setIconOpacity, - setIconSaturation, - validateHEXColorCode, - validateOpacityValue, - validateSaturationValue, -} from './index'; - -/** - * Generate the complete icon configuration object that can be written as JSON file. - */ -export const generateIconConfigurationObject = ( - options: IconJsonOptions -): IconConfiguration => { - const iconConfig = merge({}, new IconConfiguration(), { options }); - const languageIconDefinitions = loadLanguageIconDefinitions( - languageIcons, - iconConfig, - options - ); - const fileIconDefinitions = loadFileIconDefinitions( - fileIcons, - iconConfig, - options - ); - const folderIconDefinitions = loadFolderIconDefinitions( - folderIcons, - iconConfig, - options - ); - - return merge( - {}, - languageIconDefinitions, - fileIconDefinitions, - folderIconDefinitions - ); -}; - -/** - * Create the JSON file that is responsible for the icons in the editor. - * @param updatedConfigs Options that have been changed. - * @param updatedJSONConfig New JSON options that already include the updatedConfigs. - */ -export const createIconFile = ( - updatedConfigs?: IconJsonOptions, - updatedJSONConfig: IconJsonOptions = {} -) => { - // override the default options with the new options - const options: IconJsonOptions = merge( - {}, - getDefaultIconOptions(), - updatedJSONConfig - ); - let json = generateIconConfigurationObject(options); - - // make sure that the folder color, opacity and saturation values are entered correctly - if ( - updatedConfigs?.opacity && - !validateOpacityValue(updatedConfigs?.opacity) - ) { - throw Error('Material Icons: Invalid opacity value!'); - } - if ( - updatedConfigs?.saturation && - !validateSaturationValue(updatedConfigs?.saturation) - ) { - throw Error('Material Icons: Invalid saturation value!'); - } - if ( - updatedConfigs?.folders?.color && - !validateHEXColorCode(updatedConfigs?.folders?.color) - ) { - throw Error('Material Icons: Invalid folder color value!'); - } - if ( - updatedConfigs?.files?.color && - !validateHEXColorCode(updatedConfigs?.files?.color) - ) { - throw Error('Material Icons: Invalid file color value!'); - } - - try { - let iconJsonPath = __dirname; - // if executed via script - if (basename(__dirname) !== 'dist') { - iconJsonPath = join(__dirname, '..', '..', '..', 'dist'); - } - if (!updatedConfigs || (updatedConfigs.files || {}).color) { - // if updatedConfigs do not exist (because of initial setup) - // or new config value was detected by the change detection - generateFileIcons(options.files?.color); - setIconOpacity(options, ['file.svg']); - } - if (!updatedConfigs || (updatedConfigs.folders || {}).color) { - // if updatedConfigs do not exist (because of initial setup) - // or new config value was detected by the change detection - generateFolderIcons(options.folders?.color); - setIconOpacity(options, [ - 'folder.svg', - 'folder-open.svg', - 'folder-root.svg', - 'folder-root-open.svg', - ]); - } - if (!updatedConfigs || updatedConfigs.opacity !== undefined) { - setIconOpacity(options); - } - if (!updatedConfigs || updatedConfigs.saturation !== undefined) { - setIconSaturation(options); - } - renameIconFiles(iconJsonPath, options); - - // create configured icon clones at build time - if (!updatedConfigs) { - console.log('Generating icon clones...'); - generateConfiguredClones(folderIcons, json); - generateConfiguredClones(fileIcons, json); - } - - // generate custom cloned icons set by the user via vscode options - // after opacity and saturation have been set so that those changes - // are also applied to the user defined clones - json = merge({}, json, customClonesIcons(json, options)); - } catch (error) { - throw new Error('Failed to update icons: ' + error); - } - - try { - let iconJsonPath = __dirname; - // if executed via script - if (basename(__dirname) !== 'dist') { - iconJsonPath = join(__dirname, '..', '..', '..', 'dist'); - } - writeFileSync( - join(iconJsonPath, iconJsonName), - JSON.stringify(json, undefined, 2), - 'utf-8' - ); - } catch (error) { - throw new Error('Failed to create icon file: ' + error); - } - - return iconJsonName; -}; - -/** - * The options control the generator and decide which icons are disabled or not. - */ -export const getDefaultIconOptions = (): Required => ({ - folders: { - theme: 'specific', - color: '#90a4ae', - associations: {}, - }, - activeIconPack: 'angular', - hidesExplorerArrows: false, - opacity: 1, - saturation: 1, - files: { - color: '#90a4ae', - associations: {}, - }, - languages: { associations: {} }, -}); - -/** - * Rename all icon files according their respective config - * @param iconJsonPath Path of icon json folder - * @param options Icon Json Options - */ -const renameIconFiles = (iconJsonPath: string, options: IconJsonOptions) => { - const customPaths = getCustomIconPaths(options); - const defaultIconPath = join(iconJsonPath, '..', 'icons'); - const iconPaths = [defaultIconPath, ...customPaths]; - - iconPaths.forEach((iconPath) => { - readdirSync(iconPath) - .filter((f) => f.match(/\.svg/gi)) - .forEach((f) => { - const filePath = join(iconPath, f); - const fileConfigHash = getFileConfigHash(options); - - // append file config to file name - const newFilePath = join( - iconPath, - f.replace( - /(^[^\.~]+).*?(\.clone\.svg|\.svg)/, - `$1${fileConfigHash}$2` - ) - ); - - // if generated files are already in place, do not overwrite them - if (filePath !== newFilePath && existsSync(newFilePath)) { - unlinkSync(filePath); - } else { - renameSync(filePath, newFilePath); - } - }); - }); -}; diff --git a/src/icons/generator/languageGenerator.ts b/src/icons/generator/languageGenerator.ts deleted file mode 100644 index 03983204aa..0000000000 --- a/src/icons/generator/languageGenerator.ts +++ /dev/null @@ -1,127 +0,0 @@ -import merge from 'lodash.merge'; -import { getFileConfigHash } from '../../helpers/fileConfig'; -import { - type DefaultIcon, - type IconAssociations, - IconConfiguration, - type IconJsonOptions, - type LanguageIcon, -} from '../../models/index'; -import { - highContrastColorFileEnding, - iconFolderPath, - lightColorFileEnding, -} from './constants'; - -/** - * Get all file icons that can be used in this theme. - */ -export const loadLanguageIconDefinitions = ( - languages: LanguageIcon[], - config: IconConfiguration, - options: IconJsonOptions -): IconConfiguration => { - config = merge({}, config); - const enabledLanguages = disableLanguagesByPack( - languages, - options.activeIconPack - ); - const customIcons = getCustomIcons(options.languages?.associations); - const allLanguageIcons = [...enabledLanguages, ...customIcons]; - - allLanguageIcons.forEach((lang) => { - if (lang.disabled) return; - config = setIconDefinitions(config, lang.icon); - config = merge( - {}, - config, - setLanguageIdentifiers(lang.icon.name, lang.ids) - ); - config.light = lang.icon.light - ? merge( - {}, - config.light, - setLanguageIdentifiers( - lang.icon.name + lightColorFileEnding, - lang.ids - ) - ) - : config.light; - config.highContrast = lang.icon.highContrast - ? merge( - {}, - config.highContrast, - setLanguageIdentifiers( - lang.icon.name + highContrastColorFileEnding, - lang.ids - ) - ) - : config.highContrast; - }); - - return config; -}; - -const setIconDefinitions = (config: IconConfiguration, icon: DefaultIcon) => { - config = merge({}, config); - config = createIconDefinitions(config, icon.name); - config = merge( - {}, - config, - icon.light - ? createIconDefinitions(config, icon.name + lightColorFileEnding) - : config.light - ); - config = merge( - {}, - config, - icon.highContrast - ? createIconDefinitions(config, icon.name + highContrastColorFileEnding) - : config.highContrast - ); - return config; -}; - -const createIconDefinitions = (config: IconConfiguration, iconName: string) => { - config = merge({}, config); - const fileConfigHash = getFileConfigHash(config.options ?? {}); - if (config.iconDefinitions) { - config.iconDefinitions[iconName] = { - iconPath: `${iconFolderPath}${iconName}${fileConfigHash}.svg`, - }; - } - return config; -}; - -const setLanguageIdentifiers = (iconName: string, languageIds: string[]) => { - const obj: Partial = { languageIds: {} }; - languageIds.forEach((id) => { - obj.languageIds![id as keyof IconConfiguration] = iconName; - }); - return obj; -}; - -const getCustomIcons = (languageAssociations: IconAssociations | undefined) => { - if (!languageAssociations) return []; - - const icons: LanguageIcon[] = Object.keys(languageAssociations).map((fa) => ({ - icon: { name: languageAssociations[fa].toLowerCase() }, - ids: [fa.toLowerCase()], - })); - - return icons; -}; - -/** - * Disable all file icons that are in a pack which is disabled. - */ -const disableLanguagesByPack = ( - languageIcons: LanguageIcon[], - activatedIconPack: string | undefined -) => { - return languageIcons.filter((language) => { - return !language.enabledFor - ? true - : language.enabledFor.some((p) => p === activatedIconPack); - }); -}; diff --git a/src/icons/index.ts b/src/icons/index.ts deleted file mode 100644 index 87f583d251..0000000000 --- a/src/icons/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -export * from './generator'; -export * from './fileIcons'; -export * from './folderIcons'; -export * from './languageIcons'; diff --git a/src/icons/patterns/index.ts b/src/icons/patterns/index.ts deleted file mode 100644 index 99a3bc58b5..0000000000 --- a/src/icons/patterns/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './patterns'; diff --git a/src/models/i18n/index.ts b/src/models/i18n/index.ts deleted file mode 100644 index 1be20d8dee..0000000000 --- a/src/models/i18n/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './translation'; diff --git a/src/models/iconConfiguration.ts b/src/models/iconConfiguration.ts deleted file mode 100644 index 787d4f3de7..0000000000 --- a/src/models/iconConfiguration.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { type IconJsonOptions } from './'; - -export class IconConfiguration { - file?: string; - folder?: string; - folderExpanded?: string; - folderNames?: Record; - folderNamesExpanded?: Record; - rootFolder?: string; - rootFolderExpanded?: string; - fileExtensions?: Record; - fileNames?: Record; - languageIds?: Record; - iconDefinitions?: Record; - light?: IconConfiguration; - highContrast?: IconConfiguration; - options?: IconJsonOptions; - hidesExplorerArrows?: boolean; - - constructor() { - this.iconDefinitions = {}; - this.folderNames = {}; - this.folderNamesExpanded = {}; - this.fileExtensions = {}; - this.fileNames = {}; - this.languageIds = {}; - this.light = { - fileExtensions: {}, - fileNames: {}, - }; - this.highContrast = { - fileExtensions: {}, - fileNames: {}, - }; - this.options = {}; - } -} diff --git a/src/models/icons/files/index.ts b/src/models/icons/files/index.ts deleted file mode 100644 index 502f1b13f1..0000000000 --- a/src/models/icons/files/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './fileIcon'; -export * from './fileTypes'; diff --git a/src/models/icons/folders/index.ts b/src/models/icons/folders/index.ts deleted file mode 100644 index 475ca6a998..0000000000 --- a/src/models/icons/folders/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './folderIcon'; -export * from './folderTheme'; diff --git a/src/models/icons/iconJsonOptions.ts b/src/models/icons/iconJsonOptions.ts deleted file mode 100644 index b14505565a..0000000000 --- a/src/models/icons/iconJsonOptions.ts +++ /dev/null @@ -1,40 +0,0 @@ -export interface IconJsonOptions { - activeIconPack?: string; - hidesExplorerArrows?: boolean; - opacity?: number; - saturation?: number; - folders?: { - theme?: string; - color?: string; - associations?: IconAssociations; - customClones?: FolderIconClone[]; - }; - files?: { - color?: string; - associations?: IconAssociations; - customClones?: FileIconClone[]; - }; - languages?: { - associations?: IconAssociations; - }; -} - -export interface IconAssociations { - [pattern: string]: string; -} - -export interface CustomClone { - name: string; - base: string; - color: string; - lightColor?: string; -} - -export interface FileIconClone extends CustomClone { - fileExtensions?: string[]; - fileNames?: string[]; -} - -export interface FolderIconClone extends CustomClone { - folderNames: string[]; -} diff --git a/src/models/icons/index.ts b/src/models/icons/index.ts deleted file mode 100644 index 3e2c306151..0000000000 --- a/src/models/icons/index.ts +++ /dev/null @@ -1,7 +0,0 @@ -export * from './defaultIcon'; -export * from './files'; -export * from './folders'; -export * from './iconJsonOptions'; -export * from './iconPack'; -export * from './languages'; -export * from './patterns'; diff --git a/src/models/icons/languages/index.ts b/src/models/icons/languages/index.ts deleted file mode 100644 index 68acbead32..0000000000 --- a/src/models/icons/languages/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './languageIdentifier'; diff --git a/src/models/icons/patterns/index.ts b/src/models/icons/patterns/index.ts deleted file mode 100644 index 99a3bc58b5..0000000000 --- a/src/models/icons/patterns/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './patterns'; diff --git a/src/models/index.ts b/src/models/index.ts deleted file mode 100644 index 0ac4462f6e..0000000000 --- a/src/models/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from './i18n'; -export * from './iconConfiguration'; -export * from './icons'; diff --git a/src/models/scripts/contributors/contributor.ts b/src/models/scripts/contributors/contributor.ts deleted file mode 100644 index e250e2384c..0000000000 --- a/src/models/scripts/contributors/contributor.ts +++ /dev/null @@ -1,21 +0,0 @@ -export interface Contributor { - login: string; - id: number; - node_id: string; - avatar_url: string; - gravatar_id: string; - url: string; - html_url: string; - followers_url: string; - following_url: string; - gists_url: string; - starred_url: string; - subscriptions_url: string; - organizations_url: string; - repos_url: string; - events_url: string; - received_events_url: string; - type: string; - site_admin: boolean; - contributions: number; -} diff --git a/src/module/README.md b/src/module/README.md new file mode 100644 index 0000000000..2b1ed43d11 --- /dev/null +++ b/src/module/README.md @@ -0,0 +1,94 @@ +

+
+ logo +

+ Material Icon Theme +
+
+

+ +

Get the Material Design icons as NPM Module.

+ +

+ Version  + Rating  + Installs  + Downloads +

+ +## File icons + +
๐Ÿž๏ธ Show all available file icons
file icons
+ +## Folder icons + +
๐Ÿž๏ธ Show all available folder icons
folder icons
+ +## Description + +This npm module provides all Icons from the VS Code Material Icon Theme as npm module. The icons are available as SVG files and can be used in any web project. + +## Installation + +Install the npm module: + +```bash +npm install material-icon-theme +``` + +## Usage + +All the SVG files can be found in the "node_modules/material-icon-theme/icons" folder. To get to know the mapping between the file and folder names and the icons, the `generateManifest` has to be used. + +```javascript +import { generateManifest } from 'material-icon-theme'; +``` + +The `generateManifest` function returns a JSON object with the mapping between the file and folder names and the icons. The JSON object can be used to display the icons in a web project. + +This manifest follows the official VS Code extension API guidelines. More information how this manifest is structured and how it can be used can be found [in the VS Code documentation](https://code.visualstudio.com/api/extension-guides/file-icon-theme#icon-definitions). + +The type definition for the manifest can be found in the `material-icon-theme` module: + +```typescript +import { Manifest } from 'material-icon-theme'; +``` + +### Configure the icons + +While generating the manifest, there can be some configuration options passed to the `generateManifest` function. The configuration options are the same as in the VS Code Material Icon Theme extension. The configuration options can be found in the `material-icon-theme` module: + +```typescript +import { type ManifestConfig, type IconAssociations, type IconPackValue, generateManifest } from 'material-icon-theme'; + +const config: ManifestConfig = { + activeIconPack: 'angular'; + hidesExplorerArrows: true; + folders: { + theme: 'classic'; + associations: {}; + }; + files: { + associations: {}; + }; + languages: { + associations: {}; + }; +}; + +const manifest = generateManifest(config); +``` + +Not all configuration options have to be passed. The `generateManifest` function uses the default configuration options if they are not passed. + +## Icon packs + +The Material Icon Theme provides different icon packs. The icon pack can be changed by setting the `activeIconPack` in the configuration options. To get a list of all available icon packs, the `getIconPacks` function can be used: + +```typescript +import { availableIconPacks, type IconPackValue } from 'material-icon-theme'; + +const iconPacks: Array = availableIconPacks; + +console.log('Available icon packs:', iconPacks); +``` diff --git a/src/module/index.ts b/src/module/index.ts new file mode 100644 index 0000000000..e109f65fc5 --- /dev/null +++ b/src/module/index.ts @@ -0,0 +1,10 @@ +// Everything that is exported from this file will be exported to an npm package +export { + availableIconPacks, + generateManifest, + type FolderThemeName, + type IconAssociations, + type IconPackValue, + type ManifestConfig, + type Manifest, +} from '../core'; diff --git a/src/scripts/contributors/index.ts b/src/scripts/contributors/contributors.ts similarity index 91% rename from src/scripts/contributors/index.ts rename to src/scripts/contributors/contributors.ts index ea40dbead5..1728f10a8f 100644 --- a/src/scripts/contributors/index.ts +++ b/src/scripts/contributors/contributors.ts @@ -1,9 +1,9 @@ -import { writeFileSync } from 'node:fs'; import { join } from 'node:path'; import axios, { type AxiosRequestConfig } from 'axios'; -import { type Contributor } from '../../models/scripts/contributors/contributor'; +import { writeToFile } from '../../core'; import { green, red, yellow } from '../helpers/painter'; import { createScreenshot } from '../helpers/screenshots'; +import type { Contributor } from '../models/scripts/contributors/contributor'; /** * Parse link header @@ -62,7 +62,7 @@ const fetchContributors = ( }); }; -const createContributorsList = (contributors: Contributor[]) => { +const createContributorsList = async (contributors: Contributor[]) => { const list = contributors .map((c) => { return `
  • ${c.login}
  • `; @@ -74,7 +74,7 @@ const createContributorsList = (contributors: Contributor[]) => { const generatedHtml = `${htmlDoctype}${styling}
      ${list}
    `; const outputPath = join(__dirname, 'contributors.html'); - writeFileSync(outputPath, generatedHtml); + await writeToFile(outputPath, generatedHtml); return outputPath; }; @@ -101,7 +101,7 @@ const init = async () => { ); throw Error(); } - const outputPath = createContributorsList(contributorsList); + const outputPath = await createContributorsList(contributorsList); // create the image console.log('> Material Icon Theme:', yellow('Creating image...')); diff --git a/src/scripts/icons/checks/checkIconAvailability.ts b/src/scripts/icons/checks/checkIconAvailability.ts index 4a7f7b39eb..25badd7201 100644 --- a/src/scripts/icons/checks/checkIconAvailability.ts +++ b/src/scripts/icons/checks/checkIconAvailability.ts @@ -1,22 +1,20 @@ import { readdir } from 'node:fs'; import { join, parse } from 'node:path'; -import { type CloneOptions } from '../../../models/icons/cloneOptions'; import { + type CloneOptions, type DefaultIcon, type FileIcon, type FolderIcon, type FolderTheme, -} from '../../../models/index'; -import { green, red } from '../../helpers/painter'; -import { similarity } from '../../helpers/similarity'; -import { fileIcons, folderIcons, highContrastColorFileEnding, languageIcons, lightColorFileEnding, openedFolder, -} from './../../../icons'; +} from '../../../core'; +import { green, red } from '../../helpers/painter'; +import { similarity } from '../../helpers/similarity'; /** * Defines the folder where all icon files are located. diff --git a/src/scripts/icons/checks/checkIconConflicts.ts b/src/scripts/icons/checks/checkIconConflicts.ts index d1a2db04b1..7629d836a8 100644 --- a/src/scripts/icons/checks/checkIconConflicts.ts +++ b/src/scripts/icons/checks/checkIconConflicts.ts @@ -1,5 +1,5 @@ +import { fileIcons, folderIcons, languageIcons } from '../../../core'; import { green, red } from '../../helpers/painter'; -import { fileIcons, folderIcons, languageIcons } from './../../../icons'; /** * Store all icons that are wrong configured @@ -137,7 +137,10 @@ const handleErrors = () => { } }; -const printErrorMessage = (icons: any, definitionType: string) => { +const printErrorMessage = ( + icons: Record, + definitionType: string +) => { const keys = Object.keys(icons); keys.forEach((key) => { const conflictIcons = icons[key]; diff --git a/src/scripts/icons/checks/checkIconUsage.ts b/src/scripts/icons/checks/checkIconUsage.ts index 4d841f0009..9a04eb0983 100644 --- a/src/scripts/icons/checks/checkIconUsage.ts +++ b/src/scripts/icons/checks/checkIconUsage.ts @@ -1,19 +1,18 @@ import { readdir } from 'node:fs'; import { join, parse } from 'node:path'; + import { type DefaultIcon, type FolderIcon, type FolderTheme, -} from '../../../models/index'; -import { green, red } from '../../helpers/painter'; -import { fileIcons, folderIcons, highContrastColorFileEnding, languageIcons, lightColorFileEnding, openedFolder, -} from './../../../icons'; +} from '../../../core'; +import { green, red } from '../../helpers/painter'; /** * Defines the folder where all icon files are located. diff --git a/src/scripts/icons/checks/index.ts b/src/scripts/icons/checks/run.ts similarity index 100% rename from src/scripts/icons/checks/index.ts rename to src/scripts/icons/checks/run.ts diff --git a/src/scripts/icons/generateClones.ts b/src/scripts/icons/generateClones.ts new file mode 100644 index 0000000000..a76cc138fc --- /dev/null +++ b/src/scripts/icons/generateClones.ts @@ -0,0 +1,19 @@ +import { + fileIcons, + folderIcons, + generateConfiguredClones, + generateManifest, +} from '../../core'; + +/** + * This file is meant to be executed exclusively by npm scripts. + */ +try { + console.log('Generating icon clones...'); + const manifest = generateManifest(); + generateConfiguredClones(folderIcons, manifest); + generateConfiguredClones(fileIcons, manifest); +} catch (error) { + console.error(error); + throw Error('Could not generate clones!'); +} diff --git a/src/scripts/icons/generateJson.ts b/src/scripts/icons/generateJson.ts index 7c293f2378..cbcb921f1c 100644 --- a/src/scripts/icons/generateJson.ts +++ b/src/scripts/icons/generateJson.ts @@ -1,11 +1,24 @@ /** * This file is meant to be executed exclusively by npm scripts. */ -import { createIconFile } from './../../icons/index'; + +import { + generateFileIcons, + generateFolderIcons, + generateManifest, + getDefaultConfig, +} from '../../core'; try { - createIconFile(); + // Generate default file and folder icons + const config = getDefaultConfig(); + generateFileIcons(config.files.color, config.opacity, config.saturation); + generateFolderIcons(config.folders.color, config.opacity, config.saturation); + + const manifest = generateManifest(); + // Print manifest to stdout so that scripts can consume it + console.log(JSON.stringify(manifest)); } catch (error) { console.error(error); - throw Error('Could not create icon file!'); + throw Error('An error while generating the manifest occurred!'); } diff --git a/src/scripts/models/scripts/contributors/contributor.ts b/src/scripts/models/scripts/contributors/contributor.ts new file mode 100644 index 0000000000..30e7b87bb2 --- /dev/null +++ b/src/scripts/models/scripts/contributors/contributor.ts @@ -0,0 +1,5 @@ +export type Contributor = { + login: string; + // biome-ignore lint/style/useNamingConvention: + avatar_url: string; +}; diff --git a/src/models/scripts/contributors/contributorsConfig.ts b/src/scripts/models/scripts/contributors/contributorsConfig.ts similarity index 81% rename from src/models/scripts/contributors/contributorsConfig.ts rename to src/scripts/models/scripts/contributors/contributorsConfig.ts index 0c14d201a1..f81ecff22d 100644 --- a/src/models/scripts/contributors/contributorsConfig.ts +++ b/src/scripts/models/scripts/contributors/contributorsConfig.ts @@ -1,4 +1,4 @@ -export interface ContributorsConfig { +export type ContributorsConfig = { /** Owner of the repository */ owner: string; @@ -7,4 +7,4 @@ export interface ContributorsConfig { /** Size of a contributor's profile image in pixels */ imageSize: number; -} +}; diff --git a/src/scripts/module/prepare.ts b/src/scripts/module/prepare.ts new file mode 100644 index 0000000000..efd506e338 --- /dev/null +++ b/src/scripts/module/prepare.ts @@ -0,0 +1,35 @@ +import { copyFile } from 'node:fs/promises'; +import { join } from 'node:path'; +import { spawn } from 'bun'; + +/** + * Prepare the module for publishing. + * + * This script sets the main field in the package.json to the correct path and copies the README.md to the root directory. + */ +const prepareModule = async () => { + try { + // Set the main field in the package.json to the correct path + const setMain = spawn([ + 'npm', + 'pkg', + 'set', + 'main=./dist/module/index.cjs', + ]); + await setMain; + + // Remove vscode specific fields from package.json + const removeBrowser = spawn(['npm', 'pkg', 'delete', 'browser']); + await removeBrowser; + + //copy readme into root directory + const readmePath = join(process.cwd(), 'src', 'module', 'README.md'); + console.log('Copying README.md to root directory...'); + await copyFile(readmePath, 'README.md'); + } catch (error) { + console.error('Error preparing the module:', error); + process.exit(1); + } +}; + +prepareModule(); diff --git a/src/scripts/preview/preview.ts b/src/scripts/preview/preview.ts index f357f0b51b..abae098f98 100644 --- a/src/scripts/preview/preview.ts +++ b/src/scripts/preview/preview.ts @@ -1,5 +1,5 @@ -import { writeFileSync } from 'node:fs'; import { join } from 'node:path'; +import { writeToFile } from '../../core'; import { green, red } from '../helpers/painter'; import { createScreenshot } from '../helpers/screenshots'; import { toTitleCase } from './../helpers/titleCase'; @@ -64,7 +64,7 @@ const createPreviewTable = (icons: IconDefinition[][], size: number) => { return table; }; -const savePreview = ( +const savePreview = async ( fileName: string, size: number, icons: IconDefinition[][] @@ -72,7 +72,7 @@ const savePreview = ( const filePath = join(__dirname, fileName + '.html'); // write the html file with the icon table - writeFileSync(filePath, createPreviewTable(icons, size)); + await writeToFile(filePath, createPreviewTable(icons, size)); // create the image createScreenshot(filePath, fileName) @@ -136,10 +136,10 @@ export const generatePreview = ( ); }; -interface IconDefinition { +type IconDefinition = { iconName: string; label: string; -} +}; /** * Trim the list of icons into the matrix diff --git a/src/scripts/preview/index.ts b/src/scripts/preview/run.ts similarity index 86% rename from src/scripts/preview/index.ts rename to src/scripts/preview/run.ts index 74021eed69..d96bc62150 100644 --- a/src/scripts/preview/index.ts +++ b/src/scripts/preview/run.ts @@ -1,6 +1,6 @@ -import { fileIcons } from './../../icons/fileIcons'; -import { folderIcons } from './../../icons/folderIcons'; -import { languageIcons } from './../../icons/languageIcons'; +import { fileIcons } from '../../core/icons/fileIcons'; +import { folderIcons } from '../../core/icons/folderIcons'; +import { languageIcons } from '../../core/icons/languageIcons'; import { generatePreview } from './preview'; const filterDuplicates = (icons: string[]) => { diff --git a/src/scripts/svg/checkSvgColors.ts b/src/scripts/svg/checkSvgColors.ts new file mode 100644 index 0000000000..6818349daf --- /dev/null +++ b/src/scripts/svg/checkSvgColors.ts @@ -0,0 +1,43 @@ +import { spawn } from 'bun'; + +/** + * Check changed (not yet committed) SVG files for correct colors. + */ +const checkColors = async () => { + try { + // Execute Git command to get list of modified SVG files + const gitProcess = spawn([ + 'git', + 'ls-files', + '-mo', + '--exclude-standard', + '--', + '*.svg', + ]); + const { stdout } = await gitProcess; + const output = await new Response(stdout).text(); + const svgFiles = output.trim().split('\n').join(' '); + console.log('SVG files to check:', svgFiles); + + if (svgFiles) { + const command = [ + 'svg-color-linter', + '--colors', + 'material-colors.yml', + ...svgFiles.split(' '), + ]; + const linterProcess = spawn(command); + const { stdout } = await linterProcess; + const linterOutput = await new Response(stdout).text(); + + console.log('Colors check output:\n\n', linterOutput); + } else { + console.log('No SVG files to check.'); + } + } catch (error) { + console.error('Error checking colors:', error); + process.exit(1); + } +}; + +checkColors(); diff --git a/tsconfig.declarations.json b/tsconfig.declarations.json new file mode 100644 index 0000000000..205df69cd1 --- /dev/null +++ b/tsconfig.declarations.json @@ -0,0 +1,11 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "declaration": true, + "emitDeclarationOnly": true, + "noEmit": false, + "declarationDir": "./dist/types", + "declarationMap": true + }, + "include": ["src/module/index.ts"] +} diff --git a/tsconfig.json b/tsconfig.json index 84d4292e6c..2153993222 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -17,6 +17,7 @@ /* Linting */ "skipLibCheck": true, "strict": true, + "noImplicitAny": true, "noFallthroughCasesInSwitch": true, "forceConsistentCasingInFileNames": true }