From 9fd4c0fd1267976520b0e2feeb0355c1b6e36aff Mon Sep 17 00:00:00 2001 From: Lukas Jost Date: Wed, 14 Oct 2026 23:29:09 +0200 Subject: [PATCH 01/16] docs(chat): document Minecraft design and plugin integration --- design/minecraft-chat-integration.md | 160 +++++++++++++ design/minecraft-mini-cd-and-chat.md | 222 ++++++++++++++++++ docs.json | 7 + .../plans/2026-10-14-java-chat-design.md | 202 ++++++++++++++++ 4 files changed, 591 insertions(+) create mode 100644 design/minecraft-chat-integration.md create mode 100644 design/minecraft-mini-cd-and-chat.md create mode 100644 superpowers/plans/2026-10-14-java-chat-design.md diff --git a/design/minecraft-chat-integration.md b/design/minecraft-chat-integration.md new file mode 100644 index 0000000..87607bc --- /dev/null +++ b/design/minecraft-chat-integration.md @@ -0,0 +1,160 @@ +--- +title: "Minecraft Chat: Plugin-Integration" +description: "Gemeinsame i18n-Layouts, geprüfte Plugin-Migrationen und Veröffentlichungsreihenfolge." +--- + +## Zuständigkeiten + +`library-i18n` besitzt Systemlayouts, Kategorien und das Spielerlayout. Jedes Plugin besitzt seine fachlichen Übersetzungskeys. `plugin-chat/common` erzeugt sichere Absender-, Kopf- und Emoji-Komponenten. `plugin-resourcepacks` meldet tatsächliche Clientfähigkeiten über die gemeinsame Proxy-API. Die Mini-CD legt die [Gestaltungsregeln](/design/minecraft-mini-cd-and-chat) fest. + +Layout und Wortlaut werden in `messages*.properties` gepflegt. Code darf keine sprachlichen Präfixe oder feste Reihenfolge sprachlicher Komponenten herstellen. Farben und Clientprüfung bleiben im Renderer. Richtext-Platzhalter erhalten explizite Komponenten; freie Strings bleiben unparsed. + +## Repository-Abgleich + +GitHub-Abgleich vom 14. Oktober 2026: 104 sichtbare Repositories, davon 60 unterschiedliche lokale Checkouts. Alle `plugin-*`-Repositories sind lokal vorhanden. Ergänzt wurden fehlende Plugin-Checkouts für Coins, Match, Analytics und Platform Router. Nicht jeder lokale Hauptcheckout war aktuell; die Umstellung arbeitet deshalb in isolierten Worktrees von frisch abgeglichenem `origin/main`. + +44 weitere Repositories sind lokal nicht vorhanden. Eine vollständige Kopie sämtlicher Services, Beispiele, Games und Infrastruktur ist für diese Plugin-Migration nicht erforderlich. + + + +```text +1vs1-demo +claude-rp-test +cloudflare-prometheus-exporter +disgit-hook +duel +external-dns-bunny-webhook +game-bedwars +grnds-link +grounds-anticheat +grounds-clickhouse-writer +grounds-infra-lib +grounds-instatus-sync +grounds-landing +grounds-pulumi-archive +grounds-recorder +grpc-client +grpc-server +headlamp-upcloud-clusters +keycloak-web +library-data-access +library-jvm-modules +library-minigame-api +mc-stress +menu-demo +minestom +multi-plugin-sample +nats-consumer +nats-producer +nats-recorder +platform-vcluster-template +prism +pvp-demo +sample-leaderboard-plugin +scoop-bucket +service-coins +service-leaderboard +service-match +service-proxy-registry +service-social +valkey-consumer +valkey-publisher +valkey-viewer +valkey-writer +website +``` + + + +## Auditumfang + +| Plugin | Angepasste Ausgabe | +| --- | --- | +| Chat | Systemfeedback, Report-Beleg, Global-/Privat-/Stafflayout, Emoji-Hilfe, Reporting-Menütexte | +| Proxy | Online-, Regions- und MOTD-Befehlsantworten | +| Player | Link/Unlink, Sprache, Login-Standardtexte, vertrauenswürdige Edition-Markierung | +| Social | Freunde, Party, Blocklisten und zusammengesetzte Party-Listen | +| Coins | Kontostand und Fehlerantworten | +| Match | Queue, Rejoin, Leaderboard, Assignment und Lobbybefehle | +| Notifications | Feste Texte, dynamische Systemausgabe und lokalisierte Aktionslayouts | +| Permissions | Feste menschliche Antworten und Login-Denial | +| Agones | Befehle, Lobby-Move, Drain-/Restart- und Logintexte | +| Scene Editor | Befehle, Lifecycle und menschliche Fehlerbausteine | +| Grounds Runtime | Menschliche Diagnoseüberschriften für Spieler | +| Resourcepacks | Java-Fontassets, bestätigte Darstellungsfähigkeiten, Lifecycle und lokalisierter Pack-Disconnect | +| Config, Grounds Platform, Analytics, Platform Router | Keine eigene feste Chat-Ausgabe im Audit gefunden | +| Server Discovery | Archivierter Repositorybestand; nicht als aktive zweite Implementierung geändert | + +EN, DE, FR und ES bleiben die vorhandenen Sprachvarianten der meisten Plugins. Der Scene Editor besitzt EN und DE; andere Sprachen fallen bewusst auf die Quellsprache zurück. Vor dem Client-Locale-Austausch verwenden Login-Denials die Quellsprache. Explizite Operator-Overrides in `messages.yml` bleiben wörtlich erhalten; neue leere Overrides verwenden die Übersetzungskeys. + +Actionbars, Inventartitel und Disconnect-Dialoge verwenden `render` und erhalten keinen Chatpräfix. Maschinenlesbare Diagnosen, beliebige Komponenten aus Transport-APIs, externe Fehlertexte und Konsolenausgaben behalten ihren jeweiligen Vertrag. Dynamische Texte werden nicht nachträglich als MiniMessage geparst. + +## Clientzustand + +Native Java-Köpfe und die Fontbereitschaft sind unabhängig. Die Proxy-API liefert standardmäßig zwei falsche Flags; eine fehlende oder fehlerhafte Abfrage bleibt lesbarer Text. Floodgate wird anhand seiner API abgefragt, damit verknüpfte Bedrock-Spieler mit einer Mojang-UUID korrekt erkannt werden. + +`CHAT_FONT_PACK_SHA1S` ist eine explizite, standardmäßig leere Allowlist der tatsächlich freigegebenen Plattformpack-Hashes. Ein gesendetes oder akzeptiertes Pack schaltet keine Grafiken frei; erst die erfolgreiche Ladebestätigung eines tatsächlich angebotenen erlaubten Packs zählt. Mehrdeutige wiederverwendete UUIDs mit unterschiedlichen Hashes bleiben Text. Identische bereits geladene Clientpacks bleiben beim Backendwechsel gültig. Die bestehende Pack-Deduplizierung bleibt erhalten; allein das Chatdesign löst keinen erneuten Download oder Ressourcen-Reload aus. Ein tatsächlich neues Angebot setzt die Bereitschaft bis zur erfolgreichen Ladebestätigung zurück. + +Die Minestom- und Paper-Lokalausgaben werden je Empfängersprache gerendert. Minestom erkennt Java anhand der vertrauenswürdig weitergeleiteten Edition-Markierung und des Protokolls. Der Proxy überträgt den bestätigten Fontstatus über `grounds:chat_style` an die konkrete aktuelle Backendverbindung. Die Minestom-Spielerinstanz speichert ihn unter `Tag.Boolean("grounds:chat-font-ready")`; neue Instanzen beginnen mit `false`, Disconnect und Modulstopp löschen den Zustand. Lokale Chatzeilen, Lobby-Systemmeldungen und Benachrichtigungen lesen denselben Zustand. + +Der binäre Vertrag umfasst exakt 26 Bytes in Big Endian: Version `1` als Byte, Ziel-UUID als zwei Longs, eine positive monotone Revision als Long und Bereitschaft `0` oder `1` als Byte. UUID und tatsächlicher Ereignisspieler müssen übereinstimmen. Ältere oder doppelte Revisionen überschreiben keinen neueren Zustand. Ungültige Pakete bleiben ohne Grafik; aufgezeichnete Events einer beendeten Spieler- oder Modulinstanz können keine neue Instanz aktivieren. Der Proxy behandelt eingehende Clientpakete auf diesem Kanal selbst und leitet sie nicht ungeprüft weiter. + +Remote-Social-Ausgaben verwenden den empfängerbezogenen `PlayerMessageRenderer` der gemeinsamen Proxy-API. Die Transportdaten bleiben semantische Übersetzungskeys mit Argumenten. Erst die zustellende Instanz entscheidet über Sprache und Logo. Unbekannte oder dekorierte Komponenten bleiben unverändert im bestehenden Ausgabeweg; fehlende oder inkompatible Renderer liefern die ursprüngliche Komponente weiter. Der Provider wird atomar registriert und nur von seinem tatsächlichen Eigentümer entfernt. + +## Verifizierter lokaler Stand + +Am 14. Oktober 2026 wurden in den betroffenen Modulen insgesamt 1538 Testfälle erfasst: 1532 erfolgreich ausgeführt, 6 bestehende Scene-Editor-Tests übersprungen, keine Fehler. Die relevanten Build- und Formatierungsprüfungen sind erfolgreich. Ein unabhängiger Code-Review prüfte insbesondere Registry-Eigentümerschaft, konkrete Spielersitzungen, Shutdown und konkurrierende Packereignisse. + +| Repository / Testumfang | Testfälle | Übersprungen | +| --- | ---: | ---: | +| library-i18n | 37 | 0 | +| plugin-chat | 350 | 0 | +| plugin-proxy | 138 | 0 | +| plugin-player | 49 | 0 | +| plugin-social | 26 | 0 | +| plugin-coins | 12 | 0 | +| plugin-match | 20 | 0 | +| plugin-notifications | 45 | 0 | +| plugin-permissions | 197 | 0 | +| plugin-agones | 105 | 0 | +| plugin-scene-editor | 176 | 6 | +| plugin-lobby | 85 | 0 | +| plugin-grounds-runtime | 5 | 0 | +| plugin-resourcepacks | 114 | 0 | +| resourcepacks: product + catalog | 179 | 0 | + +## Veröffentlichung und Abnahme + +Die Codeänderungen sind auf `feat/java-chat-unification` in separaten Worktrees committet und als Entwurfs-PRs auf GitHub veröffentlicht. Die Tests verbinden die geänderte i18n-Bibliothek und Proxy-API als lokale Composite-Builds. Die vorhandenen veröffentlichten Versionspins enthalten die neuen APIs noch nicht. + +1. Geänderte `library-i18n` und `plugin-proxy-api` prüfen und veröffentlichen. +2. Abhängige Plugin-Pins auf die tatsächlich veröffentlichten Versionen aktualisieren und deren eigenständige CI-Builds prüfen. +3. Das Java-Pack bauen und seinen tatsächlichen SHA-1 nach visueller Abnahme freigeben. +4. Java 26.3 im echten Client prüfen: Köpfe, Logo, Zeilenumbruch, GUI-/Chatskalierung, Report-Klicks und Packwechsel. +5. Bedrock-Grafiken und optionale Shader separat umsetzen und abnehmen. + +Eine lokale erfolgreiche Testausführung bedeutet keine Veröffentlichung oder Live-Aktivierung. + +## Review- und Release-Reihenfolge + +Zuerst `library-i18n` veröffentlichen, danach den i18n-Pin der Proxy-API anheben und diese veröffentlichen. Anschließend die Consumer auf die tatsächlich veröffentlichten Versionen anheben. Das Packprodukt kann parallel geprüft werden; seine Aktivierung folgt erst auf die Clientabnahme. Die Entwürfe behalten die tatsächlichen bestehenden Versionspins und können bis zu diesen Releases in ihrer eigenständigen CI wegen fehlender neuer APIs fehlschlagen. Lokale Composite-Prüfung und eigenständige CI sind getrennte Nachweise. + +| Repository | Entwurfs-PR | +| --- | --- | +| library-i18n | [Review](https://github.com/groundsgg/library-i18n/pull/10) | +| plugin-proxy | [Review](https://github.com/groundsgg/plugin-proxy/pull/77) | +| resourcepacks | [Review](https://github.com/groundsgg/resourcepacks/pull/45) | +| plugin-agones | [Review](https://github.com/groundsgg/plugin-agones/pull/87) | +| plugin-chat | [Review](https://github.com/groundsgg/plugin-chat/pull/46) | +| plugin-coins | [Review](https://github.com/groundsgg/plugin-coins/pull/5) | +| plugin-grounds-runtime | [Review](https://github.com/groundsgg/plugin-grounds-runtime/pull/6) | +| plugin-lobby | [Review](https://github.com/groundsgg/plugin-lobby/pull/89) | +| plugin-match | [Review](https://github.com/groundsgg/plugin-match/pull/19) | +| plugin-notifications | [Review](https://github.com/groundsgg/plugin-notifications/pull/18) | +| plugin-permissions | [Review](https://github.com/groundsgg/plugin-permissions/pull/36) | +| plugin-player | [Review](https://github.com/groundsgg/plugin-player/pull/49) | +| plugin-resourcepacks | [Review](https://github.com/groundsgg/plugin-resourcepacks/pull/31) | +| plugin-scene-editor | [Review](https://github.com/groundsgg/plugin-scene-editor/pull/30) | +| plugin-social | [Review](https://github.com/groundsgg/plugin-social/pull/23) | + +Der Chat-Branch enthält zusätzlich den aktuellen Mute-Enforcement-Stand von `origin/main`. Mute-Prüfungen, Server-Routing und die Reihenfolge von Privatnachricht-Zustellung und Echo bleiben erhalten; neu hinzugekommene Mute-Rückmeldungen sind ebenfalls lokalisiert. Nach dieser Integration wurden alle Chatmodule erneut gebaut und geprüft (350 Testfälle). diff --git a/design/minecraft-mini-cd-and-chat.md b/design/minecraft-mini-cd-and-chat.md new file mode 100644 index 0000000..bc561b2 --- /dev/null +++ b/design/minecraft-mini-cd-and-chat.md @@ -0,0 +1,222 @@ +--- +title: "Grounds — Minecraft Mini-CD & Chatdesign" +description: "Gestaltungsregeln für Minecraft-Chat, Systemmeldungen, Original-Logo und Emojis." +--- + +# Grounds — Minecraft Mini-CD & Chatdesign + +Version 0.4 · Stand: 14. Oktober 2026 · Zielplattform: Java 26.3 / Minestom und Bedrock über Geyser. + +Status: Aus der Story abgeleitete Designspezifikation. Die gewählte Richtung „eigenständiger Grounds-Stil“ ist abgestimmt; konkrete Farbwerte, Signet-Ausführung und Effekte sind der daraus entwickelte erste Entwurf. Dieses Dokument beschreibt die Gestaltungsregeln. Die lokale Java-Umsetzung und Plugin-Migration sind im [Integrationsnachweis](/design/minecraft-chat-integration) dokumentiert; Veröffentlichung und visuelle Clientabnahme stehen aus. + +## 1. Grundlage und Gestaltungsprinzip + +Grounds ist ein Zuhause zwischen den Matches. Die lebendige, optimistische Industriestadt verbindet Handwerk, Maschinenbau, Handel und Forschung. Stein, Kupferleitungen, Brücken, Werkstätten, Kräne und Kraftstationen erklären ihre Funktion. Vaerith ist ein natürlicher Energiespeicher; kontrollierte Nutzung, Kühlung und Wartung sind wesentlich. Die Geschichte ist freiwillig; alle Kernmodi bleiben ohne Story-Fortschritt erreichbar. + +Daraus folgt: warm, handwerklich, präzise und einladend. Technik erhält erkennbare Funktionen. Ornamente dienen Orientierung und Wiedererkennung. Wettbewerbsinformationen sind unmittelbar lesbar. Piltover bleibt eine atmosphärische Referenz, keine zu kopierende Markenidentität. + +Die visuelle Leitidee lautet „Werkstattschild trifft Stadtjournal“: dunkler Stein als Ruhefläche, warmer heller Text, Gold als Absenderakzent, Kupfer als ergänzender Werkstattakzent und kristallines Cyan für gezielte Energieakzente. + +Die Farbe von Vaerith ist in der Story ausdrücklich noch offen. Das aus dem Logo abgeleitete Cyan ist ein UI-Token, keine Festlegung der Mineral-, Kern- oder Weltfarbe. „Mira“, „Stadtjournal“ und weitere Arbeitsnamen werden durch diese Spezifikation nicht zu endgültigen Lore-Namen. + +## 2. Farben und Rollen + +Die Hexwerte sind Zielwerte für Java und Grafikassets. Für Bedrock-Chat werden die tatsächlich unterstützten Textfarben geprüft und auf die nächstgeeigneten Farben abgebildet; exakte RGB-Gleichheit wird nicht vorausgesetzt. Kanal, Absenderart und Status bleiben zusätzlich als Text erkennbar. + +| Token | Zielwert | Rolle | Konservativer Text-Fallback | +| --- | --- | --- | --- | +| stone.deep | #181D20 | Optionale dunkle UI-Flächen | Nativer Client-Hintergrund | +| stone.surface | #272E32 | Optionale abgesetzte Flächen | Nativer Client-Hintergrund | +| text.primary | #F2EBDD | Nachrichten, Namen und wichtige Werte | Weiß | +| text.secondary | #C1B9AA | Ergänzende Angaben | Grau | +| gold.primary | #E7B84B | Systemabsender und Markenakzent | Gold | +| copper.primary | #DDA16F | Ergänzender Werkstatt- und Materialakzent | Gold | +| energy.accent | #67D9EC | Gezielte Interaktionen und Auswahl | Aqua | +| status.success | #A4CE87 | Erfolg | Grün plus „Erfolg“ | +| status.warning | #F0C36A | Zeitkritische Hinweise und Warnung | Gelb plus „Warnung“ | +| status.error | #F28B82 | Fehler und abgelehnte Aktionen | Rot plus „Fehler“ | + +Nachrichtentext bleibt standardmäßig text.primary. Statusfarben markieren Kennung und relevante Werte, nicht automatisch den gesamten Absatz. Gedämpfte Farbe ist kein Mittel, um wichtige Informationen zu verstecken. Teamfarben im Match bleiben für Teamzuordnung reserviert und werden nicht von Markenfarben überschrieben. + +Kontrast wird am echten Client über hellen, dunklen und unruhigen Spielszenen beurteilt. Hexwerte allein garantieren keine Lesbarkeit bei frei eingestellter Chattransparenz. + +## 3. Typografie, Zeichen und Logo + +- Fließtext bleibt eine gut lesbare Minecraft-Pixelschrift mit vollständigen deutschen Zeichen. Keine dekorative Schrift für Nachrichten oder Befehle. +- Eigene Schriftakzente sind für Signet und kurze Labels zulässig. Unterschiedliche Schriften dürfen keinen höheren Zeilenabstand oder abgeschnittene Glyphen erzeugen. +- Ein einheitlicher Trenner „›“ steht zwischen Absenderblock und Nachricht; Text-Fallback ist „>“. Zwischen Bestandteilen steht jeweils ein normales Leerzeichen. +- Keine Regenbogenverläufe, wechselnden Trenner, langen Zierlinien, gesperrten Buchstaben oder dauerhaft animierten Namen. +- Für Systemnachrichten wird das originale farbige G als Chatsignet verwendet: hochauflösende 128×128-Textur mit transparentem Hintergrund, bewahrtem Seitenverhältnis und möglichst wenig leerem Rand. Gold kennzeichnet den Systemabsender; das Logo behält seine eigenen Farben. Die flache Cracked-G-Variante bleibt eine Alternative, falls das Original bei kleiner Anzeige nicht ausreichend lesbar ist. Die vollständige Grounds-Wortmarke ist für größere Begrüßungen oder besondere Ankündigungen vorgesehen, nicht vor jeder Systemzeile. +- Texturauflösung und Anzeigegröße werden getrennt festgelegt. 128×128 bezeichnet die Quelldatei; ungefähr acht GUI-Pixel Höhe sind der Ausgangspunkt für die kompakte Chatdarstellung. Ein Java-Bitmap-Font skaliert die Grafik über height und richtet sie über ascent zur Textzeile aus; dafür ist kein Shader erforderlich. Die Logo-Komponente wird weiß eingefärbt, damit die Originalfarben erhalten bleiben. Feine Details können bei kleiner Anzeige verschwinden; Erkennbarkeit, Abstände und Zeilenüberschneidungen werden bei mehreren GUI-/Chatskalierungen getestet. Bedrock erhält eine separat geprüfte Font-/Assetdarstellung; Java-Fontparameter werden nicht als direkt übertragbar vorausgesetzt. +- Köpfe, Signet und Emojis orientieren sich an derselben optischen Höhe und Grundlinie. Abnahme erfolgt bei mehreren GUI- und Chatskalierungen. + +### Logoabgleich und Farbkorrektur + +Der visuelle Logoabgleich am 14. Oktober 2026 basiert auf den Originaldateien logo/logo-png-noglow.png und flat versions/PNG/icon blackstandard.png im vom Betreiber genannten Logoordner. Die Wortmarke verbindet warmen hellen Stein, dunkle braune Bruchkanten, goldene Metallflächen, leuchtende cyanfarbene Kristalle und kleine grüne Pflanzenakzente. Das flache Zeichen übernimmt die gebrochene G-Silhouette und eine markante Kristall-Aussparung links. Daher passt die steinerne, handwerkliche Grundrichtung; Gold und Cyan werden stärker an die vorhandene Marke angelehnt. Kupfer bleibt eine aus der Stadtstory abgeleitete Ergänzung. Die Hexwerte sind visuell gewählte UI-Näherungen und keine gemessenen oder verbindlich vom Logo übernommenen Markenfarbwerte. Das vorhandene Kristallmotiv legt Vaeriths Lore-Farbe nicht fest. Bestätigte Logoentscheidung: Das originale farbige G wird zuerst aus einer 128×128-Textur klein im Chat angezeigt. Steinstruktur und Kristallfarben bleiben Bestandteil der Grafik; zusätzliche animierte Effekte werden dadurch nicht beschlossen. Die Wortmarke erscheint nur in größeren, ausgewählten Meldungen. Die tatsächliche Erkennbarkeit des G bei kompakter Anzeige ist am Client zu prüfen; bei Bedarf steht die flache Variante zur Verfügung. + +## 4. Verbindliche Nachrichtengrammatik + +Die folgenden Regeln gelten für die geplante Darstellung von Lobby-, Match-, Gruppen-, Privat- und Staff-Chat sowie Systemantworten. Routing, Berechtigungen und Moderation werden durch die Gestaltung nicht verändert. + +| Art | Format | Kennzeichnung | +| --- | --- | --- | +| Öffentlicher Spielerchat | [Kopf] Name › Nachricht | Kopf, klarer Name, heller Inhalt | +| Spielerchat mit erforderlichem Kontext | [Kopf] [Team] Name › Nachricht | Kanal bzw. Team vor dem Namen | +| Private Nachricht eingehend | [Kopf] [Privat] Name → du › Nachricht | Explizites Privatlabel und Richtung | +| Private Nachricht ausgehend | [Kopf] [Privat] du → Name › Nachricht | Kopf bezeichnet den tatsächlichen Sender | +| Partychat, sofern verfügbar | [Kopf] [Party] Name › Nachricht | Textlabel bleibt sichtbar | +| Staffchat | [Kopf] [Staff] Name › Nachricht | Nur im berechtigten Kanal; Staff bleibt Spielerabsender | +| Systemmeldung | [Logo] Grounds · Kategorie › Nachricht | Logo und feste Grounds-Kennung | +| NPC-Dialog im Chat | [NPC-Porträt] [NPC] Name › Dialog | NPC-Kennung; nicht wie ein realer Spieler tarnen | + +Die eckigen Platzhalter [Kopf], [Logo] und [NPC-Porträt] beschreiben Grafiken, keine wörtlich anzuzeigenden Texte. Ohne passende Grafikunterstützung entfallen Kopf/Porträt; das Systemlogo wird durch [Grounds] ersetzt. Beispielsweise: „[Grounds] Warnung › Neustart in 5 Minuten.“ + +Öffentlicher und Gruppenchat behalten dieselbe Texthelligkeit. Ein Kanal wird durch ein kurzes Label unterschieden, wenn sein Kontext sonst mehrdeutig ist. „Team“ im Match und „Staff“ für Mitarbeiter sind unterschiedliche Kanäle. + +Ein Rangbadge ist nur bei tatsächlichem Bedarf zulässig; keine Kette aus Rang, Level, Titel und Cosmetics vor jeder Nachricht. Detailinformationen gehören in Profil oder unterstützte Hoveransicht. Kritische Informationen dürfen nie ausschließlich im Hover stehen. + +Systemkategorien sind kurz und verständlich: Info, Erfolg, Warnung, Fehler, Freunde, Party, Match und Story. Spielerbezogene Mitteilungen werden an die betroffenen Empfänger adressiert, nicht unnötig global verteilt. Spieler dürfen mit eigenen Eingaben weder das reservierte Systemsignet noch administrative Labels oder Formatierung erzeugen. + +## 5. Sprache und Beispiele + +Grounds spricht freundlich, direkt und praktisch. Eine Meldung nennt Ergebnis oder Problem zuerst und bei Bedarf einen nächsten Schritt. Technische Service-, Exception- und Transportnamen gehören nicht in normale Spielerhinweise. Lore-Begriffe erklären Funktionen, statt bekannte Bedienwörter zu verdrängen. + +| Anlass | Muster | +| --- | --- | +| Spielerchat | [Kopf] Lukas › Hat jemand Lust auf ein Duell? | +| Party-Einladung | [Logo] Grounds · Party › Mia lädt dich ein. [Annehmen] | +| Queue | [Logo] Grounds · Match › Du wartest auf ein 1vs1. | +| Bestätigung | [Logo] Grounds · Erfolg › Deine Einstellungen wurden gespeichert. | +| Neustart | [Logo] Grounds · Warnung › Neustart in 5 Minuten. | +| Fehler | [Logo] Grounds · Fehler › Diese Aktion ist gerade nicht möglich. Versuch es gleich noch einmal. | +| Freiwillige Story | [Logo] Grounds · Story › In der Werkstatt gibt es Neuigkeiten. | +| Join im relevanten Umfeld | [Logo] Grounds · Info › Mia ist angekommen. | + +Aktionsklammern bezeichnen echte unterstützte Aktionen; sie dürfen nicht wie klickbare Schaltflächen aussehen, wenn der Client keine Aktion anbietet. Für Bedrock erhält jede notwendige Aktion einen dort nutzbaren Weg, etwa einen geprüften Befehl oder ein Formular. Solange dieser fehlt, keine vorgetäuschte Klickbarkeit. Unbekannte Fehlerursachen werden nicht als angeblich bekannter Zustand ausgegeben. + +Join/Leave bleibt auf sinnvolle Empfängergruppen begrenzt. Storymeldungen sind freiwillig und dürfen Spielauswahl, Queue oder Match nicht blockieren. Begrüßungstexte und Stadtmetaphern bleiben kurz; reguläre Systemantworten werden nicht als NPC-Sprache ausgegeben. + +## 6. Emojis + +Startset: :heart:, :smile:, :laugh:, :thumbsup:, :gg:, :fire:, :creeper: und :wrench:. Pixelgrafiken erhalten einen gemeinsamen Stil, eine kompakte Größe und erkennbare Silhouetten. Die Nachrichtenfarbe darf bunte Grafiken nicht unbeabsichtigt einfärben. + +- Kurzformen funktionieren ohne besondere Tastatur und werden serverseitig über eine kuratierte Zuordnung aufgelöst. +- Unterstützte direkt eingegebene Unicode-Emojis können als zusätzliche Aliase normalisiert werden. Vollständige Unterstützung sämtlicher Unicode-Emojisequenzen wird nicht zugesagt. +- Ohne passende Pack-/Clientunterstützung bleiben lesbare Kurzformen wie :heart: sichtbar; keine fehlenden Glyphen oder privaten Codepoints im Fallback. +- /emoji ist der vorgeschlagene Einstieg zur Übersicht; Existenz, Suchfunktion und Vervollständigung sind noch umzusetzen. +- Richtwert: höchstens fünf grafisch ersetzte Emojis pro Nachricht. Weitere Kurzformen bleiben Text. Bestehende Längen- und Spamregeln gelten weiterhin. +- Die serverseitige Emoji-Auflösung darf die Längenprüfung nicht aushebeln. Relevante Rohtexte, normalisierte Bedeutung und tatsächlich zugestellte Darstellung bleiben für die vorhandene Moderations-/Reporting-Pipeline nachvollziehbar. +- Freier Spielertext wird nicht als MiniMessage oder ausführbarer Richtext geparst. Nur kontrollierte Emoji-Tokens und explizit freigegebene Komponenten werden eingesetzt. + +## 7. Java, Bedrock und reduzierte Darstellung + +| Fähigkeit | Java 26.3 | Bedrock über Geyser | Reduzierte Darstellung | +| --- | --- | --- | --- | +| Absender und Kategorien | Adventure-Komponenten | Eigener geprüfter Renderer | Namen, Labels und Trenner als Text | +| Skinkopf | Native Player-Object-Komponente | Eigener Machbarkeitstest; Java-Komponente nicht ungeprüft weitergeben | Name ohne Bild | +| Grounds-Signet und Emojis | Eigene Sprite-/Fontassets im Java-Pack | Eigene Bedrock-Assets und Zuordnung | [Grounds] und Emoji-Kurzformen | +| Farben | Zielwerte per Komponenten | Unterstützte Farbpalette prüfen | Klare Textlabels | +| Hover und Klick | Nur vom Client unterstützte Aktionen | Separat prüfen; notwendige Alternativen bereitstellen | Explizite Befehle oder verfügbare Menüs | +| Chatflächen und Effekte | Pack-/Shader-Prototyp | Bedrock-UI-Prototyp unabhängig davon | Nativer Chat ohne Effekte | + +Java unterstützt Spieler- und Atlasobjekte in Text seit 1.21.9. Der exakte Weg durch die eingesetzten Minestom-, Adventure-, Velocity- und Geyser-Versionen muss dennoch getestet werden. Der veröffentlichte Geyser-Fehlerbericht zu Player Objects ist ein konkreter Grund für eine getrennte Ausgabe, kein Nachweis über den aktuell eingesetzten Build. + +Gemeinsame Markenidentität bedeutet gleiche Bedeutung, Motive und Absenderlogik. Identische Shader, Layoutparameter oder Pixelergebnisse auf beiden Editionen sind kein zugesagtes Ziel. + +Auch mit einem grundsätzlich erforderlichen Serverpack ist eine reduzierte Textdarstellung für Ladephase, Fehlerfälle und begrenzte Fähigkeiten sinnvoll. Diese Regel ändert die bestehende Pack-Zutrittsrichtlinie nicht. + +## 8. Shader und Oberfläche + +Shader sind eine optionale visuelle Erweiterung. Der erste Prototyp untersucht ausschließlich eine dezente Betonung des Systemsignets und gegebenenfalls eine lokale Systemmeldungsfläche. Geometrie, Umbruch und Effektgrenzen sind erst nach Clientprüfung festzulegen. + +Kein globaler Bildschirmfilter, kein dauerhaftes Pulsieren, Wackeln oder Glühen im normalen Chat. Normale Spielernachrichten bleiben statisch. Informationen, Eingabe, Auswahl, Kopieren und Scrollen müssen ohne Effekt verständlich und bedienbar bleiben. + +Java-Core-Shader erlauben keine beliebige neue Chat-Bedienlogik. Ein Chat mit freien Kartenlayouts, eigener Emoji-Schaltfläche, neuem Eingabefeld oder zuverlässiger Erkennung des offenen Chats wird durch diese Spezifikation nicht als machbar zugesagt. Postprocessing in 26.3 ist ebenfalls kein Ersatz für eine Chat-UI-Schnittstelle. + +Core-Shader-Overrides sind von Mojang als nicht offiziell unterstützte Erweiterung beschrieben. 26.3 verändert unter anderem Shaderkompilierung und Textshader. Der Prototyp muss auf dem exakten Zielclient funktionieren; frühere Shaderrezepte aus dem Resourcepack-v2-Konzept gelten nicht als 26.3-Kompatibilitätsnachweis. + +Für Bedrock wird die im Zielclient verwendete Chat-/HUD-Oberfläche separat auf Ressourcenpaket-Anpassbarkeit geprüft. Mojangs chat_screen.json ist ein Ausgangspunkt, kein Nachweis, dass jede Geräteoberfläche oder gewünschte Funktion identisch anpassbar ist. + +## 9. Einordnung in die vorhandene Architektur + +Das bestehende plugin-chat-Konzept beschreibt Server-, Gruppen-, Privat- und Staffchat sowie Ausgabe an mehreren Stellen. Neue Vorlagen sollen aus einer gemeinsamen semantischen Definition entstehen: Absenderart, Kategorie, Kanal, relevante Spieler, Nachricht und erlaubte Aktionen. Erst am Ausgabeweg werden Clientfähigkeiten, Packzustand und Darstellung gewählt. Die lokale Umsetzung folgt dieser Trennung; Routing und Kanalberechtigungen behalten ihre bestehenden Verträge. + +Kein für Java fertig gerendertes Bild-/Object-Component-Format ungeprüft an alle Empfänger senden. Bestehende Systemausgaben anderer Plugins müssen bei der späteren Integration erfasst werden: Social, Queue/Match, Moderation, Story, Befehlsantworten und Join/Leave. + +Der dokumentierte Zwei-Pack-Vertrag bleibt erhalten: grounds-platform besitzt allgemeine Renderer-/Shader-/Font-Infrastruktur und allein assets/minecraft; grounds-content liefert thematische Markenmotive und Spielinhalte über den vorgesehenen Beitragsmechanismus. Allgemeine Chat-, Tab- und Menü-Fonts einschließlich des fest eingebundenen Chat-Signets gehören zur Plattform. Endgültige Pfade und Zuständigkeiten werden gegen die tatsächlichen Repositories geprüft. Keine neue dritte Packschicht und keine Live-Pack-Neuverteilung werden durch dieses CD eingeführt. + +Die Scene-/Resource-Pack-Plattform führt Bedrock bisher ausdrücklich als zurückgestellt. Der hier gewünschte Bedrock-Chat ist neuer Zielumfang und benötigt eine eigene Umsetzung und Abnahme. Er erklärt die bestehende Plattform nicht nachträglich für Bedrock-kompatibel. + +Diese Spezifikation ersetzt beim neuen Chatdesign die älteren Präsentationsbeispiele im plugin-chat-Konzept, nicht dessen Routing, Berechtigungen oder Implementierungsstatus. Das ältere Resourcepack-v2-Konzept bleibt Hintergrundmaterial; seine Shader- und Kompatibilitätsangaben müssen gegen 26.3 verifiziert werden. + +## 10. Abnahme und nächste Arbeit + +Logo und Assets wurden gesichtet, die Produktionsplugins inventarisiert und die Java-Implementierung lokal geprüft. Die eingesetzte Minestom-Zielversion ist der Grounds-Fork für Java 26.3; die visuelle Abnahme des gesamten Clientwegs steht aus. + +Die nächste Abnahme vergleicht Spielernachricht, Privatnachricht, Systeminfo, Warnung, Fehler und Emoji im echten Client. Zuerst Java und der lesbare Bedrock-Fallback, anschließend optionale Effekte und eigene Bedrock-Grafiken. + +Abnahmekriterien: + +1. Spieler, System und NPC sind auf Anhieb durch Absenderkennung unterscheidbar, auch ohne Farbe oder Grafik. +2. Lange Nachrichten, Umlaute, Zeilenumbrüche und mehrere GUI-/Chatskalierungen bleiben lesbar; keine überlappenden Köpfe oder abgeschnittenen Icons. +3. Bedrock zeigt bei sämtlichen Beispielen Text; keine ungültigen Object-Komponenten, fehlenden Glyphen oder ausschließlich per Hover erreichbaren Informationen. +4. Ein-, ausgehende und eigene Privatnachrichten zeigen eindeutige Richtung; Team-, Party- und Stafflabels werden nicht verwechselt. +5. Emoji-Aliase, unbekannte Tokens, Grenzlängen und wiederholte Emojis ergeben vorhersehbare, moderierbare Darstellung. +6. Reduzierte Ausgabe funktioniert bei fehlender Packfähigkeit. Verhalten bei Ablehnung eines erforderlichen Packs folgt der vorhandenen Zutrittsrichtlinie. +7. Java-Effekte verändern keinen unbeteiligten HUD-/Welttext und sind bei Nichtunterstützung entbehrlich. +8. Helle/dunkle Umgebung, Scrollen, Fade, Auswahl und Kopieren werden am echten Client geprüft; Bedrock zusätzlich mit relevanten Touch-/Controller-Eingaben. +9. Rendererentscheidungen ändern keine Kanalberechtigung, Sichtbarkeit, Blockregel oder Reporting-Zuordnung. + +Bestätigt sind die Gestaltungsrichtung und die Verwendung des originalen farbigen G aus einer 128×128-Textur, mit der Wortmarke für größere Meldungen und dem flachen G als Alternative. Clienttests sind weiterhin offen. Die finale Anzeigegröße und Ausrichtung, Bedrock-Logo-/Kopf-Darstellung, genaue Vaerith-Farbe und zusätzliche Effekte bleiben konkret zu prüfen. + +## 11. Dokumentation und Quellen + +Die Confluence-Seite erläutert die Story-Ableitung und Sollregeln. Der Docs-Spiegel liegt unter docs/design/minecraft-mini-cd-and-chat.md im Grounds-Arbeitsbereich. Beide Fassungen erhalten dieselbe Versionsnummer und gegenseitige Verweise; Regeländerungen werden gemeinsam gepflegt. Die Seiten liegen im Repository docs unter design/ und sind in der Navigation Reference → Minecraft Design eingetragen. + +Interne Grundlagen: + +- [Grounds — Story, Lobbywelt & Player Journey](https://grounds.atlassian.net/wiki/spaces/gkd/pages/294649857) +- [Konzept: plugin-chat](https://grounds.atlassian.net/wiki/spaces/gkd/pages/156172297) +- [Grounds Resourcepack – Vollständiges Konzept (v2)](https://grounds.atlassian.net/wiki/spaces/gkd/pages/138641411) +- [Scene, NPC & Resource Pack Platform — Concept and Master Plan](https://grounds.atlassian.net/wiki/spaces/GARCHITECT/pages/257622018) + +Technische Referenzen: + +- [Minecraft Java 1.21.9: Textobjekte](https://www.minecraft.net/en-us/article/minecraft-java-edition-1-21-9) +- [Minecraft Java 26.3: Shader und Postprocessing](https://www.minecraft.net/en-us/article/minecraft-java-edition-26-3) +- [Minestom: Adventure](https://minestom.net/docs/adventure/what-is-adventure) +- [Geyser: Ressourcenpakete](https://geysermc.org/wiki/geyser/packs/) +- [Geyser: Player-Object-Fehlerbericht](https://github.com/GeyserMC/Geyser/issues/6301) +- [Mojang: Bedrock chat_screen.json](https://github.com/Mojang/bedrock-samples/blob/main/resource_pack/ui/chat_screen.json) + +Confluence: [Grounds — Minecraft Mini-CD & Chatdesign](https://grounds.atlassian.net/wiki/spaces/gkd/pages/300154881) + + +## 12. Verbindlicher i18n- und Layoutvertrag + +Jedes Plugin besitzt seine fachlichen Nachrichtenschlüssel und `messages*.properties`. `library-i18n` übernimmt Locale-Auswahl, Sprachfallback, sichere Platzhalter und die gemeinsame Darstellung. Eine Übersetzung oder neue Fachnachricht benötigt dadurch keinen eigenen Nachrichtenrenderer. + +Die gemeinsame Bibliothek besitzt die Layoutvorlagen einschließlich Platzhalterreihenfolge, Trennzeichen, Markenbezeichnung und Kategorien. Dazu gehören `layout.text-prefix`, `layout.graphical-prefix` und `layout.player` im Bundle `gg.grounds.i18n.system`. Sprachvarianten dürfen die Reihenfolge verändern. Privat- und Staffkanäle besitzen ebenfalls übersetzbare Vorlagen mit Komponentenplatzhaltern für Absender, Empfänger und Nachricht. Keine sprachlichen Präfixe werden im Plugin-Code zusammengesetzt. + +Der Renderer besitzt Farben und grafische Komponenten. Die Nachrichtenschlüssel tragen explizite semantische Kategorien; eine Kategorie wird nicht aus dem englischen Text oder dessen Farbe erraten. Clientfähigkeiten bestimmen ausschließlich die Darstellung, niemals Sprache, Berechtigung oder Routing. + +- `send`: lokalisierte Systemnachricht mit gemeinsamem Kategorienpräfix. +- `sendRendered`: bereits zusammengesetzte Systemkomponenten mit demselben Präfix; Klick- und Hoveraktionen bleiben erhalten. +- `render`: unpräfixierte Komponenten für Menüs, Titel, Actionbars und Verbindungsdialoge. +- `sendUnprefixed`: übersetzbare Unterhaltungsvorlagen; keine Systemmeldungen. + +Spielereingaben und externe Texte werden als uninterpretierte Strings eingesetzt. Nur explizite Komponentenplatzhalter erhalten Formatierung oder Aktionen. Bestehende dynamische Serverdiagnosen, Transportfelder und Konsolenausgaben werden nicht durch Übersetzungen verändert. + +### Integrations- und Freigabegrenzen + +Das Java-Pack besitzt `grounds:chat`: das originale 128×128-G auf U+E100, acht Emoji-Glyphen U+E101 bis U+E108, Bitmaphöhe 8 und Ascent 7. Die zwei bestehenden Packschichten und Pack-UUIDs bleiben bestehen. + +Eine Proxy-Ausgabe darf das Logo nur nach bestätigtem erfolgreichem Laden eines tatsächlich angebotenen Packs mit explizit freigegebenem SHA-1 verwenden. Die Operator-Allowlist `CHAT_FONT_PACK_SHA1S` ist standardmäßig leer. Versenden oder Akzeptieren des Packs allein zählt nicht als geladen. Ein neues Pack-Angebot, Ladefehler oder ein Disconnect setzen die grafische Darstellung auf die lesbare Textausgabe zurück. Bei einem Backendwechsel startet die neue Spielerinstanz ohne Fontbereitschaft und erhält einen aktuellen Proxy-Snapshot; die bestätigten identischen Clientpacks bleiben gültig und werden nicht allein für das Chatdesign neu geladen. Alte oder mehrdeutige Packbestätigungen schalten keine Grafik frei. Bedrock und unbekannte Fähigkeiten erhalten keine Java-Objektkomponenten. + +Die Umstellung wird in isolierten lokalen Branches und Composite-Builds geprüft. Neue Bibliotheks- und API-Funktionen müssen vor der Veröffentlichung der abhängigen Plugins veröffentlicht und deren Abhängigkeiten auf die tatsächlichen Versionen angehoben werden. Ein erfolgreicher Composite-Build ersetzt weder diese Veröffentlichungsreihenfolge noch die visuelle Abnahme im echten Java-26.3-Client. Shader, Bedrock-Grafiken und Clientabnahme bleiben getrennte Folgearbeit. + +### Empfängergebundene Darstellung + +Der Proxy überträgt den bestätigten Fontstatus über `grounds:chat_style` an die konkrete aktuelle Backendverbindung. Der Vertrag enthält exakt 26 Bytes in Big Endian: Version `1` als Byte, Ziel-UUID als zwei Longs, positive monotone Revision als Long und Bereitschaft `0` oder `1` als Byte. Die Minestom-Spielerinstanz speichert den Status unter `grounds:chat-font-ready`. Neue Instanzen beginnen ohne Bereitschaft; Disconnect und Modulstopp löschen den Zustand. UUID muss zum Ereignisspieler passen; ältere oder doppelte Revisionen überschreiben keinen neueren Zustand. Clientpakete auf diesem Kanal werden am Proxy behandelt und nicht ungeprüft weitergeleitet. + +Remote-Social-Meldungen bleiben im Transport semantische Übersetzungskeys mit Argumenten. Der empfängerbezogene `PlayerMessageRenderer` entscheidet erst auf dem zustellenden Proxy über Sprache und Logo. Fehlende oder inkompatible Renderer und fremde Komponenten behalten den bestehenden Ausgabeweg. Registrierung und Entfernen des Providers sind atomar und an dessen tatsächliche Instanz gebunden. diff --git a/docs.json b/docs.json index 4e77d63..d55fdc6 100644 --- a/docs.json +++ b/docs.json @@ -234,6 +234,13 @@ "reference/development/naming-conventions", "reference/development/logging-conventions" ] + }, + { + "group": "Minecraft Design", + "pages": [ + "design/minecraft-mini-cd-and-chat", + "design/minecraft-chat-integration" + ] } ] } diff --git a/superpowers/plans/2026-10-14-java-chat-design.md b/superpowers/plans/2026-10-14-java-chat-design.md new file mode 100644 index 0000000..6a6babd --- /dev/null +++ b/superpowers/plans/2026-10-14-java-chat-design.md @@ -0,0 +1,202 @@ +--- +title: "Java-Chatdesign: Umsetzungsplan" +description: "Implementiere das Grounds-Chatdesign für Java 26.3 mit originalem Logo, Spielerköpfen, Emojis und textbasiertem Fallback." +--- + +# Java-Chatdesign Implementation Plan + +> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:executing-plans for native execution, or superpowers:subagent-driven-development if the user selects delegation. Implement task by task; track steps with checkboxes. + +**Goal:** Java-Spieler erhalten einen einheitlichen Chat mit dem originalen farbigen G, Spielerköpfen, klar unterscheidbaren Systemmeldungen und einem kleinen Emoji-Set. Bedrock behält zunächst eine lesbare Textdarstellung. + +**Architecture:** Verwende die aktuelle gemeinsame ChatLine aus plugin-chat und die zentrale Systemausgabe aus library-i18n. Ergänze empfängerabhängige Darstellungsprofile und die Chatgrafiken im bestehenden Zwei-Pack-Produkt. Formatiere unmittelbar vor der Zustellung; Routing und Moderationsmetadaten bleiben getrennt von der Darstellung. + +**Tech Stack:** Kotlin/JVM, Adventure, Grounds-Minestom-Fork 2026.10.02-26.3-grounds.1, Velocity, library-i18n, resourcepacks, JUnit, Gradle. + +**Spec:** [Mini-CD v0.4](../../design/minecraft-mini-cd-and-chat.md), [Confluence](https://grounds.atlassian.net/wiki/spaces/gkd/pages/300154881). + +## Global Constraints + +- Java 26.3 zuerst; keine neue grafische Bedrock-Oberfläche in dieser Umsetzung. +- Originales farbiges G: transparente 128×128-Quelle, Seitenverhältnis bewahren; erste Anzeigehöhe 8 GUI-Pixel, ascent 7; erst nach Clientabnahme ändern. +- Eigener Font grounds:chat; reservierte Glyphen werden nicht in die Standardspielerschrift eingebaut. +- Gold #E7B84B, Text #F2EBDD, Sekundärtext #C1B9AA, Cyan #67D9EC. Erfolg/Warnung/Fehler behalten die Mini-CD-Token. Vorhandene Rank-/Teamzuordnung bleibt erhalten. +- Logo- und Emoji-Komponenten sind weiß eingefärbt und nicht fett/kursiv; ihre Originalfarben bleiben erhalten. +- System: Logo Grounds · Kategorie › Nachricht. Spieler: Kopf Name › Nachricht. Privat- und Staffkanäle bleiben ausdrücklich bezeichnet. +- Die acht Emoji-Aliase sind :heart:, :smile:, :laugh:, :thumbsup:, :gg:, :fire:, :creeper: und :wrench:. Höchstens fünf grafische Ersetzungen, übrige Aliase bleiben Text. +- Freier Spielertext bleibt unparsed; keine MiniMessage-Auswertung von Nachrichten. +- Der bestehende PackSet besteht aus grounds-content und grounds-platform; aktuelle main-Quelle verwendet Packformat 97. +- Releases erzeugt Release Please. Keine manuell erfundenen Versionen oder Aktivierung von Production. +- Build, Packangebot und Clientabnahme sind getrennte Zustände. + +## Ursprünglicher Code und Ausgangsstand + +Historischer Ausgangsstand vor der Umsetzung am 14. Oktober 2026; der aktuelle Stand steht im Ausführungsbericht: + +- plugin-chat origin/main 05e5a5a: ChatLine ist bereits gemeinsam; private Nachrichten und Staffchat sind lokalisiert. Der lokale Hauptcheckout ist älter und darf nicht als Implementierungsbasis dienen. +- resourcepacks origin/main 0a8a9c6: vorhandene TabFont/Tab-Logo-Integration und gehaltene, hashgeprüfte Artworkquellen verwenden. +- grounds-minestom-runtime origin/main c1480de: Runtime-ServiceRegistry ist die Minestom-Integrationsgrenze. +- library-i18n ist lokal noch nicht als Projektcheckout vorhanden. Zum Lesen liegt origin/main unter /tmp/grounds-chat-i18n-review; die Implementierung benötigt einen dauerhaften Checkout. +- library-i18n Prefix.GROUNDS ist derzeit statisch. Translations.send versieht Systemmeldungen mit dem Präfix; render und sendUnprefixed dürfen weiterhin kein Systempräfix erhalten. +- plugin-resourcepacks ResourcePackStatusListener protokolliert Ladeereignisse; ein öffentliches, fontbezogenes Readiness-Query ist in den geprüften Quellen noch nicht vorhanden. +- Die Docs sind ein eigenes Git-Repository. Vor Änderungen aktuelle Basis prüfen und fremde untracked Dateien erhalten. + +## Review Focus + +1. Ein Java-Spieler mit einem alten, noch geladenen Pack darf keine unbekannten Chatglyphen erhalten. +2. Bedrock und unbekannte Plattform-/Ladezustände bekommen weder native Java-Köpfe noch Fontglyphen. +3. Cross-Proxy-Sender, PM-Echos und Staffchat dürfen weder Identität noch Nachrichtenrichtung verlieren. +4. Reports müssen die tatsächlich zugestellte Darstellung den richtigen Empfängern und bestehenden Message-IDs zuordnen. +5. Plugin-Classloader dürfen keine zweite ServiceRegistry oder Adventure-Implementierung laden. + +## Task 1: Aktuelle Basis und reproduzierbare Chatassets + +**Files** +- Create resourcepacks/resourcepacks-product/src/main/kotlin/gg/grounds/resourcepacks/product/ChatFont.kt. +- Modify resourcepacks/resourcepacks-product/src/main/kotlin/gg/grounds/resourcepacks/product/ProductGraph.kt. +- Create resourcepacks/art/platform/chat/logo.png und emoji/*.png. +- Modify resourcepacks/art/platform/ASSET_ORIGINS.json. +- Create resourcepacks/resourcepacks-product/src/test/kotlin/gg/grounds/resourcepacks/product/ChatPackTest.kt. +- Modify resourcepacks/resourcepacks-catalog/src/test/kotlin/gg/grounds/resourcepacks/catalog/PackArtworkLicenseContractTest.kt, falls die Artworkliste erweitert werden muss. + +**Interfaces** +- ChatFont.LOGO = 0xE100; Emojis in der oben festgelegten Reihenfolge = 0xE101 bis 0xE108. +- ChatFont.json(): String erzeugt assets/grounds/font/chat.json mit ausschließlich expliziten Bitmapprovidern. +- Texturen liegen im ZIP unter assets/grounds/textures/font/chat/. +- Alle neuen Artworkquellen werden vor Komposition geöffnet, gegen SHA-256/Größe geprüft und über die bestehende Immutable-Source-Pipeline verarbeitet. + +- [ ] Ausgangspunkt origin/main verwenden; keine bestehenden fremden Worktrees übernehmen. Gitstatus und Baselineprüfungen dokumentieren. +- [ ] ChatPackTest fordert 128×128-Logo mit Alpha, height=8/ascent=7, eindeutige Glyphen, vorhandene acht Emoji-PNGs, richtige Packreihenfolge und unveränderte minecraft-Fontdateien. +- [ ] Den Test ausführen und sein erwartetes Fehlen der Chatassets nachweisen. +- [ ] Originales farbiges G aus dem Betreiberlogo verwenden. Das Bild wird deterministisch zugeschnitten/eingepasst; keine KI-Neuzeichnung. Bestehende Emojiassets nur mit nachvollziehbarer Herkunft übernehmen, sonst kleine neue Pixelassets erstellen und die Herkunft dokumentieren. +- [ ] ChatFont und gehaltene Artwork-Komposition implementieren. Die vollständige Wortmarke bleibt als größeres Asset für ausgewählte Meldungen vorgesehen; keine Verkleinerung der ganzen Wortmarke auf das quadratische G. +- [ ] :resourcepacks-product:test und :resourcepacks-catalog:test ausführen; zwei Builds mit denselben expliziten Inputs byteweise vergleichen. +- [ ] Änderungen einzeln committen, sobald die Prüfungen bestehen. + +## Task 2: Empfängerprofil und zentrale Systemdarstellung + +**Files** +- Create library-i18n/src/main/kotlin/gg/grounds/i18n/SystemMessageRenderer.kt. +- Modify library-i18n/src/main/kotlin/gg/grounds/i18n/Translations.kt. +- Modify library-i18n/src/main/kotlin/gg/grounds/i18n/Prefix.kt. +- Create library-i18n/src/test/kotlin/gg/grounds/i18n/SystemMessageRendererTest.kt. +- Create plugin-proxy/api/src/main/kotlin/gg/grounds/proxy/api/PlayerChatAppearanceQuery.kt. +- Modify plugin-resourcepacks/velocity/src/main/kotlin/gg/grounds/resourcepacks/velocity/ResourcePackStatusListener.kt und GroundsResourcePacksPlugin.kt. +- Create plugin-resourcepacks/velocity/src/test/kotlin/gg/grounds/resourcepacks/velocity/ChatAppearanceStateTest.kt. + +**Interfaces** +- PlayerChatAppearanceQuery.appearanceOf(playerId: UUID): PlayerChatAppearance. +- PlayerChatAppearance enthält javaHeadsSupported: Boolean und chatFontReady: Boolean; Default ist beides false. +- SystemMessageRenderer.render(audience: Audience, key: MessageKey, message: Component): Component. +- Translations erhält einen optionalen Renderer über einen neuen benannten Factory-Einstieg forBundleWithSystemRenderer; vorhandene forBundle-Signaturen bleiben binär erhalten. +- Der Standardrenderer reproduziert das bestehende Prefix-Verhalten. Ein explizit installierter Minecraft-Renderer erzeugt die neue Markenzeile für geeignete Empfänger. + +- [ ] Tests zuerst: render und sendUnprefixed bleiben unverändert; send verwendet den Empfängerrenderer; bestehende Factoryaufrufe und Java-Overloads bleiben kompatibel. +- [ ] Kategorien werden über eine explizite MessageKey-Zuordnung bestimmt. Fehler-/Usage-/Reportkeys erhalten geprüfte Kategorien; kein Raten aus zufälligen Textfarben. +- [ ] Readiness erst nach erfolgreichem Ladeereignis des exakt angebotenen Platformpacks setzen. Ein bloß gesendetes, abgelehntes, fehlgeschlagenes oder veraltetes Pack setzt chatFontReady nicht. +- [ ] Assetfähigkeit wird zusätzlich gegen die tatsächlich eingeführte Chat-Pack-Version bzw. einen bekannten Manifest-/Packhash geprüft. Eine Auswahl älterer PackSets setzt sie zurück. Die konkreten Releasepins werden nach Veröffentlichung aus den echten Releaseartefakten übernommen; vorher bleibt die Produktivfunktion deaktiviert. +- [ ] Disconnect, Packwechsel und Shutdown löschen den Zustand. Ein verspätetes Statusereignis für den vorherigen Packfingerprint darf ihn nicht wieder aktivieren. +- [ ] Query über die bestehende ProxyServiceRegistry bereitstellen; plugin-proxy-api compileOnly verwenden. Bei fehlendem Provider greift immer der Textfallback. +- [ ] Minestom erhält dieselben booleschen Werte über die vorhandene Backend-Kommunikation als neues versioniertes Capability-Signal; alte Gegenstellen ignorieren es. Sender- und Empfängerzustand werden nicht verwechselt. +- [ ] Gradleprüfungen in library-i18n, plugin-proxy und plugin-resourcepacks ausführen; vorhandene Lade-/Lifecycle-Tests bestehen weiter. + +## Task 3: Gemeinsame Spielernachrichten und Emoji-Auflösung + +**Files** +- Modify plugin-chat/common/src/main/kotlin/gg/grounds/chat/format/ChatLine.kt. +- Create plugin-chat/common/src/main/kotlin/gg/grounds/chat/format/ChatAppearance.kt. +- Create plugin-chat/common/src/main/kotlin/gg/grounds/chat/format/ChatEmojis.kt. +- Modify plugin-chat/common/src/test/kotlin/gg/grounds/chat/format/ChatLineTest.kt. +- Create plugin-chat/common/src/test/kotlin/gg/grounds/chat/format/ChatEmojisTest.kt. +- Modify plugin-chat/common/build.gradle.kts ausschließlich soweit eine nachgewiesen kompatible ObjectComponent-API dies erfordert. + +**Interfaces** +- ChatAppearance(javaHeadsSupported: Boolean, chatFontReady: Boolean), mit TEXT_ONLY. +- ChatEmojis.render(rawText: String, appearance: ChatAppearance): Component. +- ChatLine erhält zusätzliche Overloads mit senderId: UUID, appearance: ChatAppearance und den vorhandenen optionalen Rankinformationen. Bestehende Overloads bleiben erhalten. +- Native Köpfe werden aus der tatsächlichen Sender-UUID erstellt; keine synchronen Skin-HTTP-Aufrufe während einer Nachricht. + +- [ ] Mit dependencyInsight die tatsächlich aufgelösten Adventure-APIs und Serializer in Minestom und Velocity vergleichen. Native ObjectComponent-Erzeugung nur mit einer auf beiden Java-Hosts kompatiblen API implementieren; keine Adventure-Schattierung. +- [ ] Tests zuerst für Kopf/kein Kopf, ‹Name › Nachricht›, helle Nachrichtfarbe, vorhandene Rankfarben, ungültige Rankfarbe und unveränderte vom Aufrufer übergebene Component-Stile. +- [ ] Emoji-Tests: genau fünf Ersetzungen, sechster Alias bleibt Text, unbekannte Aliase bleiben unverändert, Fallback enthält keine reservierten Glyphen, Markup wie bleibt wörtlicher Text. +- [ ] Ein expliziter Literalfilter verhindert, dass frei eingegebene reservierte Chatglyphen als Systemzeichen erscheinen. +- [ ] Die bisherigen Längenregeln am Eingang erhalten; Surrogat-/Unicode-Grenzen prüfen. Es wird zunächst das feste Alias-Set unterstützt, keine angebliche vollständige Unicode-Emoji-Normalisierung. +- [ ] :common:test und die bestehenden Codec-/Reporting-Tests ausführen. + +## Task 4: Java-Ausgabewege, private Nachrichten und /emoji + +**Files** +- Modify plugin-chat/velocity/src/main/kotlin/gg/grounds/chat/velocity/handler/GlobalChatHandler.kt. +- Modify plugin-chat/velocity/src/main/kotlin/gg/grounds/chat/velocity/handler/PrivateMessageHandler.kt. +- Modify plugin-chat/velocity/src/main/kotlin/gg/grounds/chat/velocity/handler/StaffChatHandler.kt. +- Modify plugin-chat/minestom/src/main/kotlin/gg/grounds/chat/minestom/listener/ChatListener.kt. +- Modify plugin-chat/minestom/src/main/kotlin/gg/grounds/chat/minestom/GroundsChatMinestom.kt. +- Modify plugin-chat/velocity/src/main/kotlin/gg/grounds/chat/velocity/GroundsChatPlugin.kt. +- Create plugin-chat/velocity/src/main/kotlin/gg/grounds/chat/velocity/command/EmojiCommand.kt. +- Modify die vorhandenen gg/grounds/chat/messages*.properties. +- Extend bestehende Handler-/Listener-/Reportingtests; create EmojiCommandTest.kt. + +**Interfaces** +- Jeder Empfänger erhält sein aktuelles Darstellungsprofil unmittelbar vor dem Send. +- Private Nachrichten verwenden weiterhin die vorhandenen Lokalisierungskeys und sichere Component-Placeholder für Kopf, Name und Emojiinhalt. +- /emoji zeigt die acht verfügbaren Aliase; bei chatFontReady zusätzlich die Grafiken. Es ist keine neue klickbare Client-Eingabeleiste. + +- [ ] Tests zuerst für zwei Empfänger derselben Nachricht mit unterschiedlicher Grafikfähigkeit, Cross-Proxy-Sender und lokale Minestom-Zustellung. +- [ ] PM-Echo bezeichnet den tatsächlichen Sender; eingehend Name → du, ausgehend du → Name. Privat und Staff sind lokalisiert; Staff bleibt eine Spielernachricht ohne Systemlogo. +- [ ] Reporting speichert pro tatsächlicher Darstellung die richtigen zugestellten Empfänger, Rohtexte und bestehenden Message-IDs. Sichtbarkeits-/Block-/Ratelimitregeln bleiben bestehen. +- [ ] Formatted-Component-Broadcasts behalten ihre Inhalte; fremde Component-Fonts werden nicht pauschal umgeschrieben. +- [ ] /emoji registrieren, Übersetzungen ergänzen und vorhandene Permission-Manifest-Konventionen anwenden. +- [ ] :common:test :velocity:test :minestom:test :paper:test sowie die Formatierungsprüfungen ausführen. Paper erhält die gemeinsame Textgrammatik; seine grafikfähige Abnahme ist kein erster Releaseblocker. + +## Task 5: Systemmeldungen im aktiven Java-Lobbyumfang + +**Files** +- Modify Bundle-Erstellung in plugin-chat/velocity/GroundsChatPlugin.kt. +- Modify Bundle-Erstellung in plugin-social/velocity und plugin-lobby/minestom an den tatsächlichen forBundle-Aufrufen. +- Modify deren relevante Nachrichten-/Systemausgabetests. +- Modify minestom-lobby/build.gradle.kts erst mit echten veröffentlichten Consumer-Versionen. + +**Interfaces** +- Alle adoptierten Bundleinstanzen verwenden dieselbe SystemMessageRenderer-Implementierung und empfängerabhängige Capability-Auflösung. +- Bestehende render-Nutzung für Menüs, Scoreboard, Tab und Lore wird nicht verändert. + +- [ ] forBundle-, direkte sendMessage- und sendUnprefixed-Aufrufe in den aktiven Lobby-/Social-/Chatmodulen inventarisieren; legitime Gesprächszeilen von Systemausgaben unterscheiden. +- [ ] Tests zuerst für Chatfehler, Freund-/Partyaktionen und Navigator-/Queueantworten mit und ohne geladenes Chatpack. +- [ ] Kategorien und Formatierung an den gefundenen Systemausgaben übernehmen. Englische, deutsche und bestehende weitere Locale-Bundles konsistent pflegen. +- [ ] Bestehende Menü-/Tab-/Scoreboardtests müssen nachweisen, dass kein Systempräfix auf andere Oberflächen gelangt. +- [ ] Repos einzeln prüfen; Abhängigkeiten nach ihrem Release in den Consumer übernehmen. Kein automatischer Versionssprung nur aufgrund eines geplanten Features. + +## Task 6: Dokumentation, Review und reale Java-Abnahme + +**Files** +- Update docs/design/minecraft-mini-cd-and-chat.md mit YAML-Frontmatter nach docs/AGENTS.md. +- Create docs/minecraft/chat-design.mdx und passenden Navigationslink in docs/docs.json. +- Update README bzw. Integrationsdocs in plugin-chat, library-i18n und resourcepacks. +- Update die existierende Confluence-Mini-CD-Seite; Sollstand und verifizierten Iststand getrennt halten. + +- [ ] Docs erklären Alias-Eingabe, Absenderarten, Packlade-Fallback, die 128×128-Quelle und tatsächliche Anzeigegröße. +- [ ] Fachlichen Gesamtänderungsreview durchführen, insbesondere Registry-Klassenidentität, Threading, Readiness-Races und Reporting. +- [ ] Reviewbare PRs pro betroffenem Repository mit erforderlichen Tests und Abhängigkeitsreihenfolge vorbereiten. Erstellte PRs an diesen Chat anhängen. +- [ ] Ein isoliertes Java-Testpaket erzeugen; kein globales PackSet für einen Bildschirmtest umstellen. +- [ ] Reale Java-26.3-Abnahme bei mehreren GUI-/Chatskalierungen: G-Logo, Kopf, Privat-/Staffzeilen, fünf Emojis, lange Zeilen, helle/dunkle Umgebung, Scrollen, Auswahl/Kopieren und Ladezustandswechsel. +- [ ] Bedrock-Smokecheck nur auf lesbare Textausgabe ohne Java-Objekte/Glyphen. Bedrockgrafiken und zusätzliche Shader-/Flächeneffekte sind ein späterer eigener Ausbauschritt. +- [ ] Gesicherte Testergebnisse dokumentieren. Erst nach Review/Clientabnahme einen konkreten Stage-Aktivierungsschritt vorlegen; Production-Aktivierung benötigt eine eigene Freigabe. + +## Ausführungsbericht — 14. Oktober 2026 + +Die lokale Quellcodeumsetzung ist abgeschlossen. Die ursprünglichen Detailchecklisten oben beschreiben den Planungsstand; für den verifizierten Iststand gilt dieser Bericht. + +- [x] Isolierte aktuelle Worktrees und GitHub-Inventar: 104 sichtbare Repositories, 60 lokal, alle `plugin-*` vorhanden. +- [x] Originales 128×128-G und acht reproduzierbare Emoji-Assets im bestehenden Java-Packprodukt integriert. +- [x] Gemeinsame System- und Spielerlayouts einschließlich Trennzeichen und Platzhalterreihenfolge in `library-i18n`; fachliche Texte bleiben in Plugin-Bundles. +- [x] Spieler-, Privat- und Staffausgabe je Empfänger; sichere Komponenten, Emoji-Hilfe und bestehende Reporting-Verträge geprüft. +- [x] Feste Nachrichten aller aktiven Plugins auditiert und gefundene Ausgaben vereinheitlicht. Umfang und bewusste Grenzen stehen in der Integrationsdokumentation. +- [x] Vertrauenswürdige Edition, bestätigter Packzustand, Proxy-/Minestom-Bridge und zustellungsbezogenes Social-Rendering integriert. +- [x] Build-/Formatierungsprüfungen und 1538 Testfälle: 1532 erfolgreich, 6 bestehende Scene-Editor-Skips, keine Fehler. Unabhängiger Review der Integrations- und Lifecycle-Grenzen abgeschlossen. +- [x] Mini-CD und Integration in Docs sowie Confluence dokumentiert. Die Integrationsseite liegt unter `design/minecraft-chat-integration` statt des ursprünglich geplanten zweiten Minecraft-Pfads. +- [ ] Bibliothek und gemeinsame Proxy-API veröffentlichen; echte Consumer-Versionspins aktualisieren und eigenständige CI-Builds prüfen. +- [x] Änderungen committen und PRs für die betroffenen Repositories erstellen; alle Quellcodeänderungen sind committet und als Entwurfs-PRs veröffentlicht. +- [ ] Reale Java-26.3-Abnahme mit verschiedenen Chat-/GUI-Skalierungen und Bedrock-Text-Smokecheck durchführen. +- [ ] Tatsächlich erzeugten Plattformpack-Hash nach Abnahme freigeben und Stage aktivieren. `CHAT_FONT_PACK_SHA1S` bleibt standardmäßig leer. + +Die Tests verwenden lokale Composite-Builds für die geänderte i18n-Bibliothek und Proxy-API. Erfolgreiche lokale Prüfung ist keine Veröffentlichung oder Live-Aktivierung. Die konkreten Verträge, Testzahlen und Veröffentlichungsreihenfolge stehen in [Minecraft Chat: Plugin-Integration](../../design/minecraft-chat-integration.md). From 597ad2f5f283dd24dbc73ef204a592b71756de69 Mon Sep 17 00:00:00 2001 From: Lukas Jost Date: Thu, 15 Oct 2026 00:01:57 +0200 Subject: [PATCH 02/16] docs(chat): document independent context and message level --- design/minecraft-chat-integration.md | 32 ++++++++++++------- design/minecraft-mini-cd-and-chat.md | 19 +++++------ .../plans/2026-10-14-java-chat-design.md | 10 ++++-- 3 files changed, 38 insertions(+), 23 deletions(-) diff --git a/design/minecraft-chat-integration.md b/design/minecraft-chat-integration.md index 87607bc..99c74a7 100644 --- a/design/minecraft-chat-integration.md +++ b/design/minecraft-chat-integration.md @@ -5,10 +5,18 @@ description: "Gemeinsame i18n-Layouts, geprüfte Plugin-Migrationen und Veröffe ## Zuständigkeiten -`library-i18n` besitzt Systemlayouts, Kategorien und das Spielerlayout. Jedes Plugin besitzt seine fachlichen Übersetzungskeys. `plugin-chat/common` erzeugt sichere Absender-, Kopf- und Emoji-Komponenten. `plugin-resourcepacks` meldet tatsächliche Clientfähigkeiten über die gemeinsame Proxy-API. Die Mini-CD legt die [Gestaltungsregeln](/design/minecraft-mini-cd-and-chat) fest. +`library-i18n` besitzt Systemlayouts, Kontext- und Levelbezeichnungen sowie das Spielerlayout. Jedes Plugin besitzt seine fachlichen Übersetzungskeys. `plugin-chat/common` erzeugt sichere Absender-, Kopf- und Emoji-Komponenten. `plugin-resourcepacks` meldet tatsächliche Clientfähigkeiten über die gemeinsame Proxy-API. Die Mini-CD legt die [Gestaltungsregeln](/design/minecraft-mini-cd-and-chat) fest. Layout und Wortlaut werden in `messages*.properties` gepflegt. Code darf keine sprachlichen Präfixe oder feste Reihenfolge sprachlicher Komponenten herstellen. Farben und Clientprüfung bleiben im Renderer. Richtext-Platzhalter erhalten explizite Komponenten; freie Strings bleiben unparsed. +## Kontext und Level + +`SystemCategory` beschreibt ausschließlich den Kontext: `GENERAL`, `FRIENDS`, `PARTY`, `MATCH`, `STORY`. `SystemLevel` beschreibt unabhängig davon `INFO`, `SUCCESS`, `WARNING`, `ERROR`. `SystemMessageKey` bietet beide Felder mit den Standards `GENERAL` und `INFO`; bestehende einfache `MessageKey`-Implementierungen bleiben gültig. + +Eine Freundeslisten-Ablehnung verwendet beispielsweise `FRIENDS` mit `ERROR`, ein erfolgreicher Partybeitritt `PARTY` mit `SUCCESS`. Das Layout zeigt weiterhin den Kontext. Das Level bestimmt dessen Farbe; Textinhalt, Klickaktionen und explizite Komponentenstile bleiben erhalten. `` und das optionale `` werden unabhängig lokalisiert und können in den i18n-Layouts platziert werden. Der Ausgabeweg entscheidet weiterhin, ob die Nachricht vom System oder einem Spieler stammt. + +Alle Plugin-Keys und direkte `SystemMessages.format`-Aufrufe werden mit diesen zwei unabhängigen Feldern gepflegt. Fachliche Zuordnungen sind explizit; es gibt keine Laufzeitheuristik anhand von Keynamen oder Farben. + ## Repository-Abgleich GitHub-Abgleich vom 14. Oktober 2026: 104 sichtbare Repositories, davon 60 unterschiedliche lokale Checkouts. Alle `plugin-*`-Repositories sind lokal vorhanden. Ergänzt wurden fehlende Plugin-Checkouts für Coins, Match, Analytics und Platform Router. Nicht jeder lokale Hauptcheckout war aktuell; die Umstellung arbeitet deshalb in isolierten Worktrees von frisch abgeglichenem `origin/main`. @@ -103,23 +111,23 @@ Remote-Social-Ausgaben verwenden den empfängerbezogenen `PlayerMessageRenderer` ## Verifizierter lokaler Stand -Am 14. Oktober 2026 wurden in den betroffenen Modulen insgesamt 1538 Testfälle erfasst: 1532 erfolgreich ausgeführt, 6 bestehende Scene-Editor-Tests übersprungen, keine Fehler. Die relevanten Build- und Formatierungsprüfungen sind erfolgreich. Ein unabhängiger Code-Review prüfte insbesondere Registry-Eigentümerschaft, konkrete Spielersitzungen, Shutdown und konkurrierende Packereignisse. +Am 14. Oktober 2026 wurden in den betroffenen Modulen insgesamt 1550 Testfälle erfasst: 1544 erfolgreich ausgeführt, 6 bestehende Scene-Editor-Tests übersprungen, keine Fehler. Die relevanten Build- und Formatierungsprüfungen sind erfolgreich. Ein unabhängiger Code-Review prüfte insbesondere Registry-Eigentümerschaft, konkrete Spielersitzungen, Shutdown und konkurrierende Packereignisse. | Repository / Testumfang | Testfälle | Übersprungen | | --- | ---: | ---: | -| library-i18n | 37 | 0 | -| plugin-chat | 350 | 0 | +| library-i18n | 42 | 0 | +| plugin-chat | 351 | 0 | | plugin-proxy | 138 | 0 | | plugin-player | 49 | 0 | -| plugin-social | 26 | 0 | -| plugin-coins | 12 | 0 | +| plugin-social | 27 | 0 | +| plugin-coins | 13 | 0 | | plugin-match | 20 | 0 | -| plugin-notifications | 45 | 0 | +| plugin-notifications | 46 | 0 | | plugin-permissions | 197 | 0 | | plugin-agones | 105 | 0 | -| plugin-scene-editor | 176 | 6 | -| plugin-lobby | 85 | 0 | -| plugin-grounds-runtime | 5 | 0 | +| plugin-scene-editor | 177 | 6 | +| plugin-lobby | 86 | 0 | +| plugin-grounds-runtime | 6 | 0 | | plugin-resourcepacks | 114 | 0 | | resourcepacks: product + catalog | 179 | 0 | @@ -157,4 +165,6 @@ Zuerst `library-i18n` veröffentlichen, danach den i18n-Pin der Proxy-API anhebe | plugin-scene-editor | [Review](https://github.com/groundsgg/plugin-scene-editor/pull/30) | | plugin-social | [Review](https://github.com/groundsgg/plugin-social/pull/23) | -Der Chat-Branch enthält zusätzlich den aktuellen Mute-Enforcement-Stand von `origin/main`. Mute-Prüfungen, Server-Routing und die Reihenfolge von Privatnachricht-Zustellung und Echo bleiben erhalten; neu hinzugekommene Mute-Rückmeldungen sind ebenfalls lokalisiert. Nach dieser Integration wurden alle Chatmodule erneut gebaut und geprüft (350 Testfälle). +Der Chat-Branch enthält zusätzlich den aktuellen Mute-Enforcement-Stand von `origin/main`. Mute-Prüfungen, Server-Routing und die Reihenfolge von Privatnachricht-Zustellung und Echo bleiben erhalten; neu hinzugekommene Mute-Rückmeldungen sind ebenfalls lokalisiert. Nach dieser Integration wurden alle Chatmodule erneut gebaut und geprüft (351 Testfälle). + +Die freigegebene Kontext-/Level-Trennung ist in den bestehenden Entwurfs-PRs umgesetzt und erneut geprüft: 42 Bibliothekstests, alle 13 betroffenen Plugin-Builds erfolgreich; insgesamt 1550 erfasste Testfälle, 1544 erfolgreich und sechs bestehende Scene-Editor-Skips. Der unabhängige Review fand keine verlorenen Metadaten. Veröffentlichungs- und Clientabnahmegrenzen bleiben bestehen. diff --git a/design/minecraft-mini-cd-and-chat.md b/design/minecraft-mini-cd-and-chat.md index bc561b2..2c65f73 100644 --- a/design/minecraft-mini-cd-and-chat.md +++ b/design/minecraft-mini-cd-and-chat.md @@ -5,7 +5,7 @@ description: "Gestaltungsregeln für Minecraft-Chat, Systemmeldungen, Original-L # Grounds — Minecraft Mini-CD & Chatdesign -Version 0.4 · Stand: 14. Oktober 2026 · Zielplattform: Java 26.3 / Minestom und Bedrock über Geyser. +Version 0.5 · Stand: 14. Oktober 2026 · Zielplattform: Java 26.3 / Minestom und Bedrock über Geyser. Status: Aus der Story abgeleitete Designspezifikation. Die gewählte Richtung „eigenständiger Grounds-Stil“ ist abgestimmt; konkrete Farbwerte, Signet-Ausführung und Effekte sind der daraus entwickelte erste Entwurf. Dieses Dokument beschreibt die Gestaltungsregeln. Die lokale Java-Umsetzung und Plugin-Migration sind im [Integrationsnachweis](/design/minecraft-chat-integration) dokumentiert; Veröffentlichung und visuelle Clientabnahme stehen aus. @@ -69,13 +69,13 @@ Die folgenden Regeln gelten für die geplante Darstellung von Lobby-, Match-, Gr | Systemmeldung | [Logo] Grounds · Kategorie › Nachricht | Logo und feste Grounds-Kennung | | NPC-Dialog im Chat | [NPC-Porträt] [NPC] Name › Dialog | NPC-Kennung; nicht wie ein realer Spieler tarnen | -Die eckigen Platzhalter [Kopf], [Logo] und [NPC-Porträt] beschreiben Grafiken, keine wörtlich anzuzeigenden Texte. Ohne passende Grafikunterstützung entfallen Kopf/Porträt; das Systemlogo wird durch [Grounds] ersetzt. Beispielsweise: „[Grounds] Warnung › Neustart in 5 Minuten.“ +Die eckigen Platzhalter [Kopf], [Logo] und [NPC-Porträt] beschreiben Grafiken, keine wörtlich anzuzeigenden Texte. Ohne passende Grafikunterstützung entfallen Kopf/Porträt; das Systemlogo wird durch [Grounds] ersetzt. Beispielsweise: „[Grounds] Allgemein › Neustart in 5 Minuten.“ Öffentlicher und Gruppenchat behalten dieselbe Texthelligkeit. Ein Kanal wird durch ein kurzes Label unterschieden, wenn sein Kontext sonst mehrdeutig ist. „Team“ im Match und „Staff“ für Mitarbeiter sind unterschiedliche Kanäle. Ein Rangbadge ist nur bei tatsächlichem Bedarf zulässig; keine Kette aus Rang, Level, Titel und Cosmetics vor jeder Nachricht. Detailinformationen gehören in Profil oder unterstützte Hoveransicht. Kritische Informationen dürfen nie ausschließlich im Hover stehen. -Systemkategorien sind kurz und verständlich: Info, Erfolg, Warnung, Fehler, Freunde, Party, Match und Story. Spielerbezogene Mitteilungen werden an die betroffenen Empfänger adressiert, nicht unnötig global verteilt. Spieler dürfen mit eigenen Eingaben weder das reservierte Systemsignet noch administrative Labels oder Formatierung erzeugen. +Systemkategorie und Level sind getrennte Metadaten. Die Kategorie beschreibt den fachlichen Kontext: Allgemein, Freunde, Party, Match oder Story. Das Level beschreibt Status beziehungsweise Dringlichkeit: Info, Erfolg, Warnung oder Fehler. Eine fehlgeschlagene Freundesaktion bleibt deshalb in der Kategorie Freunde und erhält das Level Fehler. Das Level bestimmt die Statusfarbe des Kontextlabels; es ersetzt das Kontextlabel nicht. Standard sind `GENERAL` und `INFO`. Spielerbezogene Mitteilungen werden an die betroffenen Empfänger adressiert, nicht unnötig global verteilt. Spieler dürfen mit eigenen Eingaben weder das reservierte Systemsignet noch administrative Labels oder Formatierung erzeugen. ## 5. Sprache und Beispiele @@ -86,11 +86,12 @@ Grounds spricht freundlich, direkt und praktisch. Eine Meldung nennt Ergebnis od | Spielerchat | [Kopf] Lukas › Hat jemand Lust auf ein Duell? | | Party-Einladung | [Logo] Grounds · Party › Mia lädt dich ein. [Annehmen] | | Queue | [Logo] Grounds · Match › Du wartest auf ein 1vs1. | -| Bestätigung | [Logo] Grounds · Erfolg › Deine Einstellungen wurden gespeichert. | -| Neustart | [Logo] Grounds · Warnung › Neustart in 5 Minuten. | -| Fehler | [Logo] Grounds · Fehler › Diese Aktion ist gerade nicht möglich. Versuch es gleich noch einmal. | +| Bestätigung (`GENERAL` / `SUCCESS`) | [Logo] Grounds · Allgemein › Deine Einstellungen wurden gespeichert. | +| Neustart (`GENERAL` / `WARNING`) | [Logo] Grounds · Allgemein › Neustart in 5 Minuten. | +| Fehler (`GENERAL` / `ERROR`) | [Logo] Grounds · Allgemein › Diese Aktion ist gerade nicht möglich. Versuch es gleich noch einmal. | +| Freundesfehler (`FRIENDS` / `ERROR`) | [Logo] Grounds · Freunde › Deine Freundesliste ist voll. | | Freiwillige Story | [Logo] Grounds · Story › In der Werkstatt gibt es Neuigkeiten. | -| Join im relevanten Umfeld | [Logo] Grounds · Info › Mia ist angekommen. | +| Join im relevanten Umfeld | [Logo] Grounds · Allgemein › Mia ist angekommen. | Aktionsklammern bezeichnen echte unterstützte Aktionen; sie dürfen nicht wie klickbare Schaltflächen aussehen, wenn der Client keine Aktion anbietet. Für Bedrock erhält jede notwendige Aktion einen dort nutzbaren Weg, etwa einen geprüften Befehl oder ein Formular. Solange dieser fehlt, keine vorgetäuschte Klickbarkeit. Unbekannte Fehlerursachen werden nicht als angeblich bekannter Zustand ausgegeben. @@ -139,7 +140,7 @@ Für Bedrock wird die im Zielclient verwendete Chat-/HUD-Oberfläche separat auf ## 9. Einordnung in die vorhandene Architektur -Das bestehende plugin-chat-Konzept beschreibt Server-, Gruppen-, Privat- und Staffchat sowie Ausgabe an mehreren Stellen. Neue Vorlagen sollen aus einer gemeinsamen semantischen Definition entstehen: Absenderart, Kategorie, Kanal, relevante Spieler, Nachricht und erlaubte Aktionen. Erst am Ausgabeweg werden Clientfähigkeiten, Packzustand und Darstellung gewählt. Die lokale Umsetzung folgt dieser Trennung; Routing und Kanalberechtigungen behalten ihre bestehenden Verträge. +Das bestehende plugin-chat-Konzept beschreibt Server-, Gruppen-, Privat- und Staffchat sowie Ausgabe an mehreren Stellen. Neue Vorlagen sollen aus einer gemeinsamen semantischen Definition entstehen: Absenderart, Kategorie, Level, Kanal, relevante Spieler, Nachricht und erlaubte Aktionen. Erst am Ausgabeweg werden Clientfähigkeiten, Packzustand und Darstellung gewählt. Die lokale Umsetzung folgt dieser Trennung; Routing und Kanalberechtigungen behalten ihre bestehenden Verträge. Kein für Java fertig gerendertes Bild-/Object-Component-Format ungeprüft an alle Empfänger senden. Bestehende Systemausgaben anderer Plugins müssen bei der späteren Integration erfasst werden: Social, Queue/Match, Moderation, Story, Befehlsantworten und Join/Leave. @@ -198,7 +199,7 @@ Jedes Plugin besitzt seine fachlichen Nachrichtenschlüssel und `messages*.prope Die gemeinsame Bibliothek besitzt die Layoutvorlagen einschließlich Platzhalterreihenfolge, Trennzeichen, Markenbezeichnung und Kategorien. Dazu gehören `layout.text-prefix`, `layout.graphical-prefix` und `layout.player` im Bundle `gg.grounds.i18n.system`. Sprachvarianten dürfen die Reihenfolge verändern. Privat- und Staffkanäle besitzen ebenfalls übersetzbare Vorlagen mit Komponentenplatzhaltern für Absender, Empfänger und Nachricht. Keine sprachlichen Präfixe werden im Plugin-Code zusammengesetzt. -Der Renderer besitzt Farben und grafische Komponenten. Die Nachrichtenschlüssel tragen explizite semantische Kategorien; eine Kategorie wird nicht aus dem englischen Text oder dessen Farbe erraten. Clientfähigkeiten bestimmen ausschließlich die Darstellung, niemals Sprache, Berechtigung oder Routing. +Der Renderer besitzt Farben und grafische Komponenten. Die Nachrichtenschlüssel tragen Kategorie und Level als unabhängige semantische Felder; beides wird nicht aus dem englischen Text oder dessen Farbe erraten. `SystemCategory` enthält nur Kontexte, `SystemLevel` nur Statuswerte. Das Standardlayout zeigt ``; übersetzbare Vorlagen können zusätzlich `` anzeigen. Der Renderer bestimmt Statusfarben, während i18n Kontext- und Levelbezeichnungen sowie deren Platzierung besitzt. Clientfähigkeiten bestimmen ausschließlich die Darstellung, niemals Sprache, Berechtigung oder Routing. - `send`: lokalisierte Systemnachricht mit gemeinsamem Kategorienpräfix. - `sendRendered`: bereits zusammengesetzte Systemkomponenten mit demselben Präfix; Klick- und Hoveraktionen bleiben erhalten. diff --git a/superpowers/plans/2026-10-14-java-chat-design.md b/superpowers/plans/2026-10-14-java-chat-design.md index 6a6babd..71cd2ea 100644 --- a/superpowers/plans/2026-10-14-java-chat-design.md +++ b/superpowers/plans/2026-10-14-java-chat-design.md @@ -13,7 +13,7 @@ description: "Implementiere das Grounds-Chatdesign für Java 26.3 mit originalem **Tech Stack:** Kotlin/JVM, Adventure, Grounds-Minestom-Fork 2026.10.02-26.3-grounds.1, Velocity, library-i18n, resourcepacks, JUnit, Gradle. -**Spec:** [Mini-CD v0.4](../../design/minecraft-mini-cd-and-chat.md), [Confluence](https://grounds.atlassian.net/wiki/spaces/gkd/pages/300154881). +**Spec:** [Mini-CD v0.5](../../design/minecraft-mini-cd-and-chat.md), [Confluence](https://grounds.atlassian.net/wiki/spaces/gkd/pages/300154881). ## Global Constraints @@ -92,7 +92,7 @@ Historischer Ausgangsstand vor der Umsetzung am 14. Oktober 2026; der aktuelle S - Der Standardrenderer reproduziert das bestehende Prefix-Verhalten. Ein explizit installierter Minecraft-Renderer erzeugt die neue Markenzeile für geeignete Empfänger. - [ ] Tests zuerst: render und sendUnprefixed bleiben unverändert; send verwendet den Empfängerrenderer; bestehende Factoryaufrufe und Java-Overloads bleiben kompatibel. -- [ ] Kategorien werden über eine explizite MessageKey-Zuordnung bestimmt. Fehler-/Usage-/Reportkeys erhalten geprüfte Kategorien; kein Raten aus zufälligen Textfarben. +- [ ] Kontext und Level werden über explizite MessageKey-Metadaten bestimmt. Fehler-/Usage-/Reportkeys erhalten geprüfte Statuslevel und behalten ihren fachlichen Kontext; kein Raten aus zufälligen Textfarben. - [ ] Readiness erst nach erfolgreichem Ladeereignis des exakt angebotenen Platformpacks setzen. Ein bloß gesendetes, abgelehntes, fehlgeschlagenes oder veraltetes Pack setzt chatFontReady nicht. - [ ] Assetfähigkeit wird zusätzlich gegen die tatsächlich eingeführte Chat-Pack-Version bzw. einen bekannten Manifest-/Packhash geprüft. Eine Auswahl älterer PackSets setzt sie zurück. Die konkreten Releasepins werden nach Veröffentlichung aus den echten Releaseartefakten übernommen; vorher bleibt die Produktivfunktion deaktiviert. - [ ] Disconnect, Packwechsel und Shutdown löschen den Zustand. Ein verspätetes Statusereignis für den vorherigen Packfingerprint darf ihn nicht wieder aktivieren. @@ -192,7 +192,7 @@ Die lokale Quellcodeumsetzung ist abgeschlossen. Die ursprünglichen Detailcheck - [x] Spieler-, Privat- und Staffausgabe je Empfänger; sichere Komponenten, Emoji-Hilfe und bestehende Reporting-Verträge geprüft. - [x] Feste Nachrichten aller aktiven Plugins auditiert und gefundene Ausgaben vereinheitlicht. Umfang und bewusste Grenzen stehen in der Integrationsdokumentation. - [x] Vertrauenswürdige Edition, bestätigter Packzustand, Proxy-/Minestom-Bridge und zustellungsbezogenes Social-Rendering integriert. -- [x] Build-/Formatierungsprüfungen und 1538 Testfälle: 1532 erfolgreich, 6 bestehende Scene-Editor-Skips, keine Fehler. Unabhängiger Review der Integrations- und Lifecycle-Grenzen abgeschlossen. +- [x] Build-/Formatierungsprüfungen und 1550 Testfälle: 1544 erfolgreich, 6 bestehende Scene-Editor-Skips, keine Fehler. Unabhängiger Review der Integrations- und Lifecycle-Grenzen abgeschlossen. - [x] Mini-CD und Integration in Docs sowie Confluence dokumentiert. Die Integrationsseite liegt unter `design/minecraft-chat-integration` statt des ursprünglich geplanten zweiten Minecraft-Pfads. - [ ] Bibliothek und gemeinsame Proxy-API veröffentlichen; echte Consumer-Versionspins aktualisieren und eigenständige CI-Builds prüfen. - [x] Änderungen committen und PRs für die betroffenen Repositories erstellen; alle Quellcodeänderungen sind committet und als Entwurfs-PRs veröffentlicht. @@ -200,3 +200,7 @@ Die lokale Quellcodeumsetzung ist abgeschlossen. Die ursprünglichen Detailcheck - [ ] Tatsächlich erzeugten Plattformpack-Hash nach Abnahme freigeben und Stage aktivieren. `CHAT_FONT_PACK_SHA1S` bleibt standardmäßig leer. Die Tests verwenden lokale Composite-Builds für die geänderte i18n-Bibliothek und Proxy-API. Erfolgreiche lokale Prüfung ist keine Veröffentlichung oder Live-Aktivierung. Die konkreten Verträge, Testzahlen und Veröffentlichungsreihenfolge stehen in [Minecraft Chat: Plugin-Integration](../../design/minecraft-chat-integration.md). + +## Freigegebene Präzisierung: Kontext und Level + +Der Benutzer hat die Trennung ausdrücklich zur Umsetzung freigegeben. `SystemCategory` enthält nur fachliche Kontexte; `SystemLevel` enthält die Statuswerte. Gemeinsame Renderer reichen beide Felder unabhängig weiter, Plugin-Keys behalten ihren fachlichen Kontext auch bei Fehlern. Standards sind `GENERAL` und `INFO`; Labels und optionale Platzierung beider Felder bleiben in i18n. Die Änderungen gehen in die bestehenden Entwurfs-PRs. Neue Tests prüfen alle Kontext-/Level-Kombinationen, Default-Keys, Lokalisierung, Richtext-Verträge sowie fachliche Consumer-Zuordnungen. From affba8c8891609b75bf277bce80258351fad0bba Mon Sep 17 00:00:00 2001 From: Lukas Jost Date: Thu, 15 Oct 2026 00:03:53 +0200 Subject: [PATCH 03/16] fix(docs): escape Minecraft markup in implementation plan --- superpowers/plans/2026-10-14-java-chat-design.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/superpowers/plans/2026-10-14-java-chat-design.md b/superpowers/plans/2026-10-14-java-chat-design.md index 71cd2ea..9043583 100644 --- a/superpowers/plans/2026-10-14-java-chat-design.md +++ b/superpowers/plans/2026-10-14-java-chat-design.md @@ -118,7 +118,7 @@ Historischer Ausgangsstand vor der Umsetzung am 14. Oktober 2026; der aktuelle S - [ ] Mit dependencyInsight die tatsächlich aufgelösten Adventure-APIs und Serializer in Minestom und Velocity vergleichen. Native ObjectComponent-Erzeugung nur mit einer auf beiden Java-Hosts kompatiblen API implementieren; keine Adventure-Schattierung. - [ ] Tests zuerst für Kopf/kein Kopf, ‹Name › Nachricht›, helle Nachrichtfarbe, vorhandene Rankfarben, ungültige Rankfarbe und unveränderte vom Aufrufer übergebene Component-Stile. -- [ ] Emoji-Tests: genau fünf Ersetzungen, sechster Alias bleibt Text, unbekannte Aliase bleiben unverändert, Fallback enthält keine reservierten Glyphen, Markup wie bleibt wörtlicher Text. +- [ ] Emoji-Tests: genau fünf Ersetzungen, sechster Alias bleibt Text, unbekannte Aliase bleiben unverändert, Fallback enthält keine reservierten Glyphen, Markup wie `` bleibt wörtlicher Text. - [ ] Ein expliziter Literalfilter verhindert, dass frei eingegebene reservierte Chatglyphen als Systemzeichen erscheinen. - [ ] Die bisherigen Längenregeln am Eingang erhalten; Surrogat-/Unicode-Grenzen prüfen. Es wird zunächst das feste Alias-Set unterstützt, keine angebliche vollständige Unicode-Emoji-Normalisierung. - [ ] :common:test und die bestehenden Codec-/Reporting-Tests ausführen. From fb8504d7087484101828ccbd56304dea14bb0058 Mon Sep 17 00:00:00 2001 From: Lukas Jost Date: Thu, 15 Oct 2026 00:44:13 +0200 Subject: [PATCH 04/16] docs(chat): record published APIs and standalone consumer validation --- design/minecraft-chat-integration.md | 22 +++++++++---------- design/minecraft-mini-cd-and-chat.md | 4 ++-- .../plans/2026-10-14-java-chat-design.md | 4 ++-- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/design/minecraft-chat-integration.md b/design/minecraft-chat-integration.md index 99c74a7..1ef8f71 100644 --- a/design/minecraft-chat-integration.md +++ b/design/minecraft-chat-integration.md @@ -133,21 +133,21 @@ Am 14. Oktober 2026 wurden in den betroffenen Modulen insgesamt 1550 Testfälle ## Veröffentlichung und Abnahme -Die Codeänderungen sind auf `feat/java-chat-unification` in separaten Worktrees committet und als Entwurfs-PRs auf GitHub veröffentlicht. Die Tests verbinden die geänderte i18n-Bibliothek und Proxy-API als lokale Composite-Builds. Die vorhandenen veröffentlichten Versionspins enthalten die neuen APIs noch nicht. +`library-i18n:0.4.0` und `plugin-proxy-api:2.6.0` sind veröffentlicht. Alle 13 betroffenen Plugin-Builds wurden anschließend eigenständig mit diesen veröffentlichten Artefakten geprüft: ohne Composite-Build oder lokale API-Ersetzung. Dabei wurden fehlende Maven-Quellen ergänzt und die Abhängigkeitssperren des Resourcepack-Providers aktualisiert. -1. Geänderte `library-i18n` und `plugin-proxy-api` prüfen und veröffentlichen. -2. Abhängige Plugin-Pins auf die tatsächlich veröffentlichten Versionen aktualisieren und deren eigenständige CI-Builds prüfen. -3. Das Java-Pack bauen und seinen tatsächlichen SHA-1 nach visueller Abnahme freigeben. -4. Java 26.3 im echten Client prüfen: Köpfe, Logo, Zeilenumbruch, GUI-/Chatskalierung, Report-Klicks und Packwechsel. -5. Bedrock-Grafiken und optionale Shader separat umsetzen und abnehmen. +Die Feature- und Release-PRs werden nach erfolgreichen GitHub-Prüfungen zusammengeführt. Vorgeschriebene Reviews bleiben Voraussetzung. Der genaue Veröffentlichungsstand wird über die verlinkten PRs und deren Release-Workflows nachgewiesen; eine grüne lokale Prüfung allein bestätigt keine Veröffentlichung. -Eine lokale erfolgreiche Testausführung bedeutet keine Veröffentlichung oder Live-Aktivierung. +1. Bibliothek und Proxy-API veröffentlichen, dann Consumer mit den tatsächlichen Versionen prüfen (erledigt). +2. Grüne Consumer- und Release-PRs integrieren und die veröffentlichten Module im Minestom-Lobby-Host festschreiben. +3. Java 26.3 im echten Client prüfen: Köpfe, Logo, Zeilenumbruch, GUI-/Chatskalierung, Report-Klicks und Packwechsel. +4. Erst nach dieser Abnahme das Java-Pack veröffentlichen und seinen tatsächlichen SHA-1 in `CHAT_FONT_PACK_SHA1S` freigeben. +5. Bedrock-Grafiken und optionale Shader separat umsetzen und abnehmen. -## Review- und Release-Reihenfolge +Das Packprodukt bleibt bis zur Clientabnahme offen: Schon sein Merge würde automatisch den Edge-Kanal aktualisieren. Ein isoliertes Vorschau-Pack wurde aus Commit `a8e253686148e6fb27232bde55a6ffeca2de80e9` gebaut. Sein Plattform-SHA-1 `8c1858645d1eda6ddecd9a1021e8a631715bfe74` ist ausschließlich für die lokale Sichtprüfung bestimmt und keine Produktionsfreigabe. Das originale Logo bleibt als 128×128-RGBA-Textur erhalten und wird über den Fontprovider auf acht Pixel Höhe dargestellt. -Zuerst `library-i18n` veröffentlichen, danach den i18n-Pin der Proxy-API anheben und diese veröffentlichen. Anschließend die Consumer auf die tatsächlich veröffentlichten Versionen anheben. Das Packprodukt kann parallel geprüft werden; seine Aktivierung folgt erst auf die Clientabnahme. Die Entwürfe behalten die tatsächlichen bestehenden Versionspins und können bis zu diesen Releases in ihrer eigenständigen CI wegen fehlender neuer APIs fehlschlagen. Lokale Composite-Prüfung und eigenständige CI sind getrennte Nachweise. +## Review- und Release-Nachweise -| Repository | Entwurfs-PR | +| Repository | Feature-PR | | --- | --- | | library-i18n | [Review](https://github.com/groundsgg/library-i18n/pull/10) | | plugin-proxy | [Review](https://github.com/groundsgg/plugin-proxy/pull/77) | @@ -167,4 +167,4 @@ Zuerst `library-i18n` veröffentlichen, danach den i18n-Pin der Proxy-API anhebe Der Chat-Branch enthält zusätzlich den aktuellen Mute-Enforcement-Stand von `origin/main`. Mute-Prüfungen, Server-Routing und die Reihenfolge von Privatnachricht-Zustellung und Echo bleiben erhalten; neu hinzugekommene Mute-Rückmeldungen sind ebenfalls lokalisiert. Nach dieser Integration wurden alle Chatmodule erneut gebaut und geprüft (351 Testfälle). -Die freigegebene Kontext-/Level-Trennung ist in den bestehenden Entwurfs-PRs umgesetzt und erneut geprüft: 42 Bibliothekstests, alle 13 betroffenen Plugin-Builds erfolgreich; insgesamt 1550 erfasste Testfälle, 1544 erfolgreich und sechs bestehende Scene-Editor-Skips. Der unabhängige Review fand keine verlorenen Metadaten. Veröffentlichungs- und Clientabnahmegrenzen bleiben bestehen. +Die freigegebene Kontext-/Level-Trennung ist in den verlinkten Feature-PRs umgesetzt und erneut geprüft: 42 Bibliothekstests, alle 13 betroffenen Plugin-Builds erfolgreich; insgesamt 1550 erfasste Testfälle, 1544 erfolgreich und sechs bestehende Scene-Editor-Skips. Der unabhängige Review fand keine verlorenen Metadaten. Veröffentlichungs- und Clientabnahmegrenzen bleiben bestehen. diff --git a/design/minecraft-mini-cd-and-chat.md b/design/minecraft-mini-cd-and-chat.md index 2c65f73..7c7ccb4 100644 --- a/design/minecraft-mini-cd-and-chat.md +++ b/design/minecraft-mini-cd-and-chat.md @@ -7,7 +7,7 @@ description: "Gestaltungsregeln für Minecraft-Chat, Systemmeldungen, Original-L Version 0.5 · Stand: 14. Oktober 2026 · Zielplattform: Java 26.3 / Minestom und Bedrock über Geyser. -Status: Aus der Story abgeleitete Designspezifikation. Die gewählte Richtung „eigenständiger Grounds-Stil“ ist abgestimmt; konkrete Farbwerte, Signet-Ausführung und Effekte sind der daraus entwickelte erste Entwurf. Dieses Dokument beschreibt die Gestaltungsregeln. Die lokale Java-Umsetzung und Plugin-Migration sind im [Integrationsnachweis](/design/minecraft-chat-integration) dokumentiert; Veröffentlichung und visuelle Clientabnahme stehen aus. +Status: Aus der Story abgeleitete Designspezifikation. Die gewählte Richtung „eigenständiger Grounds-Stil“ ist abgestimmt; konkrete Farbwerte, Signet-Ausführung und Effekte sind der daraus entwickelte erste Entwurf. Dieses Dokument beschreibt die Gestaltungsregeln. Die lokale Java-Umsetzung und Plugin-Migration sind im [Integrationsnachweis](/design/minecraft-chat-integration) dokumentiert; Die gemeinsamen APIs sind veröffentlicht; die Plugin-Releases laufen. Die visuelle Clientabnahme steht aus. ## 1. Grundlage und Gestaltungsprinzip @@ -214,7 +214,7 @@ Das Java-Pack besitzt `grounds:chat`: das originale 128×128-G auf U+E100, acht Eine Proxy-Ausgabe darf das Logo nur nach bestätigtem erfolgreichem Laden eines tatsächlich angebotenen Packs mit explizit freigegebenem SHA-1 verwenden. Die Operator-Allowlist `CHAT_FONT_PACK_SHA1S` ist standardmäßig leer. Versenden oder Akzeptieren des Packs allein zählt nicht als geladen. Ein neues Pack-Angebot, Ladefehler oder ein Disconnect setzen die grafische Darstellung auf die lesbare Textausgabe zurück. Bei einem Backendwechsel startet die neue Spielerinstanz ohne Fontbereitschaft und erhält einen aktuellen Proxy-Snapshot; die bestätigten identischen Clientpacks bleiben gültig und werden nicht allein für das Chatdesign neu geladen. Alte oder mehrdeutige Packbestätigungen schalten keine Grafik frei. Bedrock und unbekannte Fähigkeiten erhalten keine Java-Objektkomponenten. -Die Umstellung wird in isolierten lokalen Branches und Composite-Builds geprüft. Neue Bibliotheks- und API-Funktionen müssen vor der Veröffentlichung der abhängigen Plugins veröffentlicht und deren Abhängigkeiten auf die tatsächlichen Versionen angehoben werden. Ein erfolgreicher Composite-Build ersetzt weder diese Veröffentlichungsreihenfolge noch die visuelle Abnahme im echten Java-26.3-Client. Shader, Bedrock-Grafiken und Clientabnahme bleiben getrennte Folgearbeit. +Die Umstellung wurde zunächst in isolierten Branches und Composite-Builds geprüft. Nach Veröffentlichung von library-i18n 0.4.0 und plugin-proxy-api 2.6.0 wurden alle 13 betroffenen Plugin-Builds eigenständig mit den veröffentlichten Artefakten geprüft. Die visuelle Abnahme im echten Java-26.3-Client bleibt vor der Packveröffentlichung erforderlich. Shader, Bedrock-Grafiken und Clientabnahme bleiben getrennte Folgearbeit. ### Empfängergebundene Darstellung diff --git a/superpowers/plans/2026-10-14-java-chat-design.md b/superpowers/plans/2026-10-14-java-chat-design.md index 9043583..c71e605 100644 --- a/superpowers/plans/2026-10-14-java-chat-design.md +++ b/superpowers/plans/2026-10-14-java-chat-design.md @@ -194,12 +194,12 @@ Die lokale Quellcodeumsetzung ist abgeschlossen. Die ursprünglichen Detailcheck - [x] Vertrauenswürdige Edition, bestätigter Packzustand, Proxy-/Minestom-Bridge und zustellungsbezogenes Social-Rendering integriert. - [x] Build-/Formatierungsprüfungen und 1550 Testfälle: 1544 erfolgreich, 6 bestehende Scene-Editor-Skips, keine Fehler. Unabhängiger Review der Integrations- und Lifecycle-Grenzen abgeschlossen. - [x] Mini-CD und Integration in Docs sowie Confluence dokumentiert. Die Integrationsseite liegt unter `design/minecraft-chat-integration` statt des ursprünglich geplanten zweiten Minecraft-Pfads. -- [ ] Bibliothek und gemeinsame Proxy-API veröffentlichen; echte Consumer-Versionspins aktualisieren und eigenständige CI-Builds prüfen. +- [x] library-i18n 0.4.0 und plugin-proxy-api 2.6.0 veröffentlicht; echte Consumer-Versionspins aktualisiert und alle 13 Plugin-Builds eigenständig erfolgreich geprüft. - [x] Änderungen committen und PRs für die betroffenen Repositories erstellen; alle Quellcodeänderungen sind committet und als Entwurfs-PRs veröffentlicht. - [ ] Reale Java-26.3-Abnahme mit verschiedenen Chat-/GUI-Skalierungen und Bedrock-Text-Smokecheck durchführen. - [ ] Tatsächlich erzeugten Plattformpack-Hash nach Abnahme freigeben und Stage aktivieren. `CHAT_FONT_PACK_SHA1S` bleibt standardmäßig leer. -Die Tests verwenden lokale Composite-Builds für die geänderte i18n-Bibliothek und Proxy-API. Erfolgreiche lokale Prüfung ist keine Veröffentlichung oder Live-Aktivierung. Die konkreten Verträge, Testzahlen und Veröffentlichungsreihenfolge stehen in [Minecraft Chat: Plugin-Integration](../../design/minecraft-chat-integration.md). +Die ersten Tests verwendeten lokale Composite-Builds für die geänderte i18n-Bibliothek und Proxy-API. Anschließend wurden alle 13 Plugin-Builds mit den tatsächlich veröffentlichten Artefakten eigenständig geprüft. Erfolgreiche lokale Prüfung ist keine Veröffentlichung oder Live-Aktivierung. Die konkreten Verträge, Testzahlen und Veröffentlichungsreihenfolge stehen in [Minecraft Chat: Plugin-Integration](../../design/minecraft-chat-integration.md). ## Freigegebene Präzisierung: Kontext und Level From abcb0fa7fb839998ccc59d2d8cff91cb4349602b Mon Sep 17 00:00:00 2001 From: Lukas Jost Date: Thu, 15 Oct 2026 01:04:39 +0200 Subject: [PATCH 05/16] docs(chat): record releases, host verification and remaining integration gates --- design/minecraft-chat-integration.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/design/minecraft-chat-integration.md b/design/minecraft-chat-integration.md index 1ef8f71..bffea42 100644 --- a/design/minecraft-chat-integration.md +++ b/design/minecraft-chat-integration.md @@ -168,3 +168,28 @@ Das Packprodukt bleibt bis zur Clientabnahme offen: Schon sein Merge würde auto Der Chat-Branch enthält zusätzlich den aktuellen Mute-Enforcement-Stand von `origin/main`. Mute-Prüfungen, Server-Routing und die Reihenfolge von Privatnachricht-Zustellung und Echo bleiben erhalten; neu hinzugekommene Mute-Rückmeldungen sind ebenfalls lokalisiert. Nach dieser Integration wurden alle Chatmodule erneut gebaut und geprüft (351 Testfälle). Die freigegebene Kontext-/Level-Trennung ist in den verlinkten Feature-PRs umgesetzt und erneut geprüft: 42 Bibliothekstests, alle 13 betroffenen Plugin-Builds erfolgreich; insgesamt 1550 erfasste Testfälle, 1544 erfolgreich und sechs bestehende Scene-Editor-Skips. Der unabhängige Review fand keine verlorenen Metadaten. Veröffentlichungs- und Clientabnahmegrenzen bleiben bestehen. + +## Offene Integrationsgates + +- GitHub verlangt eine unabhängige Review für [Agones 87](https://github.com/groundsgg/plugin-agones/pull/87), [Player 49](https://github.com/groundsgg/plugin-player/pull/49) und [Docs 51](https://github.com/groundsgg/docs/pull/51). +- [Social 23](https://github.com/groundsgg/plugin-social/pull/23) besteht regulären Build und Docker-Prüfung. Seine zusätzliche Vorschau scheitert vor dem Signieren an fehlendem `envsubst`. Die Korrektur in [.github 34](https://github.com/groundsgg/.github/pull/34) besteht Workflow-Vertrag und Buildx-Smokecheck und wartet auf die vorgeschriebene Review. +- [Notifications 18](https://github.com/groundsgg/plugin-notifications/pull/18) besteht den eigenständigen lokalen Build einschließlich der drei Artefaktverträge. Die GitHub-CI kann den privaten Minestom-Fork noch nicht lesen. Die Maven-Quelle und die Weitergabe von `PACKAGES_TOKEN` sind ergänzt; der CI-Lesetoken benötigt Zugriff auf das private Minestom-Paket und muss diesem Repository zur Verfügung stehen. Build-Lesetoken und Veröffentlichungs-Token bleiben getrennt. +- [Containers 287](https://github.com/groundsgg/containers/pull/287) stellt Paper und Velocity auf Grounds Runtime 0.2.0 um; beide Image-Builds sind grün. Der Merge bleibt nach Ablehnung durch die automatische Freigabeprüfung offen, weil eine Image-Veröffentlichung den produktiven `velocity:latest`-Pfad beeinflussen könnte. Live-Aktivierung und fehlende Agones-Integration bleiben ausdrücklich ausstehend. +- [Packprodukt 45](https://github.com/groundsgg/resourcepacks/pull/45) wartet auf die Sichtprüfung im Java-26.3-Client. Es wurde weder der Edge-/Stable-Kanal umgestellt noch die Font-Allowlist aktiviert. + +Die [Lobby-Integration 146](https://github.com/groundsgg/minestom-lobby/pull/146) verwendet die veröffentlichten Versionen Chat 2.3.0, Lobby 2.10.0 und Permissions 1.1.0. Eigenständiger Build, Formatierung und alle 104 Host-Tests sind erfolgreich; das ausführbare Gesamt-JAR enthält alle fünf gewählten Provider. Die Abhängigkeiten lösen Minestom 2026.10.07-26.3-grounds, Runtime API 0.8.0, i18n 0.4.0 sowie Adventure und MiniMessage 5.2.0 auf. Der PR bleibt im Entwurf, bis Notifications das CI-Zugriffsgate bestanden hat, veröffentlicht und mit seiner tatsächlichen neuen Version eingebunden ist. + +## Veröffentlichte Versionen + +| Repository | Version | Veröffentlichung | +| --- | --- | --- | +| library-i18n | 0.4.0 | [Erfolgreicher Release-Lauf](https://github.com/groundsgg/library-i18n/actions/runs/38645852984) | +| plugin-proxy | 2.6.0 | [Erfolgreicher Release-Lauf](https://github.com/groundsgg/plugin-proxy/actions/runs/38647306625) | +| plugin-scene-editor | 0.6.0 | [Erfolgreicher Release-Lauf](https://github.com/groundsgg/plugin-scene-editor/actions/runs/38647063044) | +| plugin-grounds-runtime | 0.2.0 | [Erfolgreicher Release-Lauf](https://github.com/groundsgg/plugin-grounds-runtime/actions/runs/38647486640) | +| plugin-coins | 0.3.0 | [Erfolgreicher Release-Lauf](https://github.com/groundsgg/plugin-coins/actions/runs/38649875652) | +| plugin-lobby | 2.10.0 | [Erfolgreicher Release-Lauf](https://github.com/groundsgg/plugin-lobby/actions/runs/38650290901) | +| plugin-permissions | 1.1.0 | [Erfolgreicher Release-Lauf](https://github.com/groundsgg/plugin-permissions/actions/runs/38649507762) | +| plugin-match | 0.11.0 | [Erfolgreicher Release-Lauf](https://github.com/groundsgg/plugin-match/actions/runs/38650302344) | +| plugin-resourcepacks | 1.1.0 | [Erfolgreicher Release-Lauf](https://github.com/groundsgg/plugin-resourcepacks/actions/runs/38649667471) | +| plugin-chat | 2.3.0 | [Erfolgreicher Release-Lauf](https://github.com/groundsgg/plugin-chat/actions/runs/38650751397) | From d19efc8d6786e9e22b5f147eca72c118085047fc Mon Sep 17 00:00:00 2001 From: Lukas Jost Date: Thu, 15 Oct 2026 01:24:09 +0200 Subject: [PATCH 06/16] docs(chat): prepare local Java acceptance and record container publication --- design/minecraft-chat-integration.md | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/design/minecraft-chat-integration.md b/design/minecraft-chat-integration.md index bffea42..afcd67f 100644 --- a/design/minecraft-chat-integration.md +++ b/design/minecraft-chat-integration.md @@ -174,7 +174,7 @@ Die freigegebene Kontext-/Level-Trennung ist in den verlinkten Feature-PRs umges - GitHub verlangt eine unabhängige Review für [Agones 87](https://github.com/groundsgg/plugin-agones/pull/87), [Player 49](https://github.com/groundsgg/plugin-player/pull/49) und [Docs 51](https://github.com/groundsgg/docs/pull/51). - [Social 23](https://github.com/groundsgg/plugin-social/pull/23) besteht regulären Build und Docker-Prüfung. Seine zusätzliche Vorschau scheitert vor dem Signieren an fehlendem `envsubst`. Die Korrektur in [.github 34](https://github.com/groundsgg/.github/pull/34) besteht Workflow-Vertrag und Buildx-Smokecheck und wartet auf die vorgeschriebene Review. - [Notifications 18](https://github.com/groundsgg/plugin-notifications/pull/18) besteht den eigenständigen lokalen Build einschließlich der drei Artefaktverträge. Die GitHub-CI kann den privaten Minestom-Fork noch nicht lesen. Die Maven-Quelle und die Weitergabe von `PACKAGES_TOKEN` sind ergänzt; der CI-Lesetoken benötigt Zugriff auf das private Minestom-Paket und muss diesem Repository zur Verfügung stehen. Build-Lesetoken und Veröffentlichungs-Token bleiben getrennt. -- [Containers 287](https://github.com/groundsgg/containers/pull/287) stellt Paper und Velocity auf Grounds Runtime 0.2.0 um; beide Image-Builds sind grün. Der Merge bleibt nach Ablehnung durch die automatische Freigabeprüfung offen, weil eine Image-Veröffentlichung den produktiven `velocity:latest`-Pfad beeinflussen könnte. Live-Aktivierung und fehlende Agones-Integration bleiben ausdrücklich ausstehend. +- [Containers 287](https://github.com/groundsgg/containers/pull/287) ist nach ausdrücklicher Freigabe möglicher produktiver Image-Auswirkungen gemergt. [Image-Veröffentlichung](https://github.com/groundsgg/containers/actions/runs/38652505129) und CI sind erfolgreich. Feste Tags: `ghcr.io/groundsgg/velocity:sha-e291dc4` und `ghcr.io/groundsgg/paper:sha-e291dc4`. Die Agones-Integration wartet weiterhin auf deren Pflichtreview. - [Packprodukt 45](https://github.com/groundsgg/resourcepacks/pull/45) wartet auf die Sichtprüfung im Java-26.3-Client. Es wurde weder der Edge-/Stable-Kanal umgestellt noch die Font-Allowlist aktiviert. Die [Lobby-Integration 146](https://github.com/groundsgg/minestom-lobby/pull/146) verwendet die veröffentlichten Versionen Chat 2.3.0, Lobby 2.10.0 und Permissions 1.1.0. Eigenständiger Build, Formatierung und alle 104 Host-Tests sind erfolgreich; das ausführbare Gesamt-JAR enthält alle fünf gewählten Provider. Die Abhängigkeiten lösen Minestom 2026.10.07-26.3-grounds, Runtime API 0.8.0, i18n 0.4.0 sowie Adventure und MiniMessage 5.2.0 auf. Der PR bleibt im Entwurf, bis Notifications das CI-Zugriffsgate bestanden hat, veröffentlicht und mit seiner tatsächlichen neuen Version eingebunden ist. @@ -193,3 +193,17 @@ Die [Lobby-Integration 146](https://github.com/groundsgg/minestom-lobby/pull/146 | plugin-match | 0.11.0 | [Erfolgreicher Release-Lauf](https://github.com/groundsgg/plugin-match/actions/runs/38650302344) | | plugin-resourcepacks | 1.1.0 | [Erfolgreicher Release-Lauf](https://github.com/groundsgg/plugin-resourcepacks/actions/runs/38649667471) | | plugin-chat | 2.3.0 | [Erfolgreicher Release-Lauf](https://github.com/groundsgg/plugin-chat/actions/runs/38650751397) | + +## Lokale Java-26.3-Sichtprüfung + +Für den ersten Clienttest ist ein separates Testpaket unter `artifacts/chat-test-2026-10-15` vorbereitet. Es startet das geprüfte Lobby-JAR und eine lokale Testhilfe mit den echten Produktionsrenderern sowie den originalen Privat-/Teamübersetzungen. Der Server ist unter `localhost:25566` erreichbar; das Vorschau-Pack wird direkt angeboten. Start unter Windows: + +```powershell +wsl.exe --distribution Ubuntu --cd /home/lukas/grounds/artifacts/chat-test-2026-10-15 /bin/sh ./start.sh +``` + +Im Client das Pack akzeptieren und `/chatpreview all` ausführen. Einzelprüfungen: `system`, `chat`, `emoji`, `text`, `graphics`, `pack`, `status`, `de`, `en`, `fr`, `es`. Native Köpfe und erfolgreiche Packbereitschaft bleiben unabhängig. Das Testpaket enthält eine Start-/Stoppanleitung, Prüfschritte, Quellstände und Prüfsummen. Die Beispieltexte sind Testdaten; Kontextlabels und Privat-/Teamlayouts stammen aus den produktiven Übersetzungen. + +Der HTTP-Packdownload wurde aus Windows mit exakt passender SHA-1 geprüft. Minecraft meldet Protokoll 777 / Version 26.3. Die Testhilfe prüft zusätzlich 80 Kontext-/Level-/Sprachkombinationen und lehnt falsche Sitzungen oder unbekannte Packangebote bei der Fontfreigabe ab. Eine tatsächliche Sichtabnahme durch einen Minecraft-Client wird damit nicht behauptet. + +Diese lokale Sichtprüfung ersetzt keine Netzwerk- und Serviceintegration: Social, Coins, Match, Moderationsdurchsetzung, Report-Versand, Geyser und Proxy-/Backend-Packwechsel benötigen die passende Integrationsumgebung. Die Testhilfe ist ausschließlich im lokalen Testpaket enthalten und wird nicht in Produktivserver eingebaut. Die Produktions-Font-Allowlist bleibt unverändert. From 2b9da40a52eba931cafa478c30e40d77dc309c1e Mon Sep 17 00:00:00 2001 From: Lukas Jost Date: Thu, 15 Oct 2026 03:01:15 +0200 Subject: [PATCH 07/16] docs(chat): let the logo replace the graphical wordmark --- design/minecraft-chat-integration.md | 4 ++++ design/minecraft-mini-cd-and-chat.md | 22 +++++++++---------- .../plans/2026-10-14-java-chat-design.md | 2 +- 3 files changed, 16 insertions(+), 12 deletions(-) diff --git a/design/minecraft-chat-integration.md b/design/minecraft-chat-integration.md index afcd67f..00a63d8 100644 --- a/design/minecraft-chat-integration.md +++ b/design/minecraft-chat-integration.md @@ -207,3 +207,7 @@ Im Client das Pack akzeptieren und `/chatpreview all` ausführen. Einzelprüfung Der HTTP-Packdownload wurde aus Windows mit exakt passender SHA-1 geprüft. Minecraft meldet Protokoll 777 / Version 26.3. Die Testhilfe prüft zusätzlich 80 Kontext-/Level-/Sprachkombinationen und lehnt falsche Sitzungen oder unbekannte Packangebote bei der Fontfreigabe ab. Eine tatsächliche Sichtabnahme durch einen Minecraft-Client wird damit nicht behauptet. Diese lokale Sichtprüfung ersetzt keine Netzwerk- und Serviceintegration: Social, Coins, Match, Moderationsdurchsetzung, Report-Versand, Geyser und Proxy-/Backend-Packwechsel benötigen die passende Integrationsumgebung. Die Testhilfe ist ausschließlich im lokalen Testpaket enthalten und wird nicht in Produktivserver eingebaut. Die Produktions-Font-Allowlist bleibt unverändert. + +## Präfixregel mit Logo + +[Die zentrale Layout-Korrektur](https://github.com/groundsgg/library-i18n/pull/12) entfernt die ausgeschriebene Grounds-Kennung ausschließlich aus dem grafischen Systempräfix. Mit geladenem Pack: `[Logo] Freunde › Nachricht`; im Textfallback weiterhin `[Grounds] Freunde › Nachricht`. Mini-CD 0.6 und die lokale Java-Vorschau verwenden diese Regel. Die Testhilfe lädt dafür die aktualisierte zentrale Vorlage; die beigefügten Integrationsartefakte und bestehenden Produktions-Releases werden dadurch nicht als bereits aktualisierte Veröffentlichungen ausgegeben. diff --git a/design/minecraft-mini-cd-and-chat.md b/design/minecraft-mini-cd-and-chat.md index 7c7ccb4..0c40df5 100644 --- a/design/minecraft-mini-cd-and-chat.md +++ b/design/minecraft-mini-cd-and-chat.md @@ -5,7 +5,7 @@ description: "Gestaltungsregeln für Minecraft-Chat, Systemmeldungen, Original-L # Grounds — Minecraft Mini-CD & Chatdesign -Version 0.5 · Stand: 14. Oktober 2026 · Zielplattform: Java 26.3 / Minestom und Bedrock über Geyser. +Version 0.6 · Stand: 15. Oktober 2026 · Zielplattform: Java 26.3 / Minestom und Bedrock über Geyser. Status: Aus der Story abgeleitete Designspezifikation. Die gewählte Richtung „eigenständiger Grounds-Stil“ ist abgestimmt; konkrete Farbwerte, Signet-Ausführung und Effekte sind der daraus entwickelte erste Entwurf. Dieses Dokument beschreibt die Gestaltungsregeln. Die lokale Java-Umsetzung und Plugin-Migration sind im [Integrationsnachweis](/design/minecraft-chat-integration) dokumentiert; Die gemeinsamen APIs sind veröffentlicht; die Plugin-Releases laufen. Die visuelle Clientabnahme steht aus. @@ -66,10 +66,10 @@ Die folgenden Regeln gelten für die geplante Darstellung von Lobby-, Match-, Gr | Private Nachricht ausgehend | [Kopf] [Privat] du → Name › Nachricht | Kopf bezeichnet den tatsächlichen Sender | | Partychat, sofern verfügbar | [Kopf] [Party] Name › Nachricht | Textlabel bleibt sichtbar | | Staffchat | [Kopf] [Staff] Name › Nachricht | Nur im berechtigten Kanal; Staff bleibt Spielerabsender | -| Systemmeldung | [Logo] Grounds · Kategorie › Nachricht | Logo und feste Grounds-Kennung | +| Systemmeldung | [Logo] Kategorie › Nachricht | Logo als Absenderkennung | | NPC-Dialog im Chat | [NPC-Porträt] [NPC] Name › Dialog | NPC-Kennung; nicht wie ein realer Spieler tarnen | -Die eckigen Platzhalter [Kopf], [Logo] und [NPC-Porträt] beschreiben Grafiken, keine wörtlich anzuzeigenden Texte. Ohne passende Grafikunterstützung entfallen Kopf/Porträt; das Systemlogo wird durch [Grounds] ersetzt. Beispielsweise: „[Grounds] Allgemein › Neustart in 5 Minuten.“ +Die eckigen Platzhalter [Kopf], [Logo] und [NPC-Porträt] beschreiben Grafiken, keine wörtlich anzuzeigenden Texte. Mit geladenem Chat-Pack ersetzt das Logo die ausgeschriebene Grounds-Kennung; der Name steht ausschließlich im Textfallback. Ohne passende Grafikunterstützung entfallen Kopf/Porträt; das Systemlogo wird durch [Grounds] ersetzt. Beispielsweise: „[Grounds] Allgemein › Neustart in 5 Minuten.“ Öffentlicher und Gruppenchat behalten dieselbe Texthelligkeit. Ein Kanal wird durch ein kurzes Label unterschieden, wenn sein Kontext sonst mehrdeutig ist. „Team“ im Match und „Staff“ für Mitarbeiter sind unterschiedliche Kanäle. @@ -84,14 +84,14 @@ Grounds spricht freundlich, direkt und praktisch. Eine Meldung nennt Ergebnis od | Anlass | Muster | | --- | --- | | Spielerchat | [Kopf] Lukas › Hat jemand Lust auf ein Duell? | -| Party-Einladung | [Logo] Grounds · Party › Mia lädt dich ein. [Annehmen] | -| Queue | [Logo] Grounds · Match › Du wartest auf ein 1vs1. | -| Bestätigung (`GENERAL` / `SUCCESS`) | [Logo] Grounds · Allgemein › Deine Einstellungen wurden gespeichert. | -| Neustart (`GENERAL` / `WARNING`) | [Logo] Grounds · Allgemein › Neustart in 5 Minuten. | -| Fehler (`GENERAL` / `ERROR`) | [Logo] Grounds · Allgemein › Diese Aktion ist gerade nicht möglich. Versuch es gleich noch einmal. | -| Freundesfehler (`FRIENDS` / `ERROR`) | [Logo] Grounds · Freunde › Deine Freundesliste ist voll. | -| Freiwillige Story | [Logo] Grounds · Story › In der Werkstatt gibt es Neuigkeiten. | -| Join im relevanten Umfeld | [Logo] Grounds · Allgemein › Mia ist angekommen. | +| Party-Einladung | [Logo] Party › Mia lädt dich ein. [Annehmen] | +| Queue | [Logo] Match › Du wartest auf ein 1vs1. | +| Bestätigung (`GENERAL` / `SUCCESS`) | [Logo] Allgemein › Deine Einstellungen wurden gespeichert. | +| Neustart (`GENERAL` / `WARNING`) | [Logo] Allgemein › Neustart in 5 Minuten. | +| Fehler (`GENERAL` / `ERROR`) | [Logo] Allgemein › Diese Aktion ist gerade nicht möglich. Versuch es gleich noch einmal. | +| Freundesfehler (`FRIENDS` / `ERROR`) | [Logo] Freunde › Deine Freundesliste ist voll. | +| Freiwillige Story | [Logo] Story › In der Werkstatt gibt es Neuigkeiten. | +| Join im relevanten Umfeld | [Logo] Allgemein › Mia ist angekommen. | Aktionsklammern bezeichnen echte unterstützte Aktionen; sie dürfen nicht wie klickbare Schaltflächen aussehen, wenn der Client keine Aktion anbietet. Für Bedrock erhält jede notwendige Aktion einen dort nutzbaren Weg, etwa einen geprüften Befehl oder ein Formular. Solange dieser fehlt, keine vorgetäuschte Klickbarkeit. Unbekannte Fehlerursachen werden nicht als angeblich bekannter Zustand ausgegeben. diff --git a/superpowers/plans/2026-10-14-java-chat-design.md b/superpowers/plans/2026-10-14-java-chat-design.md index c71e605..039f08b 100644 --- a/superpowers/plans/2026-10-14-java-chat-design.md +++ b/superpowers/plans/2026-10-14-java-chat-design.md @@ -22,7 +22,7 @@ description: "Implementiere das Grounds-Chatdesign für Java 26.3 mit originalem - Eigener Font grounds:chat; reservierte Glyphen werden nicht in die Standardspielerschrift eingebaut. - Gold #E7B84B, Text #F2EBDD, Sekundärtext #C1B9AA, Cyan #67D9EC. Erfolg/Warnung/Fehler behalten die Mini-CD-Token. Vorhandene Rank-/Teamzuordnung bleibt erhalten. - Logo- und Emoji-Komponenten sind weiß eingefärbt und nicht fett/kursiv; ihre Originalfarben bleiben erhalten. -- System: Logo Grounds · Kategorie › Nachricht. Spieler: Kopf Name › Nachricht. Privat- und Staffkanäle bleiben ausdrücklich bezeichnet. +- System: Logo Kategorie › Nachricht. Spieler: Kopf Name › Nachricht. Privat- und Staffkanäle bleiben ausdrücklich bezeichnet. - Die acht Emoji-Aliase sind :heart:, :smile:, :laugh:, :thumbsup:, :gg:, :fire:, :creeper: und :wrench:. Höchstens fünf grafische Ersetzungen, übrige Aliase bleiben Text. - Freier Spielertext bleibt unparsed; keine MiniMessage-Auswertung von Nachrichten. - Der bestehende PackSet besteht aus grounds-content und grounds-platform; aktuelle main-Quelle verwendet Packformat 97. From 104f5170c3e9ef54ec90678101671d69dd602650 Mon Sep 17 00:00:00 2001 From: Lukas Jost Date: Thu, 15 Oct 2026 03:07:26 +0200 Subject: [PATCH 08/16] docs(chat): retain logo separator and prevent native skin tint --- design/minecraft-chat-integration.md | 8 +++++++- design/minecraft-mini-cd-and-chat.md | 20 ++++++++++--------- .../plans/2026-10-14-java-chat-design.md | 2 +- 3 files changed, 19 insertions(+), 11 deletions(-) diff --git a/design/minecraft-chat-integration.md b/design/minecraft-chat-integration.md index 00a63d8..3fc02c9 100644 --- a/design/minecraft-chat-integration.md +++ b/design/minecraft-chat-integration.md @@ -210,4 +210,10 @@ Diese lokale Sichtprüfung ersetzt keine Netzwerk- und Serviceintegration: Socia ## Präfixregel mit Logo -[Die zentrale Layout-Korrektur](https://github.com/groundsgg/library-i18n/pull/12) entfernt die ausgeschriebene Grounds-Kennung ausschließlich aus dem grafischen Systempräfix. Mit geladenem Pack: `[Logo] Freunde › Nachricht`; im Textfallback weiterhin `[Grounds] Freunde › Nachricht`. Mini-CD 0.6 und die lokale Java-Vorschau verwenden diese Regel. Die Testhilfe lädt dafür die aktualisierte zentrale Vorlage; die beigefügten Integrationsartefakte und bestehenden Produktions-Releases werden dadurch nicht als bereits aktualisierte Veröffentlichungen ausgegeben. +[Die zentrale Layout-Korrektur](https://github.com/groundsgg/library-i18n/pull/12) entfernt die ausgeschriebene Grounds-Kennung ausschließlich aus dem grafischen Systempräfix. Mit geladenem Pack: `[Logo] · Freunde › Nachricht`; im Textfallback weiterhin `[Grounds] Freunde › Nachricht`. Mini-CD 0.6 und die lokale Java-Vorschau verwenden diese Regel. Die Testhilfe lädt dafür die aktualisierte zentrale Vorlage; die beigefügten Integrationsartefakte und bestehenden Produktions-Releases werden dadurch nicht als bereits aktualisierte Veröffentlichungen ausgegeben. + +## Unverfälschte Skin-Köpfe + +[Chat-Fix 48](https://github.com/groundsgg/plugin-chat/pull/48) setzt die gemeinsame native Kopf-Komponente explizit auf Weiß. Damit färbt die blaue Textfarbe des Privatlabels die Skin nicht mit ein. Die Regression wurde in den tatsächlichen ein- und ausgehenden Privatlayouts und im Teamlayout für EN/DE/FR/ES geprüft; alle 352 Chat-Tests sowie Build und Formatierung sind erfolgreich. Die lokale Testhilfe enthält dieselbe geprüfte `ChatSender`-Klasse. Ihr Selbsttest prüft die effektive Kopffarbe einschließlich der übergeordneten Layoutfarben. + +Der grafische Systempräfix behält seinen Trenner: `[Logo] · Freunde › Nachricht`. Nach diesen Fixes wurde die lokale Testinstanz auf Wunsch gestoppt. Für die nächste Clientprüfung ist ein erneuter Start erforderlich. diff --git a/design/minecraft-mini-cd-and-chat.md b/design/minecraft-mini-cd-and-chat.md index 0c40df5..1d91d0b 100644 --- a/design/minecraft-mini-cd-and-chat.md +++ b/design/minecraft-mini-cd-and-chat.md @@ -66,13 +66,15 @@ Die folgenden Regeln gelten für die geplante Darstellung von Lobby-, Match-, Gr | Private Nachricht ausgehend | [Kopf] [Privat] du → Name › Nachricht | Kopf bezeichnet den tatsächlichen Sender | | Partychat, sofern verfügbar | [Kopf] [Party] Name › Nachricht | Textlabel bleibt sichtbar | | Staffchat | [Kopf] [Staff] Name › Nachricht | Nur im berechtigten Kanal; Staff bleibt Spielerabsender | -| Systemmeldung | [Logo] Kategorie › Nachricht | Logo als Absenderkennung | +| Systemmeldung | [Logo] · Kategorie › Nachricht | Logo als Absenderkennung | | NPC-Dialog im Chat | [NPC-Porträt] [NPC] Name › Dialog | NPC-Kennung; nicht wie ein realer Spieler tarnen | Die eckigen Platzhalter [Kopf], [Logo] und [NPC-Porträt] beschreiben Grafiken, keine wörtlich anzuzeigenden Texte. Mit geladenem Chat-Pack ersetzt das Logo die ausgeschriebene Grounds-Kennung; der Name steht ausschließlich im Textfallback. Ohne passende Grafikunterstützung entfallen Kopf/Porträt; das Systemlogo wird durch [Grounds] ersetzt. Beispielsweise: „[Grounds] Allgemein › Neustart in 5 Minuten.“ Öffentlicher und Gruppenchat behalten dieselbe Texthelligkeit. Ein Kanal wird durch ein kurzes Label unterschieden, wenn sein Kontext sonst mehrdeutig ist. „Team“ im Match und „Staff“ für Mitarbeiter sind unterschiedliche Kanäle. +Native Skin-Köpfe erhalten eine explizit weiße Farbmodulation. Farben von Privatlabels, Namen, Rängen oder übergeordneten Komponenten dürfen die Hauttextur nicht einfärben. + Ein Rangbadge ist nur bei tatsächlichem Bedarf zulässig; keine Kette aus Rang, Level, Titel und Cosmetics vor jeder Nachricht. Detailinformationen gehören in Profil oder unterstützte Hoveransicht. Kritische Informationen dürfen nie ausschließlich im Hover stehen. Systemkategorie und Level sind getrennte Metadaten. Die Kategorie beschreibt den fachlichen Kontext: Allgemein, Freunde, Party, Match oder Story. Das Level beschreibt Status beziehungsweise Dringlichkeit: Info, Erfolg, Warnung oder Fehler. Eine fehlgeschlagene Freundesaktion bleibt deshalb in der Kategorie Freunde und erhält das Level Fehler. Das Level bestimmt die Statusfarbe des Kontextlabels; es ersetzt das Kontextlabel nicht. Standard sind `GENERAL` und `INFO`. Spielerbezogene Mitteilungen werden an die betroffenen Empfänger adressiert, nicht unnötig global verteilt. Spieler dürfen mit eigenen Eingaben weder das reservierte Systemsignet noch administrative Labels oder Formatierung erzeugen. @@ -84,14 +86,14 @@ Grounds spricht freundlich, direkt und praktisch. Eine Meldung nennt Ergebnis od | Anlass | Muster | | --- | --- | | Spielerchat | [Kopf] Lukas › Hat jemand Lust auf ein Duell? | -| Party-Einladung | [Logo] Party › Mia lädt dich ein. [Annehmen] | -| Queue | [Logo] Match › Du wartest auf ein 1vs1. | -| Bestätigung (`GENERAL` / `SUCCESS`) | [Logo] Allgemein › Deine Einstellungen wurden gespeichert. | -| Neustart (`GENERAL` / `WARNING`) | [Logo] Allgemein › Neustart in 5 Minuten. | -| Fehler (`GENERAL` / `ERROR`) | [Logo] Allgemein › Diese Aktion ist gerade nicht möglich. Versuch es gleich noch einmal. | -| Freundesfehler (`FRIENDS` / `ERROR`) | [Logo] Freunde › Deine Freundesliste ist voll. | -| Freiwillige Story | [Logo] Story › In der Werkstatt gibt es Neuigkeiten. | -| Join im relevanten Umfeld | [Logo] Allgemein › Mia ist angekommen. | +| Party-Einladung | [Logo] · Party › Mia lädt dich ein. [Annehmen] | +| Queue | [Logo] · Match › Du wartest auf ein 1vs1. | +| Bestätigung (`GENERAL` / `SUCCESS`) | [Logo] · Allgemein › Deine Einstellungen wurden gespeichert. | +| Neustart (`GENERAL` / `WARNING`) | [Logo] · Allgemein › Neustart in 5 Minuten. | +| Fehler (`GENERAL` / `ERROR`) | [Logo] · Allgemein › Diese Aktion ist gerade nicht möglich. Versuch es gleich noch einmal. | +| Freundesfehler (`FRIENDS` / `ERROR`) | [Logo] · Freunde › Deine Freundesliste ist voll. | +| Freiwillige Story | [Logo] · Story › In der Werkstatt gibt es Neuigkeiten. | +| Join im relevanten Umfeld | [Logo] · Allgemein › Mia ist angekommen. | Aktionsklammern bezeichnen echte unterstützte Aktionen; sie dürfen nicht wie klickbare Schaltflächen aussehen, wenn der Client keine Aktion anbietet. Für Bedrock erhält jede notwendige Aktion einen dort nutzbaren Weg, etwa einen geprüften Befehl oder ein Formular. Solange dieser fehlt, keine vorgetäuschte Klickbarkeit. Unbekannte Fehlerursachen werden nicht als angeblich bekannter Zustand ausgegeben. diff --git a/superpowers/plans/2026-10-14-java-chat-design.md b/superpowers/plans/2026-10-14-java-chat-design.md index 039f08b..4791f39 100644 --- a/superpowers/plans/2026-10-14-java-chat-design.md +++ b/superpowers/plans/2026-10-14-java-chat-design.md @@ -22,7 +22,7 @@ description: "Implementiere das Grounds-Chatdesign für Java 26.3 mit originalem - Eigener Font grounds:chat; reservierte Glyphen werden nicht in die Standardspielerschrift eingebaut. - Gold #E7B84B, Text #F2EBDD, Sekundärtext #C1B9AA, Cyan #67D9EC. Erfolg/Warnung/Fehler behalten die Mini-CD-Token. Vorhandene Rank-/Teamzuordnung bleibt erhalten. - Logo- und Emoji-Komponenten sind weiß eingefärbt und nicht fett/kursiv; ihre Originalfarben bleiben erhalten. -- System: Logo Kategorie › Nachricht. Spieler: Kopf Name › Nachricht. Privat- und Staffkanäle bleiben ausdrücklich bezeichnet. +- System: Logo · Kategorie › Nachricht. Spieler: Kopf Name › Nachricht. Privat- und Staffkanäle bleiben ausdrücklich bezeichnet. - Die acht Emoji-Aliase sind :heart:, :smile:, :laugh:, :thumbsup:, :gg:, :fire:, :creeper: und :wrench:. Höchstens fünf grafische Ersetzungen, übrige Aliase bleiben Text. - Freier Spielertext bleibt unparsed; keine MiniMessage-Auswertung von Nachrichten. - Der bestehende PackSet besteht aus grounds-content und grounds-platform; aktuelle main-Quelle verwendet Packformat 97. From c49a41ed5b9da4c4f412b656f823d477803dc8b8 Mon Sep 17 00:00:00 2001 From: Lukas Jost Date: Thu, 15 Oct 2026 11:44:24 +0200 Subject: [PATCH 09/16] docs(chat): specify vertical bar for system messages --- design/minecraft-chat-integration.md | 8 +++++-- design/minecraft-mini-cd-and-chat.md | 24 +++++++++---------- .../plans/2026-10-14-java-chat-design.md | 4 ++-- 3 files changed, 20 insertions(+), 16 deletions(-) diff --git a/design/minecraft-chat-integration.md b/design/minecraft-chat-integration.md index 3fc02c9..b0ad942 100644 --- a/design/minecraft-chat-integration.md +++ b/design/minecraft-chat-integration.md @@ -210,10 +210,14 @@ Diese lokale Sichtprüfung ersetzt keine Netzwerk- und Serviceintegration: Socia ## Präfixregel mit Logo -[Die zentrale Layout-Korrektur](https://github.com/groundsgg/library-i18n/pull/12) entfernt die ausgeschriebene Grounds-Kennung ausschließlich aus dem grafischen Systempräfix. Mit geladenem Pack: `[Logo] · Freunde › Nachricht`; im Textfallback weiterhin `[Grounds] Freunde › Nachricht`. Mini-CD 0.6 und die lokale Java-Vorschau verwenden diese Regel. Die Testhilfe lädt dafür die aktualisierte zentrale Vorlage; die beigefügten Integrationsartefakte und bestehenden Produktions-Releases werden dadurch nicht als bereits aktualisierte Veröffentlichungen ausgegeben. +[Die zentrale Layout-Korrektur](https://github.com/groundsgg/library-i18n/pull/12) entfernt die ausgeschriebene Grounds-Kennung ausschließlich aus dem grafischen Systempräfix. Mit geladenem Pack: `[Logo] · Freunde | Nachricht`; im Textfallback weiterhin `[Grounds] Freunde | Nachricht`. Mini-CD 0.7 und die lokale Java-Vorschau verwenden diese Regel. Die Testhilfe lädt dafür die aktualisierte zentrale Vorlage; die beigefügten Integrationsartefakte und bestehenden Produktions-Releases werden dadurch nicht als bereits aktualisierte Veröffentlichungen ausgegeben. ## Unverfälschte Skin-Köpfe [Chat-Fix 48](https://github.com/groundsgg/plugin-chat/pull/48) setzt die gemeinsame native Kopf-Komponente explizit auf Weiß. Damit färbt die blaue Textfarbe des Privatlabels die Skin nicht mit ein. Die Regression wurde in den tatsächlichen ein- und ausgehenden Privatlayouts und im Teamlayout für EN/DE/FR/ES geprüft; alle 352 Chat-Tests sowie Build und Formatierung sind erfolgreich. Die lokale Testhilfe enthält dieselbe geprüfte `ChatSender`-Klasse. Ihr Selbsttest prüft die effektive Kopffarbe einschließlich der übergeordneten Layoutfarben. -Der grafische Systempräfix behält seinen Trenner: `[Logo] · Freunde › Nachricht`. Nach diesen Fixes wurde die lokale Testinstanz auf Wunsch gestoppt. Für die nächste Clientprüfung ist ein erneuter Start erforderlich. +Der grafische Systempräfix behält seinen Trenner: `[Logo] · Freunde | Nachricht`. Logo, Punkt und unverfärbte Köpfe wurden am 15. Oktober 2026 vom Betreiber im Java-Client bestätigt. Anschließend wurde „|“ als Systemtrenner beschlossen; die lokale Vorschau verwendet ihn in Grafik- und Textmodus. + +## Senkrechter Systemtrenner + +Nach der bestätigten Clientprüfung für Logo, Punkt und Köpfe verwendet [i18n-Fix 14](https://github.com/groundsgg/library-i18n/pull/14) den Trenner `|` für grafische Systemmeldungen und deren Textfallback: `[Logo] · Freunde | Nachricht` beziehungsweise `[Grounds] Freunde | Nachricht`. Spieler-, Privat- und Staffnachrichten behalten `›`. Die geänderten Erwartungen scheiterten zuerst am bisherigen Trenner; anschließend bestanden alle 42 Tests, Build und Formatierung. Die lokale Vorschau prüft beide Systemvarianten in 80 Kontext-/Level-/Sprachkombinationen. Die Paketveröffentlichung dieser neuen Änderung ist separat nachzuweisen. diff --git a/design/minecraft-mini-cd-and-chat.md b/design/minecraft-mini-cd-and-chat.md index 1d91d0b..f84d290 100644 --- a/design/minecraft-mini-cd-and-chat.md +++ b/design/minecraft-mini-cd-and-chat.md @@ -5,7 +5,7 @@ description: "Gestaltungsregeln für Minecraft-Chat, Systemmeldungen, Original-L # Grounds — Minecraft Mini-CD & Chatdesign -Version 0.6 · Stand: 15. Oktober 2026 · Zielplattform: Java 26.3 / Minestom und Bedrock über Geyser. +Version 0.7 · Stand: 15. Oktober 2026 · Zielplattform: Java 26.3 / Minestom und Bedrock über Geyser. Status: Aus der Story abgeleitete Designspezifikation. Die gewählte Richtung „eigenständiger Grounds-Stil“ ist abgestimmt; konkrete Farbwerte, Signet-Ausführung und Effekte sind der daraus entwickelte erste Entwurf. Dieses Dokument beschreibt die Gestaltungsregeln. Die lokale Java-Umsetzung und Plugin-Migration sind im [Integrationsnachweis](/design/minecraft-chat-integration) dokumentiert; Die gemeinsamen APIs sind veröffentlicht; die Plugin-Releases laufen. Die visuelle Clientabnahme steht aus. @@ -44,7 +44,7 @@ Kontrast wird am echten Client über hellen, dunklen und unruhigen Spielszenen b - Fließtext bleibt eine gut lesbare Minecraft-Pixelschrift mit vollständigen deutschen Zeichen. Keine dekorative Schrift für Nachrichten oder Befehle. - Eigene Schriftakzente sind für Signet und kurze Labels zulässig. Unterschiedliche Schriften dürfen keinen höheren Zeilenabstand oder abgeschnittene Glyphen erzeugen. -- Ein einheitlicher Trenner „›“ steht zwischen Absenderblock und Nachricht; Text-Fallback ist „>“. Zwischen Bestandteilen steht jeweils ein normales Leerzeichen. +- Systemmeldungen trennen Kontext und Nachricht mit „|“, sowohl mit Logo als auch im Textfallback. Spieler-, Privat- und Staffnachrichten verwenden weiterhin „›“. Zwischen Bestandteilen steht jeweils ein normales Leerzeichen. - Keine Regenbogenverläufe, wechselnden Trenner, langen Zierlinien, gesperrten Buchstaben oder dauerhaft animierten Namen. - Für Systemnachrichten wird das originale farbige G als Chatsignet verwendet: hochauflösende 128×128-Textur mit transparentem Hintergrund, bewahrtem Seitenverhältnis und möglichst wenig leerem Rand. Gold kennzeichnet den Systemabsender; das Logo behält seine eigenen Farben. Die flache Cracked-G-Variante bleibt eine Alternative, falls das Original bei kleiner Anzeige nicht ausreichend lesbar ist. Die vollständige Grounds-Wortmarke ist für größere Begrüßungen oder besondere Ankündigungen vorgesehen, nicht vor jeder Systemzeile. - Texturauflösung und Anzeigegröße werden getrennt festgelegt. 128×128 bezeichnet die Quelldatei; ungefähr acht GUI-Pixel Höhe sind der Ausgangspunkt für die kompakte Chatdarstellung. Ein Java-Bitmap-Font skaliert die Grafik über height und richtet sie über ascent zur Textzeile aus; dafür ist kein Shader erforderlich. Die Logo-Komponente wird weiß eingefärbt, damit die Originalfarben erhalten bleiben. Feine Details können bei kleiner Anzeige verschwinden; Erkennbarkeit, Abstände und Zeilenüberschneidungen werden bei mehreren GUI-/Chatskalierungen getestet. Bedrock erhält eine separat geprüfte Font-/Assetdarstellung; Java-Fontparameter werden nicht als direkt übertragbar vorausgesetzt. @@ -66,10 +66,10 @@ Die folgenden Regeln gelten für die geplante Darstellung von Lobby-, Match-, Gr | Private Nachricht ausgehend | [Kopf] [Privat] du → Name › Nachricht | Kopf bezeichnet den tatsächlichen Sender | | Partychat, sofern verfügbar | [Kopf] [Party] Name › Nachricht | Textlabel bleibt sichtbar | | Staffchat | [Kopf] [Staff] Name › Nachricht | Nur im berechtigten Kanal; Staff bleibt Spielerabsender | -| Systemmeldung | [Logo] · Kategorie › Nachricht | Logo als Absenderkennung | +| Systemmeldung | [Logo] · Kategorie \| Nachricht | Logo als Absenderkennung | | NPC-Dialog im Chat | [NPC-Porträt] [NPC] Name › Dialog | NPC-Kennung; nicht wie ein realer Spieler tarnen | -Die eckigen Platzhalter [Kopf], [Logo] und [NPC-Porträt] beschreiben Grafiken, keine wörtlich anzuzeigenden Texte. Mit geladenem Chat-Pack ersetzt das Logo die ausgeschriebene Grounds-Kennung; der Name steht ausschließlich im Textfallback. Ohne passende Grafikunterstützung entfallen Kopf/Porträt; das Systemlogo wird durch [Grounds] ersetzt. Beispielsweise: „[Grounds] Allgemein › Neustart in 5 Minuten.“ +Die eckigen Platzhalter [Kopf], [Logo] und [NPC-Porträt] beschreiben Grafiken, keine wörtlich anzuzeigenden Texte. Mit geladenem Chat-Pack ersetzt das Logo die ausgeschriebene Grounds-Kennung; der Name steht ausschließlich im Textfallback. Ohne passende Grafikunterstützung entfallen Kopf/Porträt; das Systemlogo wird durch [Grounds] ersetzt. Beispielsweise: „[Grounds] Allgemein | Neustart in 5 Minuten.“ Öffentlicher und Gruppenchat behalten dieselbe Texthelligkeit. Ein Kanal wird durch ein kurzes Label unterschieden, wenn sein Kontext sonst mehrdeutig ist. „Team“ im Match und „Staff“ für Mitarbeiter sind unterschiedliche Kanäle. @@ -86,14 +86,14 @@ Grounds spricht freundlich, direkt und praktisch. Eine Meldung nennt Ergebnis od | Anlass | Muster | | --- | --- | | Spielerchat | [Kopf] Lukas › Hat jemand Lust auf ein Duell? | -| Party-Einladung | [Logo] · Party › Mia lädt dich ein. [Annehmen] | -| Queue | [Logo] · Match › Du wartest auf ein 1vs1. | -| Bestätigung (`GENERAL` / `SUCCESS`) | [Logo] · Allgemein › Deine Einstellungen wurden gespeichert. | -| Neustart (`GENERAL` / `WARNING`) | [Logo] · Allgemein › Neustart in 5 Minuten. | -| Fehler (`GENERAL` / `ERROR`) | [Logo] · Allgemein › Diese Aktion ist gerade nicht möglich. Versuch es gleich noch einmal. | -| Freundesfehler (`FRIENDS` / `ERROR`) | [Logo] · Freunde › Deine Freundesliste ist voll. | -| Freiwillige Story | [Logo] · Story › In der Werkstatt gibt es Neuigkeiten. | -| Join im relevanten Umfeld | [Logo] · Allgemein › Mia ist angekommen. | +| Party-Einladung | [Logo] · Party \| Mia lädt dich ein. [Annehmen] | +| Queue | [Logo] · Match \| Du wartest auf ein 1vs1. | +| Bestätigung (`GENERAL` / `SUCCESS`) | [Logo] · Allgemein \| Deine Einstellungen wurden gespeichert. | +| Neustart (`GENERAL` / `WARNING`) | [Logo] · Allgemein \| Neustart in 5 Minuten. | +| Fehler (`GENERAL` / `ERROR`) | [Logo] · Allgemein \| Diese Aktion ist gerade nicht möglich. Versuch es gleich noch einmal. | +| Freundesfehler (`FRIENDS` / `ERROR`) | [Logo] · Freunde \| Deine Freundesliste ist voll. | +| Freiwillige Story | [Logo] · Story \| In der Werkstatt gibt es Neuigkeiten. | +| Join im relevanten Umfeld | [Logo] · Allgemein \| Mia ist angekommen. | Aktionsklammern bezeichnen echte unterstützte Aktionen; sie dürfen nicht wie klickbare Schaltflächen aussehen, wenn der Client keine Aktion anbietet. Für Bedrock erhält jede notwendige Aktion einen dort nutzbaren Weg, etwa einen geprüften Befehl oder ein Formular. Solange dieser fehlt, keine vorgetäuschte Klickbarkeit. Unbekannte Fehlerursachen werden nicht als angeblich bekannter Zustand ausgegeben. diff --git a/superpowers/plans/2026-10-14-java-chat-design.md b/superpowers/plans/2026-10-14-java-chat-design.md index 4791f39..13af2c8 100644 --- a/superpowers/plans/2026-10-14-java-chat-design.md +++ b/superpowers/plans/2026-10-14-java-chat-design.md @@ -13,7 +13,7 @@ description: "Implementiere das Grounds-Chatdesign für Java 26.3 mit originalem **Tech Stack:** Kotlin/JVM, Adventure, Grounds-Minestom-Fork 2026.10.02-26.3-grounds.1, Velocity, library-i18n, resourcepacks, JUnit, Gradle. -**Spec:** [Mini-CD v0.5](../../design/minecraft-mini-cd-and-chat.md), [Confluence](https://grounds.atlassian.net/wiki/spaces/gkd/pages/300154881). +**Spec:** [Mini-CD v0.7](../../design/minecraft-mini-cd-and-chat.md), [Confluence](https://grounds.atlassian.net/wiki/spaces/gkd/pages/300154881). ## Global Constraints @@ -22,7 +22,7 @@ description: "Implementiere das Grounds-Chatdesign für Java 26.3 mit originalem - Eigener Font grounds:chat; reservierte Glyphen werden nicht in die Standardspielerschrift eingebaut. - Gold #E7B84B, Text #F2EBDD, Sekundärtext #C1B9AA, Cyan #67D9EC. Erfolg/Warnung/Fehler behalten die Mini-CD-Token. Vorhandene Rank-/Teamzuordnung bleibt erhalten. - Logo- und Emoji-Komponenten sind weiß eingefärbt und nicht fett/kursiv; ihre Originalfarben bleiben erhalten. -- System: Logo · Kategorie › Nachricht. Spieler: Kopf Name › Nachricht. Privat- und Staffkanäle bleiben ausdrücklich bezeichnet. +- System: Logo · Kategorie | Nachricht. Spieler: Kopf Name › Nachricht. Privat- und Staffkanäle bleiben ausdrücklich bezeichnet. - Die acht Emoji-Aliase sind :heart:, :smile:, :laugh:, :thumbsup:, :gg:, :fire:, :creeper: und :wrench:. Höchstens fünf grafische Ersetzungen, übrige Aliase bleiben Text. - Freier Spielertext bleibt unparsed; keine MiniMessage-Auswertung von Nachrichten. - Der bestehende PackSet besteht aus grounds-content und grounds-platform; aktuelle main-Quelle verwendet Packformat 97. From 782e20da47ccba43c6670f64e519ce940f81c934 Mon Sep 17 00:00:00 2001 From: Lukas Jost Date: Thu, 15 Oct 2026 11:49:52 +0200 Subject: [PATCH 10/16] docs(chat): keep player names neutral beside rank tags --- design/minecraft-chat-integration.md | 4 ++++ design/minecraft-mini-cd-and-chat.md | 4 ++-- superpowers/plans/2026-10-14-java-chat-design.md | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/design/minecraft-chat-integration.md b/design/minecraft-chat-integration.md index b0ad942..0b0a3cb 100644 --- a/design/minecraft-chat-integration.md +++ b/design/minecraft-chat-integration.md @@ -221,3 +221,7 @@ Der grafische Systempräfix behält seinen Trenner: `[Logo] · Freunde | Nachric ## Senkrechter Systemtrenner Nach der bestätigten Clientprüfung für Logo, Punkt und Köpfe verwendet [i18n-Fix 14](https://github.com/groundsgg/library-i18n/pull/14) den Trenner `|` für grafische Systemmeldungen und deren Textfallback: `[Logo] · Freunde | Nachricht` beziehungsweise `[Grounds] Freunde | Nachricht`. Spieler-, Privat- und Staffnachrichten behalten `›`. Die geänderten Erwartungen scheiterten zuerst am bisherigen Trenner; anschließend bestanden alle 42 Tests, Build und Formatierung. Die lokale Vorschau prüft beide Systemvarianten in 80 Kontext-/Level-/Sprachkombinationen. Die Paketveröffentlichung dieser neuen Änderung ist separat nachzuweisen. + +## Rangtag und neutrale Spielernamen + +`ChatSender` verwendet das vorhandene Rangtag und dessen Rangfarbe unverändert. Die Rangfarbe wirkt ausschließlich auf das Tag; der Spielername erhält explizit den normalen hellen Textton `#F2EBDD`, der native Kopf weiterhin Weiß. Die gemeinsame Komponente gilt für Kopf- und Textdarstellung. Es werden keine neuen Tags, Rangnamen oder zusätzlichen kosmetischen Präfixe erzeugt. diff --git a/design/minecraft-mini-cd-and-chat.md b/design/minecraft-mini-cd-and-chat.md index f84d290..5b82307 100644 --- a/design/minecraft-mini-cd-and-chat.md +++ b/design/minecraft-mini-cd-and-chat.md @@ -5,7 +5,7 @@ description: "Gestaltungsregeln für Minecraft-Chat, Systemmeldungen, Original-L # Grounds — Minecraft Mini-CD & Chatdesign -Version 0.7 · Stand: 15. Oktober 2026 · Zielplattform: Java 26.3 / Minestom und Bedrock über Geyser. +Version 0.8 · Stand: 15. Oktober 2026 · Zielplattform: Java 26.3 / Minestom und Bedrock über Geyser. Status: Aus der Story abgeleitete Designspezifikation. Die gewählte Richtung „eigenständiger Grounds-Stil“ ist abgestimmt; konkrete Farbwerte, Signet-Ausführung und Effekte sind der daraus entwickelte erste Entwurf. Dieses Dokument beschreibt die Gestaltungsregeln. Die lokale Java-Umsetzung und Plugin-Migration sind im [Integrationsnachweis](/design/minecraft-chat-integration) dokumentiert; Die gemeinsamen APIs sind veröffentlicht; die Plugin-Releases laufen. Die visuelle Clientabnahme steht aus. @@ -75,7 +75,7 @@ Die eckigen Platzhalter [Kopf], [Logo] und [NPC-Porträt] beschreiben Grafiken, Native Skin-Köpfe erhalten eine explizit weiße Farbmodulation. Farben von Privatlabels, Namen, Rängen oder übergeordneten Komponenten dürfen die Hauttextur nicht einfärben. -Ein Rangbadge ist nur bei tatsächlichem Bedarf zulässig; keine Kette aus Rang, Level, Titel und Cosmetics vor jeder Nachricht. Detailinformationen gehören in Profil oder unterstützte Hoveransicht. Kritische Informationen dürfen nie ausschließlich im Hover stehen. +Vorhandene Rangtags verwenden dieselbe Bezeichnung und Rangfarbe wie die Tabliste. Nur das Tag trägt die Rangfarbe; der Spielername bleibt im normalen hellen Textton (#F2EBDD), der native Kopf neutral weiß. Ein fehlendes oder leeres Rangtag erzeugt keinen zusätzlichen Präfix. Beispiel: `[Kopf] [MOD] Lukas › Hallo zusammen!` (MOD ist eine beispielhafte Rangbezeichnung). Es wird genau das vorhandene Rangtag dargestellt; keine zusätzliche Kette aus Rang, Level, Titel und Cosmetics. Detailinformationen gehören in Profil oder unterstützte Hoveransicht. Kritische Informationen dürfen nie ausschließlich im Hover stehen. Systemkategorie und Level sind getrennte Metadaten. Die Kategorie beschreibt den fachlichen Kontext: Allgemein, Freunde, Party, Match oder Story. Das Level beschreibt Status beziehungsweise Dringlichkeit: Info, Erfolg, Warnung oder Fehler. Eine fehlgeschlagene Freundesaktion bleibt deshalb in der Kategorie Freunde und erhält das Level Fehler. Das Level bestimmt die Statusfarbe des Kontextlabels; es ersetzt das Kontextlabel nicht. Standard sind `GENERAL` und `INFO`. Spielerbezogene Mitteilungen werden an die betroffenen Empfänger adressiert, nicht unnötig global verteilt. Spieler dürfen mit eigenen Eingaben weder das reservierte Systemsignet noch administrative Labels oder Formatierung erzeugen. diff --git a/superpowers/plans/2026-10-14-java-chat-design.md b/superpowers/plans/2026-10-14-java-chat-design.md index 13af2c8..0d64108 100644 --- a/superpowers/plans/2026-10-14-java-chat-design.md +++ b/superpowers/plans/2026-10-14-java-chat-design.md @@ -13,7 +13,7 @@ description: "Implementiere das Grounds-Chatdesign für Java 26.3 mit originalem **Tech Stack:** Kotlin/JVM, Adventure, Grounds-Minestom-Fork 2026.10.02-26.3-grounds.1, Velocity, library-i18n, resourcepacks, JUnit, Gradle. -**Spec:** [Mini-CD v0.7](../../design/minecraft-mini-cd-and-chat.md), [Confluence](https://grounds.atlassian.net/wiki/spaces/gkd/pages/300154881). +**Spec:** [Mini-CD v0.8](../../design/minecraft-mini-cd-and-chat.md), [Confluence](https://grounds.atlassian.net/wiki/spaces/gkd/pages/300154881). ## Global Constraints From c92c35b8e6336525f264c1b2579f6f0ec14a77ff Mon Sep 17 00:00:00 2001 From: Lukas Jost Date: Thu, 15 Oct 2026 12:01:25 +0200 Subject: [PATCH 11/16] docs(chat): specify graphical tab-list badges in chat --- design/minecraft-chat-integration.md | 10 +++++++++- design/minecraft-mini-cd-and-chat.md | 4 ++-- superpowers/plans/2026-10-14-java-chat-design.md | 2 +- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/design/minecraft-chat-integration.md b/design/minecraft-chat-integration.md index 0b0a3cb..e00ce6f 100644 --- a/design/minecraft-chat-integration.md +++ b/design/minecraft-chat-integration.md @@ -224,4 +224,12 @@ Nach der bestätigten Clientprüfung für Logo, Punkt und Köpfe verwendet [i18n ## Rangtag und neutrale Spielernamen -`ChatSender` verwendet das vorhandene Rangtag und dessen Rangfarbe unverändert. Die Rangfarbe wirkt ausschließlich auf das Tag; der Spielername erhält explizit den normalen hellen Textton `#F2EBDD`, der native Kopf weiterhin Weiß. Die gemeinsame Komponente gilt für Kopf- und Textdarstellung. Es werden keine neuen Tags, Rangnamen oder zusätzlichen kosmetischen Präfixe erzeugt. +`ChatSender` verwendet das vorhandene Rangtag und dessen Rangfarbe unverändert. Die Rangfarbe wirkt ausschließlich auf das Tag beziehungsweise dessen grafische Fläche; die Badge-Beschriftung ist weiß. Der Spielername erhält explizit den normalen hellen Textton `#F2EBDD`, der native Kopf weiterhin Weiß. Die gemeinsame Komponente gilt für Kopf- und Textdarstellung. Es werden keine neuen Tags, Rangnamen oder zusätzlichen kosmetischen Präfixe erzeugt. + +## Grafische Rang-Badges aus der Tabliste + +Bei bestätigtem Pack rendert `RankBadge` dieselben vorhandenen `grounds:tab`-Flächen, Abstände und weißen `grounds:tab_labels`-Buchstaben wie `plugin-proxy/TabBadge`. Native Köpfe und Badge-Fontbereitschaft bleiben unabhängig. Ohne Pack bleibt das vorhandene Rangtag als Text erhalten; nicht unterstützte oder zu lange Labels verwenden ebenfalls den sicheren Textfallback. + +Die Rangbezeichnung wird am sendenden Proxy aus derselben Rolle und denselben Aliasregeln wie in der Tabliste aufgelöst (etwa Builder → BUILD). Das zusätzliche optionale Feld `senderRankLabel` trägt sie an andere Proxys weiter; alte Nachrichten ohne dieses Feld bleiben lesbar. Namensfarbe und Kopf bleiben neutral. Die bestehenden Kotlin/JVM-Aufrufe von `ChatSender.render` und `ChatLine.of` bleiben erhalten. Neue Assetdateien oder Shader sind dafür nicht nötig. + +Geprüft mit vollständigem Build und Formatierung: 361 Tests ohne Fehler oder übersprungene Tests. Ein zusätzlicher Vergleich mit den tatsächlich kompilierten Tabliste-Renderern bestätigte 30 identische Badge-Komponenten und 39 identische Rangbezeichnungen. Der bestehende Host kann die bisherigen JVM-Einstiegspunkte weiterhin aufrufen. Die Java-Vorschau enthält die neue Absender- und Badge-Klasse aus [Chat-PR 53](https://github.com/groundsgg/plugin-chat/pull/53); die Clientabnahme und Veröffentlichung dieser Erweiterung bleiben separat offen. diff --git a/design/minecraft-mini-cd-and-chat.md b/design/minecraft-mini-cd-and-chat.md index 5b82307..342236d 100644 --- a/design/minecraft-mini-cd-and-chat.md +++ b/design/minecraft-mini-cd-and-chat.md @@ -5,7 +5,7 @@ description: "Gestaltungsregeln für Minecraft-Chat, Systemmeldungen, Original-L # Grounds — Minecraft Mini-CD & Chatdesign -Version 0.8 · Stand: 15. Oktober 2026 · Zielplattform: Java 26.3 / Minestom und Bedrock über Geyser. +Version 0.9 · Stand: 15. Oktober 2026 · Zielplattform: Java 26.3 / Minestom und Bedrock über Geyser. Status: Aus der Story abgeleitete Designspezifikation. Die gewählte Richtung „eigenständiger Grounds-Stil“ ist abgestimmt; konkrete Farbwerte, Signet-Ausführung und Effekte sind der daraus entwickelte erste Entwurf. Dieses Dokument beschreibt die Gestaltungsregeln. Die lokale Java-Umsetzung und Plugin-Migration sind im [Integrationsnachweis](/design/minecraft-chat-integration) dokumentiert; Die gemeinsamen APIs sind veröffentlicht; die Plugin-Releases laufen. Die visuelle Clientabnahme steht aus. @@ -75,7 +75,7 @@ Die eckigen Platzhalter [Kopf], [Logo] und [NPC-Porträt] beschreiben Grafiken, Native Skin-Köpfe erhalten eine explizit weiße Farbmodulation. Farben von Privatlabels, Namen, Rängen oder übergeordneten Komponenten dürfen die Hauttextur nicht einfärben. -Vorhandene Rangtags verwenden dieselbe Bezeichnung und Rangfarbe wie die Tabliste. Nur das Tag trägt die Rangfarbe; der Spielername bleibt im normalen hellen Textton (#F2EBDD), der native Kopf neutral weiß. Ein fehlendes oder leeres Rangtag erzeugt keinen zusätzlichen Präfix. Beispiel: `[Kopf] [MOD] Lukas › Hallo zusammen!` (MOD ist eine beispielhafte Rangbezeichnung). Es wird genau das vorhandene Rangtag dargestellt; keine zusätzliche Kette aus Rang, Level, Titel und Cosmetics. Detailinformationen gehören in Profil oder unterstützte Hoveransicht. Kritische Informationen dürfen nie ausschließlich im Hover stehen. +Vorhandene Rangtags verwenden dieselbe Bezeichnung und Rangfarbe wie die Tabliste. Mit geladenem Pack erscheint dasselbe grafische Badge wie in der Tabliste: farbige Fläche, weiße kompakte Beschriftung in `grounds:tab_labels`, bestehende Flächen aus `grounds:tab`. Ohne bestätigtes Pack bleibt das vorhandene Rangtag lesbarer Text in Rangfarbe. Der Spielername bleibt im normalen hellen Textton (#F2EBDD), der native Kopf neutral weiß. Ein fehlendes oder leeres Rangtag erzeugt keinen zusätzlichen Präfix. Beispiel: `[Kopf] [MOD] Lukas › Hallo zusammen!` (MOD ist eine beispielhafte Rangbezeichnung). Es wird genau das vorhandene Rangtag dargestellt; keine zusätzliche Kette aus Rang, Level, Titel und Cosmetics. Detailinformationen gehören in Profil oder unterstützte Hoveransicht. Kritische Informationen dürfen nie ausschließlich im Hover stehen. Systemkategorie und Level sind getrennte Metadaten. Die Kategorie beschreibt den fachlichen Kontext: Allgemein, Freunde, Party, Match oder Story. Das Level beschreibt Status beziehungsweise Dringlichkeit: Info, Erfolg, Warnung oder Fehler. Eine fehlgeschlagene Freundesaktion bleibt deshalb in der Kategorie Freunde und erhält das Level Fehler. Das Level bestimmt die Statusfarbe des Kontextlabels; es ersetzt das Kontextlabel nicht. Standard sind `GENERAL` und `INFO`. Spielerbezogene Mitteilungen werden an die betroffenen Empfänger adressiert, nicht unnötig global verteilt. Spieler dürfen mit eigenen Eingaben weder das reservierte Systemsignet noch administrative Labels oder Formatierung erzeugen. diff --git a/superpowers/plans/2026-10-14-java-chat-design.md b/superpowers/plans/2026-10-14-java-chat-design.md index 0d64108..267bba7 100644 --- a/superpowers/plans/2026-10-14-java-chat-design.md +++ b/superpowers/plans/2026-10-14-java-chat-design.md @@ -13,7 +13,7 @@ description: "Implementiere das Grounds-Chatdesign für Java 26.3 mit originalem **Tech Stack:** Kotlin/JVM, Adventure, Grounds-Minestom-Fork 2026.10.02-26.3-grounds.1, Velocity, library-i18n, resourcepacks, JUnit, Gradle. -**Spec:** [Mini-CD v0.8](../../design/minecraft-mini-cd-and-chat.md), [Confluence](https://grounds.atlassian.net/wiki/spaces/gkd/pages/300154881). +**Spec:** [Mini-CD v0.9](../../design/minecraft-mini-cd-and-chat.md), [Confluence](https://grounds.atlassian.net/wiki/spaces/gkd/pages/300154881). ## Global Constraints From 9eaad0bf0c60e0c1fdc8ff91ad0e526e324a3b45 Mon Sep 17 00:00:00 2001 From: Lukas Jost Date: Thu, 15 Oct 2026 12:22:28 +0200 Subject: [PATCH 12/16] docs(chat): document sender formatting permissions and autocomplete catalog --- design/minecraft-chat-integration.md | 22 +++++++++++++++++++ design/minecraft-mini-cd-and-chat.md | 8 ++++++- .../plans/2026-10-14-java-chat-design.md | 2 +- 3 files changed, 30 insertions(+), 2 deletions(-) diff --git a/design/minecraft-chat-integration.md b/design/minecraft-chat-integration.md index e00ce6f..a8171ae 100644 --- a/design/minecraft-chat-integration.md +++ b/design/minecraft-chat-integration.md @@ -233,3 +233,25 @@ Bei bestätigtem Pack rendert `RankBadge` dieselben vorhandenen `grounds:tab`-Fl Die Rangbezeichnung wird am sendenden Proxy aus derselben Rolle und denselben Aliasregeln wie in der Tabliste aufgelöst (etwa Builder → BUILD). Das zusätzliche optionale Feld `senderRankLabel` trägt sie an andere Proxys weiter; alte Nachrichten ohne dieses Feld bleiben lesbar. Namensfarbe und Kopf bleiben neutral. Die bestehenden Kotlin/JVM-Aufrufe von `ChatSender.render` und `ChatLine.of` bleiben erhalten. Neue Assetdateien oder Shader sind dafür nicht nötig. Geprüft mit vollständigem Build und Formatierung: 361 Tests ohne Fehler oder übersprungene Tests. Ein zusätzlicher Vergleich mit den tatsächlich kompilierten Tabliste-Renderern bestätigte 30 identische Badge-Komponenten und 39 identische Rangbezeichnungen. Der bestehende Host kann die bisherigen JVM-Einstiegspunkte weiterhin aufrufen. Die Java-Vorschau enthält die neue Absender- und Badge-Klasse aus [Chat-PR 53](https://github.com/groundsgg/plugin-chat/pull/53); die Clientabnahme und Veröffentlichung dieser Erweiterung bleiben separat offen. + +## Permission-Katalog und Inhaltsformatierung + +[Chat-PR 55](https://github.com/groundsgg/plugin-chat/pull/55) führt eine senderbezogene Freigabe im gemeinsamen `ChatContent`-Renderer ein. Der Proxy ermittelt die Rechte am Ursprung und trägt sie als optionales `contentPermissions`-Feld in öffentlichen, privaten und Staff-Nachrichten weiter. Ältere Nachrichten ohne dieses Feld erlauben keine Formatierung oder grafischen Aliasse. Moderationsdaten behalten den unveränderten Originaltext. Lokale Paper-Ausgabe prüft den Absender; Minestom fragt den optionalen Runtime-Dienst `Permissions` bei jeder Nachricht ab. Fehlende Dienste erteilen keine Rechte. + +| Knoten | Freigabe | +| --- | --- | +| `grounds.chat.format.color` | ``, `<#FFAA00>`, `&6`, `&#FFAA00` | +| `grounds.chat.format.decoration` | Fett, Kursiv, Unterstrichen | +| `grounds.chat.emoji.*` | Alle eigenen Chat-Emojis über den Permission-Resolver | +| `grounds.chat.emoji.heart` | `:heart:` | +| `grounds.chat.emoji.smile` | `:smile:` | +| `grounds.chat.emoji.laugh` | `:laugh:` | +| `grounds.chat.emoji.thumbsup` | `:thumbsup:` | +| `grounds.chat.emoji.gg` | `:gg:` | +| `grounds.chat.emoji.fire` | `:fire:` | +| `grounds.chat.emoji.creeper` | `:creeper:` | +| `grounds.chat.emoji.wrench` | `:wrench:` | + +Diese elf neuen Einträge stehen mit Beschreibungen im gemeinsamen `common/src/main/resources/META-INF/grounds/permissions.json`, damit der Permission-Katalog und seine Autovervollständigung sie anbieten. Der Katalog enthält außerdem weiterhin `grounds.chat.staff`. Er ist in common sowie den gebündelten Velocity-/Paper-JARs vorhanden; das schlanke Minestom-Modul erhält ihn über seine common-Abhängigkeit. Vorhandene Rollen werden dadurch nicht automatisch berechtigt. `/emoji` listet nur erlaubte Aliasse auf. + +Prüfnachweis: vollständiger Build und Formatierung erfolgreich, 373 Tests ohne Fehler oder übersprungene Tests. Geprüft sind erlaubte und verweigerte Tags, einzelne Emojis, Limit über formatierte Abschnitte, alle Spielerkanäle, unveränderte Moderationsdaten und die Katalogeinträge. Die unabhängige Korrektheits- und Sicherheitsprüfung meldete keine wesentlichen Befunde. Die lokale Vorschau zeigt mit `/chatpreview format` feste Testprofile ohne Änderung realer Berechtigungen; sie ersetzt keinen Test der Rollenvergabe im Permission-Dienst. diff --git a/design/minecraft-mini-cd-and-chat.md b/design/minecraft-mini-cd-and-chat.md index 342236d..3f08afb 100644 --- a/design/minecraft-mini-cd-and-chat.md +++ b/design/minecraft-mini-cd-and-chat.md @@ -5,7 +5,7 @@ description: "Gestaltungsregeln für Minecraft-Chat, Systemmeldungen, Original-L # Grounds — Minecraft Mini-CD & Chatdesign -Version 0.9 · Stand: 15. Oktober 2026 · Zielplattform: Java 26.3 / Minestom und Bedrock über Geyser. +Version 0.10 · Stand: 15. Oktober 2026 · Zielplattform: Java 26.3 / Minestom und Bedrock über Geyser. Status: Aus der Story abgeleitete Designspezifikation. Die gewählte Richtung „eigenständiger Grounds-Stil“ ist abgestimmt; konkrete Farbwerte, Signet-Ausführung und Effekte sind der daraus entwickelte erste Entwurf. Dieses Dokument beschreibt die Gestaltungsregeln. Die lokale Java-Umsetzung und Plugin-Migration sind im [Integrationsnachweis](/design/minecraft-chat-integration) dokumentiert; Die gemeinsamen APIs sind veröffentlicht; die Plugin-Releases laufen. Die visuelle Clientabnahme steht aus. @@ -223,3 +223,9 @@ Die Umstellung wurde zunächst in isolierten Branches und Composite-Builds gepr Der Proxy überträgt den bestätigten Fontstatus über `grounds:chat_style` an die konkrete aktuelle Backendverbindung. Der Vertrag enthält exakt 26 Bytes in Big Endian: Version `1` als Byte, Ziel-UUID als zwei Longs, positive monotone Revision als Long und Bereitschaft `0` oder `1` als Byte. Die Minestom-Spielerinstanz speichert den Status unter `grounds:chat-font-ready`. Neue Instanzen beginnen ohne Bereitschaft; Disconnect und Modulstopp löschen den Zustand. UUID muss zum Ereignisspieler passen; ältere oder doppelte Revisionen überschreiben keinen neueren Zustand. Clientpakete auf diesem Kanal werden am Proxy behandelt und nicht ungeprüft weitergeleitet. Remote-Social-Meldungen bleiben im Transport semantische Übersetzungskeys mit Argumenten. Der empfängerbezogene `PlayerMessageRenderer` entscheidet erst auf dem zustellenden Proxy über Sprache und Logo. Fehlende oder inkompatible Renderer und fremde Komponenten behalten den bestehenden Ausgabeweg. Registrierung und Entfernen des Providers sind atomar und an dessen tatsächliche Instanz gebunden. + +## 14. Berechtigungen für Spielernachrichten + +Farben und Textstile gelten ausschließlich im Nachrichtentext. `grounds.chat.format.color` erlaubt benannte und Hexfarben über MiniMessage sowie `&0`–`&f` und `&#RRGGBB`; `grounds.chat.format.decoration` erlaubt Fett, Kursiv und Unterstrichen (``, ``, `` beziehungsweise `&l`, `&o`, `&n`). `&r` setzt freigegebene Formatierung zurück. Klickaktionen, Hover, Fontwechsel und verschleierter Text sind nicht freigegeben. Ohne jeweilige Berechtigung bleibt die Eingabe wörtlicher Text. + +Eigene grafische Aliasse benötigen `grounds.chat.emoji.`; `grounds.chat.emoji.*` kann alle freigeben. Konkrete Rechte werden beim Absender abgefragt, damit gezielte Sperren trotz Wildcard gelten. Maximal fünf genehmigte Grafiken pro Nachricht, auch über mehrere formatierte Abschnitte. Der Empfänger benötigt zusätzlich das bestätigt geladene Pack; andernfalls bleiben Aliasse lesbarer Text. Normale Unicode-Emojis bleiben Text. Diese Regeln gelten für öffentlichen, privaten und Staffchat sowie lokale Paper-/Minestom-Ausgabe. Rangbadge, Spielername und Kopf sind davon unabhängig. diff --git a/superpowers/plans/2026-10-14-java-chat-design.md b/superpowers/plans/2026-10-14-java-chat-design.md index 267bba7..754f096 100644 --- a/superpowers/plans/2026-10-14-java-chat-design.md +++ b/superpowers/plans/2026-10-14-java-chat-design.md @@ -13,7 +13,7 @@ description: "Implementiere das Grounds-Chatdesign für Java 26.3 mit originalem **Tech Stack:** Kotlin/JVM, Adventure, Grounds-Minestom-Fork 2026.10.02-26.3-grounds.1, Velocity, library-i18n, resourcepacks, JUnit, Gradle. -**Spec:** [Mini-CD v0.9](../../design/minecraft-mini-cd-and-chat.md), [Confluence](https://grounds.atlassian.net/wiki/spaces/gkd/pages/300154881). +**Spec:** [Mini-CD v0.10](../../design/minecraft-mini-cd-and-chat.md), [Confluence](https://grounds.atlassian.net/wiki/spaces/gkd/pages/300154881). ## Global Constraints From 4e28e35f7dbbd40352d0f89150df0ce753267337 Mon Sep 17 00:00:00 2001 From: Lukas Jost Date: Thu, 15 Oct 2026 12:25:02 +0200 Subject: [PATCH 13/16] docs(chat): align literal-input rules with permission allowlist --- design/minecraft-mini-cd-and-chat.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/design/minecraft-mini-cd-and-chat.md b/design/minecraft-mini-cd-and-chat.md index 3f08afb..9d30cb4 100644 --- a/design/minecraft-mini-cd-and-chat.md +++ b/design/minecraft-mini-cd-and-chat.md @@ -77,7 +77,7 @@ Native Skin-Köpfe erhalten eine explizit weiße Farbmodulation. Farben von Priv Vorhandene Rangtags verwenden dieselbe Bezeichnung und Rangfarbe wie die Tabliste. Mit geladenem Pack erscheint dasselbe grafische Badge wie in der Tabliste: farbige Fläche, weiße kompakte Beschriftung in `grounds:tab_labels`, bestehende Flächen aus `grounds:tab`. Ohne bestätigtes Pack bleibt das vorhandene Rangtag lesbarer Text in Rangfarbe. Der Spielername bleibt im normalen hellen Textton (#F2EBDD), der native Kopf neutral weiß. Ein fehlendes oder leeres Rangtag erzeugt keinen zusätzlichen Präfix. Beispiel: `[Kopf] [MOD] Lukas › Hallo zusammen!` (MOD ist eine beispielhafte Rangbezeichnung). Es wird genau das vorhandene Rangtag dargestellt; keine zusätzliche Kette aus Rang, Level, Titel und Cosmetics. Detailinformationen gehören in Profil oder unterstützte Hoveransicht. Kritische Informationen dürfen nie ausschließlich im Hover stehen. -Systemkategorie und Level sind getrennte Metadaten. Die Kategorie beschreibt den fachlichen Kontext: Allgemein, Freunde, Party, Match oder Story. Das Level beschreibt Status beziehungsweise Dringlichkeit: Info, Erfolg, Warnung oder Fehler. Eine fehlgeschlagene Freundesaktion bleibt deshalb in der Kategorie Freunde und erhält das Level Fehler. Das Level bestimmt die Statusfarbe des Kontextlabels; es ersetzt das Kontextlabel nicht. Standard sind `GENERAL` und `INFO`. Spielerbezogene Mitteilungen werden an die betroffenen Empfänger adressiert, nicht unnötig global verteilt. Spieler dürfen mit eigenen Eingaben weder das reservierte Systemsignet noch administrative Labels oder Formatierung erzeugen. +Systemkategorie und Level sind getrennte Metadaten. Die Kategorie beschreibt den fachlichen Kontext: Allgemein, Freunde, Party, Match oder Story. Das Level beschreibt Status beziehungsweise Dringlichkeit: Info, Erfolg, Warnung oder Fehler. Eine fehlgeschlagene Freundesaktion bleibt deshalb in der Kategorie Freunde und erhält das Level Fehler. Das Level bestimmt die Statusfarbe des Kontextlabels; es ersetzt das Kontextlabel nicht. Standard sind `GENERAL` und `INFO`. Spielerbezogene Mitteilungen werden an die betroffenen Empfänger adressiert, nicht unnötig global verteilt. Spieler dürfen mit eigenen Eingaben weder das reservierte Systemsignet noch administrative Labels erzeugen. Berechtigte Textformatierung bleibt auf den Nachrichteninhalt begrenzt. ## 5. Sprache und Beispiele @@ -109,7 +109,7 @@ Startset: :heart:, :smile:, :laugh:, :thumbsup:, :gg:, :fire:, :creeper: und :wr - /emoji ist der vorgeschlagene Einstieg zur Übersicht; Existenz, Suchfunktion und Vervollständigung sind noch umzusetzen. - Richtwert: höchstens fünf grafisch ersetzte Emojis pro Nachricht. Weitere Kurzformen bleiben Text. Bestehende Längen- und Spamregeln gelten weiterhin. - Die serverseitige Emoji-Auflösung darf die Längenprüfung nicht aushebeln. Relevante Rohtexte, normalisierte Bedeutung und tatsächlich zugestellte Darstellung bleiben für die vorhandene Moderations-/Reporting-Pipeline nachvollziehbar. -- Freier Spielertext wird nicht als MiniMessage oder ausführbarer Richtext geparst. Nur kontrollierte Emoji-Tokens und explizit freigegebene Komponenten werden eingesetzt. +- Freier Spielertext wird ohne Rechte wörtlich angezeigt. Mit expliziter Senderberechtigung wird ausschließlich die Farb-/Textstil-Allowlist aus Abschnitt 14 ausgewertet; ausführbare Richtext-Tags und Fontwechsel bleiben Text. Emoji-Tokens benötigen ihre jeweilige Freigabe. ## 7. Java, Bedrock und reduzierte Darstellung @@ -208,7 +208,7 @@ Der Renderer besitzt Farben und grafische Komponenten. Die Nachrichtenschlüssel - `render`: unpräfixierte Komponenten für Menüs, Titel, Actionbars und Verbindungsdialoge. - `sendUnprefixed`: übersetzbare Unterhaltungsvorlagen; keine Systemmeldungen. -Spielereingaben und externe Texte werden als uninterpretierte Strings eingesetzt. Nur explizite Komponentenplatzhalter erhalten Formatierung oder Aktionen. Bestehende dynamische Serverdiagnosen, Transportfelder und Konsolenausgaben werden nicht durch Übersetzungen verändert. +In System- und Übersetzungsvorlagen werden Spielereingaben und externe Texte als uninterpretierte Strings eingesetzt. Die separat geprüfte Formatierung des eigentlichen Chat-Nachrichteninhalts folgt Abschnitt 14. Nur explizite Komponentenplatzhalter erhalten Formatierung oder Aktionen. Bestehende dynamische Serverdiagnosen, Transportfelder und Konsolenausgaben werden nicht durch Übersetzungen verändert. ### Integrations- und Freigabegrenzen From 88e5d0dbe928067e0c27fede322a7ad5700ba838 Mon Sep 17 00:00:00 2001 From: Lukas Jost Date: Sat, 17 Oct 2026 13:15:44 +0200 Subject: [PATCH 14/16] docs(chat): extend unified layout audit to new repositories --- design/minecraft-chat-integration.md | 91 ++++++++----------- design/minecraft-mini-cd-and-chat.md | 11 ++- .../plans/2026-10-14-java-chat-design.md | 11 +++ 3 files changed, 58 insertions(+), 55 deletions(-) diff --git a/design/minecraft-chat-integration.md b/design/minecraft-chat-integration.md index a8171ae..e5b8093 100644 --- a/design/minecraft-chat-integration.md +++ b/design/minecraft-chat-integration.md @@ -19,60 +19,19 @@ Alle Plugin-Keys und direkte `SystemMessages.format`-Aufrufe werden mit diesen z ## Repository-Abgleich -GitHub-Abgleich vom 14. Oktober 2026: 104 sichtbare Repositories, davon 60 unterschiedliche lokale Checkouts. Alle `plugin-*`-Repositories sind lokal vorhanden. Ergänzt wurden fehlende Plugin-Checkouts für Coins, Match, Analytics und Platform Router. Nicht jeder lokale Hauptcheckout war aktuell; die Umstellung arbeitet deshalb in isolierten Worktrees von frisch abgeglichenem `origin/main`. - -44 weitere Repositories sind lokal nicht vorhanden. Eine vollständige Kopie sämtlicher Services, Beispiele, Games und Infrastruktur ist für diese Plugin-Migration nicht erforderlich. - - - -```text -1vs1-demo -claude-rp-test -cloudflare-prometheus-exporter -disgit-hook -duel -external-dns-bunny-webhook -game-bedwars -grnds-link -grounds-anticheat -grounds-clickhouse-writer -grounds-infra-lib -grounds-instatus-sync -grounds-landing -grounds-pulumi-archive -grounds-recorder -grpc-client -grpc-server -headlamp-upcloud-clusters -keycloak-web -library-data-access -library-jvm-modules -library-minigame-api -mc-stress -menu-demo -minestom -multi-plugin-sample -nats-consumer -nats-producer -nats-recorder -platform-vcluster-template -prism -pvp-demo -sample-leaderboard-plugin -scoop-bucket -service-coins -service-leaderboard -service-match -service-proxy-registry -service-social -valkey-consumer -valkey-publisher -valkey-viewer -valkey-writer -website -``` +GitHub-Abgleich vom 17. Oktober 2026: 107 sichtbare Repositories. Die Hauptstände von 44 für Minecraft-Ausgaben relevanten Repositories wurden frisch geladen und geprüft, einschließlich neuer Spielmodi, Bibliotheken und Beispiele. Die dafür fehlenden Checkouts sind jetzt lokal vorhanden. Bestehende Änderungen in den Hauptcheckouts bleiben erhalten; Anpassungen erfolgen in isolierten Worktrees auf den geprüften aktuellen Commits. + +Zusätzlich umfasst der Audit GetDown, Keystone, BedWars, SurvivalGames und Duel sowie die Minigame-API, Recorder, Anti-Cheat und Demo-Repositories. Die beiden leeren Abstandzeilen von SurvivalGames sind bewusst keine Systemmeldungen. + +## Gemeinsame Kategorie-Darstellung + +Verbindlich bleibt `[Logo] · Kategorie | Nachricht`; ohne bestätigtes Chatpack erscheint `[Grounds] Kategorie | Nachricht`. Das gilt auch für benannte Kontexte wie `GetDown`, `Chat`, `Lobby` und `Settings`. Eine Kategorie allein mit `›` ist kein alternatives Systemdesign. Spieler-, Privat- und Staffnachrichten behalten ihren eigenen Gesprächsaufbau. - +[Der gemeinsame Kategorie-Renderer](https://github.com/groundsgg/library-i18n/pull/18) ist als `library-i18n:0.4.3` [erfolgreich veröffentlicht](https://github.com/groundsgg/library-i18n/actions/runs/39027248865). `Prefix.category` verwendet damit dieselbe zentrale Systemvorlage. Kontext, Schweregrad und vorhandene Inhaltsstile bleiben getrennt; bekannte Kategorien werden lokalisiert, eigene Spielnamen bleiben erhalten. Die Prüfung umfasst 49 erfolgreiche Bibliothekstests und einen unabhängigen Code-Review ohne wesentliche Befunde. + +Empfängerabhängige Ausgabe bindet `Translations.forBundleWithSystemRenderer` ein. Minestom liest ausschließlich den bestätigten Spieler-Tag `grounds:chat-font-ready`; der Proxy fragt die aktuelle `PlayerChatAppearanceQuery` ab. Ein Locale allein genügt nicht zur Logo-Freigabe. Deshalb bleiben Social-Nachrichten beim Transport semantische Komponenten und werden erst bei lokaler oder entfernter Zustellung für den tatsächlichen Leser gerendert. `render` und `sendUnprefixed` erhalten keinen Systempräfix. + +Die abhängigen Plugin- und Spielupdates werden eigenständig gegen das veröffentlichte Paket gebaut. Die Veröffentlichung der Bibliothek allein belegt noch keine abgeschlossene Ausrollung der Verbraucher oder aktivierte Grafiken auf einem Liveserver. ## Auditumfang @@ -255,3 +214,29 @@ Geprüft mit vollständigem Build und Formatierung: 361 Tests ohne Fehler oder Diese elf neuen Einträge stehen mit Beschreibungen im gemeinsamen `common/src/main/resources/META-INF/grounds/permissions.json`, damit der Permission-Katalog und seine Autovervollständigung sie anbieten. Der Katalog enthält außerdem weiterhin `grounds.chat.staff`. Er ist in common sowie den gebündelten Velocity-/Paper-JARs vorhanden; das schlanke Minestom-Modul erhält ihn über seine common-Abhängigkeit. Vorhandene Rollen werden dadurch nicht automatisch berechtigt. `/emoji` listet nur erlaubte Aliasse auf. Prüfnachweis: vollständiger Build und Formatierung erfolgreich, 373 Tests ohne Fehler oder übersprungene Tests. Geprüft sind erlaubte und verweigerte Tags, einzelne Emojis, Limit über formatierte Abschnitte, alle Spielerkanäle, unveränderte Moderationsdaten und die Katalogeinträge. Die unabhängige Korrektheits- und Sicherheitsprüfung meldete keine wesentlichen Befunde. Die lokale Vorschau zeigt mit `/chatpreview format` feste Testprofile ohne Änderung realer Berechtigungen; sie ersetzt keinen Test der Rollenvergabe im Permission-Dienst. + +## Geprüfte Verbraucher am 17. Oktober 2026 + +Die folgenden Änderungen verwenden das tatsächlich veröffentlichte `library-i18n:0.4.3`. Jeder Build lief eigenständig einschließlich Formatierungsprüfung. Die Tabelle belegt Quellcode und lokale Tests; sie ist keine Bestätigung einer Live-Ausrollung. + +| Repository | Änderung | Tests | Fehler | Bestehende Skips | +| --- | --- | ---: | ---: | ---: | +| plugin-lobby | [PR 97](https://github.com/groundsgg/plugin-lobby/pull/97) | 92 | 0 | 0 | +| plugin-proxy | [PR 81](https://github.com/groundsgg/plugin-proxy/pull/81) | 138 | 0 | 0 | +| plugin-permissions | [PR 40](https://github.com/groundsgg/plugin-permissions/pull/40) | 197 | 0 | 0 | +| plugin-match | [PR 31](https://github.com/groundsgg/plugin-match/pull/31) | 58 | 0 | 0 | +| plugin-coins | [PR 7](https://github.com/groundsgg/plugin-coins/pull/7) | 13 | 0 | 0 | +| plugin-scene-editor | [PR 32](https://github.com/groundsgg/plugin-scene-editor/pull/32) | 177 | 0 | 6 | +| plugin-grounds-runtime | [PR 8](https://github.com/groundsgg/plugin-grounds-runtime/pull/8) | 6 | 0 | 0 | +| plugin-resourcepacks | [PR 33](https://github.com/groundsgg/plugin-resourcepacks/pull/33) | 114 | 0 | 0 | +| game-getdown | [PR 9](https://github.com/groundsgg/game-getdown/pull/9) | 38 | 0 | 0 | +| game-keystone | [PR 9](https://github.com/groundsgg/game-keystone/pull/9) | 59 | 0 | 0 | +| game-bedwars | [PR 52](https://github.com/groundsgg/game-bedwars/pull/52) | 61 | 0 | 0 | +| game-survivalgames | [PR 13](https://github.com/groundsgg/game-survivalgames/pull/13) | 35 | 0 | 0 | +| duel | [PR 38](https://github.com/groundsgg/duel/pull/38) | 34 | 0 | 0 | +| plugin-social | [PR 23](https://github.com/groundsgg/plugin-social/pull/23) | 29 | 0 | 0 | +| plugin-chat | [PR 55](https://github.com/groundsgg/plugin-chat/pull/55) | 389 | 0 | 0 | + +Die Bibliothek und diese 15 Verbraucher erfassen zusammen 1489 Testfälle: 1483 erfolgreich, sechs bestehende Scene-Editor-Skips und keine Fehler. Die unabhängige Prüfung der Bibliothek und Adapter meldet nach Korrektur der Party-Leader-Markierung keine wesentlichen offenen Befunde. Diese Markierung ist zusätzlich in allen vier Social-Sprachen für Leader und normale Mitglieder geprüft. Die sechs bestehenden Scene-Editor-Skips wurden nicht als erfolgreiche Tests gezählt. + +Bereits zuvor offene Migrationen für Agones, Player und Notifications bleiben gesondert nachzuverfolgen. Pflichtreviews in GitHub werden nicht umgangen; ebenso bleiben das private Paket-Zugriffsgate von Notifications und die getrennte Pack-/Bedrock-Freigabe bestehen. diff --git a/design/minecraft-mini-cd-and-chat.md b/design/minecraft-mini-cd-and-chat.md index 9d30cb4..3fda851 100644 --- a/design/minecraft-mini-cd-and-chat.md +++ b/design/minecraft-mini-cd-and-chat.md @@ -5,9 +5,9 @@ description: "Gestaltungsregeln für Minecraft-Chat, Systemmeldungen, Original-L # Grounds — Minecraft Mini-CD & Chatdesign -Version 0.10 · Stand: 15. Oktober 2026 · Zielplattform: Java 26.3 / Minestom und Bedrock über Geyser. +Version 0.11 · Stand: 17. Oktober 2026 · Zielplattform: Java 26.3 / Minestom und Bedrock über Geyser. -Status: Aus der Story abgeleitete Designspezifikation. Die gewählte Richtung „eigenständiger Grounds-Stil“ ist abgestimmt; konkrete Farbwerte, Signet-Ausführung und Effekte sind der daraus entwickelte erste Entwurf. Dieses Dokument beschreibt die Gestaltungsregeln. Die lokale Java-Umsetzung und Plugin-Migration sind im [Integrationsnachweis](/design/minecraft-chat-integration) dokumentiert; Die gemeinsamen APIs sind veröffentlicht; die Plugin-Releases laufen. Die visuelle Clientabnahme steht aus. +Status: Aus der Story abgeleitete Designspezifikation. Die gewählte Richtung „eigenständiger Grounds-Stil“ ist abgestimmt; konkrete Farbwerte, Signet-Ausführung und Effekte sind der daraus entwickelte erste Entwurf. Dieses Dokument beschreibt die Gestaltungsregeln. Die lokale Java-Umsetzung und Plugin-Migration sind im [Integrationsnachweis](/design/minecraft-chat-integration) dokumentiert; Die gemeinsamen APIs sind veröffentlicht; die Plugin-Releases laufen. Logo, Punkt, unverfärbte Köpfe und Rang-Badges wurden im lokalen Java-Client bestätigt; die vollständige Serverintegration und Bedrock-Abnahme bleiben separat zu prüfen. ## 1. Grundlage und Gestaltungsprinzip @@ -229,3 +229,10 @@ Remote-Social-Meldungen bleiben im Transport semantische Übersetzungskeys mit A Farben und Textstile gelten ausschließlich im Nachrichtentext. `grounds.chat.format.color` erlaubt benannte und Hexfarben über MiniMessage sowie `&0`–`&f` und `&#RRGGBB`; `grounds.chat.format.decoration` erlaubt Fett, Kursiv und Unterstrichen (``, ``, `` beziehungsweise `&l`, `&o`, `&n`). `&r` setzt freigegebene Formatierung zurück. Klickaktionen, Hover, Fontwechsel und verschleierter Text sind nicht freigegeben. Ohne jeweilige Berechtigung bleibt die Eingabe wörtlicher Text. Eigene grafische Aliasse benötigen `grounds.chat.emoji.`; `grounds.chat.emoji.*` kann alle freigeben. Konkrete Rechte werden beim Absender abgefragt, damit gezielte Sperren trotz Wildcard gelten. Maximal fünf genehmigte Grafiken pro Nachricht, auch über mehrere formatierte Abschnitte. Der Empfänger benötigt zusätzlich das bestätigt geladene Pack; andernfalls bleiben Aliasse lesbarer Text. Normale Unicode-Emojis bleiben Text. Diese Regeln gelten für öffentlichen, privaten und Staffchat sowie lokale Paper-/Minestom-Ausgabe. Rangbadge, Spielername und Kopf sind davon unabhängig. + + +## 15. Gleiche Systemdarstellung in neuen Repositories + +Systemmeldungen verwenden auch in neuen Spielmodi und Plugins `[Logo] · Kategorie | Nachricht`. Ohne bestätigtes Chatpack gilt `[Grounds] Kategorie | Nachricht`. Eigene Kontextnamen wie `GetDown` oder `Settings` ändern weder die zentrale Vorlage noch die Berechtigungen für Formatierung. Kontext und Schweregrad bleiben getrennte Angaben. + +Layouts gehören in die zentrale i18n-Vorlage, der fachliche Wortlaut in das jeweilige Plugin-Bundle. Der Empfänger bestimmt Sprache und bestätigte Grafikfähigkeit bei jeder Zustellung. Ein Systemkontext allein darf kein Logo ohne geladenes Pack freischalten. `render` für Menüs, Titel und andere Oberflächen bleibt unpräfigiert. diff --git a/superpowers/plans/2026-10-14-java-chat-design.md b/superpowers/plans/2026-10-14-java-chat-design.md index 754f096..8e3957e 100644 --- a/superpowers/plans/2026-10-14-java-chat-design.md +++ b/superpowers/plans/2026-10-14-java-chat-design.md @@ -204,3 +204,14 @@ Die ersten Tests verwendeten lokale Composite-Builds für die geänderte i18n-Bi ## Freigegebene Präzisierung: Kontext und Level Der Benutzer hat die Trennung ausdrücklich zur Umsetzung freigegeben. `SystemCategory` enthält nur fachliche Kontexte; `SystemLevel` enthält die Statuswerte. Gemeinsame Renderer reichen beide Felder unabhängig weiter, Plugin-Keys behalten ihren fachlichen Kontext auch bei Fehlern. Standards sind `GENERAL` und `INFO`; Labels und optionale Platzierung beider Felder bleiben in i18n. Die Änderungen gehen in die bestehenden Entwurfs-PRs. Neue Tests prüfen alle Kontext-/Level-Kombinationen, Default-Keys, Lokalisierung, Richtext-Verträge sowie fachliche Consumer-Zuordnungen. + + +## Fortsetzung und Repository-Abgleich am 17. Oktober 2026 + +Verbindliches Systemlayout: `[Logo] · Kategorie | Nachricht`, ohne bestätigtes Chatpack `[Grounds] Kategorie | Nachricht`. Benannte Spiel- und Plugin-Kontexte verwenden dieselbe zentrale Vorlage; Kategorie und Status bleiben getrennt. + +Die aktualisierte Organisation umfasst 107 Repositories; 44 relevante Hauptstände wurden geprüft, einschließlich fünf Spielmodi und zusätzlicher Bibliotheken/Beispiele. Die zentrale Korrektur ist als i18n 0.4.3 veröffentlicht. Die Bibliothek und 15 Verbraucher bestehen zusammen 1483 Tests; sechs bestehende Scene-Editor-Tests bleiben übersprungen. Die [Integrationsseite](/design/minecraft-chat-integration) enthält die einzelnen PRs und Testzahlen. + +Der Chat-Permissions-PR ist mit den neueren Änderungen an Palette und instanzbezogener Zustellung abgeglichen; 389 Tests und die erneute unabhängige Sicherheitsprüfung sind erfolgreich. Social behält semantischen Transport, Empfängersprache und verifizierte Grafikbereitschaft; die Party-Leader-Markierung ist in vier Sprachen abgesichert. + +GitHub-Pflichtreviews, das bestehende Notifications-Paketzugriffsgate sowie Verbraucher-Veröffentlichungen und die Live-/Bedrock-Abnahme bleiben getrennte Schritte. Die Produktionspack-Allowlist wird durch diesen Audit nicht verändert. From b9503ed2c7e25cf744253153259c670aa031faae Mon Sep 17 00:00:00 2001 From: Lukas Jost Date: Sat, 17 Oct 2026 13:20:10 +0200 Subject: [PATCH 15/16] docs(chat): record all 18 verified consumers and complete repository scope --- design/minecraft-chat-integration.md | 11 +++++++---- superpowers/plans/2026-10-14-java-chat-design.md | 2 +- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/design/minecraft-chat-integration.md b/design/minecraft-chat-integration.md index e5b8093..88a2582 100644 --- a/design/minecraft-chat-integration.md +++ b/design/minecraft-chat-integration.md @@ -19,9 +19,9 @@ Alle Plugin-Keys und direkte `SystemMessages.format`-Aufrufe werden mit diesen z ## Repository-Abgleich -GitHub-Abgleich vom 17. Oktober 2026: 107 sichtbare Repositories. Die Hauptstände von 44 für Minecraft-Ausgaben relevanten Repositories wurden frisch geladen und geprüft, einschließlich neuer Spielmodi, Bibliotheken und Beispiele. Die dafür fehlenden Checkouts sind jetzt lokal vorhanden. Bestehende Änderungen in den Hauptcheckouts bleiben erhalten; Anpassungen erfolgen in isolierten Worktrees auf den geprüften aktuellen Commits. +GitHub-Abgleich vom 17. Oktober 2026: 107 sichtbare Repositories. Die Hauptstände von 47 für Minecraft-Ausgaben relevanten Repositories wurden frisch geladen und geprüft, einschließlich neuer Spielmodi, Bibliotheken und Beispiele. Die dafür fehlenden Checkouts sind jetzt lokal vorhanden. Bestehende Änderungen in den Hauptcheckouts bleiben erhalten; Anpassungen erfolgen in isolierten Worktrees auf den geprüften aktuellen Commits. -Zusätzlich umfasst der Audit GetDown, Keystone, BedWars, SurvivalGames und Duel sowie die Minigame-API, Recorder, Anti-Cheat und Demo-Repositories. Die beiden leeren Abstandzeilen von SurvivalGames sind bewusst keine Systemmeldungen. +Zusätzlich umfasst der Audit GetDown, Keystone, BedWars, SurvivalGames und Duel sowie die Minigame-API, Recorder, Anti-Cheat und Demo-Repositories. Die beiden leeren Abstandzeilen von SurvivalGames sind bewusst keine Systemmeldungen. Ergänzend wurden der Fabric-Client Grounds Connect sowie `library-resource-pack` und `library-jvm-modules` geprüft; dort gibt es keine eigene Chat-Sendeausgabe. ## Gemeinsame Kategorie-Darstellung @@ -236,7 +236,10 @@ Die folgenden Änderungen verwenden das tatsächlich veröffentlichte `library-i | duel | [PR 38](https://github.com/groundsgg/duel/pull/38) | 34 | 0 | 0 | | plugin-social | [PR 23](https://github.com/groundsgg/plugin-social/pull/23) | 29 | 0 | 0 | | plugin-chat | [PR 55](https://github.com/groundsgg/plugin-chat/pull/55) | 389 | 0 | 0 | +| plugin-agones | [PR 87](https://github.com/groundsgg/plugin-agones/pull/87) | 105 | 0 | 0 | +| plugin-player | [PR 49](https://github.com/groundsgg/plugin-player/pull/49) | 60 | 0 | 0 | +| plugin-notifications | [PR 18](https://github.com/groundsgg/plugin-notifications/pull/18) | 46 | 0 | 0 | -Die Bibliothek und diese 15 Verbraucher erfassen zusammen 1489 Testfälle: 1483 erfolgreich, sechs bestehende Scene-Editor-Skips und keine Fehler. Die unabhängige Prüfung der Bibliothek und Adapter meldet nach Korrektur der Party-Leader-Markierung keine wesentlichen offenen Befunde. Diese Markierung ist zusätzlich in allen vier Social-Sprachen für Leader und normale Mitglieder geprüft. Die sechs bestehenden Scene-Editor-Skips wurden nicht als erfolgreiche Tests gezählt. +Die Bibliothek und diese 18 Verbraucher erfassen zusammen 1700 Testfälle: 1694 erfolgreich, sechs bestehende Scene-Editor-Skips und keine Fehler. Die unabhängige Prüfung der Bibliothek und Adapter meldet nach Korrektur der Party-Leader-Markierung keine wesentlichen offenen Befunde. Diese Markierung ist zusätzlich in allen vier Social-Sprachen für Leader und normale Mitglieder geprüft. Die sechs bestehenden Scene-Editor-Skips wurden nicht als erfolgreiche Tests gezählt. -Bereits zuvor offene Migrationen für Agones, Player und Notifications bleiben gesondert nachzuverfolgen. Pflichtreviews in GitHub werden nicht umgangen; ebenso bleiben das private Paket-Zugriffsgate von Notifications und die getrennte Pack-/Bedrock-Freigabe bestehen. +Die bereits offenen Migrationen für Agones, Player und Notifications verwenden ebenfalls i18n 0.4.3. Player erhält dabei die neueren Jackson-/Bootstrap-Änderungen und die vom Capability-Renderer benötigte Proxy-API 2.6.0. Pflichtreviews werden nicht umgangen; der frühere private Paket-Zugriffsfehler von Notifications ist nach der Aktualisierung in CI erneut zu prüfen. Verbraucher-Releases, ausführbare Host-/Spiel-Images sowie Pack-/Bedrock-Freigabe bleiben getrennte Schritte. diff --git a/superpowers/plans/2026-10-14-java-chat-design.md b/superpowers/plans/2026-10-14-java-chat-design.md index 8e3957e..dea0d9b 100644 --- a/superpowers/plans/2026-10-14-java-chat-design.md +++ b/superpowers/plans/2026-10-14-java-chat-design.md @@ -210,7 +210,7 @@ Der Benutzer hat die Trennung ausdrücklich zur Umsetzung freigegeben. `SystemCa Verbindliches Systemlayout: `[Logo] · Kategorie | Nachricht`, ohne bestätigtes Chatpack `[Grounds] Kategorie | Nachricht`. Benannte Spiel- und Plugin-Kontexte verwenden dieselbe zentrale Vorlage; Kategorie und Status bleiben getrennt. -Die aktualisierte Organisation umfasst 107 Repositories; 44 relevante Hauptstände wurden geprüft, einschließlich fünf Spielmodi und zusätzlicher Bibliotheken/Beispiele. Die zentrale Korrektur ist als i18n 0.4.3 veröffentlicht. Die Bibliothek und 15 Verbraucher bestehen zusammen 1483 Tests; sechs bestehende Scene-Editor-Tests bleiben übersprungen. Die [Integrationsseite](/design/minecraft-chat-integration) enthält die einzelnen PRs und Testzahlen. +Die aktualisierte Organisation umfasst 107 Repositories; 47 relevante Hauptstände wurden geprüft, einschließlich fünf Spielmodi und zusätzlicher Bibliotheken/Beispiele. Die zentrale Korrektur ist als i18n 0.4.3 veröffentlicht. Die Bibliothek und 18 Verbraucher bestehen zusammen 1694 Tests; sechs bestehende Scene-Editor-Tests bleiben übersprungen. Die [Integrationsseite](/design/minecraft-chat-integration) enthält die einzelnen PRs und Testzahlen. Der Chat-Permissions-PR ist mit den neueren Änderungen an Palette und instanzbezogener Zustellung abgeglichen; 389 Tests und die erneute unabhängige Sicherheitsprüfung sind erfolgreich. Social behält semantischen Transport, Empfängersprache und verifizierte Grafikbereitschaft; die Party-Leader-Markierung ist in vier Sprachen abgesichert. From 40c8e0f6a1205f52b23d3e3b74d5ab81ee355b65 Mon Sep 17 00:00:00 2001 From: Lukas Jost Date: Sat, 17 Oct 2026 13:22:43 +0200 Subject: [PATCH 16/16] docs(chat): distinguish executed tests from optional live tests --- design/minecraft-chat-integration.md | 6 +++--- superpowers/plans/2026-10-14-java-chat-design.md | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/design/minecraft-chat-integration.md b/design/minecraft-chat-integration.md index 88a2582..f8cec5f 100644 --- a/design/minecraft-chat-integration.md +++ b/design/minecraft-chat-integration.md @@ -230,8 +230,8 @@ Die folgenden Änderungen verwenden das tatsächlich veröffentlichte `library-i | plugin-grounds-runtime | [PR 8](https://github.com/groundsgg/plugin-grounds-runtime/pull/8) | 6 | 0 | 0 | | plugin-resourcepacks | [PR 33](https://github.com/groundsgg/plugin-resourcepacks/pull/33) | 114 | 0 | 0 | | game-getdown | [PR 9](https://github.com/groundsgg/game-getdown/pull/9) | 38 | 0 | 0 | -| game-keystone | [PR 9](https://github.com/groundsgg/game-keystone/pull/9) | 59 | 0 | 0 | -| game-bedwars | [PR 52](https://github.com/groundsgg/game-bedwars/pull/52) | 61 | 0 | 0 | +| game-keystone | [PR 9](https://github.com/groundsgg/game-keystone/pull/9) | 59 | 0 | 5 | +| game-bedwars | [PR 52](https://github.com/groundsgg/game-bedwars/pull/52) | 61 | 0 | 1 | | game-survivalgames | [PR 13](https://github.com/groundsgg/game-survivalgames/pull/13) | 35 | 0 | 0 | | duel | [PR 38](https://github.com/groundsgg/duel/pull/38) | 34 | 0 | 0 | | plugin-social | [PR 23](https://github.com/groundsgg/plugin-social/pull/23) | 29 | 0 | 0 | @@ -240,6 +240,6 @@ Die folgenden Änderungen verwenden das tatsächlich veröffentlichte `library-i | plugin-player | [PR 49](https://github.com/groundsgg/plugin-player/pull/49) | 60 | 0 | 0 | | plugin-notifications | [PR 18](https://github.com/groundsgg/plugin-notifications/pull/18) | 46 | 0 | 0 | -Die Bibliothek und diese 18 Verbraucher erfassen zusammen 1700 Testfälle: 1694 erfolgreich, sechs bestehende Scene-Editor-Skips und keine Fehler. Die unabhängige Prüfung der Bibliothek und Adapter meldet nach Korrektur der Party-Leader-Markierung keine wesentlichen offenen Befunde. Diese Markierung ist zusätzlich in allen vier Social-Sprachen für Leader und normale Mitglieder geprüft. Die sechs bestehenden Scene-Editor-Skips wurden nicht als erfolgreiche Tests gezählt. +Die Bibliothek und diese 18 Verbraucher erfassen zusammen 1700 Testfälle: 1688 erfolgreich, zwölf Skips und keine Fehler. Die unabhängige Prüfung der Bibliothek und Adapter meldet nach Korrektur der Party-Leader-Markierung keine wesentlichen offenen Befunde. Diese Markierung ist zusätzlich in allen vier Social-Sprachen für Leader und normale Mitglieder geprüft. Die zwölf Skips bestehen aus sechs bestehenden Scene-Editor-Skips, fünf Keystone-Livetests ohne lokale Maps und einem nicht aktivierten BedWars-CDN-Livetest (`MAPS_LIVE_TEST`). Sie werden nicht als erfolgreiche Tests gezählt. Alle neu hinzugefügten Chat-Tests wurden ausgeführt. Die bereits offenen Migrationen für Agones, Player und Notifications verwenden ebenfalls i18n 0.4.3. Player erhält dabei die neueren Jackson-/Bootstrap-Änderungen und die vom Capability-Renderer benötigte Proxy-API 2.6.0. Pflichtreviews werden nicht umgangen; der frühere private Paket-Zugriffsfehler von Notifications ist nach der Aktualisierung in CI erneut zu prüfen. Verbraucher-Releases, ausführbare Host-/Spiel-Images sowie Pack-/Bedrock-Freigabe bleiben getrennte Schritte. diff --git a/superpowers/plans/2026-10-14-java-chat-design.md b/superpowers/plans/2026-10-14-java-chat-design.md index dea0d9b..44c38da 100644 --- a/superpowers/plans/2026-10-14-java-chat-design.md +++ b/superpowers/plans/2026-10-14-java-chat-design.md @@ -210,7 +210,7 @@ Der Benutzer hat die Trennung ausdrücklich zur Umsetzung freigegeben. `SystemCa Verbindliches Systemlayout: `[Logo] · Kategorie | Nachricht`, ohne bestätigtes Chatpack `[Grounds] Kategorie | Nachricht`. Benannte Spiel- und Plugin-Kontexte verwenden dieselbe zentrale Vorlage; Kategorie und Status bleiben getrennt. -Die aktualisierte Organisation umfasst 107 Repositories; 47 relevante Hauptstände wurden geprüft, einschließlich fünf Spielmodi und zusätzlicher Bibliotheken/Beispiele. Die zentrale Korrektur ist als i18n 0.4.3 veröffentlicht. Die Bibliothek und 18 Verbraucher bestehen zusammen 1694 Tests; sechs bestehende Scene-Editor-Tests bleiben übersprungen. Die [Integrationsseite](/design/minecraft-chat-integration) enthält die einzelnen PRs und Testzahlen. +Die aktualisierte Organisation umfasst 107 Repositories; 47 relevante Hauptstände wurden geprüft, einschließlich fünf Spielmodi und zusätzlicher Bibliotheken/Beispiele. Die zentrale Korrektur ist als i18n 0.4.3 veröffentlicht. Die Bibliothek und 18 Verbraucher bestehen zusammen 1688 Tests; zwölf bestehende Tests bleiben wegen fehlender Live-Voraussetzungen oder bestehender Scene-Editor-Skips übersprungen. Die [Integrationsseite](/design/minecraft-chat-integration) enthält die einzelnen PRs und Testzahlen. Der Chat-Permissions-PR ist mit den neueren Änderungen an Palette und instanzbezogener Zustellung abgeglichen; 389 Tests und die erneute unabhängige Sicherheitsprüfung sind erfolgreich. Social behält semantischen Transport, Empfängersprache und verifizierte Grafikbereitschaft; die Party-Leader-Markierung ist in vier Sprachen abgesichert.