
## Explorer-Menü (1.1.0)

Eigene Apps deklarieren Buttons mit `xp-menu-item` und Selects mit `xp-menu-select`.
`data-xp-menu="file|view|projects"` bestimmt Datei, Ansicht oder Projekte;
`data-xp-menu-label` überschreibt optional die Beschriftung. `xp-menu-only` am
Element oder dessen Label blendet es erst nach bestätigter Hostübernahme aus.
Häufige Aktionen wie Speichern, Vorschauwechsel und Aktualisieren bleiben als
Schnellzugriff im Inhalt. Seltene Aktionen wie Neues Projekt, Projektwechsel
und Entwurf verwerfen gehören ins Menü. Formulare bleiben im Inhalt; das Menü
öffnet sie. Vorschau-Dokumente erhalten diese Klassen niemals automatisch.

`xp-content-menu-1.1.0.js` wird lokal gebündelt. `installExplorerMenu(app,root)`
vor `app.connect()` aufrufen; `context(hostContext)` nach Verbindung und bei
Änderungen, `dispose()` bei Abbau. Host optiert mit `menuProtocol:1` im
XP-Content-HostContext und `chrome:"host"` ein. Ohne Opt-in bleibt alles sichtbar.
Diese eigene Erweiterung ist kein standardisiertes MCP-Apps-Menüprotokoll.

Request `tech.christian-igel/xp-content/menu`: `{revision,items}`; maximal 60
Einträge, pro Select maximal 20. Eintrag: `{id,menu,label,disabled,checked}`.
IDs sind opak (`m0` usw.), Label maximal 100 Zeichen ohne Steuerzeichen.
Antwort `{accepted:revision}` bestätigt Platzierung. Der Host aktiviert über
`tech.christian-igel/xp-content/menu-activate` mit `{revision,id}` ausschließlich
einen aktuellen, aktivierten Eintrag desselben Fensters. Keine URLs, HTML,
Tokens, Formularwerte, Tools oder ausführbaren Programme im Menüprotokoll.
Die App prüft erneut Existenz und disabled und benutzt ihren bisherigen Handler.
Revisionen verhindern veraltete Aktivierungen. Bei Trennung/Ansichtswechsel
entfernt der Host die Einträge. Keine Parent-DOM-Zugriffe oder neuen Netzrechte.

Der Editor zeigt einen eigenen Punkt Projekte. Zuletzt in dieser App-Sitzung
geöffnete Projekte stehen zuerst; diese Reihenfolge wird nicht persistent
gespeichert. Der aktuelle Projektname bleibt im Inhalt. Nicht verfügbare
Projekte kommen ausschließlich aus der autorisierten Serverliste und werden
nicht aus einem lokalen Verlauf wiederhergestellt.

Abnahme offen: authentifizierter Editor in echtem XP-Fenster, zwei Fenster,
Tastatur/Fokus, Projektwechsel mit ungespeicherten Änderungen, getrennte Sitzung,
App/Funktionen-Wechsel sowie neutrale Fallback-Ansicht. Ein erfolgreicher SDK-
Transporttest ist kein Browsernachweis.

Bei mehr als 20 Projekten öffnet „Alle Projekte auswählen“ die vollständige autorisierte Auswahl im Inhalt.
