Releases: cleburn/aegis-cli
Releases · cleburn/aegis-cli
Release list
v0.4.8
Added
gemini-2.5-proas a second Google Gemini menu option. Aegis previously single-pointed Gemini support ongemini-3.1-pro-preview. Preview endpoints carry no SLA guarantee from Google — when the preview model is throttled at Google's serving layer (which can happen unpredictably), Gemini becomes unavailable in Aegis even though other variants on the same OAuth credentials work. The new GA-stablegemini-2.5-proentry gives users a reliable fallback path; the existing 3.1 Pro Preview remains selectable for bleeding-edge use.
Changed
- Mid-session
/modelrecovery now mirrors initial model selection on validate failures. Previously,/modelselecting a provider whosevalidate()returned a transport/capacity-class error (e.g. HTTP 503) printed a generic "Couldn't verify... Staying on the current model" message and silently bailed back to the conversation. Now both flows route through a shared validation function and surface the same four-option recovery menu (Retry validation / Pick a different model / Save anyway / Abort) with the same auth-vs-transport classifier wording. The user can recover from a transient capacity issue mid-session without exiting and restarting. - Google menu labels sharpened to communicate preview status:
Google Gemini 3.1→Google Gemini 3.1 Pro Preview; the new GA entry shows asGoogle Gemini 2.5 Pro.
v0.4.7
Added
- License-grounded project identity discovery. The scanner now reads
LICENSE,LICENSE.md,LICENSE.txt,LICENSE-MIT,LICENSE-APACHE,LICENSE-APACHE-2.0,COPYING,COPYING.md, andCOPYING.txtfiles and surfaces them asPROJECT LICENSE EVIDENCEin the scan briefing. The discovery prompt now grounds project license claims in observable file evidence or direct user confirmation rather than inferring from adjacent context (e.g. a mentioned foundation-layer license). - Extraction shape normalization for typed-object arrays. Legacy string-array forms in extracted policies (e.g.
tech_stack.key_libraries: ["pytest", "ruff"]) are now repaired to their required object shape ([{name: "pytest", purpose: "..."}]) before schema validation, so extraction reliably produces schema-valid output on the first attempt across all typed-object fields in constitution, governance, role, and ledger schemas. - Identity-grounding language in the discovery system prompt to distinguish project claims from claims about dependencies, foundation layers, forks, upstream templates, or adjacent context.
Changed
- Streaming UI replaces the bounded live-tail with progressive line commit. As each wrapped line of an Aegis turn completes, it moves into the persistent conversation history immediately; only the currently-in-progress line stays in the dynamic region. Visible incremental progress is preserved for long messages while still rendering each line exactly once.
Fixed
- Long Aegis turns no longer produce duplicate first-line content in terminal scrollback when the response exceeds the viewport.
v0.4.6
Added
- Discovery completion salvage now accepts long-form user affirmations. A user message ending with a clear go-ahead (e.g. "...all of that looks right. Draft it.") transitions discovery to extraction even when the prior turn carried other content, while hedge signals (
but,actually,add,change,one more, etc.) continue to block premature completion. - System prompt guidance directs Aegis to ask for a clean final confirmation when the user introduces final changes alongside an affirmation, so the policy is drafted against the final intended scope.
Changed
- Discovery completion gate split into two functions: short standalone confirmations still go through
isSimpleAffirmative; longer messages use the newisDiscoveryCompletionAffirmationwith its own end-of-message regex and late-change blocker list.
Fixed
- Inline comments document why
isDiscoveryCompletionAffirmationdiverges intentionally fromisSimpleAffirmative's blocker list, and why the streaming live tail is capped at six lines.
v0.4.5
Added
- Last-resort discovery completion salvage. When the model omits the literal
[DISCOVERY_COMPLETE]marker after an unambiguous user affirmation, the engine auto-injects the marker provided four structural gates pass (no existing marker, prior user turn affirmed, response contains no trailing question, response shows positive completion intent). Auto-injection emits a stderr breadcrumb so the path is observable from outside. - System prompt strengthened with an explicit example of the exact final acknowledgement-plus-marker shape.
Changed
- Streaming response render is bounded to a terminal-height-aware live tail. Long Aegis turns no longer scroll early content into permanent scrollback before the static-history commit fires.
isSimpleAffirmativerecognizes additional draft-style affirmations:draft it,draft those,draft them,write it,write those,write them.
v0.4.4
Fixed
- Terminal render regressions in the Ink-based UI, including word wrap and line-tagging seams around the
wrapConversationTurnhelper. - Extraction animation now loops continuously for the full lifetime of an extraction call. The previous behavior of holding the final shield frame after one pass read as "stuck" when extraction ran longer than the animation length.
v0.4.3
Added
- Schema-drift surfacing in policy migration. Schema-invalid but parseable policy files now load into
existingPolicyContentsrather than being skipped silently. Validation failures become structuredPolicyMigrationFinding[]entries withsource: "registry" | "schema_validation"and per-field error details, which the discovery LLM raises conversationally with the human. Known drift categories detected:module_map[].owner: null,tech_stack.key_libraries[]as string array, ledger legacy field names (agent_role,description,timestamp,affected_paths,action). - Ghost-text slash-command autocomplete in the input prompt. Typing
/mshows a dimmedodel - switch models during this discovery sessioncompletion inline; the ghost updates on every keystroke and uses a post-completion command set (/dhints/done) after extraction.
Changed
- The
aegis initsplash banner always renders in full on every invocation. The previous quiet-mode return-visit variant has been removed.
Fixed
- Banner-render-order regression where validation errors could print to stderr before the Ink banner mounted.
v0.4.2
Added
- Auto-discovery of local model servers on the Custom (OpenAI-compatible) path. Ollama, LM Studio, llama.cpp, and vLLM running on conventional ports are detected and offered as model options during setup.
- Validation timeouts on provider auth checks: 15 seconds for Anthropic, OpenAI, DeepSeek, and Custom providers, preventing indefinite hangs on slow networks or unreachable endpoints.
.github/secret_scanning.ymlconfiguration for repo-level secret scanning policy.
Changed
- Hidden-input paste hardening for API key entry: pasted keys no longer leak partial echoes during the masked-input phase.
- Slash-command submit-time prefix matching: typing
/mand pressing Enter resolves to/modelrather than rejecting the partial command.
Removed
- Mistral provider option removed entirely.
- Anthropic Haiku 4.5 removed from the model menu (low confidence in Haiku-tier sessions for Aegis discovery work).
- Model menu reduced from 11 options to 9.
v0.4.1
v0.4.0
Added
- Native Google Desktop OAuth flow for Gemini authentication. The CLI now performs a full OAuth dance with Google's Desktop App OAuth client and stores refresh tokens at
~/.aegis/oauth/google/credentials.json. No more dependency ongcloudApplication Default Credentials. - Improved Google sign-in messaging through the OAuth handoff.
Removed
- ADC (
gcloud auth application-default login) path for Google authentication. The native OAuth flow replaces it entirely.