Skip to content

Releases: AgentsMesh/Loopal

v0.5.0 - Turn-as-Unit SSOT + 200-line discipline

26 May 13:53
37bc534

Choose a tag to compare

Highlights

Architecture enforcement (8-phase plan)

  • Move TurnTracker into loopal-context so TurnStore mutators are pub(crate) — runtime crates cannot bypass the tracker at compile time.
  • Retire ContextStore::from_messages; tests seed history via loopal_test_support::seed_history.
  • tests/architecture_boundary_test.rs greps for cross-layer wire-type leaks (MessageRole/ContentBlock outside provider/display/context layers).
  • Wire-only mutations (microcompact, condense_server_blocks) now flow through TurnTracker::with_wire_mut so the ephemeral path also honors the SSOT contract.
  • Re-derive open ToolBatch step on TurnTracker::new/replace_store so resume-mid-batch correctly routes update_tool_state.

File-size + comment discipline

  • 10 source files split into directory modules: turn_event_store, turn_store, turn_tracker, turn_projection, request_turns, compaction, compact_rehydrate, ingestion, turn_degradation, resolver.
  • Sibling extractions: SettleSignal, mcp_settle, session_start_prompt.
  • All src/**/*.rs files ≤200 lines.
  • Module-level //! blocks and /// docs that restate signatures stripped per HARD RULE — code is SSOT.

Dead-code removal

  • Dropped provider-api::Middleware trait, ContextStore pipeline / config_refresh / degradation / ingestion middleware, governance::compensation.

Breaking changes

  • loopal_runtime::agent_loop::turn_tracker moved to loopal_context.
  • ContextStore::{from_messages, clear, truncate} removed.
  • Internal middleware modules retired (see above).

Stats

49 commits since v0.4.0 · Net -2904 lines in #183 alone.

Full diff: v0.4.0...v0.5.0

What's Changed

  • fix(goals): trigger continuation kickoff on Create/Resume/Extend control by @yishuiliunian in #138
  • refactor(permission): decompose into orthogonal Permission × Decision axes by @yishuiliunian in #139
  • refactor(decision): split Auto into Classifier and Agent with race-to-respond UX by @yishuiliunian in #140
  • fix(events): repair /clear and seal Control→Event→View drift by @yishuiliunian in #141
  • feat(memory): codify SNR + latent structure as Prime Axioms by @yishuiliunian in #142
  • refactor(git): move gitignore SSOT into .loopal/.gitignore by @yishuiliunian in #143
  • refactor(view-state): silence allow-path decision echoes by @yishuiliunian in #144
  • fix(logging): never delete .log files held by live processes by @yishuiliunian in #145
  • fix(tools): restore WebSearch and make Fetch actually download pages by @yishuiliunian in #146
  • feat(prompt): introduce core/soul.md with five Prime Axioms by @yishuiliunian in #147
  • feat(askuser): strict schema validation + multi-question segment UI by @yishuiliunian in #148
  • fix(tui): guard render paths against tiny terminals by @yishuiliunian in #149
  • fix(spawn): split permission_mode and decision_mode into independent params by @yishuiliunian in #150
  • refactor(arch): 9 architecture debts + 5 review cycles + 200-line split by @yishuiliunian in #151
  • refactor(scheduler): async save worker + test consolidation by @yishuiliunian in #152
  • fix(scheduler): remove wait_idle from startup path by @yishuiliunian in #153
  • feat(provider): add OPENAI_BASE_URL env var and GPT-5.5 model by @yishuiliunian in #154
  • refactor(tools): split ReadPdf and ReadHtml out of Read tool by @yishuiliunian in #155
  • fix(tools): treat empty process_id as absent in Bash tool by @yishuiliunian in #156
  • refactor(tools): TypedTool trait + input/schema normalization by @yishuiliunian in #158
  • fix(provider): preserve OpenAI reasoning item for web_search_call multi-turn by @yishuiliunian in #159
  • fix(tool-api): ensure object schemas always include properties field by @yishuiliunian in #160
  • fix(provider): flush each OpenAI reasoning item as independent Thinking block by @yishuiliunian in #161
  • feat(tui): persist /model picker selection + fix release-event double-fire by @yishuiliunian in #162
  • feat(vault): zero-trust secret subsystem so plaintext never reaches LLM by @yishuiliunian in #163
  • refactor(cli): bring vault into clap subcommand tree + arg help by @yishuiliunian in #164
  • refactor(goal): remove token budget subsystem by @yishuiliunian in #165
  • feat(bg-task): per-session log files + actor-based process supervision by @yishuiliunian in #166
  • feat(goal): allow Complete → Active reopen so model can recover from premature complete by @yishuiliunian in #167
  • fix(ipc): typed RpcError + auto-respond contract so missing-session fails fast by @yishuiliunian in #168
  • refactor(goal): drop barren-driven auto-complete by @yishuiliunian in #169
  • feat(soul): add Axiom 6 — see systems, not parts by @yishuiliunian in #170
  • feat(tui-panel): unify Cron/Task/BgTask detail sub-pages with stop action by @yishuiliunian in #171
  • fix: scroll slash command menu + isolate cleanup_orphans flaky by @yishuiliunian in #172
  • refactor(governance): split TurnObserver into Governance + TurnHook with 6 enforced invariants by @yishuiliunian in #173
  • feat(compact): three-tier defense + boundary marker + API token feedback for 1M-context sessions by @yishuiliunian in #175
  • feat(tool-image): add ReadImage tool + multimodal image channel for LLM by @yishuiliunian in #174
  • feat(mcp): non-blocking startup + sub-agent proxy + actionable diagnostics by @yishuiliunian in #176
  • fix(tui-askuser): Enter confirms default option without prior ↑↓ by @yishuiliunian in #177
  • refactor(tools-fs): typed paths + batch IO + virtual-FS ApplyPatch + actionable errors by @yishuiliunian in #178
  • feat(hub): move Vault + MCP to Hub process with sharing model by @yishuiliunian in #179
  • feat(agent-loop): ContinuationGate + DegenerationDetector + request_idle by @yishuiliunian in #180
  • refactor(bootstrap): root-cause hub-only handshake deadlock via typestate + IpcBudget by @yishuiliunian in #181
  • fix(agent-loop): /goal replace + request_idle turn-end + intercept emit invariant by @yishuiliunian in #182
  • refactor: enforce Turn-as-Unit SSOT + 200-line file discipline by @yishuiliunian in #183

Full Changelog: v0.4.0...v0.5.0

v0.4.0

07 May 16:40
54fd87b

Choose a tag to compare

What's Changed

  • feat(prompts): proactively trigger explore sub-agent for codebase research by @yishuiliunian in #129
  • fix(spawn): propagate --no-sandbox to all sub-agents by @yishuiliunian in #130
  • feat(askuser): inline UI + structured response protocol by @yishuiliunian in #131
  • feat(tools): scenario-aware truncation + fetch LLM refiner by @yishuiliunian in #132
  • refactor(runtime): turn state machine + decouple prefill from thinking by @yishuiliunian in #134
  • refactor(hub): standalone Hub subprocess + detach/kill lifecycle by @yishuiliunian in #133
  • feat(goals): thread-level goal tracking with auto-continuation and budget accounting by @yishuiliunian in #135
  • fix(goals): unblock /goal pipeline and unify command reply channel by @yishuiliunian in #136
  • refactor(cli): split passthrough by consumer + reflective completeness tests by @yishuiliunian in #137

Full Changelog: v0.3.0...v0.4.0

v0.3.0

05 May 06:32

Choose a tag to compare

What's Changed

Full Changelog: v0.2.0...v0.3.0

v0.2.0

16 Apr 09:06

Choose a tag to compare

What's Changed

Full Changelog: v0.1.1...v0.2.0

v0.1.1

15 Apr 01:47

Choose a tag to compare

What's Changed

  • fix(ci): patch rules_rust to fix Windows build PATH overflow by @yishuiliunian in #97
  • feat(memory): upgrade sidebar memory agent to Knowledge Manager by @yishuiliunian in #98
  • refactor: enforce child process stderr isolation to protect TUI by @yishuiliunian in #99
  • feat(agent): depth-limited spawning, hub budget, and fork context by @yishuiliunian in #100

Full Changelog: v0.1.0...v0.1.1

v0.1.0

11 Apr 10:00

Choose a tag to compare

What's Changed

  • fix: align macOS seatbelt sandbox with Codex whitelist policy by @yishuiliunian in #58
  • fix: ESC interrupt lost + background agent results not delivered to root by @yishuiliunian in #59
  • feat: centralized FocusMode state machine for TUI input dispatch by @yishuiliunian in #60
  • feat: enhance Plan mode with 5-phase workflow, hard enforcement, and user approval by @yishuiliunian in #61
  • feat: MetaHub distributed agent cluster + execution mode refactoring by @yishuiliunian in #62
  • feat: enhance Agent tool call display with name, spinner, and live progress by @yishuiliunian in #63
  • fix: sub-agent returning empty output when final LLM response has no text by @yishuiliunian in #64
  • feat: background task architecture refactoring by @yishuiliunian in #65
  • feat: enable topology overlay by default by @yishuiliunian in #66
  • refactor: replace raw u64 timeouts with Duration for type-safe time handling by @yishuiliunian in #68
  • feat: display full thinking content in TUI by @yishuiliunian in #67
  • feat: add diff preview for MultiEdit, Write, and ApplyPatch in TUI by @yishuiliunian in #69
  • refactor: simplify macOS Seatbelt sandbox from whitelists to blanket allows by @yishuiliunian in #70
  • feat: add table cell borders and centralize markdown styles by @yishuiliunian in #71
  • fix: resolve /exit 5-second delay by properly closing transport writer by @yishuiliunian in #72
  • feat: agent-type-aware system prompt with fragment selection by @yishuiliunian in #73
  • fix(skill): add conflict detection to github-pr by @yishuiliunian in #74
  • feat: upgrade hook system with multi-executor types, structured output, and event telemetry by @yishuiliunian in #75
  • fix(provider): resilient HTTP client with auto-rebuild on pool corruption by @yishuiliunian in #76
  • feat: enhance prompt system with feature-conditional fragments and enriched tool descriptions by @yishuiliunian in #77
  • feat: add session resume as agent-level capability with /resume command by @yishuiliunian in #78
  • fix(tui): Up/Down keys navigate history instead of scrolling content by @yishuiliunian in #79
  • feat(tui): add session picker for /resume + auto session titles by @yishuiliunian in #80
  • feat(tui): add full-screen tabbed /status sub-page by @yishuiliunian in #81
  • fix(runtime): detect SSE stream truncation and auto-continue from partial response by @yishuiliunian in #82
  • refactor: deliver messages directly to agent mailbox, remove TUI inbox routing by @yishuiliunian in #84
  • feat(sandbox): replace hard denies with permission-gated RequiresApproval by @yishuiliunian in #83
  • fix(tui): decouple mouse scroll from input history via timing-based debounce by @yishuiliunian in #85
  • feat(prompt): add concurrency discipline for sub-agent spawning by @yishuiliunian in #86
  • feat(agent): depth-aware delegation + StartAgentParams refactor by @yishuiliunian in #87
  • fix(tui): replace scroll debounce with batch detection and absolute position indexing by @yishuiliunian in #88
  • fix(tui): replace alternate scroll heuristic with MouseCapture by @yishuiliunian in #89
  • fix(provider): thinking-mode prefill rejection + error misclassification by @yishuiliunian in #90
  • docs(readme): fix tool count, sandbox policies and expand feature coverage by @yishuiliunian in #92
  • fix(hub): close transport after IO loop to prevent sub-agent process leak by @yishuiliunian in #93
  • fix(config): flaky test due to LOOPAL_MODEL env var race by @yishuiliunian in #94
  • feat(telemetry): OpenTelemetry integration with JSONL file export by @yishuiliunian in #95
  • fix(runtime): decouple tool dispatch from permission to prevent duplicate tool_result by @yishuiliunian in #96

Full Changelog: v0.0.1-alpha.2...v0.1.0

v0.0.1-alpha.2

01 Apr 01:57

Choose a tag to compare

v0.0.1-alpha.2 Pre-release
Pre-release

What's Changed

  • refactor: agent state machine, deterministic result passing, overflow-to-file by @yishuiliunian in #57

Full Changelog: v0.0.1-alpha.1...v0.0.1-alpha.2

Full Changelog: v0.0.1-alpha.1...v0.0.1-alpha.2

v0.0.1-alpha.1

31 Mar 07:43

Choose a tag to compare

v0.0.1-alpha.1 Pre-release
Pre-release

What's Changed

Full Changelog: v0.0.1-alpha...v0.0.1-alpha.1

Full Changelog: v0.0.1-alpha...v0.0.1-alpha.1

v0.0.1-alpha

28 Mar 15:33

Choose a tag to compare

v0.0.1-alpha Pre-release
Pre-release

Loopal v0.0.1-alpha

First alpha release of Loopal — an AI coding agent with TUI.

Highlights

  • Multi-agent architecture: Hub-only gateway with parent/child agent topology
  • MCP support: rmcp SDK integration with full protocol support
  • TUI: ratatui-based terminal UI with agent panel, model picker, topology overlay
  • Built-in tools: Read, Write, Edit, Bash, Grep, Glob, WebFetch, and more
  • LLM providers: Anthropic, OpenAI, Google, OpenAI-compatible
  • Context management: Middleware pipeline with smart compaction
  • Permission system: ReadOnly / Supervised / Dangerous tool levels

Recent changes

  • /topology command: graphical Canvas-based agent topology overlay (#37)
  • Hub-only gateway architecture with agent collaboration (#36)
  • MCP migration to rmcp SDK (#35)
  • Fix: release workflow runner for macOS x86_64 (#38)

Note

This is an early alpha release for testing and feedback. APIs and configuration formats may change.

What's Changed

  • fix: /compact command provides TUI feedback via Compacted event by @yishuiliunian in #1
  • feat: agent loop architecture enhancement with Runner decomposition and 7 new capabilities by @yishuiliunian in #2
  • feat: server-side web search for all providers + OpenAI Responses API migration by @yishuiliunian in #4
  • fix: replace Notify with watch channel for interrupt cancellation by @yishuiliunian in #3
  • fix: enable bracketed paste mode to prevent multiline paste splitting by @yishuiliunian in #5
  • fix: replace mouse capture with alternate scroll for terminal text selection by @yishuiliunian in #6
  • feat: generalize server tool handling + redesign compaction architecture by @yishuiliunian in #7
  • feat: prompt engine, TUI improvements & bug fixes by @yishuiliunian in #8
  • refactor: delegate grep/glob to Backend with parallel search by @yishuiliunian in #9
  • fix: add dedicated tool preference warnings to Bash description by @yishuiliunian in #10
  • feat: budget-constrained ContextStore replaces raw Vec by @yishuiliunian in #11
  • fix: update model params and sanitize orphaned server tool blocks by @yishuiliunian in #12
  • fix: replace xterm alternate scroll with native mouse capture by @yishuiliunian in #13
  • feat: integration test infrastructure & comprehensive test coverage by @yishuiliunian in #14
  • feat: display actual server tool result content in TUI by @yishuiliunian in #16
  • feat: replace repeated retry errors with in-place transient banner by @yishuiliunian in #15
  • refactor: unify slash command system with CommandHandler trait + registry by @yishuiliunian in #17
  • feat: multi-process architecture with TUI/Agent IPC isolation by @yishuiliunian in #18
  • feat: incremental markdown rendering + table cell wrapping by @yishuiliunian in #19
  • fix: unify context budget with model-aware context window by @yishuiliunian in #22
  • feat: improve plan mode workflow and enforce tool usage over Bash by @yishuiliunian in #20
  • fix: ESC interrupt not reaching agent during tool execution in IPC mode by @yishuiliunian in #21
  • feat: show inline diff content in Edit tool TUI display by @yishuiliunian in #23
  • fix: resolve IPC pipe deadlock + add multi-process observability logging by @yishuiliunian in #24
  • refactor: replace dynamic worktree tools with static isolation model by @yishuiliunian in #25
  • refactor: remove unused cost/price dead code by @yishuiliunian in #26
  • feat: multi-agent IPC architecture + type-safe completion signal by @yishuiliunian in #27
  • refactor: remove single-process mode, unify on multi-process IPC by @yishuiliunian in #28
  • fix: resolve HubFrontend stale interrupt causing agent loop exit by @yishuiliunian in #29
  • fix: restore Up/Down history navigation when agent is idle by @yishuiliunian in #30
  • refactor: extract loopal-agent-hub crate from session by @yishuiliunian in #31
  • fix: route server tool input deltas + clear stale sub-agent status by @yishuiliunian in #33
  • chore: switch from MIT to proprietary commercial license by @yishuiliunian in #34
  • feat: migrate MCP to rmcp SDK with full protocol support by @yishuiliunian in #35
  • refactor: Hub-only gateway architecture + agent collaboration overhaul by @yishuiliunian in #36
  • feat: add /topology command with Canvas-based agent graph overlay by @yishuiliunian in #37
  • fix: use macos-14 runner for x86_64-apple-darwin release build by @yishuiliunian in #38

New Contributors

Full Changelog: https://github.com/AgentsMesh/Loopal/commits/v0.0.1-alpha

Full Changelog: https://github.com/AgentsMesh/Loopal/commits/v0.0.1-alpha