feat(app): add Settings view, configurable claude dir, and recap docs refactor
Introduce a Settings view for configuring the Claude data directory (with WSL auto-detection on Windows), sidebar project grouping module, and an empty-state onboarding screen for SessionList. Refactor recap-patterns.md into per-card reference files under references/recap/ with separate retrieval and writing guides. Remove the legacy panel.html. On the data layer: incremental indexing via changedPaths, per-session live-update IPC (obelisk:session-updated), and session dirty-tracking in the renderer.
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
export function createSessionLiveState() {
|
||||
return {
|
||||
dirtySessions: new Set(),
|
||||
};
|
||||
}
|
||||
|
||||
export const sessionLiveState = createSessionLiveState();
|
||||
|
||||
export function noteSessionUpdated(live, sessionId, currentSessionId = null) {
|
||||
if (!sessionId) return { reload: false, sessionId: null };
|
||||
if (sessionId === currentSessionId) {
|
||||
live.dirtySessions.delete(sessionId);
|
||||
return { reload: true, sessionId };
|
||||
}
|
||||
live.dirtySessions.add(sessionId);
|
||||
return { reload: false, sessionId };
|
||||
}
|
||||
|
||||
export function clearSessionDirty(sessionId, live = sessionLiveState) {
|
||||
if (sessionId) live.dirtySessions.delete(sessionId);
|
||||
}
|
||||
|
||||
export function consumeSessionDirty(live, sessionId) {
|
||||
if (!sessionId || !live.dirtySessions.has(sessionId)) return false;
|
||||
live.dirtySessions.delete(sessionId);
|
||||
return true;
|
||||
}
|
||||
|
||||
export function consumeGlobalSessionDirty(sessionId) {
|
||||
return consumeSessionDirty(sessionLiveState, sessionId);
|
||||
}
|
||||
Reference in New Issue
Block a user