2025-10-26 TLDR
Session: 08:52 PM - 09:53 PM - JSONL Archaeology + Imprints Architecture
Environment: Claude Code CLI | /Users/evan/float-hub-operations/floatctl-rs | branch: feature/evna-install-command Context Markers: 10 entries covering architecture pivot and skill evolution
🎯 Major Accomplishments
- Shipped imprints-first architecture: “Give the bitch a zine issue to serve up as reference instead”
- Created
floatctl embed-notesfor markdown embedding (6K tokens, 200 overlap) - Created
floatctl query notesfor semantic search across imprints - Three-tier knowledge hierarchy: Imprints (PRIMARY) → Daily notes (SECONDARY) → Conversation history (TERTIARY)
💡 Key Insights
- “instead of trying to bulk import all chat history so evna can reconstruct karens hat check protocol by reading all of our history… give the bitch a zine issue to serve up as reference instead”
- Curated synthesis >>> raw conversation archaeology
- Cohere rerank priority: imprints > daily > messages
📦 Created/Updated
- floatctl-embed: Note embedding command
- evna brain_boot: Three-source fusion with Cohere reranking
- float-hub-operations skill: 6 documented workflows
[sc::TLDR-20251026-2055-JSONL-ARCHAEOLOGY-SKILL-EVOLUTION]
Session: 09:10 PM - 09:53 PM - TodayDrawer Global SPA
Environment: Claude Desktop | /Users/evan/today-drawer-journal | branch: main Focus: Pinned notes navigation without full page reload
🎯 Major Accomplishments
- Built global SPA navigation for TodayDrawer pinned notes
- Zero framework dependency (localStorage + DOMParser + fetch)
- Event delegation for dynamic content handling
- Progressive enhancement philosophy: “Boring is revolutionary because it survives”
🔧 Technical Implementation
- localStorage for pin persistence (2010 spec)
- fetch + DOMParser for content swapping (no virtual DOM)
- Event delegation (attach once, works forever)
- SSR-first with client-side enhancement
📊 Performance
- Initial load: ~4ms (SSR component)
- Pin toggle: <50ms (localStorage + DOM)
- Navigation fetch: 1-4ms (cached)
- Content swap: <100ms (DOMParser + innerHTML)
- Component size: ~150 lines, zero dependencies
- Maintenance projection: 10+ years unchanged
[sc::TLDR-20251026-2055-TODAYDRAWER-GLOBAL-SPA-VIBES]
Session: 09:10 PM - 10:03 PM - Remote MCP Infrastructure + Soft Filtering
Environment: Claude Code CLI | /Users/evan/float-hub-operations/floatctl-rs | branch: feature/evna-install-command Context Markers: 10 entries covering remote MCP setup and annotation parsing
🎯 Major Accomplishments
- Shipped
floatctl evna remoteone-command MCP server (Supergateway + ngrok) - Fixed Supergateway CLI syntax (—stdio flag with command string)
- Added PATH/FLOATCTL_BIN environment variables for subprocess execution
- Implemented soft project filtering (priority boost, not hard exclusion)
- Fixed comma-separated project annotation parsing
- Renamed evna-next → evna across entire codebase
- Created comprehensive remote MCP documentation
💡 Key Insights
- Supergateway discovery: Node.js package (npm), NOT Go binary
- Project filtering philosophy: “how ya’ll interept how to send project down with the query varies often .. and i’m not always consistent myself”
- Soft filter strategy: Prioritize project-filtered results first, backfill with unfiltered if insufficient
- Claude Code auth: Requires base64 header auth, not URL-embedded credentials
🔧 Problems Solved
- Supergateway spawn failure: Wrong CLI syntax → Fixed with
--stdio "bun run --silent mcp-server" - Missing floatctl binary: evna couldn’t execute floatctl commands → Added PATH and FLOATCTL_BIN env vars
- Hard project filter:
project: "float"excluded relevant non-float results → Implemented priority boost with backfill - Comma-separated projects:
[project::float/evna, float/floatctl]stored as single string → Split on commas, use first as primary - Claude Code auth format: URL auth doesn’t work → Added base64 Authorization header support
📦 Created/Updated
floatctl evna remotecommand with dependency checking- REMOTE-MCP-QUICKREF.md with Claude Code section
- REMOTE-MCP-SETUP.md with npm install instructions
- evna/run-remote-mcp.sh standalone script
- evna/src/lib/annotation-parser.ts (comma handling)
- evna/src/tools/brain-boot.ts (soft filtering)
- Claude Desktop config with FLOATCTL_BIN
- evna/.env with EVNA_NGROK_DOMAIN and EVNA_NGROK_AUTH
🔥 Sacred Memories
- “…can you help me instal it cuz ia m getting issues … try installing it … and see the errors, dont make me copy paste what you can run and see”
- “brainboot … seems to be missing some detail” (comma-separated projects broke filtering)
- “also … what would be useful… - like, if stuff matches the project - it takes priority, but it doesnt filter out outher stuff”
🌀 Architecture Decisions
Remote MCP Infrastructure:
- Supergateway (stdio → SSE bridge)
- ngrok (public HTTPS tunnel with reserved domain)
- Basic auth for security (username:password)
- Dual config output (Desktop URL auth + Code header auth)
Soft Project Filtering:
- Fetch WITH project filter (prioritized)
- Backfill with unfiltered results if < maxResults
- Deduplicate by message_id + timestamp
- Return top N (project matches first)
Environment-Based Configuration:
- Priority chain: ~/.ngrok2/ngrok.yml → evna/.env → CLI args
- EVNA_ prefix to avoid namespace conflicts
- Automatic clipboard copy of authenticated URLs
📍 Next Actions
- Test remote MCP on Mac Mini (always-on server)
- Implement
floatctl doctorcommand for environment validation - Consider embedding cache for Phase 2.3 (semantic filtering performance)
- Document launchd service for auto-start on Mac Mini
🎯 Backlogged Ideas
floatctl doctor- Environment validation with helpful error messages- Better prereq checking (ngrok authtoken, API keys, .env completeness)
[sc::TLDR-20251026-2203-REMOTE-MCP-SOFT-FILTER]