16 Commits
Author SHA1 Message Date
Kesley Davidgithub-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>Copilot Autofix powered by AIEric Fennis
03eae6069e feat(icons): added asterism icon (#4687)
* feat(icons): added `asterism` icon

Adds asterism for issue #4077.
Also updates emoji category icon reference after smile rename.

* chore(icons): expand asterism metadata from PR suggestions

Apply curated tags, categories, and use-cases from automated
metadata review suggestions.

* Update icons/asterism.json

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Remove duplicate use-case entry in asterism.json

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Update use cases for asterism symbol in JSON

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Adjust metadata

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-11-10 13:48:06 +01:00
Eric FennisandClaude Opus 5.5 c8d0ddd437 chore(metadata): improve tags for common no-result searches (#5187)
* feat(metadata): improve tags for common no-result searches

Adds tags for the most frequent icon searches that returned nothing in
the last 30 days of site search data (customer, job, checklist, docs,
sell, invite, csv, budget, install, deploy, 404, ...).

Groups:
- Extend `user`, `check`, `x`, `exclamation-mark`, `question-mark`,
  `chart`, `code`, `search` and `exit` with missing synonyms.
- Add `face` group for the `face-*` icons (emoji, emotion, mood,
  feeling, expression, reaction).
- Add `dashed` group for icons drawn with a dashed outline, so
  "dotted" finds them.
- Use `$group:exit` on the diagonal `*-exit` arrows and `$group:code`
  on `terminal` and `square-terminal`.

Icons: add tags to ~100 icons for the top concept gaps, and drop
literals that a group or `$extends` now provides.

Replaying the top 3,000 no-result queries against this branch with the
site's Fuse settings: 173 queries (8,197 searches) now return results.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01G9u8Feg8TihZv9E4BxmKpt

* feat(metadata): rename `face` group to `emoticon`, tag `eye` with "eyes"

"eyes" (187 no-result searches in 30 days) did not match the eye icons:
Fuse treats the extra "s" as a typo past its threshold.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01G9u8Feg8TihZv9E4BxmKpt

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-11-10 12:37:50 +01:00
Karsa f8932f8eb8 feat(icons): delegated cheese from Lab (#5185) 2026-11-09 12:33:03 +01:00
Karsa 5332546327 feat(groups): added letter & digit groups (#5105)
* feat(groups): added letter group

* feat(groups): added digit group & added all icons featuring letters or digits to their respective groups
2026-10-29 17:31:46 +01:00
KarsaClaude Opus 5.5Copilot Autofix powered by AIgithub-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>Eric
965e567e70 chore(metadata): apply more tag groups to icon variants (#5093)
* feat(icons): apply tag groups to variant icons

Add 23 groups for common variant suffixes and use them in 89 icons, removing
the literal tags a group now provides. No icon loses a resolved tag; 65
icons gain tags from their group.

Groups: alert, check, clock, code, cog, currency, dot, heart, key, lock,
off, pause, pen, percent, play, question-mark, search, slash, sparkles,
star, stop, sync, user.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* Add favorite

* feat(icons): extend base icon metadata in variant icons

Use `$extends:<base>` in 703 variant icons whose tags or categories already
include every value of their base icon, and remove the 1952 tags and 1058
categories the base now provides. The base is the longest prefix of the icon
name that is an icon, e.g. `clipboard-pen-line` extends `clipboard-pen`.

- `tags` extend their base in 417 icons, `categories` in 675
- Only applied where the base adds nothing new, so the resolved tags and
  categories of every icon are unchanged
- `contributors` are left as they are

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YBLsKpZMoKKKVeibcuRXnC

* Apply batched suggestions from code review

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Karsa <contact@karsa.org>

* Apply feedback

* Updated groups

* Apply updates

* Apply more extends and groups

* Stricter checks

* Remove more duplicates

* Update tags

* Apply batched suggestions from code review

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Fix tags

* fix(icons): clean up groups manually, added directional, positional groups & shield, sort groups

* fix(icons): clean up groups manually, added directional, positional groups & shield, sort groups

* fix(icons): clean up groups manually, added directional, positional groups & shield, sort groups

* Added checkmark

---------

Co-authored-by: Eric <eric.fennis@gmail.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-10-29 17:29:59 +01:00
dab294f313 feat(icons): added perfume icon (#4426)
* Added icons/perfume.svg

* Added icons/perfume.json

* Updated icons/perfume.json

* Update perfume.json

Add use cases

* renamed and removed from lab

* removed from lab

* removed old renamed

* Update categories and use-cases in perfume-bottle.json

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Remove 'parfum' tag from icon

Removed 'parfum' tag from perfume bottle icon.

* Update perfume-bottle.json

refine tags

* Update perfume-bottle.json

* Update custom-words.txt

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Karsa <contact@karsa.org>
2026-10-13 12:35:27 +02:00
Signalgridgithub-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>Eric Fennis
93e2665164 feat(icons): add cpu-ai icon (#4992)
* Add AI icon

* Refine AI icon SVG

* Update icons/ai.json

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Update icons/ai.json

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Update icons/ai.json

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* fix: address review feedback for cpu-ai icon

* chore: add mlops to custom dictionary

* Fix category list in cpu-ai.json

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2026-10-13 09:31:43 +02:00
55b9969b82 ci(lint): split lint jobs and annotate Prettier and JSON schema errors in PRs (#4982)
* ci: split lint-code into ESLint, Prettier and JSON Schema jobs with PR annotations

- ESLint: annotations via setup-node's built-in eslint-stylish problem matcher.
- Prettier: new scripts/lintFormat.mts formats unformatted files in memory, diffs
  them and emits line-level `::error` annotations with the expected code.
- JSON Schema: replace ajv-cli with a local ESLint rule (Ajv draft 2020-12) that
  validates icons/categories JSON against their `$schema` and reports at the
  offending property. eslint-plugin-json-schema-validator was not used because it
  runs Ajv in draft-07 mode and ignores `dependentRequired`.

All annotations use workflow commands, so they work on fork PRs with a read-only token.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FVxEtqNswEDq1N23taZYh8

* Improve root value check and property error handling

Enhance error reporting for JSON schema validation.

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* style(lint): format jsonSchemaPlugin with Prettier

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FVxEtqNswEDq1N23taZYh8

* test commit

* fix(lint): annotate syntax errors from Prettier and ESLint in PRs

- ESLint/JSON Schema jobs use a small GitHub formatter that prints `::error`
  workflow commands. setup-node's eslint-stylish matcher skipped parsing errors
  because they have no rule id.
- lintFormat.mts annotates Prettier syntax errors (exit code 2) at their line and
  column instead of only printing stderr, and still checks the other files.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FVxEtqNswEDq1N23taZYh8

* ci(lint): spell check icon and category metadata with cspell annotations

- New "Spelling" job runs scripts/lintSpelling.mts, which turns cspell findings
  into `::error` annotations (with cspell's suggested fix when it has one).
- cspell accepts both US and British English, ignores contributor usernames and
  deprecated `alias.typo` aliases.
- Add existing search tags and domain terms to .cspell/custom-words.txt so the
  current metadata passes.
- Add `lint:spelling` to `pnpm lint` and lint-staged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FVxEtqNswEDq1N23taZYh8

* fix(lint): pin JSON schemas per file set and drop typo tags

- json-schema/no-invalid now takes the schema from config (icon.schema.json for
  icons, category.schema.json for categories) and reports a `$schema` that
  points elsewhere, so metadata can't opt out of validation.
- Remove the misspelled `frigerator` and `sterisk` tags and their allowlist entries.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FVxEtqNswEDq1N23taZYh8

* fix(icons): split joined-word tags into separate words

Tags like `groupchat` and `timemachine` become `group chat` and `time machine`
so they read naturally and pass the spell check without allowlisting. Where the
spaced tag already existed (`smart home`) the joined one is dropped.

cspell now skips all alias names, since they are icon names that can't change
(e.g. the deprecated `palmtree` alias).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FVxEtqNswEDq1N23taZYh8

* Revert

* Try another error

* Revert error

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-10-09 11:30:00 +02:00
Alex Martingithub-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>Claude Opus 5Eric Fennis
b115c04286 feat(lab): added monstera-leaf icon (#4115)
* Added icons/monstera-leaf.svg

* Added icons/monstera-leaf.json

* Updated icons/monstera-leaf.json

* Update icons/monstera-leaf.json

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* feat(lab): moved `monstera-leaf` icon to lab

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

* Add custom word

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-09-10 10:47:42 +02:00
9ecaafbc4d feat(lab): Migrate lab to main repo. (#4521)
* Add directory

* Add lab check script

* Delete duplicated icons

* Fix the lab page

* Adjust paths

* update lockfile

* update lockfile

* fix(lab/planet): replace with guideline-compliant design

* Add install step

* Add second install step

* Adjust lab in site

* try this

* Fix workflow

* Add cspell

* Format code

* Temporary delete icons for copilot review

* Place back lab icons

* Apply suggestions from code review

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Update lock file

* Revert svg changes

* Fix list

* Rename filenames

* Format tsconfig

---------

Co-authored-by: Karsa <contact@karsa.org>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-07-24 15:05:40 +02:00
Eric Fennis aa8f74eb9e fix(icons): Remove brand icons (#3639)
* Remove brand icons

* Apply feedback

* adjust schema
2025-11-27 10:56:32 +01:00
Abdalrhman Almarakeby 42f36a9da3 chore(cspell): remove duplicate 'pilcrow' from custom-words.txt (#3193) 2025-05-16 13:54:19 +02:00
Jakob Guddas 4ea41dc329 feat(ci): add x.com to brand filter (#2939)
* ci: add `x.com` to brand filter

* Update custom-words.txt
2025-03-24 09:33:02 +01:00
Karsa 3271972d97 fix(icons): add table-of-contents icon (#2348)
* fix(icons): add table-of-contents icon

* fix(icons): add ToC to custom words list

* fix(icons): fix formatting
2024-08-08 16:27:39 +02:00
Zakher MasriandEric Fennis 52de557ec1 feat: added pilcrow-left icon (#1667)
* Fixed Illustrator template link + fixed typo

* Added `pilcrow-left` icon

* Update pilcrow-left.json

* Update illustrator-guide.md

* Update CONTRIBUTING.md

* update pilcrow-left icon

* Formatting pilcrow-left.json

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-04-05 15:56:40 +02:00
KarsaandKarsa 6fbd5ee06a chore(icons): update icon names to match naming guidelines no. 7 to 9 (#1906)
* Update icon names to match naming guidelines no. 7 to 9
Update and extend rename icon helper script.

* Ran prettier

* Refactor rename scripts so that simplegit import doesn't cause other helper script usages to crash.

* Revert renaming key-square

* Revert renaming message-circle|square

* Fix square-dashed-kanban

* Optimize circle power

* pnpm rename square-dashed-bottom-scissors square-bottom-dashed-scissors

* Fix linting

* Fix file name linting issues via cspell configuration

* Rename unlock => lock-open

* Rename (square|circle)-check-2 => (square|circle)-check-small

* pnpm rename code-2 code-xml
pnpm rename contact-2 contact-round

* rename test-tube-2 test-tube-diagonal
rename mic-2 mic-vocal
rename loader-2 loader-circle
rename test-tube-2 test-tube-diagonal
rename school-2 university

* fix icons linting

* rename ice-cream => ice-cream-cone
rename ice-cream-2 => ice-cream-bowl
rename laptop-2 => laptop-abstract

* renamePattern "^(square|circle)-arrow-([a-z-]+)-from$" "\\1-arrow-out-\\2"

* rename wand-2 => wand-sparkles

* Update university.json tags.

* fix(icons): renamePattern '^(.+)-abstract$' '\1-minimal' --add-alias=false
feat(scripts): added yargs option parsing to renamePattern

* fix(packages): Remove protractor and puppeteer from lucide-angular, they are no longer in use but cause pnpm install to fail

* Lint fix, this is starting to get ridiculous.

* fix(packages): fix lucide-angular karma config.

* chore(icons): renamePattern '^(square|circle)-check$' '\1-check-big'
chore(icons): renamePattern '^(square|circle)-check-small$' '\1-check'

---------

Co-authored-by: Karsa <karsa@sztaki.hu>
2024-03-08 16:55:46 +01:00