{"slug": "capturing-coding-sessions-while-the-desktop-app-is-closed", "title": "Capturing coding sessions while the desktop app is closed", "summary": "A developer built Mind Palace, a Windows desktop memory app that captures coding sessions even when its Angular/Tauri interface is closed, using approved Codex hooks that invoke a small local receiver writing atomic spool records for later validation and import. The design keeps indexing out of the synchronous hook path, bounds transcripts at 20 MiB, and preserves oversized or ambiguous data rather than reporting a successful complete import. In a controlled two-minute test, the app recovered an exact source and passed stored-evidence answering while its strict event-count check remained at 18 of 20, a discrepancy the project records rather than hides.", "body_md": "*Current stage: Windows desktop development build. Updated 10 October 2026.*\n\nA memory app that must stay open throughout every coding session adds another thing to remember. Mind Palace separates the capture process from the desktop interface.\n\nApproved Codex hooks invoke a small local receiver. The receiver writes an inbox record without needing the Angular UI or the vault worker to remain open. When the user opens the vault, the app validates and imports those captures.\n\nThe current demo exercises this path with a synthetic hook event and fictional messages. It uses the real packaged receiver and native vault. It does not show a live Codex model producing the conversation.\n\nThe synchronous hook path validates bounded input and writes one unique atomic spool record. It does not scan memory folders, run inference or take the app's shared operation lock.\n\nMoving indexing out of the hook reduces competing work during a short client deadline. It does not remove every timing risk. A receiver still has startup and filesystem costs, and actual client delivery must be measured separately.\n\nApp-side indexing validates the spool records and deduplicates deliveries. It publishes content-addressed transcript chunks and ordered manifests. Chunk boundaries follow complete JSONL records; the target is 64 KiB. An indivisible record can exceed that target within the separate input-record limit.\n\nThe receiver's complete transcript bound is 20 MiB. Oversized or ambiguous data is reported and preserved rather than advertised as a successful complete import.\n\nCapture starts from an explicitly selected transcript folder. History is a separate action: the user reviews source metadata and confirms import. Installing a hook file is also separate from reviewing and trusting that handler in Codex.\n\nThis separation prevents several misleading states. A file on disk does not prove the client ran it. A successful capture does not prove the entire history was imported. A saved source does not prove its contents are an approved decision.\n\nChanged hook definitions need fresh client review. The app's setup checklist makes runtime approval uncertainty visible.\n\nMind Palace can repair missing tails for already known sessions from the approved Codex source folder. Canonical ingestion maps one provider/session identity to one Session, preserving selected source revisions rather than rewriting the originals.\n\nThat recovery is useful, but it should not be confused with complete event delivery. A controlled two-minute test recovered an exact source and passed stored-evidence answering while its strict event-count check remained at 18 of 20. The discrepancy remains recorded instead of being replaced by another run that happened to pass.\n\nRetention has a similar boundary. Old prefixes become eligible for cleanup only after a validated vault import acknowledgment and complete reference checks. Unknown, divergent and unimported copies stay intact. A large cleanup scan can defer without deleting anything.\n\nThe repository contains measured synthetic native checks and separate installed-client fixtures. They are evidence for their specific paths, not a guarantee for every machine or every future session.\n\nMind Palace is a Windows desktop development build using Angular, Tauri and bundled Python. Claude Code end-to-end verification and public installer work remain separate from the current Codex workflow.\n\nSee [the repository](https://github.com/ashikvarma11/mind-palace), [the receiver](https://github.com/ashikvarma11/mind-palace/blob/main/sidecar/memory_worker/session_capture.py), [the inbox implementation](https://github.com/ashikvarma11/mind-palace/blob/main/sidecar/memory_worker/capture_inbox.py) and [the recorded native results](https://github.com/ashikvarma11/mind-palace/blob/main/docs/verification/codex-runtime-13.md).\n\nIf you have built a lifecycle-hook integration, which failure was hardest to reproduce? Share the behavior and a non-sensitive reproduction through repository issues.", "url": "https://wpnews.pro/news/capturing-coding-sessions-while-the-desktop-app-is-closed", "canonical_source": "https://dev.to/ashikvarma11/capturing-coding-sessions-while-the-desktop-app-is-closed-14pb", "published_at": "2026-10-10 05:51:03+00:00", "updated_at": "2026-10-10 06:00:41.051317+00:00", "lang": "en", "topics": ["ai-agents", "developer-tools", "ai-tools"], "entities": ["Mind Palace", "Codex", "Angular", "Tauri", "Python", "Claude Code"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/capturing-coding-sessions-while-the-desktop-app-is-closed", "markdown": "https://wpnews.pro/news/capturing-coding-sessions-while-the-desktop-app-is-closed.md", "text": "https://wpnews.pro/news/capturing-coding-sessions-while-the-desktop-app-is-closed.txt", "jsonld": "https://wpnews.pro/news/capturing-coding-sessions-while-the-desktop-app-is-closed.jsonld"}}