v0.8.15 / v0.11.3
LingTai TUI/Portal v0.8.15 + Kernel v0.11.3
This release pairs TUI/Portal v0.8.15 with Kernel v0.11.3 and centers on operating the runtime: more visibility and control from the TUI (a skill-backed, multilingual `/help` command, `/notification` for read-only notification inspection, a daemon browser, daemon counts in kanban, tool-call display controls, adaptive mail input, and `/clear` routed through kernel context clear), and a safer agent runtime under real workloads (the nested secondary tool-call channel is removed and residual stale `secondary` args are ignored/logged, notification sync stops leaking diary-looking synthesized text into visible conversation history, top-level tool calls gain lifecycle tracing plus API-call IDs that group tool batches, with enriched error results, plus a strict relay-compatible avatar schema, repeated-tool-error recovery, OpenAI Responses compact-threshold handling, a stale-notification version guard, refresh recovery from stale processes, MCP stale-stdio restart, and daemon limit / dead-parent cleanup). Knowledge and skill surfaces become more teachable — molt history knowledge entries, a strengthened pre-molt checklist, textbook distillation, a read-only preset-health subskill, optional skill repository remotes, a LICC chat tutorial, and Graphify / cyclic-manifold docs — and research and setup paths get more practical with an authorized-publisher PDF tier, in-house publisher extraction, a Zotero institutional handoff, an academic evidence gate, an install.sh writable-bin fallback, an AED max-attempts setting, and a Codex service-tier preset. Candidate window: 189 files changed, +15,541 / -3,428 lines across 44 first-parent merged PRs (25 TUI/Portal + 19 kernel), plus small direct/doc commits and star-count chores. Final release validation is still to be completed before tag, PyPI, and Homebrew publication.
Upgrade / runtime
This is the published release log for TUI/Portal v0.8.15 and Kernel/runtime package lingtai==0.11.3. Ordinary LingTai projects upgrade through the TUI/Homebrew flow; bare pip install lingtai remains a release, diagnostic, or clean-venv validation path rather than the normal user upgrade route.
New features and improvements
-
01
Operators can see and control the runtime better
The most user-visible work in this release is on the TUI itself: commands and surfaces that let an operator inspect what the agent network is doing and steer it without leaving the terminal.
- A
/helpcommand renders markdown slash-command docs in the TUI; the skill-backed multilingual help assets become the canonical command reference, recipe prompts point at/helpinstead of duplicating command lists, and the viewer now routes key/mouse input correctly soq/Esc and scrolling work (#277, #279, #281). - A
/notificationcommand opens a read-only Markdown viewer over the active agent’s.notification/*.json, including an aggregate block plus per-channel entries andrreload support (#283). - A TUI daemon browser page lets operators see and navigate running daemons (#275), and the kanban view now shows daemon counts (#207).
- Tool-call display controls add truncation (off by default), timestamp settings, and API-call batch grouping so noisy tool output can be tamed and separated by LLM round-trip (#276, #282).
- Mail input height adapts to content (#161), and
/clearis routed through the kernel context clear so the TUI and kernel stay in sync (#222).
Why it matters:A multi-agent runtime is only operable if a human can quickly see what is running and reduce noise on demand. These changes make the TUI the single place to inspect and steer daemons, mail, and command help.
- A
-
02
The agent runtime becomes safer under real workloads
Kernel v0.11.3 concentrates on failure modes that only show up once agents run continuously: stale resources, backend-incompatible payloads, and recursive calls that should never escalate privileges. The nested secondary tool-call channel — first restricted to read-only, then removed outright in this window — is the clearest example; notification sync now uses tool-only synthesized pairs instead of visible diary-looking text; and top-level tool calls now carry lifecycle tracing.
- The nested secondary tool-call channel was first narrowed to read-only (#236, with strengthened trigger guidance in #234), then removed entirely: the reserved nested
secondaryschema, module, and execution path are gone, residual stalesecondaryargs are ignored and logged rather than dispatched, notification/email guidance moves to top-level reads plus direct acknowledgements, and provider-visible_secondarymetadata is dropped from spill manifests (#241; focused tests 181 passed, full suite 2072 passed / 2 skipped). Notification sync then changed the normal success path to inject only a synthesizedsystem(action="notification")tool-call/result pair, keeping summary text log-only so notification summaries no longer look like diary/user text in visible history (#249). - Top-level provider tool calls gain Phase 1 lifecycle tracing in the ToolExecutor: a stable
tool_trace_idthreads events across received / normalized / validation / approval / dispatch / durable-log / model-visible stages and into existing tool logs, enriched tool-error results retain model-visible output, and each LLM round-trip now carries anapi_call_idthrough LLM and tool events so the TUI can group tool batches from source-of-truth event data (#242, #246, #247). - The avatar schema is reshaped for strict API relay compatibility (#226), repeated tool errors now pair into a hard stop instead of looping (#202), and tool-loop guard non-dispatch recovery now closes blocked calls explicitly instead of leaving pending tool-call wire state (#217).
- OpenAI Responses honors the configured compact threshold (#227); stale notification-channel dismiss is guarded by a version check (#231); refresh recovers from a stale agent process (#224); and stale MCP stdio sessions are restarted instead of left dead (#222, kernel).
- Daemon limits are honored (configured max emanations, #225) and dead-parent daemon records are reaped on startup (#233).
Why it matters:Long-running agents accumulate exactly these conditions — dropped sessions, rejected schemas, recursive sends. Closing them reduces silent hangs and privilege surprises, which matters more than any single new feature for an always-on network.
- The nested secondary tool-call channel was first narrowed to read-only (#236, with strengthened trigger guidance in #234), then removed entirely: the reserved nested
-
03
Knowledge and skill surfaces become more teachable
Several changes make the manuals and skills agents read either more durable across molts or more directly useful for a specific task.
- Molt / session-journal history is documented as knowledge entries under the psyche-manual, with a template asset and a
molt_countfield in entries (#237); session journals themselves are documented as sub-knowledge (kernel #240), and the pre-molt LingTai update checklist plus memory guidance is strengthened (#272). - A new textbook-distillation guide (#273) and a read-only preset-health diagnostic subskill (#265) are added; skill / library pages can expose an optional repository remote (#271).
- A tutorial explains the LICC chat command flow (#274), and docs cover the Graphify repo-map (#264) and the cyclic-manifold architecture (#267).
- The bash-manual adds a hard rule that long-running agent/coding CLIs (
claude -p,codex exec,opencode run, the Cursor agent CLI) must run via bash async + poll rather than synchronous bash, so the agent stays responsive and avoids ACTIVE blockage (kernel #243).
Why it matters:Skills are how a fresh agent learns the system. Recording molt history as structured knowledge and adding focused guides keeps that learning consistent across successors instead of relying on whoever happens to be resident.
- Molt / session-journal history is documented as knowledge entries under the psyche-manual, with a template asset and a
-
04
Research and setup paths become more practical
The academic-research and first-run paths pick up fixes that matter on real machines and against real publishers.
- Academic research gains an authorized publisher PDF tier (#257) and an in-house publisher extractor for publisher metadata (#258), plus a documented Zotero institutional full-text handoff workflow (#266) and an academic evidence verification gate (#269).
-
install.shfalls back to a writable bin directory instead of aborting on non-Homebrew systems (#240), improving community install reliability, and development prerequisites are documented (#260). - Setup / first-run exposes an AED max-attempts setting (#253), and a Codex preset service-tier option is added (#256).
Why it matters:These are the paths a new user and a research agent hit first. Making installs survive non-standard machines and letting research reach authorized full text removes early friction that otherwise blocks real use.
Contributors
Thanks to everyone whose commits, co-authored changes, PRs, reviews, assignments, or reported/closed issues are represented in this release window.
Validation
Final release validation was run from a clean release worktree at commit lingtai@d9a9.
- lingtai v0.8.14..v0.8.15 diff 111 files, +10,190 / -1,662
- lingtai-kernel v0.11.2..v0.11.3 diff 79 files, +5,352 / -1,767
- Combined release window 190 files, +15,542 / -3,429 across 44 merged PRs plus the kernel version bump
- Release status published: GitHub tags/releases, PyPI 0.11.3, and Homebrew tap 0.8.15 verified
Links
- TUI/Portal v0.8.14...v0.8.15 compare →
- TUI/Portal release v0.8.15 →
- TUI/Portal release commit d9a96fb →
- Kernel v0.11.2...v0.11.3 compare →
- Kernel release v0.11.3 →
- Kernel release commit 6ff15dd →
- PyPI lingtai 0.11.3 →
- Homebrew tap commit 2e728a6 →
- PR #277 — TUI /help command →
- PR #279 — Skill-backed multilingual TUI help →
- PR #281 — /help markdown viewer input routing →
- PR #276 — Tool call display controls →
- PR #282 — Group tool-call display by API call →
- PR #283 — TUI /notification command →
- PR #161 — Adaptive mail input height →
- PR #207 — Show daemon counts in kanban →
- PR #222 — Route TUI clear through kernel context clear →
- PR #256 — Codex preset service-tier option →
- PR #275 — TUI daemon browser →
- PR #240 — install.sh writable-bin fallback →
- PR #236 — Restrict secondary calls to read-only →
- PR #237 — Document molt history knowledge entries →
- Kernel PR #202 — Repeated tool-error hard stop pairing →
- Kernel PR #217 — Tool-loop guard non-dispatch recovery →
- Kernel PR #226 — Strict relay-compatible avatar schema →
- Kernel PR #231 — Guard stale notification dismiss →
- Kernel PR #233 — Reap dead-parent daemon records →
- Kernel PR #240 — Document session journals as sub-knowledge →
- Kernel PR #241 — Remove secondary nested tool-call channel →
- Kernel PR #242 — Trace tool-call lifecycle events →
- Kernel PR #243 — Document async bash for agent CLIs →
- Kernel PR #246 — Enrich tool error result events →
- Kernel PR #247 — Add API-call IDs to LLM/tool events →
- Kernel PR #249 — Tool-only synthesized notification sync →
- Declined PR #228 — filesystem Time Machine proposal →
- Declined PR #235 — soul flow past-self routing proposal →
- Issue #174 — textbook distillation request →
- Issue #175 — stronger pre-molt identity guidance request →
- Issue #177 — cyclic manifold architecture request →
- Issue #179 — academic evidence gate request →
- Issue #236 — README development prerequisites report →
- Issue #238 — closed not-planned rewind proposal →
- Issue #239 — install.sh writable-bin fallback report →
- Issue #261 — closed duplicate Cloud Mail MCP addon placeholder →
- Issue #263 — closed not-planned Ctrl+T agent-switching report →
- Kernel Issue #230 — daemon completion notification replacement report →
- Kernel Issue #232 — orphaned daemon record report →