batch3 T5: frontend foundation — Pane types, panes API, user-events WS
- Mirror Pane/PaneState/UserStream types - api.panes.* CRUD methods - sessionEvents adds session_updated, session_loaded, open_file_in_browser - useUserEvents hook: single app-level WS to /api/ws/user with reconnect - useSidebar handles session_updated (in-place patch + re-sort) and session_loaded (active-project highlight gap fix); open_file_in_browser is a deliberate no-op here, consumed by Workspace later - App.tsx mounts useUserEvents once Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -32,12 +32,34 @@ export interface SessionDeletedEvent {
|
||||
project_id: string;
|
||||
}
|
||||
|
||||
export interface SessionUpdatedEvent {
|
||||
type: 'session_updated';
|
||||
session_id: string;
|
||||
project_id: string;
|
||||
name: string;
|
||||
updated_at: string;
|
||||
}
|
||||
|
||||
export interface SessionLoadedEvent {
|
||||
type: 'session_loaded';
|
||||
session_id: string;
|
||||
project_id: string;
|
||||
}
|
||||
|
||||
export interface OpenFileInBrowserEvent {
|
||||
type: 'open_file_in_browser';
|
||||
path: string; // project-relative
|
||||
}
|
||||
|
||||
export type SessionEvent =
|
||||
| SessionRenamedEvent
|
||||
| ProjectCreatedEvent
|
||||
| ProjectDeletedEvent
|
||||
| SessionCreatedEvent
|
||||
| SessionDeletedEvent;
|
||||
| SessionDeletedEvent
|
||||
| SessionUpdatedEvent
|
||||
| SessionLoadedEvent
|
||||
| OpenFileInBrowserEvent;
|
||||
type Listener = (event: SessionEvent) => void;
|
||||
|
||||
const listeners = new Set<Listener>();
|
||||
|
||||
Reference in New Issue
Block a user