# Fenster- und Shell-Merkmale 1.2.0

Optionaler Zusatz zum Schema `ci-xp-window-attributes/v1`. Version 1.2.0 unterscheidet drei Begriffe: maximale Kontorolle (keine Farbquelle), verifizierte Desktop-Sitzungsrolle und verifizierte Rolle der jeweiligen App-Verbindung. Der Veröffentlichungsnachweis steht im Releaseprotokoll; diese Spezifikation verändert keine Berechtigung.

## Unabhängige Merkmale

`data-xp-session-role` bleibt unverändert die aktuelle Desktoprolle an Desktop, Taskleiste, Fenster und Task-Schaltfläche. `data-xp-app-type` bleibt registrierte Typinformation für Sortierung, Filter und kompatible Skins. Neu: `data-xp-app-role` am einzelnen Fenster und seiner Task-Schaltfläche, Klassen `xp-window-app-role-<role>` und `xp-task-app-role-<role>`. `data-xp-app-role-source` nennt `desktop`, `public` oder `wp-grant`; `data-xp-app-role-state` ist `confirmed` oder `unknown`.

Ein Customer-Desktop darf deshalb ein rot gerahmtes Fenster mit bestätigter App-Adminrolle sowie ein blau gerahmtes Fenster mit App-Entwicklerrolle enthalten. Weder der Browser noch CSS erhöht oder begrenzt diese Rollen. App-Typ und Desktoprolle überschreiben die App-Rolle nicht.

## Vertrauensquelle und Instanzbindung

Native Host-Komponenten verwenden die tatsächlich für sie geltende Desktop-Sitzung. Öffentliche Informationsfenster verwenden ausdrücklich Gast. Persönliche MCP-Verbindungen übernehmen nur die Rolle ihres existierenden, gültigen, ressourcengebundenen WP-Lab-OAuth-Grants. Der private Broker prüft dieses bestehende Grant über die vorhandene WordPress-Token-/Account-/Resource-Prüfung; Token bleiben ausschließlich serverseitig. Der Authentifizierungsweg und die erteilten Rechte bleiben unverändert.

Der Host erhält über seinen instanz- und kontextgebundenen Verbindungsaufruf das optionale Objekt `app_session` mit Schema `ci-xp-app-session/v1`, `connection`, `state`, bei bestätigter Rolle zusätzlich `role`, `source` und optional `expires_at`. `role` ohne dieses Objekt ist ausdrücklich kein Nachweis einer App-Rolle. App-Iframes können durch freie Nachrichten, HTML, Titel oder URL-Parameter keine Rolle melden. Der Callback gilt nur für seine konkrete Fenster-Mountgeneration; parallele Fenster dürfen unterschiedliche Rollen behalten.

Andere OAuth-Aussteller, eigenständig angemeldete externe Browser-Apps und nicht verifizierbare Rollen bleiben in dieser Implementierung `unknown`. Das ist weder Gast noch die Desktoprolle. Eine spätere autorisierte Providerintegration kann das Merkmal additiv liefern; keine Rollenschätzung oder Standard-Adminfarbe.

## Lebenszyklus

Verbindungs-/Anmeldewechsel neutralisiert die bisherige App-Rolle vor Beginn. Bestätigte aktuelle Antworten ersetzen sie. Abgelaufene oder widerrufene Grants, fehlgeschlagene Prüfungen, Logout, Ownerwechsel und Teardown entfernen die alte Rolle. Die vorhandene Verbindungsprüfung wird wiederverwendet; Rolle spätestens nach 30 Sekunden ohne erneute Bestätigung neutral, gegebenenfalls früher bei Tokenablauf. Ein einzelner lokaler Ablaufwächter pro Desktop erzeugt keine zusätzlichen Netzwerkanfragen. Alte Antworten oder Rückrufe abgebauter Fenster dürfen keine Adminfarbe wiederherstellen.

## Darstellung ausschließlich im Skin

Nur `fenster xp_` wertet die neue App-Rolle für Fensterrahmen, Titelleisten, Trennlinien und die entsprechende Task-Farbkante aus. Palette: Admin rot, Gast gelb, Entwickler blau, Customer grün. Unbekannt grau. Startbutton, Startmenü und Taskleiste verwenden dagegen die Desktoprolle; das Menü nutzt eine hellere Tönung derselben Farbe für seine Inhaltsbereiche.

`win2.1_`, alte Skins und ihre Typregeln bleiben unverändert. Der Contract selbst enthält keine automatische Farb- oder Badge-Vorgabe. Fehlende optionale Felder bleiben kompatibel; sichere unbekannte Rollentokens sind additive Metadaten, ohne passende CSS-Regeln neutral. Die ursprünglichen Versionen 1.0 und 1.1 bleiben unverändert veröffentlicht.

## Grenzen und Prüfung

Browser-Komponententests mit synthetischen Rollen sind getrennt von echten Anmeldungen zu berichten. Die Implementierung erzeugt keine neuen Accounts oder Tokens und verändert keine Berechtigungsverwaltung. Externe Approllen ohne bestätigte Provideranbindung sind bewusst nicht farbig. Der vorhandene persönliche Verbindungsstore kann Verbindungen zwischen Fenstern teilen; diese Darstellungserweiterung führt keine neue unabhängige OAuth-Verbindungsverwaltung ein.
