---
{
  "wiki": {
    "schema": "wiki-page/v1",
    "title": "XP-Content: aktueller Vertrag",
    "summary": "Stabiler Einstieg, Buildmanifest, gemeinsame Komponenten und gebündelte Assets.",
    "document_type": "reference",
    "status": "active",
    "navigation": {
      "placement": "unlisted"
    },
    "tags": [
      "xp",
      "contract",
      "css"
    ],
    "audience": [
      "developer",
      "admin",
      "codex"
    ],
    "owner": "infrastructure",
    "reviewed_at": "2026-10-05",
    "related": []
  }
}
---

# XP-Content: aktueller Vertrag

Verbindlicher Einstieg für Apps und Entwickler: https://mcp-lab.christian-igel.tech/xp-contract/
Neue Builds lesen manifest.json hier und beziehen xp-content.css und xp-content-menu.js anhand der veröffentlichten Hashes. Versionen müssen nicht im App-Code oder sichtbaren Hinweis festgeschrieben werden. Das Release hält die tatsächlich gebündelten Bytes, Version und SHA-256 intern fest. Offline-Builds verwenden ausdrücklich ihren geprüften Lockbestand; historische Versionen sind nur eine begründete Ausnahme.
MCP bündelt beide Dateien im HTML; kein Laufzeit-Hotlink und keine neue Sandbox-Netzfreigabe. HostContext/Metadaten sind das getrennte Präsentationsprotokoll 1.1.0; bestehendes 1.0.0 bleibt kompatibel. Ein CSS-Update erteilt keine Rechte.
Root .xp-content[data-xp-content-version="1"], Darstellung data-xp-presentation="xp|neutral", Theme data-xp-theme="light|dark". Klassen erzeugen keine Fachfunktionen.
Explorer: xp-menu-item, xp-menu-select, xp-menu-only, data-xp-menu="file|view|projects". Seltene Aktionen und Projektauswahl ins Menü; Speichern und häufige Aktionen zusätzlich im Inhalt. Ausblenden erst nach bestätigter Registrierung.
Klassenreferenzen: https://mcp-lab.christian-igel.tech/documentation/contracts/xp-content/v1.1/ (Sidebar, Navigation, Toolbar, Menüs), /v1.4/ (Darstellungsprofile) und /v1.5/ (Desktop-Steuerelemente). Diese historischen Referenzen bleiben erreichbar; Apps verwenden den stabilen Einstieg.
Prüfen: XP/neutral, light/dark, Tastatur/ARIA, 320/390/1280 CSS-Pixel, 200% Zoom, Kontrast und Fensterlebenszyklus. Keine Parent-DOM-Injektion, keine Auth-/CSP-Lockerung, Dokument-CSS isoliert erhalten.


## Sonnengelb für Gast

XP-Content 1.5.1 ergänzt gemeinsame Gast-Farbtokens. Die dominante Farbe ist
ein sattes Sonnengelb; dunkle Schrift und Fokuslinien erhalten den Kontrast.

| Token | Wert | Verwendung |
| --- | --- | --- |
| `--xp-role-guest-color` | `#ffd21f` | kräftiges Sonnengelb, Auswahl |
| `--xp-role-guest-light` | `#fff28a` | helle Gastflächen |
| `--xp-role-guest-deep` | `#f5b800` | satter gelber Verlauf |
| `--xp-role-guest-ink` | `#302400` | lesbare Schrift auf Gelb |
| `--xp-role-guest-focus` | `#634900` | kontrastreiche Fokuslinie auf hellen Flächen |

Ein teilnehmender Adapter kann am eigenen Vertragsroot
`data-xp-app-role="guest"` setzen, nachdem er die bestätigte Ansichtsrolle aus
dem HostContext gelesen hat. In XP-Darstellung nutzen Sidebar, Toolbar und
Auswahl dann die Gastpalette; im dunklen Theme bleiben Flächen dunkel und
gelbe Akzente lesbar. Ohne Attribut bleiben bisherige Farben erhalten.
Neutraldarstellung bleibt unverändert. Systemfarben überschreiben die Palette
im Modus mit erzwungenen Farben.

Das Attribut und die Tokens beschreiben ausschließlich die Darstellung. Sie
ändern weder Sitzung noch Rollenrechte; der Server entscheidet weiterhin über
den Zugriff. Es wird keine neue SDK-Benachrichtigung eingeführt und kein
Parent-DOM gelesen. Fensterrahmen und XP-Modern-/XP-Aero-Material gehören zum
Host. Die vier Inhaltsansichten MCP/HTML mit oder ohne XP-Vertrag bleiben davon
unabhängig. Historische Releases einschließlich 1.5.0 bleiben unverändert.

## Responsive Defaults ab 1.6

`xp-content-responsive.js` wird gemeinsam mit CSS und Menümodul anhand des
Manifests geprüft und lokal gebündelt. Die sonnengelbe Gastpalette aus 1.5.1
bleibt erhalten. Historische Veröffentlichungen werden nicht verändert.

`installResponsiveContent(root)` initialisiert genau eine Inhaltsinstanz und
gibt `setContext({preferSingle}), refresh(), dispose()` zurück. Für statische
Seiten genügt `data-xp-responsive="auto"` am Vertragsroot und die Einbindung als
lokales ES-Modul. Der Controller ist zusätzlich als `root.xpResponsive` erreichbar.

Die tatsächlich verfügbare Rootbreite entscheidet: bis einschließlich 700
CSS-Pixel `data-xp-layout="single"`, darüber `wide`. ResizeObserver unterstützt
auch den Root selbst als `.xp-layout`; zwei Fenster bleiben unabhängig.
Ein bestätigter eigener Hostadapter darf `preferSingle:true` setzen: Phone und
Tablet-Hochformat verwenden denselben Default. Tablet-Querformat und Desktop
setzen false; schmale Teilfenster bleiben automatisch einspaltig. Ohne Host
entscheidet ausschließlich die Breite. Dies ist noch kein neues MCP-Protokoll:
CSS-Version und `_meta.version="1.1.0"` bleiben getrennt; HostContext-Anbindung
wird separat ausgehandelt. Orientierung wird nicht aus der Form eines Appfensters
oder der durch die Bildschirmtastatur verkleinerten Fläche geraten.

Einspaltig: 16px Grundschrift und Eingaben, mindestens 44px Bedienziele,
einspaltige Karten/Formbereiche und umbrechende Werkzeugleisten. Die vorhandene
Sidebar bekommt einen beschrifteten Navigation-Button, aria-expanded und
aria-controls. Öffnen fokussiert das erste Bedienelement; Escape schließt und
führt den Fokus zurück. Beim Wechsel zur breiten Ansicht erscheint die Sidebar.
Ohne JavaScript bleibt sie sichtbar. Eingaben und DOM werden beim Resize nicht
neu aufgebaut. `data-xp-density="compact"` bezeichnet weiterhin die vorhandene
dichte Desktopbedienung; einspaltige Inhalte überschreiben kleine Ziele.

Fensterrahmen, Launcher, Appwechsel und die optionale Zweiteilung im
Tablet-Querformat bleiben Aufgaben der WP-Lab-Shell. Der Inhalt liest kein
Parent-DOM und verändert keine Rolle, Verbindung, Sandbox oder Berechtigung.
Tabellen behalten ihre Semantik und ihren eigenen horizontalen Scrollbereich.

Prüfbeispiel: [Zwei unabhängige Inhalte](responsive-example.html) mit Phone-,
Tablet-Hochformat-, Querformat- und Zwei-App-Vorgaben. Prüfen: Breiten 320,390,
700,701,900; breites Tablet mit preferSingle; Eingabeerhalt; Navigation per
Tastatur/Escape; Fokus beim Resize; unabhängige Instanzen; dispose; 200% Zoom.

1.6.1: Vorschau-CSS und -Module sind lokal externe Dateien. Die Beispiele
benötigen keine Inline-Styles, Inline-Skripte oder Lockerung der CSP.

1.6.2: Größenbeobachtung bündelt Layoutänderungen im nächsten Animationsframe.
Dispose bricht einen noch ausstehenden Frame ab. DOM-Attribute werden nur bei
Änderungen geschrieben; ResizeObserver führt keine synchronen Layoutschreibzugriffe
aus. CSS und Präsentationsprotokoll bleiben unverändert.

## 1.7.0: gemeinsame Rollenpalette

Gast: Gelb #ffd21f; Kunde: Grün #277c30; Entwickler: Blau #0757d3; Admin: Rot #b32d2b. `xp-role-palette.css` ist das gemeinsame, lokal zu bündelnde Palette-Asset für Hosts und Skins; `xp-content.css` enthält es bereits für Apps. Der Host setzt `data-xp-app-role` je Fenster und Task ausschließlich aus bestätigter View-Rolle. Die Shell verwendet separat `data-xp-session-role`. Unbekannte Fensterrollen bleiben grau; kein Rückschluss auf die Desktop-Rolle. Skins konsumieren `--xp-type-main/light/dark/ink/wash` und behalten ihre Formen und Effekte. Auch inaktive Fenster behalten ihren Rollenfarbton; ab 1.8 wird dieser heller dargestellt. Farben und Attribute vergeben niemals Berechtigungen.

## 1.8.0: Vordergrund und Hintergrund

`data-xp-window-focus="foreground|background"` ist unabhängig von `data-xp-window-state="normal|minimized|maximized"`. Die Inhaltsselektoren `xp-window-content-foreground` und `xp-window-content-background` bieten Standard-Abblassung und überschreibbare Skin-Tokens. XP Aero nutzt weiches Milchglas. [Vollständiger Fensterfokusvertrag](window-focus.md).

Taskliste: `.xp-task-list[data-xp-taskbar-position="top|bottom|left|right"]`. Oben/unten: eine horizontale Zeile; links/rechts: eine vertikale Spalte. Minimieren verändert die stabile Öffnungsreihenfolge nicht. Eigene Selektoren für jede Position; Details und Grenzen im [Fenstervertrag](window-focus.md).

## App-Zugriff

[ci-app-access-policy/v1](access/) definiert Ansichtsrollen, Nutzerfreigaben, Export und ausdrückliche Wiederfreigabe. Der Inhaltsvertrag erteilt selbst keine Rechte. Referenz 1.0.0 und Skill sind veröffentlicht; Verbraucher-Durchsetzung benötigt ihre eigene Abnahme.


## Systembereich: Defaults ab 1.8.2

Die `.xp-taskbar-system` fasst rechte Systembuttons, Vollbild und Uhr in einer
horizontalen Zeile zusammen. Einzeilige Taskleisten dürfen ihre Kindbuttons
nicht als vertikale Blockliste anzeigen. Ein explizites mehrzeiliges Host-Grid
hat weiterhin Vorrang; seitliche Leisten dürfen im Systembereich umbrechen.
Das identische xp-task-list.css gilt für das öffentliche iframe und WP-Lab.


## Optionaler Aktionslebenszyklus

[ci-action-lifecycle/v1](actions/v1/contract.md) ergänzt passende MCP-Aktionen mit
sofortigem lokalem Warten, echten accepted/alive/progress-Ereignissen und
maßgeblicher fachlicher Endantwort. [Gemeinsames UI-Modul 1.0.0](actions/v1/README.md)
und [interaktives Beispiel](actions/v1/example.html) stehen bereit. Capability
ausdrücklich aushandeln; ohne Unterstützung Legacy-JSON, kein Status-Polling und
kein Wiederholen bereits begonnener Aufrufe. Transportabbruch bestätigt keinen
Serverabbruch. XP-Presentation bleibt 1.1.0; keine automatische Bestandsmigration.
