feat(app): Multi-Threading UI — Focus-One-View + Drawer + Queue-Status-Dots
Phase 2 vom Multi-Threading-Redesign. Chat zeigt jetzt genau EINEN Kontext (Hauptchat oder Projekt X) — die anderen laufen im Brain weiter, sichtbar nur ueber Status-Dots im Drawer. ChatScreen: - Reorder-Trick + collapsible Project-Bloecke raus. messagesForRender filtert jetzt direkt auf focusedProjectId. - Neuer Focus-Header oben: ☰ Drawer-Toggle + Kontext-Name + Status-Dot (gruen idle / gelb queue / rot arbeitet). Drawer-Icon kriegt ein Badge mit der Anzahl OTHERE aktiver Kontexte. - Focus in AsyncStorage gespiegelt — Neustart restauriert den letzten Blick. - brainApi.getProjectQueueStatus() alle 2s gepollt fuer Status-Dots. - project_changed-Event steuert Focus-Wechsel (App-lokal, kein Brain-Roundtrip). brainApi: - Neuer Typ QueueContextStatus + ProjectQueueStatus. - Methode getProjectQueueStatus() → /projects/queue-status. ProjectsBrowser: - Nimmt queueStatus als Prop, rendert Status-Dot pro Zeile (Hauptchat + Projekte). - switchTo ruft NICHT mehr brainApi.switchProject (kein globaler active mehr) — direkt onActiveChanged mit dem Projekt-Objekt aus der Liste, schliesst danach die Modal. - Label ✓ FOCUS statt ✓ AKTIV — praeziser fuer's neue Modell. SettingsScreen: - File-Manager-Filter-Default nutzt AsyncStorage statt Brain-Query. Bewusst nicht drin (Follow-up): - OS-Push wenn Projekt fertig ist — braucht Firebase-Setup, kommt separat wenn die visuellen Dots nicht reichen. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -169,6 +169,16 @@ export interface ProjectStatus {
|
||||
projects: Project[];
|
||||
}
|
||||
|
||||
/** Queue-Status pro Kontext — was gerade arbeitet, was wartet.
|
||||
* Key "__main__" = Hauptchat, sonst project_id. */
|
||||
export interface QueueContextStatus {
|
||||
busy: boolean;
|
||||
queue_size: number;
|
||||
}
|
||||
export interface ProjectQueueStatus {
|
||||
contexts: Record<string, QueueContextStatus>;
|
||||
}
|
||||
|
||||
/** Skill-Manifest wie aus Brain `/skills/list` zurueckkommt. */
|
||||
export interface Skill {
|
||||
name: string;
|
||||
@@ -590,6 +600,13 @@ export const brainApi = {
|
||||
body: patch,
|
||||
});
|
||||
},
|
||||
|
||||
/** Queue-Status: pro Kontext (project_id oder __main__ fuer Hauptchat)
|
||||
* ob gerade ein Request in Verarbeitung ist + wieviele in der Queue warten.
|
||||
* Wird fuer Status-Dots im Drawer periodisch gepollt. */
|
||||
getProjectQueueStatus(): Promise<ProjectQueueStatus> {
|
||||
return _send('/projects/queue-status');
|
||||
},
|
||||
};
|
||||
|
||||
export default brainApi;
|
||||
|
||||
Reference in New Issue
Block a user