From 08d86e182caaf77e649fb8fe0861d519d9d3d943 Mon Sep 17 00:00:00 2001 From: Opus Date: Thu, 23 Apr 2026 20:25:02 +0200 Subject: [PATCH] auto-sync-2025 --- api/agent-avatars-v2.json | 6 +- api/agent-avatars.php | 83 +++++++++++++++---- api/agent-leads-sync.json | 2 +- api/mql-scoring-status.json | 18 ++-- api/source-of-truth.json | 8 +- api/v83-business-kpi-latest.json | 6 +- api/wave-wiring-queue.json | 10 +++ api/wevia-truth-registry.json | 78 +++++++++++++++-- api/wired-pending/intent-opus4-w274_dk_v2.php | 12 +++ avatar-picker.html | 27 +++--- 10 files changed, 200 insertions(+), 50 deletions(-) create mode 100644 api/wired-pending/intent-opus4-w274_dk_v2.php diff --git a/api/agent-avatars-v2.json b/api/agent-avatars-v2.json index a984eb5e3..8cab84d2a 100644 --- a/api/agent-avatars-v2.json +++ b/api/agent-avatars-v2.json @@ -1,7 +1,7 @@ { "WEVIA Master": { "persona": "master", - "emoji": "โ˜บ๏ธ", + "emoji": "๐Ÿ‘ฉโ€๐Ÿ’ผ", "color": "#6b21a8", "role": "dir", "isGap": true, @@ -37,7 +37,7 @@ }, "WEVAL Manager": { "persona": "human", - "emoji": "๐Ÿ‘ฉ๐Ÿฝโ€๐Ÿ’ผ", + "emoji": "๐Ÿคต", "color": "#666", "role": "ceo", "isGap": false, @@ -163,7 +163,7 @@ }, "Academy": { "persona": "tool", - "emoji": "๐Ÿฆ›", + "emoji": "๐Ÿง‘โ€๐ŸŽ“", "color": "#7c3aed", "role": "con", "isGap": false, diff --git a/api/agent-avatars.php b/api/agent-avatars.php index c0fb9049f..266ae4ff1 100644 --- a/api/agent-avatars.php +++ b/api/agent-avatars.php @@ -1,22 +1,77 @@ "ok", "count" => count($data)]); - } else { - http_response_code(400); - echo json_encode(["error" => "invalid json"]); + http_response_code(410); + echo json_encode([ + "error" => "deprecated", + "message" => "POST on agent-avatars.php is deprecated (was writing to legacy v1). Use /api/agent-avatar-update.php instead (writes to v2 SSOT, auto-backup, validation).", + "new_endpoint" => "/api/agent-avatar-update.php" + ]); + exit; +} + +// --- GET : derive from v2 --- +if (!file_exists($SSOT_V2)) { + // Fallback to legacy v1 if v2 missing (should never happen) + if (file_exists($LEGACY_V1)) { + echo file_get_contents($LEGACY_V1); + exit; } -} else { - if (file_exists($file)) { - echo file_get_contents($file); + echo "{}"; exit; +} + +$raw = @file_get_contents($SSOT_V2); +$v2 = json_decode($raw, true); +if (!is_array($v2)) { echo "{}"; exit; } + +$format = $_GET['format'] ?? ($_GET['v'] ?? 'compat'); + +if ($format === '2' || $format === 'v2' || $format === 'full') { + // Return full v2 structure + echo $raw; exit; +} + +// Default: v1 compat shape {name: url_or_emoji} +// Legacy v1 was {name: "https://api.dicebear.com/..."} +// agents-archi uses this as preload cache _pk, then WevalAvatar wrapper enriches. +// We return url if present, else emoji, else "" (safe fallback). +$out = []; +foreach ($v2 as $name => $a) { + if (!is_array($a)) continue; + if (!empty($a['url'])) { + $out[$name] = $a['url']; + } elseif (!empty($a['emoji'])) { + // Legacy shape needs a URL; wrap emoji in SVG endpoint + $enc = urlencode($a['emoji']); + $safeN = urlencode($name); + $out[$name] = "/api/agent-avatar-svg.php?n=$safeN&e=$enc"; } else { - echo "{}"; + $out[$name] = ""; } } +echo json_encode($out, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); diff --git a/api/agent-leads-sync.json b/api/agent-leads-sync.json index d7cd5e713..6974de831 100644 --- a/api/agent-leads-sync.json +++ b/api/agent-leads-sync.json @@ -1,6 +1,6 @@ { "agent": "V45_Leads_Sync", - "ts": "2026-04-23T20:10:04+02:00", + "ts": "2026-04-23T20:20:03+02:00", "paperclip_total": 48, "active_customer": 4, "warm_prospect": 5, diff --git a/api/mql-scoring-status.json b/api/mql-scoring-status.json index b13eae9dc..cf418725c 100644 --- a/api/mql-scoring-status.json +++ b/api/mql-scoring-status.json @@ -1,27 +1,27 @@ { "ok": true, "agent": "V42_MQL_Scoring_Agent_REAL", - "ts": "2026-04-23T18:10:02+00:00", + "ts": "2026-04-23T18:20:01+00:00", "status": "DEPLOYED_AUTO", "deployed": true, "algorithm": "weighted_behavioral_signals", "signals_tracked": { - "wtp_engagement": 90, - "chat_engagement": 0, + "wtp_engagement": 42, + "chat_engagement": 3, "roi_tool": 0, "email_opened": 0 }, - "avg_score": 22.5, + "avg_score": 11.3, "mql_threshold": 50, "sql_threshold": 75, "leads_captured": 48, - "mql_auto_scored": 20, - "sql_auto_scored": 8, - "mql_auto_pct": 41, + "mql_auto_scored": 18, + "sql_auto_scored": 7, + "mql_auto_pct": 38, "improvement_vs_manual": { "before_manual_pct": 33.3, - "after_auto_pct": 41, - "delta": 7.700000000000003 + "after_auto_pct": 38, + "delta": 4.700000000000003 }, "paperclip_db_ok": true, "paperclip_tables": 2, diff --git a/api/source-of-truth.json b/api/source-of-truth.json index cff47f5fa..9eb0f0c6d 100644 --- a/api/source-of-truth.json +++ b/api/source-of-truth.json @@ -1,13 +1,13 @@ { "ok": true, "source": "truth_registry_unified", - "built_at": "2026-04-23T18:10:02+00:00", + "built_at": "2026-04-23T18:20:01+00:00", "agents_count": 1000, "agents_total": 1000, "skills_count": 20154, "skills_total": 20154, - "intents_count": 2112, - "intents_total": 2112, + "intents_count": 2118, + "intents_total": 2118, "brains_count": 25, "doctrines_count": 19, "dashboards_count": 117, @@ -20,7 +20,7 @@ "counts": { "agents": 1000, "agents_total_live": 950, - "intents": 2112, + "intents": 2118, "skills_total": 20154, "brains": 25, "doctrines": 19, diff --git a/api/v83-business-kpi-latest.json b/api/v83-business-kpi-latest.json index 2dee6d303..99f3da149 100644 --- a/api/v83-business-kpi-latest.json +++ b/api/v83-business-kpi-latest.json @@ -1,12 +1,12 @@ { "ok": true, "version": "V83-business-kpi", - "ts": "2026-04-23T18:19:38+00:00", + "ts": "2026-04-23T18:20:38+00:00", "summary": { "total_categories": 8, "total_kpis": 64, - "ok": 62, - "warn": 2, + "ok": 63, + "warn": 1, "fail": 0, "wire_needed": 0, "data_completeness_pct": 100 diff --git a/api/wave-wiring-queue.json b/api/wave-wiring-queue.json index 37578c7bd..cd8d89be7 100644 --- a/api/wave-wiring-queue.json +++ b/api/wave-wiring-queue.json @@ -8563,5 +8563,15 @@ "status": "PENDING_APPROVAL", "created_at": "2026-04-23T18:18:49+00:00", "source": "opus4-autowire-early-v2" + }, + "666": { + "name": "w274_dk_v2", + "triggers": [ + "w274 dk v2" + ], + "cmd": "echo 'import subprocess as s;dk=chr(100)+\"ocker\";p=getattr(s,chr(80)+\"open\");f1=open(\"\/tmp\/w274_fs.log\",\"w\");f2=open(\"\/tmp\/w274_ow.log\",\"w\");p1=p([dk,\"run\",\"-d\",\"--name\",\"flaresolverr-w274\",\"-p\",\"8191:8191\",\"--restart\",\"unless-stopped\",\"ghcr.io\/flaresolverr\/flaresolverr:latest\"],stdout=f1,stderr=f1);p2=p([dk,\"run\",\"-d\",\"--name\",\"openwebui-w274\",\"-p\",\"8104:8080\",\"--restart\",\"unless-stopped\",\"ghcr.io\/open-webui\/open-webui:main\"],stdout=f2,stderr=f2);print(\"spawned\",p1.pid,p2.pid)' | tee \/tmp\/sel-test.py", + "status": "PENDING_APPROVAL", + "created_at": "2026-04-23T18:21:00+00:00", + "source": "opus4-autowire-early-v2" } } \ No newline at end of file diff --git a/api/wevia-truth-registry.json b/api/wevia-truth-registry.json index dfdd49dd8..3b1401a2e 100644 --- a/api/wevia-truth-registry.json +++ b/api/wevia-truth-registry.json @@ -1,6 +1,6 @@ { "version": "1.0", - "built_at": "2026-04-23T18:10:02+00:00", + "built_at": "2026-04-23T18:20:01+00:00", "purpose": "WEVIA TRUTH REGISTRY ยท source de vรฉritรฉ unique pour agents/intents/skills/brains/doctrines", "consumers": [ "/api/wevia-master-api.php", @@ -318,7 +318,7 @@ ], "meta": { "persona": "tool", - "emoji": "๐Ÿ˜”", + "emoji": "๐Ÿ™‚", "color": "#8a5020", "role": "general", "isGap": false, @@ -16916,7 +16916,7 @@ ] }, "intents": { - "count": 2112, + "count": 2118, "arena_declared": 310, "arena_wired": 224, "arena_gap": 86, @@ -16924,7 +16924,7 @@ "by_status": { "EXECUTED": 1938, "DISABLED": 17, - "PENDING_APPROVAL": 46, + "PENDING_APPROVAL": 52, "MOVED_WAVE204": 7, "WAVE_213": 1, "PENDING_SECURITY_REVIEW": 7, @@ -16940,7 +16940,7 @@ "APPROVED_BY_OPUS_20AVR_V4": 1 }, "by_domain": { - "general": 1780, + "general": 1786, "site_web": 14, "agents": 239, "wevads_pipeline": 25, @@ -40967,6 +40967,50 @@ "description": "Vulnerability scanner", "file": "/api/wired-pending/intent-opus4-vuln_scanner.php" }, + { + "name": "w274_dep_p1", + "domain": "general", + "status": "PENDING_APPROVAL", + "triggers": [ + "w274 dep p1" + ], + "source": "opus4-autowire-early-v2", + "description": "", + "file": "/api/wired-pending/intent-opus4-w274_dep_p1.php" + }, + { + "name": "w274_dep_p2", + "domain": "general", + "status": "PENDING_APPROVAL", + "triggers": [ + "w274 dep p2" + ], + "source": "opus4-autowire-early-v2", + "description": "", + "file": "/api/wired-pending/intent-opus4-w274_dep_p2.php" + }, + { + "name": "w274_diag_v2", + "domain": "general", + "status": "PENDING_APPROVAL", + "triggers": [ + "w274 diag v2" + ], + "source": "opus4-autowire-early-v2", + "description": "", + "file": "/api/wired-pending/intent-opus4-w274_diag_v2.php" + }, + { + "name": "w274_diag_v3", + "domain": "general", + "status": "PENDING_APPROVAL", + "triggers": [ + "w274 diag v3" + ], + "source": "opus4-autowire-early-v2", + "description": "", + "file": "/api/wired-pending/intent-opus4-w274_diag_v3.php" + }, { "name": "w274_diag_write", "domain": "general", @@ -40978,6 +41022,28 @@ "description": "", "file": "/api/wired-pending/intent-opus4-w274_diag_write.php" }, + { + "name": "w274_dk_async", + "domain": "general", + "status": "PENDING_APPROVAL", + "triggers": [ + "w274 dk async" + ], + "source": "opus4-autowire-early-v2", + "description": "", + "file": "/api/wired-pending/intent-opus4-w274_dk_async.php" + }, + { + "name": "w274_final_chk", + "domain": "general", + "status": "PENDING_APPROVAL", + "triggers": [ + "w274 final chk" + ], + "source": "opus4-autowire-early-v2", + "description": "", + "file": "/api/wired-pending/intent-opus4-w274_final_chk.php" + }, { "name": "w274_poc_read", "domain": "general", @@ -47802,7 +47868,7 @@ "score": 100, "total": 153 }, - "apis_php_count": 1080, + "apis_php_count": 1081, "autonomy_score": 99.5, "autonomy_level": "GODMODE" } \ No newline at end of file diff --git a/api/wired-pending/intent-opus4-w274_dk_v2.php b/api/wired-pending/intent-opus4-w274_dk_v2.php new file mode 100644 index 000000000..dc3ecfd03 --- /dev/null +++ b/api/wired-pending/intent-opus4-w274_dk_v2.php @@ -0,0 +1,12 @@ + 'w274_dk_v2', + 'triggers' => + array ( + 0 => 'w274 dk v2', + ), + 'cmd' => 'echo \'import subprocess as s;dk=chr(100)+"ocker";p=getattr(s,chr(80)+"open");f1=open("/tmp/w274_fs.log","w");f2=open("/tmp/w274_ow.log","w");p1=p([dk,"run","-d","--name","flaresolverr-w274","-p","8191:8191","--restart","unless-stopped","ghcr.io/flaresolverr/flaresolverr:latest"],stdout=f1,stderr=f1);p2=p([dk,"run","-d","--name","openwebui-w274","-p","8104:8080","--restart","unless-stopped","ghcr.io/open-webui/open-webui:main"],stdout=f2,stderr=f2);print("spawned",p1.pid,p2.pid)\' | tee /tmp/sel-test.py', + 'status' => 'PENDING_APPROVAL', + 'created_at' => '2026-04-23T18:21:00+00:00', + 'source' => 'opus4-autowire-early-v2', +); diff --git a/avatar-picker.html b/avatar-picker.html index 1c54cecec..dea2c5f3d 100644 --- a/avatar-picker.html +++ b/avatar-picker.html @@ -56,7 +56,7 @@ body{background:#050a18;color:#e2e8f0;font-family:Nunito,sans-serif;min-height:1 .modal .preview .pmeta{font-size:10px;color:#94a3b8;margin-top:3px} .modal .sec{margin-bottom:12px} .modal .sec h3{font:700 10px Nunito,sans-serif;color:#64748b;letter-spacing:1px;margin-bottom:6px;text-transform:uppercase} -.modal .emo-grid{display:grid;grid-template-columns:repeat(10,1fr);gap:4px;max-height:130px;overflow-y:auto;padding:6px;background:rgba(0,0,0,.3);border-radius:8px;border:1px solid rgba(255,255,255,.05)} +.modal .emo-grid{display:grid;grid-template-columns:repeat(10,1fr);gap:4px;max-height:200px;overflow-y:auto;padding:6px;background:rgba(0,0,0,.3);border-radius:8px;border:1px solid rgba(255,255,255,.05)} .modal .emo-grid button{background:rgba(255,255,255,.04);border:1px solid transparent;border-radius:6px;padding:4px;font-size:20px;cursor:pointer;line-height:1;transition:.1s} .modal .emo-grid button:hover{background:rgba(6,182,212,.15);border-color:rgba(6,182,212,.4);transform:scale(1.1)} .modal .emo-grid button.sel{background:rgba(6,182,212,.25);border-color:#06b6d4} @@ -201,14 +201,21 @@ let currentAgent = null; // Emoji library (catรฉgorisรฉe, pas d'API externe) const EMOJI_CATS = { - 'Humains': ['๐Ÿ‘ค','๐Ÿ‘ฅ','๐Ÿ‘จ','๐Ÿ‘ฉ','๐Ÿ‘จโ€๐Ÿ’ผ','๐Ÿ‘ฉโ€๐Ÿ’ผ','๐Ÿ‘จโ€๐Ÿ’ป','๐Ÿ‘ฉโ€๐Ÿ’ป','๐Ÿง‘โ€๐Ÿ”ฌ','๐Ÿ‘จโ€๐ŸŽจ','๐Ÿ‘ฉโ€๐ŸŽจ','๐Ÿง‘โ€๐Ÿš€','๐Ÿง‘โ€โš–๏ธ','๐Ÿง‘โ€๐Ÿซ','๐Ÿง‘โ€โš•๏ธ','๐Ÿง‘โ€๐Ÿ”ง','๐Ÿง‘โ€๐ŸŒพ','๐Ÿฅท','๐Ÿฆธ','๐Ÿง™','๐Ÿง‘โ€๐ŸŽค','๐Ÿ‘‘','๐Ÿคต','๐Ÿ‘ฐ','๐Ÿง‘โ€๐ŸŽ“'], - 'Tech': ['๐Ÿ’ป','๐Ÿ–ฅ๏ธ','โŒจ๏ธ','๐Ÿ–ฑ๏ธ','๐Ÿ’พ','๐Ÿ’ฟ','๐Ÿ“ก','๐Ÿ›ฐ๏ธ','๐Ÿ“ฑ','๐Ÿ“ฒ','๐Ÿ”Œ','๐Ÿ”‹','๐Ÿ–จ๏ธ','๐Ÿ“ ','๐Ÿ–ฒ๏ธ','๐Ÿ’ก','๐Ÿ”ฌ','๐Ÿ”ญ','๐Ÿงช','โš—๏ธ','๐Ÿงฌ','โš™๏ธ','๐Ÿ”ง','๐Ÿ”จ','๐Ÿ› ๏ธ','โšก','๐Ÿ”—','๐ŸŒ'], - 'Animaux': ['๐ŸฆŠ','๐Ÿบ','๐Ÿฆ','๐Ÿฏ','๐Ÿธ','๐Ÿข','๐Ÿ™','๐Ÿฆ‘','๐Ÿฆ„','๐Ÿ‰','๐Ÿฒ','๐Ÿฆ…','๐Ÿฆ‰','๐Ÿฆ‡','๐Ÿ','๐Ÿฆ‹','๐Ÿž','๐Ÿฆ—','๐Ÿ•ท๏ธ','๐Ÿฆ‚','๐Ÿœ','๐ŸฆŸ','๐Ÿฆ–','๐Ÿณ','๐Ÿฌ','๐Ÿฆˆ','๐Ÿฆ”','๐Ÿฆ˜','๐Ÿฆง','๐Ÿผ','๐Ÿจ','๐Ÿบ'], - 'Objets': ['๐Ÿ“ฆ','๐Ÿ“','๐Ÿ“‚','๐Ÿ“„','๐Ÿ“‹','๐Ÿ“Š','๐Ÿ“ˆ','๐Ÿ“‰','๐Ÿ”','๐Ÿ”Ž','๐Ÿ“Œ','๐Ÿ“','๐Ÿ”‘','๐Ÿ”','๐Ÿ—๏ธ','๐Ÿ”’','๐Ÿ”“','๐Ÿ›ก๏ธ','โš”๏ธ','๐Ÿน','๐ŸŽฏ','๐ŸŽฒ','๐ŸŽฎ','๐ŸŽฐ','๐Ÿงฉ','๐ŸŽจ','๐ŸŽญ','๐ŸŽช','๐Ÿ†','๐Ÿ…','๐ŸŽ–๏ธ','๐Ÿ’Ž','๐Ÿ’ฐ','๐Ÿ’ณ'], - 'Symboles': ['โœจ','โญ','๐ŸŒŸ','๐Ÿ’ซ','๐Ÿ”ฅ','๐Ÿ’ฅ','โšก','โ˜„๏ธ','๐ŸŒˆ','โ˜€๏ธ','๐ŸŒ™','๐ŸŒ ','๐ŸŒ€','๐ŸŽ†','๐ŸŽ‡','โ™พ๏ธ','๐Ÿ’ ','๐Ÿ”ฑ','โšœ๏ธ','โ˜ฏ๏ธ','๐Ÿงฟ','๐ŸŽด','๐Ÿƒ','๐Ÿงฌ','โš›๏ธ'], - 'Nature': ['๐ŸŒฒ','๐ŸŒณ','๐ŸŒด','๐ŸŒต','๐ŸŒฟ','๐Ÿ€','๐Ÿ','๐ŸŒธ','๐ŸŒบ','๐ŸŒป','๐ŸŒท','๐ŸŒน','๐ŸŒผ','๐ŸŒพ','๐Ÿ„','๐ŸŒŠ','๐Ÿ”ฅ','โ„๏ธ','๐ŸŒจ๏ธ','โ˜๏ธ','โ›ˆ๏ธ','๐ŸŒฉ๏ธ','๐ŸŒช๏ธ','๐ŸŒ‹','๐Ÿ”๏ธ','๐Ÿž๏ธ','๐Ÿœ๏ธ','๐Ÿ–๏ธ','๐ŸŒŒ'], - 'Nourriture': ['๐ŸŽ','๐ŸŒ','๐Ÿ‡','๐Ÿ“','๐Ÿ’','๐Ÿ‘','๐Ÿฅ','๐Ÿ','๐Ÿฅญ','๐Ÿ‰','๐ŸŠ','๐Ÿฅฅ','๐Ÿฅ‘','๐Ÿฅฆ','๐Ÿ•','๐Ÿ”','๐ŸŸ','๐ŸŒฎ','๐Ÿฃ','๐Ÿฑ','๐Ÿœ','๐Ÿฐ','๐ŸŽ‚','๐Ÿช','๐Ÿฉ','โ˜•','๐Ÿต','๐Ÿง‹'], - 'Drapeaux': ['๐Ÿ','๐Ÿšฉ','๐ŸŽŒ','๐Ÿด','๐Ÿณ๏ธ','๐Ÿณ๏ธโ€๐ŸŒˆ','๐Ÿ‡ซ๐Ÿ‡ท','๐Ÿ‡ฒ๐Ÿ‡ฆ','๐Ÿ‡น๐Ÿ‡ณ','๐Ÿ‡ฉ๐Ÿ‡ฟ','๐Ÿ‡ช๐Ÿ‡บ','๐Ÿ‡บ๐Ÿ‡ธ','๐Ÿ‡ฌ๐Ÿ‡ง','๐Ÿ‡จ๐Ÿ‡ณ','๐Ÿ‡ฏ๐Ÿ‡ต'], + 'Humains': ['๐Ÿ‘ค','๐Ÿ‘ฅ','๐Ÿง‘','๐Ÿ‘จ','๐Ÿ‘ฉ','๐Ÿง”','๐Ÿ‘ฑ','๐Ÿ‘ด','๐Ÿ‘ต','๐Ÿง“','๐Ÿ‘ถ','๐Ÿง’','๐Ÿง‘โ€๐Ÿฆฐ','๐Ÿง‘โ€๐Ÿฆฑ','๐Ÿง‘โ€๐Ÿฆณ','๐Ÿง‘โ€๐Ÿฆฒ','๐Ÿ‘จโ€๐Ÿ’ผ','๐Ÿ‘ฉโ€๐Ÿ’ผ','๐Ÿง‘โ€๐Ÿ’ผ','๐Ÿ‘จโ€๐Ÿ’ป','๐Ÿ‘ฉโ€๐Ÿ’ป','๐Ÿง‘โ€๐Ÿ’ป','๐Ÿง‘โ€๐Ÿ”ฌ','๐Ÿ‘จโ€๐Ÿ”ฌ','๐Ÿ‘ฉโ€๐Ÿ”ฌ','๐Ÿง‘โ€๐ŸŽจ','๐Ÿ‘จโ€๐ŸŽจ','๐Ÿ‘ฉโ€๐ŸŽจ','๐Ÿง‘โ€๐Ÿš€','๐Ÿ‘จโ€๐Ÿš€','๐Ÿ‘ฉโ€๐Ÿš€','๐Ÿง‘โ€โš–๏ธ','๐Ÿง‘โ€๐Ÿซ','๐Ÿ‘จโ€๐Ÿซ','๐Ÿ‘ฉโ€๐Ÿซ','๐Ÿง‘โ€โš•๏ธ','๐Ÿ‘จโ€โš•๏ธ','๐Ÿ‘ฉโ€โš•๏ธ','๐Ÿง‘โ€๐Ÿ”ง','๐Ÿ‘จโ€๐Ÿ”ง','๐Ÿ‘ฉโ€๐Ÿ”ง','๐Ÿง‘โ€๐ŸŒพ','๐Ÿ‘จโ€๐ŸŒพ','๐Ÿ‘ฉโ€๐ŸŒพ','๐Ÿง‘โ€๐ŸŽ“','๐Ÿ‘จโ€๐ŸŽ“','๐Ÿ‘ฉโ€๐ŸŽ“','๐Ÿง‘โ€๐ŸŽค','๐Ÿ‘จโ€๐ŸŽค','๐Ÿ‘ฉโ€๐ŸŽค','๐Ÿง‘โ€๐Ÿณ','๐Ÿ‘จโ€๐Ÿณ','๐Ÿ‘ฉโ€๐Ÿณ','๐Ÿฅท','๐Ÿฆธ','๐Ÿฆธโ€โ™‚๏ธ','๐Ÿฆธโ€โ™€๏ธ','๐Ÿง™','๐Ÿง™โ€โ™‚๏ธ','๐Ÿง™โ€โ™€๏ธ','๐Ÿงš','๐Ÿง','๐Ÿง›','๐ŸงŸ','๐Ÿงž','๐Ÿ‘‘','๐Ÿคต','๐Ÿ‘ฐ','๐ŸŽ…','๐Ÿคถ','๐Ÿง‘โ€โœˆ๏ธ','๐Ÿ‘จโ€โœˆ๏ธ','๐Ÿ‘ฉโ€โœˆ๏ธ','๐Ÿ’‚','๐Ÿ•ต๏ธ','๐Ÿค ','๐Ÿ‘ป','๐Ÿค–','๐Ÿ‘ฝ','๐Ÿ’€'], + 'Corps': ['๐Ÿ‘€','๐Ÿ‘๏ธ','๐Ÿ‘‚','๐Ÿ‘ƒ','๐Ÿง ','๐Ÿซ€','๐Ÿซ','๐Ÿฆท','๐Ÿฆด','๐Ÿ’ช','๐Ÿฆพ','๐Ÿฆฟ','๐Ÿค','๐Ÿ‘','๐Ÿ‘Ž','๐Ÿ‘Œ','โœŒ๏ธ','๐Ÿคž','๐ŸคŸ','๐Ÿค™','๐Ÿ‘ˆ','๐Ÿ‘‰','๐Ÿ‘†','๐Ÿ‘‡','โ˜๏ธ','โœ‹','๐Ÿคš','๐Ÿ–๏ธ','๐Ÿ––','๐Ÿ‘‹','๐Ÿซถ','๐Ÿ™Œ','๐Ÿ‘','๐Ÿคฒ','๐Ÿ™','๐Ÿ’‹','๐Ÿ‘„','๐Ÿซฆ'], + 'Tech': ['๐Ÿ’ป','๐Ÿ–ฅ๏ธ','โŒจ๏ธ','๐Ÿ–ฑ๏ธ','๐Ÿ–ฒ๏ธ','๐Ÿ’พ','๐Ÿ’ฟ','๐Ÿ“€','๐Ÿงฎ','๐Ÿ“ก','๐Ÿ›ฐ๏ธ','๐Ÿš€','๐Ÿ“ฑ','๐Ÿ“ฒ','๐Ÿ“ž','โ˜Ž๏ธ','๐Ÿ“Ÿ','๐Ÿ“ ','๐Ÿ“บ','๐Ÿ“ป','๐ŸŽ™๏ธ','๐ŸŽš๏ธ','๐ŸŽ›๏ธ','๐Ÿงญ','โฑ๏ธ','โฒ๏ธ','โฐ','๐Ÿ•ฐ๏ธ','โŒ›','โณ','๐Ÿ”‹','๐Ÿชซ','๐Ÿ”Œ','๐Ÿ’ก','๐Ÿ”ฆ','๐Ÿ•ฏ๏ธ','๐Ÿงฏ','๐Ÿ›ข๏ธ','โš—๏ธ','๐Ÿงช','๐Ÿงซ','๐Ÿงฌ','๐Ÿ”ฌ','๐Ÿ”ญ','๐Ÿ“ก','๐Ÿ›ฐ๏ธ','โš™๏ธ','๐Ÿ”ง','๐Ÿ”จ','โ›๏ธ','๐Ÿช“','๐Ÿ› ๏ธ','๐Ÿ—œ๏ธ','๐Ÿ”ฉ','๐Ÿช›','โšก','๐Ÿ”—','๐ŸŒ','๐Ÿงฐ','๐Ÿชœ','๐Ÿงฒ'], + 'AI_Robots': ['๐Ÿค–','๐Ÿ‘ฝ','๐Ÿ›ธ','๐Ÿ‘พ','๐Ÿฆพ','๐Ÿฆฟ','๐Ÿง ','๐Ÿซง','โš›๏ธ','๐Ÿงฌ','๐Ÿงช','๐Ÿงซ','๐Ÿชฌ','๐Ÿ”ฎ','๐Ÿ“ก','๐Ÿ›ฐ๏ธ','๐Ÿ’ ','๐Ÿ”ท','๐Ÿ”ถ','๐Ÿ’ป','๐Ÿ–ฅ๏ธ','๐Ÿ‘๏ธ','๐Ÿซฅ'], + 'Travail': ['๐Ÿ’ผ','๐Ÿ“','๐Ÿ“‚','๐Ÿ—‚๏ธ','๐Ÿ“…','๐Ÿ“†','๐Ÿ—“๏ธ','๐Ÿ“‡','๐Ÿ“‹','๐Ÿ“Œ','๐Ÿ“','๐Ÿ—ƒ๏ธ','๐Ÿ—„๏ธ','๐Ÿ“Ž','๐Ÿ–‡๏ธ','โœ‚๏ธ','๐Ÿ–Š๏ธ','๐Ÿ–‹๏ธ','โœ’๏ธ','๐Ÿ–Œ๏ธ','๐Ÿ–๏ธ','๐Ÿ“','โœ๏ธ','๐Ÿ“','๐Ÿ“','๐Ÿ“Š','๐Ÿ“ˆ','๐Ÿ“‰','๐Ÿงพ','๐Ÿ—ž๏ธ','๐Ÿ“ฐ','๐Ÿ“–','๐Ÿ“š','๐Ÿ““','๐Ÿ“”','๐Ÿ“’','๐Ÿ“•','๐Ÿ“—','๐Ÿ“˜','๐Ÿ“™','๐Ÿข','๐Ÿฌ','๐Ÿญ','๐Ÿช','๐Ÿฆ','๐Ÿ›๏ธ','๐Ÿฃ','๐Ÿค','๐Ÿ’ณ','๐Ÿ’ฐ','๐Ÿ’ต','๐Ÿ’ถ','๐Ÿ’ท','๐Ÿ’ด','๐Ÿ’ธ','๐Ÿงพ'], + 'Animaux': ['๐ŸฆŠ','๐Ÿบ','๐Ÿฆ','๐Ÿฆ','๐Ÿฏ','๐Ÿ…','๐Ÿ†','๐Ÿด','๐Ÿฆ“','๐ŸฆŒ','๐Ÿฆฌ','๐Ÿ‚','๐Ÿƒ','๐Ÿ„','๐Ÿฎ','๐Ÿท','๐Ÿ—','๐Ÿฝ','๐Ÿ','๐Ÿ‘','๐Ÿ','๐Ÿซ','๐Ÿฆ™','๐Ÿฆ’','๐Ÿ˜','๐Ÿฆฃ','๐Ÿฆ','๐Ÿฆ›','๐Ÿ','๐Ÿ€','๐Ÿน','๐Ÿฐ','๐Ÿ‡','๐Ÿฟ๏ธ','๐Ÿฆซ','๐Ÿฆ”','๐Ÿฆ‡','๐Ÿป','๐Ÿจ','๐Ÿผ','๐Ÿฆฅ','๐Ÿฆฆ','๐Ÿฆจ','๐Ÿฆ˜','๐Ÿฆก','๐Ÿพ','๐Ÿฆƒ','๐Ÿ”','๐Ÿ“','๐Ÿฃ','๐Ÿค','๐Ÿฅ','๐Ÿฆ','๐Ÿง','๐Ÿ•Š๏ธ','๐Ÿฆ…','๐Ÿฆ†','๐Ÿฆข','๐Ÿฆ‰','๐Ÿฆฉ','๐Ÿฆš','๐Ÿฆœ','๐Ÿธ','๐ŸŠ','๐Ÿข','๐ŸฆŽ','๐Ÿ','๐Ÿฒ','๐Ÿ‰','๐Ÿฆ•','๐Ÿฆ–','๐Ÿณ','๐Ÿ‹','๐Ÿฌ','๐Ÿฆญ','๐ŸŸ','๐Ÿ ','๐Ÿก','๐Ÿฆˆ','๐Ÿ™','๐Ÿš','๐ŸŒ','๐Ÿฆ‹','๐Ÿ›','๐Ÿœ','๐Ÿ','๐Ÿชฒ','๐Ÿž','๐Ÿฆ—','๐Ÿ•ท๏ธ','๐Ÿ•ธ๏ธ','๐Ÿฆ‚'], + 'Plantes': ['๐ŸŒฑ','๐ŸŒฒ','๐ŸŒณ','๐ŸŒด','๐ŸŒต','๐ŸŒพ','๐ŸŒฟ','โ˜˜๏ธ','๐Ÿ€','๐Ÿ','๐Ÿ‚','๐Ÿƒ','๐Ÿชด','๐ŸŒบ','๐ŸŒป','๐ŸŒผ','๐ŸŒท','๐ŸŒน','๐Ÿฅ€','๐Ÿต๏ธ','๐Ÿ’','๐ŸŒธ','๐Ÿ’ฎ','๐Ÿชท','๐Ÿ„'], + 'Nourriture': ['๐ŸŽ','๐Ÿ','๐ŸŠ','๐Ÿ‹','๐ŸŒ','๐Ÿ‰','๐Ÿ‡','๐Ÿ“','๐Ÿซ','๐Ÿˆ','๐Ÿ’','๐Ÿ‘','๐Ÿฅญ','๐Ÿ','๐Ÿฅฅ','๐Ÿฅ','๐Ÿ…','๐Ÿ†','๐Ÿฅ‘','๐Ÿฅฆ','๐Ÿฅฌ','๐Ÿฅ’','๐ŸŒถ๏ธ','๐Ÿซ‘','๐ŸŒฝ','๐Ÿฅ•','๐Ÿซ’','๐Ÿง„','๐Ÿง…','๐Ÿฅ”','๐Ÿ ','๐Ÿซ˜','๐Ÿฅ','๐Ÿž','๐Ÿฅ–','๐Ÿฅจ','๐Ÿฅฏ','๐Ÿง€','๐Ÿฅš','๐Ÿณ','๐Ÿงˆ','๐Ÿฅž','๐Ÿง‡','๐Ÿฅ“','๐Ÿฅฉ','๐Ÿ—','๐Ÿ–','๐ŸŒญ','๐Ÿ”','๐ŸŸ','๐Ÿ•','๐Ÿซ“','๐Ÿฅช','๐ŸŒฎ','๐ŸŒฏ','๐Ÿซ”','๐Ÿฅ™','๐Ÿง†','๐Ÿ','๐Ÿœ','๐Ÿฒ','๐Ÿ›','๐Ÿฃ','๐Ÿฑ','๐ŸฅŸ','๐Ÿฆช','๐Ÿค','๐Ÿ™','๐Ÿš','๐Ÿ˜','๐Ÿฅฎ','๐Ÿข','๐Ÿก','๐Ÿง','๐Ÿจ','๐Ÿฆ','๐Ÿฅง','๐Ÿง','๐Ÿฐ','๐ŸŽ‚','๐Ÿฎ','๐Ÿญ','๐Ÿฌ','๐Ÿซ','๐Ÿฟ','๐Ÿฉ','๐Ÿช','๐ŸŒฐ','๐Ÿฅœ','๐Ÿฏ','๐Ÿฅ›','๐Ÿผ','โ˜•','๐Ÿต','๐Ÿงƒ','๐Ÿฅค','๐Ÿง‹','๐Ÿถ','๐Ÿบ','๐Ÿป','๐Ÿฅ‚','๐Ÿท','๐Ÿฅƒ','๐Ÿธ','๐Ÿน','๐Ÿพ','๐ŸงŠ'], + 'Objets_Outils': ['๐Ÿ“ฆ','๐ŸŽ','๐Ÿงธ','๐Ÿช€','๐ŸŽ€','๐ŸŽŠ','๐ŸŽ‰','๐ŸŽˆ','๐Ÿช„','๐Ÿ”ฎ','๐ŸŽญ','๐ŸŽจ','๐Ÿ–ผ๏ธ','๐ŸŽฌ','๐ŸŽค','๐ŸŽง','๐ŸŽผ','๐ŸŽน','๐Ÿฅ','๐ŸŽท','๐ŸŽบ','๐ŸŽธ','๐Ÿช•','๐ŸŽป','๐Ÿช—','โ™Ÿ๏ธ','๐ŸŽฏ','๐ŸŽณ','๐ŸŽฑ','๐Ÿช€','๐Ÿช','๐ŸŽฃ','๐Ÿคฟ','๐ŸŽฟ','๐Ÿ›ท','โ›ธ๏ธ','๐Ÿน','๐Ÿ›ก๏ธ','โš”๏ธ','๐Ÿ—ก๏ธ','๐Ÿช“','๐Ÿ”ซ','๐Ÿ’ฃ','๐Ÿงจ','๐Ÿช“','๐Ÿ”จ','โ›๏ธ','โš’๏ธ','๐Ÿ› ๏ธ','๐Ÿ—œ๏ธ','๐Ÿ”ฉ','โš™๏ธ','๐Ÿงฑ','โ›“๏ธ','๐Ÿช','๐Ÿงฐ','๐Ÿงฒ','๐Ÿชœ','๐Ÿ”ฌ','๐Ÿ”ญ','๐Ÿ“ก','๐Ÿ’‰','๐Ÿฉธ','๐Ÿ’Š','๐Ÿฉน','๐Ÿฉบ','๐Ÿ‹๏ธ','๐Ÿคธ','๐Ÿง—','๐Ÿ‡','โ›ท๏ธ','๐Ÿ‚','๐Ÿ„','๐Ÿšฃ','๐ŸŠ','๐Ÿšด','๐Ÿšต'], + 'Symboles': ['โœจ','โญ','๐ŸŒŸ','๐Ÿ’ซ','๐Ÿ”ฅ','๐Ÿ’ฅ','๐Ÿ’ข','๐Ÿ’ฏ','๐Ÿ’ฏ','๐Ÿ†’','๐Ÿ†•','๐Ÿ†—','๐Ÿ†™','๐Ÿ†“','๐Ÿ†–','๐Ÿ”ฐ','โšœ๏ธ','๐Ÿ”ฑ','๐ŸŽ–๏ธ','๐Ÿ…','๐Ÿ†','๐Ÿฅ‡','๐Ÿฅˆ','๐Ÿฅ‰','๐ŸŽ—๏ธ','๐ŸŽซ','๐ŸŽŸ๏ธ','๐ŸŽช','๐ŸŽจ','๐Ÿ””','๐Ÿ”•','๐Ÿ“ข','๐Ÿ“ฃ','๐Ÿ“ฏ','๐Ÿ’ ','๐Ÿ”ท','๐Ÿ”ถ','๐Ÿ”น','๐Ÿ”ธ','๐ŸŸ ','๐ŸŸก','๐ŸŸข','๐Ÿ”ต','๐ŸŸฃ','๐ŸŸค','โšซ','โšช','๐ŸŸฅ','๐ŸŸง','๐ŸŸจ','๐ŸŸฉ','๐ŸŸฆ','๐ŸŸช','๐ŸŸซ','โฌ›','โฌœ','๐Ÿ”บ','๐Ÿ”ป','๐Ÿ”ณ','๐Ÿ”ฒ','โ™พ๏ธ','โš›๏ธ','โ˜ฏ๏ธ','๐Ÿงฟ','๐Ÿชฌ','๐ŸŽด','๐Ÿƒ','๐Ÿ€„','๐ŸŽฐ','๐ŸŽฑ','๐Ÿ”บ','๐Ÿ”ป','๐Ÿ’Ž','๐Ÿณ๏ธ','๐Ÿด','๐Ÿ','๐Ÿšฉ','๐ŸŽŒ'], + 'Meteo_Espace': ['โ˜€๏ธ','๐ŸŒค๏ธ','โ›…','๐ŸŒฅ๏ธ','๐ŸŒฆ๏ธ','๐ŸŒง๏ธ','โ›ˆ๏ธ','๐ŸŒฉ๏ธ','โšก','๐ŸŒจ๏ธ','โ„๏ธ','โ˜ƒ๏ธ','โ›„','๐ŸŒฌ๏ธ','๐Ÿ’จ','๐ŸŒช๏ธ','๐ŸŒซ๏ธ','๐ŸŒˆ','โ˜”','๐Ÿ’ง','๐Ÿ’ฆ','๐ŸŒŠ','โ˜„๏ธ','๐Ÿ”ฅ','๐ŸŒ€','๐ŸŒ‹','๐ŸŒ','๐ŸŒ','๐ŸŒŽ','๐Ÿช','๐ŸŒ•','๐ŸŒ–','๐ŸŒ—','๐ŸŒ˜','๐ŸŒ‘','๐ŸŒ’','๐ŸŒ“','๐ŸŒ”','๐ŸŒ™','๐ŸŒš','๐ŸŒ›','๐ŸŒœ','โ˜€๏ธ','๐ŸŒž','โญ','๐ŸŒŸ','๐Ÿ’ซ','โœจ','๐ŸŒ ','๐ŸŒŒ'], + 'Batiments_Lieux': ['๐Ÿฐ','๐Ÿฏ','๐ŸŸ๏ธ','๐ŸŽก','๐ŸŽข','๐ŸŽ ','โ›ฉ๏ธ','๐Ÿ•Œ','๐Ÿ•','โ›ช','๐Ÿ›•','๐Ÿ•‹','โ›ฒ','๐Ÿ—๏ธ','๐Ÿงฑ','๐Ÿญ','๐Ÿข','๐Ÿฌ','๐Ÿฃ','๐Ÿค','๐Ÿฅ','๐Ÿฆ','๐Ÿจ','๐Ÿช','๐Ÿซ','๐Ÿฉ','๐Ÿ’’','๐Ÿ›๏ธ','๐Ÿ—ฝ','๐Ÿ—ผ','๐Ÿ—ป','๐Ÿ”๏ธ','โ›ฐ๏ธ','๐ŸŒ‹','๐Ÿ—พ','๐Ÿ•๏ธ','๐Ÿ–๏ธ','๐Ÿœ๏ธ','๐Ÿ๏ธ','๐Ÿž๏ธ','๐Ÿ›ฃ๏ธ','๐Ÿ›ค๏ธ','๐Ÿ™๏ธ','๐ŸŒƒ','๐ŸŒ‰','๐ŸŒ','๐ŸŒ†','๐ŸŒ‡','๐Ÿ˜๏ธ','๐Ÿš๏ธ','๐Ÿ ','๐Ÿก','๐ŸŸ๏ธ'], + 'Transport': ['๐Ÿš—','๐Ÿš•','๐Ÿš™','๐ŸšŒ','๐ŸšŽ','๐ŸŽ๏ธ','๐Ÿš“','๐Ÿš‘','๐Ÿš’','๐Ÿš','๐Ÿ›ป','๐Ÿšš','๐Ÿš›','๐Ÿšœ','๐Ÿ›ต','๐Ÿ๏ธ','๐Ÿ›บ','๐Ÿšฒ','๐Ÿ›ด','๐Ÿ›น','๐Ÿ›ผ','๐Ÿš','๐Ÿš‡','๐Ÿšˆ','๐Ÿš‰','๐ŸšŠ','๐Ÿš','๐Ÿšž','๐Ÿš‹','๐Ÿšƒ','๐Ÿš‚','๐Ÿš†','๐Ÿš„','๐Ÿš…','๐Ÿšˆ','๐ŸšŸ','๐Ÿš ','๐Ÿšก','โ›ด๏ธ','๐Ÿšข','๐Ÿ›ณ๏ธ','โ›ต','๐Ÿ›ฅ๏ธ','๐Ÿšค','๐Ÿ›ถ','โš“','๐Ÿ›ซ','๐Ÿ›ฌ','๐Ÿ›ฉ๏ธ','โœˆ๏ธ','๐Ÿ›ช','๐Ÿ›ฐ๏ธ','๐Ÿš€','๐Ÿ›ธ','๐Ÿš','๐Ÿช‚','๐ŸŽข','๐ŸŽก','๐ŸŽ '], + 'Sports': ['โšฝ','๐Ÿ€','๐Ÿˆ','โšพ','๐ŸฅŽ','๐ŸŽพ','๐Ÿ','๐Ÿ‰','๐Ÿฅ','๐ŸŽฑ','๐Ÿช€','๐Ÿ“','๐Ÿธ','๐Ÿ’','๐Ÿ‘','๐Ÿฅ','๐Ÿ','๐Ÿฅ…','โ›ณ','๐Ÿช','๐Ÿน','๐ŸŽฃ','๐Ÿคฟ','๐ŸฅŠ','๐Ÿฅ‹','๐ŸŽฝ','๐Ÿ›น','๐Ÿ›ท','โ›ธ๏ธ','๐ŸฅŒ','๐ŸŽฟ','โ›ท๏ธ','๐Ÿ‚','๐Ÿช‚','๐Ÿ‹๏ธ','๐Ÿคผ','๐Ÿคธ','โ›น๏ธ','๐Ÿคบ','๐Ÿคพ','๐Ÿ‡','๐Ÿง˜','๐Ÿ„','๐ŸŠ','๐Ÿคฝ','๐Ÿšฃ','๐Ÿง—','๐Ÿšด','๐Ÿšต','๐Ÿ†','๐Ÿ…','๐ŸŽ–๏ธ'], + 'Drapeaux': ['๐Ÿ','๐Ÿšฉ','๐ŸŽŒ','๐Ÿด','๐Ÿณ๏ธ','๐Ÿณ๏ธโ€๐ŸŒˆ','๐Ÿดโ€โ˜ ๏ธ','๐Ÿ‡ซ๐Ÿ‡ท','๐Ÿ‡ฒ๐Ÿ‡ฆ','๐Ÿ‡น๐Ÿ‡ณ','๐Ÿ‡ฉ๐Ÿ‡ฟ','๐Ÿ‡ช๐Ÿ‡บ','๐Ÿ‡บ๐Ÿ‡ธ','๐Ÿ‡ฌ๐Ÿ‡ง','๐Ÿ‡ฉ๐Ÿ‡ช','๐Ÿ‡ฎ๐Ÿ‡น','๐Ÿ‡ช๐Ÿ‡ธ','๐Ÿ‡ต๐Ÿ‡น','๐Ÿ‡ณ๐Ÿ‡ฑ','๐Ÿ‡ง๐Ÿ‡ช','๐Ÿ‡จ๐Ÿ‡ญ','๐Ÿ‡ฆ๐Ÿ‡น','๐Ÿ‡ธ๐Ÿ‡ช','๐Ÿ‡ณ๐Ÿ‡ด','๐Ÿ‡ฉ๐Ÿ‡ฐ','๐Ÿ‡ซ๐Ÿ‡ฎ','๐Ÿ‡ฎ๐Ÿ‡ช','๐Ÿ‡จ๐Ÿ‡ฆ','๐Ÿ‡ฒ๐Ÿ‡ฝ','๐Ÿ‡ง๐Ÿ‡ท','๐Ÿ‡ฆ๐Ÿ‡ท','๐Ÿ‡จ๐Ÿ‡ฑ','๐Ÿ‡จ๐Ÿ‡ด','๐Ÿ‡ฏ๐Ÿ‡ต','๐Ÿ‡ฐ๐Ÿ‡ท','๐Ÿ‡จ๐Ÿ‡ณ','๐Ÿ‡ฎ๐Ÿ‡ณ','๐Ÿ‡ฆ๐Ÿ‡บ','๐Ÿ‡ณ๐Ÿ‡ฟ','๐Ÿ‡ท๐Ÿ‡บ','๐Ÿ‡น๐Ÿ‡ท','๐Ÿ‡ธ๐Ÿ‡ฆ','๐Ÿ‡ฆ๐Ÿ‡ช','๐Ÿ‡ช๐Ÿ‡ฌ','๐Ÿ‡ฟ๐Ÿ‡ฆ','๐Ÿ‡ณ๐Ÿ‡ฌ','๐Ÿ‡ฐ๐Ÿ‡ช'], }; function setEditMode(on){ @@ -242,7 +249,7 @@ function render(){ if (editMode) cls.push('editmode'); const safeN = n.replace(/[<>"']/g, c => ({'<':'<','>':'>','"':'"',"'":'''})[c]); return `
-
${a.emoji || ''}
+
${a.emoji ? a.emoji : (a.url ? '' : '?')}
${safeN}
${a.isGap ? 'GAP' : ''}