Releases: unfault/unlost
Releases · unfault/unlost
unlost v0.13.1
Immutable
release. Only release title and notes can be modified.
What's changed
Fixed
- Previous release broke because release was created by agent as immutable
before the workflow existed
unlost v0.12.0
Immutable
release. Only release title and notes can be modified.
What's changed
Added
- GitHub Copilot CLI integration:
unlost shim copilotandunlost config agent copilotprovide hooks-based integration with GitHub Copilot CLI. Session transcripts are read directly from~/.copilot/session-state/<uuid>/events.jsonl, giving access to full user and assistant text without synthesis. Session discovery usesworkspace.yamlcreated_atproximity andsummarycross-check atsessionStart, andupdated_atproximity atsessionEnd. InstallssessionStart,userPromptSubmitted, andsessionEndhooks via.github/hooks/unlost.json, and writes a Copilot-compatible skill to.github/copilot/skills/unlost/.
Changed
docs/index.html: Restructured landing page to prioritize Context Ownership and Memory over control. "How It Works" now follows the Memory Lifecycle (Record → Extract → Ground). Added "One Memory. Many Lenses" section to showcasetrace,challenge, andexploreas different views on the same grounded context. Moved "Cognitive Mirror" technical details to a dedicated deep-dive section at the bottom.
unlost v0.11.2
Immutable
release. Only release title and notes can be modified.
What's changed
Fixed
- Friction detection false positives: Three targeted changes reduce spurious de-escalation interventions during productive back-and-forth discussions. (1) The
anger_streakfast path now requires trajectory intensity >= Watch threshold (0.5) in addition to 2+ consecutive negative turns — pure emotion-classification noise can no longer trigger an intervention without corroborating behavioral evidence. (2) The go_emotionsdisapprovallabel is excluded from the anger streak counter, since it maps to intellectual disagreement rather than user upset; it still contributes to trajectory intensity via valence. (3) The heuristic override that mappedneutral + 1 frustration signal → disapprovalis removed — a single matched keyword (e.g."broken"in a technical description) is too weak a signal to override a neutral classification.
Changed
README: Reframed mission around ownership vs. authorship. The README now leads with the human engineer's perspective — accountability in incidents, reviews, and architecture decisions — rather than agent failure modes. Removed the babysitting tax framing and failure mode table from the lead; commands are now grouped by the moment you reach for them (understanding, deciding, handing off).
unlost v0.11.1
Immutable
release. Only release title and notes can be modified.
What's changed
Changed
- README: Restructured for better readability, moving installation to top and collapsing technical details.
Fixed
unlost checkpointoutput: Fixed narrative output not wrapping at 80 columns. Now usesrender_narrativeto ensure proper formatting and ANSI coloring.- Recall/inspect filtering bug: Fixed an issue where
unlost recallandunlost inspectwith filters (e.g.--emotion joy) would return no results. The optimization to fetch only the most recent rows was calculating the offset based on the total row count instead of the filtered row count, often skipping all matching rows.
unlost v0.11.0
Immutable
release. Only release title and notes can be modified.
What's changed
Added
/unlost-walkthroughskill: Installs a walkthrough skill for both OpenCode and Claude Code that guides users through recent changes step-by-step (with VSCodecode --gotonavigation).- "Under the Hood" section: Added to both
README.mdanddocs/index.html— a grouped inventory of every technique, algorithm, and strategy Unlost uses (trajectory sensing, emotion/NLP, retrieval/memory, storage/infrastructure), with "where it's used" context on the landing page.
Changed
unlost pr-commentdual-audience comment: The comment now serves both the author (staying close to code written by AI agents) and the reviewer. Voice changed from "you" to "we". New sections: "What we were navigating" (shared tradeoff framing with emotional signal woven in), "Ripple effects" (functional knock-on effects across commands/features, not just code imports), "Left open" (deferred decisions, open questions, unresolved next_steps from capsules), and "Re-read this" (1-2 linked file:function pointers to non-obvious logic). File references are now clickable GitHub blob links built from the head SHA and repo coordinates. "How To Verify" removed. Em-dashes banned from output. A blockquote hook at the top of every comment shows the decision count and explains what unlost does; if no decisions were found, it says so plainly and suggests a replay command. Fixed:headRepositoryOwneris now fetched as a top-level field (the nestedheadRepository.owner.loginpath was always empty).
Fixed
unlost inspectcapsule order: Capsules are now displayed oldest-first (newest at end) instead of newest-first.- LanceDB timestamp filter crash: Avoids a DataFusion interval planning error (
lhs:Null, rhs:Int64) when applyingts_msrange filters on mixed-schema datasets; falls back to client-side time filtering and prints a repair command (unlost reindex).
unlost v0.9.0
Immutable
release. Only release title and notes can be modified.
What's changed
Added
unlost explore: New command for forward-looking planning grounded in workspace memory. Given a scenario or goal (e.g.unlost explore "should we keep lancedb or move to sqlite+fts?"), retrieves the most relevant capsules via semantic search combined with an importance-scored full scan (failure modes, rationale, cross-session recurrence). Capsules are context — not a cage — so the LLM can reason beyond them while clearly labelling what comes from memory ([memory]) vs. external knowledge ([outside]). Output sections: CONTEXT FROM MEMORY, PATHS WORTH CONSIDERING, TENSIONS, QUESTIONS TO SIT WITH, IF YOU GO FURTHER.unlost challenge: New command to pressure-test a past decision or technology choice (e.g.unlost challenge "lancedb"orunlost challenge "is our code currently properly organized?"). Uses three evidence sources: (1) the live code graph via unfault-core (hotspots, dependency topology, routes, file list — ground truth even when capsules are thin), (2) changelog capsules (version history), and (3) conversational memory capsules (decisions, rationale, failure modes). Output sections: THE DECISION, ALTERNATIVES (as readable named cards with Upside/Downside/Cost/Evidence fields), VERDICT (keep if / change if), UNKNOWNS, PROBES.GraphContext+build_graph_context_for_workspace: New helper inworkspace.rsthat builds the full unfault-core code graph and extracts hotspots (centrality), hub dependencies, routes, and file paths in one call. Used bychallengeto inject structural ground truth into the LLM prompt.
Changed
- Grouped help output:
unlost --helpandunlost(no args) now display commands organised into four sections — Memory (query,trace,recall,explore,challenge,brief), Workspace (init,reindex,clear,where), Setup (config,model), and Diagnostics (metrics,replay,inspect) — instead of a single flat list. Implemented via a customhelp_templateon the rootClistruct (clap'snext_help_headingderive attribute does not apply to struct-variant subcommands). exploreprompt redesign: Rewritten to be genuinely open-ended and generative — a thinking partner, not an auditor. The LLM is instructed to use workspace memory as background and constraint, then think freely beyond it. Alternatives are labelled[memory]or[outside]so the user knows what is grounded and what is creative.challengealternatives format: Replaced pipe-separated table (unreadable at terminal width) with named card format per alternative. Each card uses circled numbers (①②③④), with dimmed field labels (Upside:,Downside:,Cost:,Evidence:) and a blank line between cards for scannability.- Higher-signal recall selection:
unlost recallnow filters low-signal capsules (e.g. replay/ghost extractions), scans a wider recent window to avoid crowd-out, and includes git commit capsules by default so the narrative stays anchored when conversational signal is thin. - Recall interventions controls: Interventions can be hidden from output (
UNLOST_RECALL_HIDE_INTERVENTIONS=1) and are excluded from the LLM narrative context by default unless explicitly enabled (UNLOST_RECALL_INTERVENTIONS_IN_CONTEXT=1). - Faster
reindexrebuilds:unlost reindexnow batches embeddings and LanceDB inserts, clears the workspace DB directory in one operation, and shows in-place progress during rebuild. - Richer
trace --rawoutput: Raw trace printing now includes capsule source and best-effort references (e.g.commit:<hash>/version:vX.Y.Z) when available.
Fixed
render_structuredpolish: Space inserted between circled number and card title text (①Keep→① Keep). Probe lines changed from dim cyan (\x1b[2;36m, nearly invisible on dark backgrounds) to normal cyan (\x1b[36m). All prose, card field values, and probe lines now wrap at 80 columns via a newwrap_ansi_line()helper that measures visible width by skipping ANSI SGR escape sequences.- Safer
reindexconfirmation: Confirmation prompt now reads a single line from stdin (instead of blocking on EOF), improving behavior in non-interactive environments. - Recall rendering clarity: The narrative output now labels the final section as
Next steps (if any):to avoid implying that every recap must produce action items.
unlost v0.8.0
Immutable
release. Only release title and notes can be modified.
What's changed
Added
unlost v0.7.0
Immutable
release. Only release title and notes can be modified.
What's changed
Added
unlost brief: New command that produces a staff-engineer-style codebase debrief. Answers "what do I need to know to work here without getting surprised?" by scanning all recorded history (not just recent turns), scoring capsules by importance (failure modes, explicit rationale, cross-session recurrence), and producing four structured sections: MENTAL MODEL, KEY DESIGN DECISIONS, THINGS THAT BITE, ENTRY POINTS. Ends with a GO DEEPER section of suggestedunlostcommands to drill down further. Scoped variant (unlost brief src/governor.rs) narrows the debrief to a specific file or concept.- Git commit ingestion: Git commits are now first-class capsules. Each commit becomes an
IntentCapsulewithcategory: "GitCommit", subject as the decision, body as the rationale, and touched files as symbols — embedded for semantic search, zero LLM cost. Deduplicates by hash across runs. unlost replay git: New subcommand to ingest git history on demand (unlost replay git --max-commits 500).- Automatic git ingestion:
unlost replay opencode,unlost replay claude, andunlost initnow automatically ingest git history after their main work completes. No extra step needed.
Changed
- Git capsule routing: Git capsules are included in
briefandquery(where historical decisions are valuable) but excluded fromrecall(which stays focused on the conversational story) and from the trajectory controller's history window (which operates on live agent turns only).
unlost v0.6.5
Immutable
release. Only release title and notes can be modified.
What's changed
Fixed
- LLM Schema Compatibility: Fixed invalid JSON schema for
extraction_modefield inIntentCapsulethat caused OpenAI-compatible APIs to reject requests with HTTP 400. The field was emitting$refalongside sibling keywords (description,default), which is disallowed. Now uses an inline schema viaschemars(schema_with = ...).
unlost v0.6.4
Immutable
release. Only release title and notes can be modified.
What's changed
Changed
- CLI Replay Clarity: Rephrased Hybrid Mode description and summary output to explicitly state that local indexing happens for all turns, while LLM analysis is reserved for pivotal moments.