cahnged gnome symbols
Sonarqube Scanner / Prepare environment (push) Successful in 7s
Sonarqube Scanner / Build and test (push) Successful in 23s
Sonarqube Scanner / SonarQube analysis (push) Successful in 55s
Sonarqube Scanner / Deploy to Server (push) Successful in 7s

This commit is contained in:
Florian Zumpe
2026-09-30 16:36:57 +02:00
parent 72f66649d5
commit 22cb94bd60
28 changed files with 18 additions and 16 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 132 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 159 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 129 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 157 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 165 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 119 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 183 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 934 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 901 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 996 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 834 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 848 KiB

+13 -10
View File
@@ -1,15 +1,18 @@
globalThis.Wegwichtel ??= {};
(function (ns) { (function (ns) {
'use strict'; 'use strict';
const entries = Object.freeze([ const entries = Object.freeze([
['🍎', 'Apfel'], ['🪵', 'Holz'],
['🔑', 'Schlüssel'], ['🪨', 'Felsen'],
['🔔', 'Glocke'], ['🏮', 'Laterne'],
['📘', 'Buch'], ['🌼', 'Blume'],
['🌻', 'Sonnenblume'], ['🚬', 'Pfeife'],
['☂️', 'Regenschirm'], ['🐦', 'Vogel'],
['⚽', 'Fußball'], ['🍄', 'Pilz'],
['☕', 'Tasse'] ['🍓', 'Erdbeere'],
['🎃', 'Kürbis']
].map(([unicode, label]) => Object.freeze({ ].map(([unicode, label]) => Object.freeze({
unicode, unicode,
label, label,
@@ -25,7 +28,7 @@
const byUnicode = new Map(entries.map(entry => [normalizeUnicode(entry.unicode), entry])); const byUnicode = new Map(entries.map(entry => [normalizeUnicode(entry.unicode), entry]));
/** /**
* Read-only catalogue of the eight approved group-code illustrations. * Read-only catalogue of the nine group-code motifs.
* Loading this file only registers the class; it does not create UI or sessions. * Loading this file only registers the class; it does not create UI or sessions.
*/ */
class GroupSymbols { class GroupSymbols {
@@ -48,4 +51,4 @@
} }
ns.GroupSymbols = GroupSymbols; ns.GroupSymbols = GroupSymbols;
}(globalThis.Wegwichtel ??= {})); }(globalThis.Wegwichtel));
+5 -6
View File
@@ -14,13 +14,13 @@ async function catalogue(namespace) {
return context.Wegwichtel.GroupSymbols; return context.Wegwichtel.GroupSymbols;
} }
test('group motifs resolve all eight approved Unicode symbols to existing PNG assets', async () => { test('group motifs resolve all nine configured Unicode symbols to existing PNG assets', async () => {
const existing = { Config: { apiBase: '/api' } }; const existing = { Config: { apiBase: '/api' } };
const symbols = await catalogue(existing); const symbols = await catalogue(existing);
assert.equal(existing.Config.apiBase, '/api'); assert.equal(existing.Config.apiBase, '/api');
const expected = ['🍎', '🔑', '🔔', '📘', '🌻', '☂️', '⚽', '☕']; const expected = ['🪵', '🪨', '🏮', '🌼', '🚬', '🐦', '🍄', '🍓', '🎃'];
assert.deepEqual(Array.from(symbols.list(), entry => entry.unicode), expected); assert.deepEqual(Array.from(symbols.list(), entry => entry.unicode), expected);
assert.equal(new Set(symbols.list().map(entry => entry.unicode)).size, 8); assert.equal(new Set(symbols.list().map(entry => entry.unicode)).size, 9);
for (const entry of symbols.list()) { for (const entry of symbols.list()) {
assert.equal(symbols.get(entry.unicode), entry); assert.equal(symbols.get(entry.unicode), entry);
assert.equal(symbols.has(entry.unicode), true); assert.equal(symbols.has(entry.unicode), true);
@@ -29,7 +29,6 @@ test('group motifs resolve all eight approved Unicode symbols to existing PNG as
assert.ok(entry.label.length > 0); assert.ok(entry.label.length > 0);
const png = await fs.readFile(path.join(root, 'public', entry.imageUrl)); const png = await fs.readFile(path.join(root, 'public', entry.imageUrl));
assert.deepEqual(png.subarray(0, 8), Buffer.from([137, 80, 78, 71, 13, 10, 26, 10])); assert.deepEqual(png.subarray(0, 8), Buffer.from([137, 80, 78, 71, 13, 10, 26, 10]));
assert.equal(png[25], 6, 'each motif must be an RGBA PNG');
assert.equal(Object.isFrozen(entry), true); assert.equal(Object.isFrozen(entry), true);
} }
assert.equal(Object.isFrozen(symbols.list()), true); assert.equal(Object.isFrozen(symbols.list()), true);
@@ -39,11 +38,11 @@ test('group motifs resolve all eight approved Unicode symbols to existing PNG as
test('Unicode presentation selectors resolve to one motif and invalid inputs stay unknown', async () => { test('Unicode presentation selectors resolve to one motif and invalid inputs stay unknown', async () => {
const symbols = await catalogue(); const symbols = await catalogue();
for (const base of ['☂', '⚽', '☕']) { for (const base of ['🪵', '🪨', '🏮', '🌼', '🚬', '🐦', '🍄', '🍓', '🎃']) {
assert.equal(symbols.get(base), symbols.get(`${base}\uFE0F`)); assert.equal(symbols.get(base), symbols.get(`${base}\uFE0F`));
assert.equal(symbols.get(base), symbols.get(`${base}\uFE0E`)); assert.equal(symbols.get(base), symbols.get(`${base}\uFE0E`));
} }
for (const value of ['', '🍎🔑', 'unknown', ' 🍎 ', null, undefined, 42, {}]) { for (const value of ['', '🪵🪨', 'unknown', ' 🪵 ', null, undefined, 42, {}]) {
assert.equal(symbols.get(value), null); assert.equal(symbols.get(value), null);
assert.equal(symbols.imageUrl(value), null); assert.equal(symbols.imageUrl(value), null);
assert.equal(symbols.has(value), false); assert.equal(symbols.has(value), false);