Skip to main content

<!-- AUTO-GENERATED by scripts/gen-neomind-changelog.js — do not edit by hand; regenerated on every deploy -->

Release Notes

This page is generated from the official NeoMind CHANGELOG and refreshed on every wiki deploy. For upgrade steps see Install & Upgrade.

Current: NeoMind 1.1.1 (2026-09-30)​

the watermark transcript: chat hardened end to end

  • fix(agent): a small model could not call image_edit correctly — The published operations schema declared only a type enum — nothing anywhere said that draw_text needs text, crop needs x,y,width,height. Weak models guessed, serde…
  • fix(api): the flat image route regressed to a 400 — The img-T1 storage rework made GET /api/images/<file> require the three-segment device layout, breaking every URL image_edit returns — chat markdown images rendered as…
  • feat(chat): the narration-collapse guard — when the model says it will and… — A text-only round that promises an action ("我现在使用 image_edit 工具…") used to end the turn with that promise as the answer. All three tool loops (text chat, multimodal…
  • feat(chat): context compression you can see and steer — The usage ring's card gains Compact and Clear actions (POST /api/sessions/:id/compact with force semantics, POST /api/sessions/:id/clear), on both chat surfaces (page…
  • fix(agent): the user's exact words survive compression — The last three user messages are never covered by a summary — a paraphrase loses the draw-text string, the threshold, the name. Hard-budget eviction now drops…
  • fix(agent): image chats stopped fitting their own budget — Per-image token cost was estimated at 85; real vision backends charge 700–2000+. Now 1024, and history images are stripped beyond the two most recent image-bearing…
  • feat(web): patrol and qa agent templates — the uncovered matrix cells — The nine presets covered six of nine derivation×schedule cells. patrol (定���巡检处置) fills the valuable one: an autonomous agent on a clock — unattended periodic…
  • feat(web,api): per-agent tool gating in the editor — Focused and Free agents can now be fenced: an "allow tool use" switch (off = a text-only agent) and an optional tool whitelist over the server's live tool catalog…
  • fix(agent): image_edit colors accept CSS forms and identical re-calls are reused — A small model asking for rgba(0,0,0,0.7) as a text background got serde's raw "invalid digit found in string" — nothing naming the field or the accepted formats — and…
  • fix(chat): an unparseable WS frame now gets an error frame back — Same failure shape as the path-prefix drop, one layer down: a text frame that failed ChatRequest parsing fell through the dispatch silently — nothing in the logs above…
  • fix(chat): messages starting with a path were silently dropped — The WS chat handler carried a legacy filter that discarded ANY message beginning with / as a "control command" — while control traffic has been structured (sessionId…
  • fix(i18n): dynamic key families can no longer leak raw keys — The notify card built its keys at runtime (creator.notify.on${k}), invisible to the literal-key scanner — onAlways / onJudgment and their descriptions rendered as raw…
  • feat(chat): three prompt rules, locked by tests — Tool-produced images must be embedded (!desc), never answered with a file path or ls output; image edits apply exactly what was asked — no unrequested annotations, no…
  • test — MockLlmRuntime-driven behavior tests cover the narration guard on all three loops; compact/clear are exercised through the HTTP router (force mode, fallback summary,…
  • feat(skills,web): shipped alongside the hardening — Skill triggers learned the vocabulary users actually use: agents are also "jobs", "AI tasks", 盯盘/巡检任务 ("create a job", "建个AI job", "帮我盯着" now route to…

Recent Versions​

1.1.0 (2026-09-24)​

the agent kernel: three execution shapes, one runtime, and a conclusion you can check

  • Upgrade notes (1.0.0 → 1.1.0)
  • feat(web): an IM bridge says where to get its credentials
  • docs: the ADR set and the design docs are gone
  • fix(im): a conversation held over Telegram survives a restart
  • feat(api, web): About says what NeoMind itself costs the machine
  • M2 — multi-source triggering, the decision chain, and the feedback loop
  • feat(agent): an event agent can require every source, inside a time window
  • feat(rules): RunOperator — a rule can run a Structured operator
  • feat(messages, api, web): a dismissed alert, and what the dismissals add up to
  • feat(api, web): an alert says which execution sent it
  • feat(agent, web): a published field carries its run and the model's confidence
  • fix(agent): a run with nothing to read no longer publishes a conclusion
  • fix(api, web): a point's metadata reaches the caller — it was never only a JSON gap
  • fix(storage): a restart no longer moves AI fields out from under their source
  • feat(chat, im): ask an agent what it concluded, or ask it to look again
  • fix(storage): the in-memory stores are actually in memory
  • fix(cli, agent): a flag that promised tool chaining and did nothing
  • feat(agent, web): a task can decide for itself whether to say anything
  • M1 — the structured agent (L0 operator), S1 end to end
  • feat(agent): Structured execution mode — single constrained inference, schema-validated…
  • feat(api/web): editor support, dry-run, and ai:* data sources end to end
  • M0 — the agent kernel batch: one runtime factory, one publish path, dead links gone
  • refactor(agent): runtime construction unified in the instance manager — the dual stack…
  • refactor(agent): execution memory finalization deduped — Focused branch lacked the FIFO…
  • refactor(api): single metric publish path + cross-world value converters
  • refactor(agent): dead streaming entry points removed
  • chore(web) / docs

1.0.0 (2026-09-20)​

the architecture release: seven monoliths split, first-load bundle halved, cancellation tested, 96 any-typed

  • Upgrade notes (0.9.24 → 1.0.0)
  • chore(web): any-debt second batch — 43 more sites typed (ratchet 519 → 478)
  • refactor(agent): agent/mod.rs (3406 lines) — the seventh giant
  • chore(web): any-debt — 100 sites typed at the seams across five files (ratchet 614 → 519)
  • refactor: two more giants split — openai.rs and mqtt.rs
  • chore(web): lint batch — ratchet 626 → 614
  • refactor: the monolith-splitting batch — timeseries, transform, runner (3 of the 4…
  • test(agent): the deferred scheduler-cancellation harness — implemented
  • chore: disk headroom
  • perf(web): eager bundle 3.6MB → 1.9MB — manualChunks was defeating route lazy()
  • perf(web): bundle audit — route lazy is real but first-load eats everything; first…
  • test(data-push): scheduler-loop integration — interval cadence + bounded teardown
  • test(web): save-contract coverage for the three highest-regression paths
  • refactor(web): AgentEditorFullScreen (3054 lines) split — editor subcomponents extracted
  • refactor: extensions.rs (5233 lines) split into 10 domain modules
  • robustness: lock-poison recovery on runtime paths — one panic can no longer cascade
  • fix(extension-runner): stale imports left by the host.rs split — CI clippy was red
  • ops: verify-all.sh — the CI gates as one local command
  • docs: configuration reference (code-maintained) + wiki sync
  • ops: fresh-install agent auth bootstrap
  • storage: chat-session retention (opt-in)
  • verification: fresh-install agent-auth 401 case closed
  • web: eslint debt −365 total this iteration (ratchet 1079 → 714)
  • web: automation-builder smoke tests
  • web: eslint debt −233 (ratchet 1079 → 846)
  • refactor: extension-runner host module extracted
  • ops: data-dir split made loud + strict-override escape hatch
  • fix(web): WebSocket connect livelock — both stream layers
  • chat: cross-talk fixed — stream events filtered by session
  • ci: ESLint warning ratchet
  • web: api.ts split into domain modules
  • web: first component/hook tests for the chat core
  • chat: BuildCard / build_meta removed — speculative feature, zero observable behavior…
  • chat: one shared stream state machine (useChatStream) — both surfaces, zero duplication
  • sessions: history pagination (opt-in, backward-compatible)
  • cleanup
  • extension-runner: WASM linear memory truly capped (per-store ResourceLimiter)
  • cli: neomind widget create --widget-type chart generates a real chart, not a placeholder
  • deferred (unchanged)

Version Index​

VersionDateTheme
0.9.242026-09-14—
0.9.232026-09-09binary push frames + platform perf pass, long-task agent…
0.9.222026-09-03dialogs rebuilt single-page, Data Explorer detail grows…
0.9.212026-08-29security hardening, backups, observability, in-app server…
0.9.202026-08-26agent capability, open model catalog, Jetson
0.9.192026-08-21—
0.9.182026-08-19—
0.9.172026-08-16—
0.9.162026-08-11—
0.9.152026-08-04—
0.9.142026-07-31—
0.9.132026-07-30—
0.9.122026-07-27—
0.9.112026-07-22—
0.9.102026-07-21—
0.9.92026-07-17—
0.9.82026-07-16—
0.9.72026-07-15—
0.9.62026-07-15—
0.9.52026-07-13—
0.9.42026-07-10—
0.9.32026-07-09—
0.9.22026-07-07—
0.9.12026-07-06—
0.8.252026-06-26—
0.8.242026-06-26—
0.8.232026-06-25—
0.8.222026-06-23—
0.8.212026-06-22—
0.8.202026-06-22—
0.8.192026-06-18—
0.8.182026-06-17—
0.8.172026-06-17—
0.8.162026-06-16—
0.8.152026-06-16—
0.8.132026-06-14—
0.8.122026-06-12—
0.8.112026-06-11—
0.8.102026-06-11—
0.8.92026-06-10—
0.8.82026-06-09—
0.8.72026-06-08—

> Full history and details: NeoMind CHANGELOG.