# Fenster- und Shell-Merkmale 1.1.0

**Stabile Referenzversion 1.1.0. Der tatsächliche Auslieferungs- und Prüfstand wird im jeweiligen Releaseprotokoll dokumentiert.**

Erweiterung `ci-xp-window-attributes/v1`, Implementierung **1.1.0**. Ergänzt den äußeren Fenster-/Skin-Vertrag, nicht den Inhalt fremder App-Iframes. Alle Merkmale bleiben optional und reine Darstellungsinformationen. Dieser Vertrag vergibt keine Berechtigungen, bestimmt keine Farben und verändert weder Audio noch Navigation.

## Rollen und App-Typen bleiben getrennt

| Host-Element | Merkmal | Attribut | Klassenpräfix |
| --- | --- | --- | --- |
| `.xp-window` | wirksame Sitzungsrolle | `data-xp-session-role` | `xp-window-session-role-` |
| `.xp-window` | registrierter App-Typ | `data-xp-app-type` | `xp-window-app-type-` |
| `.xp-desktop` | wirksame Sitzungsrolle | `data-xp-session-role` | `xp-desktop-session-role-` |
| `.xp-taskbar` | wirksame Sitzungsrolle | `data-xp-session-role` | `xp-taskbar-session-role-` |
| `.xp-task` | wirksame Sitzungsrolle | `data-xp-session-role` | `xp-task-session-role-` |
| `.xp-task` | Typ ihres registrierten Programms | `data-xp-app-type` | `xp-task-app-type-` |

Die Shell-Oberflächen sind die additive Erweiterung gegenüber 1.0.0. Desktop und Taskleiste haben **keinen** erfundenen App-Typ. Die Rolle stammt aus der aktuellen, serverseitig verifizierten Sitzung, nicht aus der maximalen Kontorolle. Der explizite öffentliche Portalrenderer liefert nur den Gastkontext und seinen öffentlichen Programmkatalog, auch wenn im Browser zusätzlich eine Anmeldung besteht.

Bekannte Rollen: `guest`, `customer`, `developer`, `admin`. Bekannte Typen: `url-app`, `mcp-app`, `weblink`, `html-document`, `wiki-page`, `settings`. Typen stammen aus freigegebenen registrierten Programmen und einer widerspruchsfreien serverseitigen Klassifikation. Fenstertitel, URL-Parameter, Storage, freie App-Nachrichten und DOM-Änderungen sind keine Autorität.

## Version und Kompatibilität

`contract.json` beschreibt Attribute und Klassen; `snapshot.schema.json` beschreibt den optionalen `window_attributes`-Snapshot. Das Major-Schema bleibt `ci-xp-window-attributes/v1`; die Minorversion 1.1.0 ergänzt Shell-Oberflächen. Alte Hosts und Skins müssen unbekannte Felder ignorieren. Der vorhandene Inhaltsvertrag wird nicht umnummeriert oder überschrieben.

Fehlende Werte entfernen die jeweilige alte Kennzeichnung. Fehlend ist weder Gast noch Admin. Sichere unbekannte Tokens nach `^[a-z][a-z0-9-]{0,47}$` bleiben als zukünftige Darstellungswerte zulässig; ohne passende Skin-Regel bleibt die Basisdarstellung. Ungültige Werte werden unabhängig verworfen. Unbekannte zusätzliche Felder beeinträchtigen bekannte Felder nicht. Inkompatible Major-Snapshots entfernen nur Merkmale dieser Erweiterung.

## Host-Lebenszyklus

Ein Adapter pro Desktop. `attach(element, programId)` bindet Fenster; `attachSurface(element, 'desktop'|'taskbar'|'task', programId?)` bindet Shell-Elemente. `detach` und `detachSurface` entfernen ausschließlich die eigenen Merkmale. Fenster und zugehörige Task-Schaltflächen verwenden dieselbe registrierte Programm-ID.

Vor Logout oder Kontowechsel synchron `invalidate()` aufrufen; neue Antwortübernahmen während des Wechsels aussetzen. Nach einer frischen Sitzungsprüfung vollständigen Snapshot ersetzen. `beginUpdate`, `accept` und `reject` verbinden asynchrone Antworten mit einer Generation; alte Antworten dürfen keine Adminfarbe wiederherstellen. Schließen entfernt die Fenster-/Taskbindung, Desktopabbau ruft `dispose()` auf. `pagehide` entfernt die Merkmale; nach Rückkehr aus dem Seitencache wird die Sitzung erneut geprüft. Bestehende Authentifizierungsintervalle bleiben unverändert; keine neue Pollingschleife pro Fenster.

## Skin-Regeln

```css
/* Rollenfarbe der Shell, unabhängig von den Programmen. */
.xp-desktop[data-ci-os-skin="fenster-xp_"][data-xp-session-role="admin"] {
  --xp-role-main: #b32d2b;
}

/* Separater App-Typ: ein Admin-MCP-Fenster bleibt eine MCP-App. */
.xp-window[data-xp-app-type="mcp-app"] { /* Skin-Gestaltung */ }

/* Kombination: gezielte Betonung nur der Einstellungsansicht für Admins. */
.xp-window[data-xp-session-role="admin"][data-xp-app-type="settings"] > .xp-menubar {
  border-bottom: 3px double #9b252b;
}
```

Die Farbzuordnung ist **nur die Entscheidung der beiden neuen Skins**, keine automatische Contract-Vorgabe:

| Rolle | Taskleiste |
| --- | --- |
| Gast | Gelb |
| Admin | Rot |
| Entwickler | Blau |
| Customer | Grün |

| Typ | Fensterrahmen |
| --- | --- |
| MCP-App | Grün |
| Einstellungen | Rot |
| HTML-Dokument / Wiki-Seite | Gelb |
| URL-App | Blau |
| Weblink | Graublau |

Skin-Auswahl: `fenster xp_` (ID `fenster-xp_`) und `win2.1_` (ID `win21_`). Alte Skins und der Standard `windows-xp` bleiben erhalten. Neue Skins müssen ausdrücklich ausgewählt werden. Die neue CSS-Datei enthält nur Regeln für ihre beiden IDs. Die alten automatischen Farbkategorien bleiben deaktiviert.

Zusätzliche Selektoranwendungen: Typ-Farbkante an Task-Schaltflächen; zurückgenommene inaktive Titelleisten bei erhaltener Typ-Rahmenfarbe; doppelte Trennlinie für Admin + Einstellungen; gestrichelte Trennlinie für Gast + Einstellungen; ruhige Papierfarbe der Dokumentadresse; sichtbarer Tastaturfokus. Keine Schaltfläche wird aufgrund von CSS gesperrt oder freigeschaltet, kein Gastfenster wird dadurch automatisch schreibgeschützt. Texte und vorhandene Symbole bleiben erhalten; Farben sind nicht die einzige Information.

## Prüfgrenzen

Modul-/Fixturetests sind von echten Browseranmeldungen und Live-Prüfungen zu trennen. Den jeweiligen Veröffentlichungs- und Abnahmestand nennt das Releaseprotokoll. Same-owner-Dateimodi schützen vor versehentlichem Schreiben, sind keine harte Unveränderlichkeit gegenüber dem Unix-Eigentümer.
