feat(domain,frontend): remplace le catalogue d'icônes projet par des emojis Unicode système — #345 (QA verte)

Reprend à zéro la liste des icônes projet: catalogue d'emojis Unicode rendus
par la police système, sans embarquer d'assets graphiques propriétaires.
- domain: variante `emoji` ajoutée à ProjectIconSet (serde kebab-case)
- ports TS: union ProjectIconSet alignée avec "emoji"
- frontend: catalogue réécrit en 7 groupes (smileys, nature, food,
  activities, travel, objects, symbols), registres légaux et métadonnées
  supprimés, assets SVG projet retirés (angular.svg, NOTICE.md)
- watermark CLI custom: rendu emoji direct avec libellé de repli dérivé du
  nom de dossier du cwd
- i18n FR/EN des groupes du picker et tests mis à jour (domain settings,
  adapter projet, picker, panneau settings, chat custom)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-09-13 10:52:29 +02:00
parent 1006f62001
commit ff1d9af53a
14 changed files with 304 additions and 280 deletions

View File

@ -45,6 +45,7 @@ fn language_roundtrips_as_stable_codes_and_rejects_unknown_values() {
#[test]
fn project_icon_roundtrips_for_every_known_set() {
for (set, wire) in [
(ProjectIconSet::Emoji, "emoji"),
(ProjectIconSet::Devicon, "devicon"),
(ProjectIconSet::SimpleIcons, "simple-icons"),
(ProjectIconSet::Lucide, "lucide"),
@ -64,6 +65,19 @@ fn project_icon_roundtrips_for_every_known_set() {
}
}
#[test]
fn legacy_project_icon_sets_remain_accepted() {
for wire in ["devicon", "simple-icons", "lucide", "idea"] {
let icon: ProjectIconRef = serde_json::from_value(serde_json::json!({
"set": wire,
"name": "legacy-icon"
}))
.unwrap();
assert_eq!(icon.name(), "legacy-icon");
}
}
#[test]
fn project_icon_rejects_unknown_sets_and_unstable_or_oversized_names() {
assert!(