Zwei Nachbesserungen am Cockpit-Modus (noch Teil von 0.2.1.9): - Im Cockpit werden IMMER alle vier Kacheln gezeigt (Chat/Editor/Desktop/ Vorschau) statt erst bei Code-Projekten — Editor/Desktop/Vorschau als Platzhalter mit Status-Untertitel. Vorher wirkten sie "verschwunden". - Der "⤢ Uebersicht"-Button hing im Chat genau ueber dem Abbrechen-Button der "ARIA denkt"-Leiste. Jetzt sitzt er im Navigations-Header links (nur sichtbar im Cockpit + Fokus), via neuem cockpitNav-Signal-Singleton. In-Content-Button entfernt. tsc clean. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
44 lines
1.2 KiB
TypeScript
44 lines
1.2 KiB
TypeScript
/**
|
|
* cockpitNav — kleine Brücke zwischen WorkspaceCanvas (Fokus-Zustand) und dem
|
|
* Navigations-Header, damit der „⤢ Übersicht"-Button im Header sitzen kann
|
|
* (kollidiert dort mit nichts im Chat) statt im überfüllten Chat-Inhalt.
|
|
*
|
|
* Der Canvas meldet, ob gerade eine Kachel fokussiert ist, und registriert eine
|
|
* Aktion zum Zurück-zur-Übersicht. Der Header abonniert den Zustand und ruft die
|
|
* Aktion. Muster wie services/rvs.ts (Singleton).
|
|
*/
|
|
|
|
type Sub = (focused: boolean) => void;
|
|
|
|
class CockpitNav {
|
|
private focused = false;
|
|
private overviewHandler: (() => void) | null = null;
|
|
private subs: Sub[] = [];
|
|
|
|
isFocused(): boolean { return this.focused; }
|
|
|
|
setFocused(f: boolean): void {
|
|
if (this.focused === f) return;
|
|
this.focused = f;
|
|
this.subs.forEach((cb) => cb(f));
|
|
}
|
|
|
|
/** Canvas registriert seine „zur Übersicht"-Aktion (null beim Unmount). */
|
|
registerOverview(fn: (() => void) | null): void {
|
|
this.overviewHandler = fn;
|
|
}
|
|
|
|
requestOverview(): void {
|
|
this.overviewHandler?.();
|
|
}
|
|
|
|
subscribe(cb: Sub): () => void {
|
|
this.subs.push(cb);
|
|
cb(this.focused);
|
|
return () => { this.subs = this.subs.filter((s) => s !== cb); };
|
|
}
|
|
}
|
|
|
|
const cockpitNav = new CockpitNav();
|
|
export default cockpitNav;
|