<!-- 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 chartgenerates a real chart, not a placeholder - deferred (unchanged)
Version Index
| Version | Date | Theme |
|---|---|---|
| 0.9.24 | 2026-09-14 | — |
| 0.9.23 | 2026-09-09 | binary push frames + platform perf pass, long-task agent… |
| 0.9.22 | 2026-09-03 | dialogs rebuilt single-page, Data Explorer detail grows… |
| 0.9.21 | 2026-08-29 | security hardening, backups, observability, in-app server… |
| 0.9.20 | 2026-08-26 | agent capability, open model catalog, Jetson |
| 0.9.19 | 2026-08-21 | — |
| 0.9.18 | 2026-08-19 | — |
| 0.9.17 | 2026-08-16 | — |
| 0.9.16 | 2026-08-11 | — |
| 0.9.15 | 2026-08-04 | — |
| 0.9.14 | 2026-07-31 | — |
| 0.9.13 | 2026-07-30 | — |
| 0.9.12 | 2026-07-27 | — |
| 0.9.11 | 2026-07-22 | — |
| 0.9.10 | 2026-07-21 | — |
| 0.9.9 | 2026-07-17 | — |
| 0.9.8 | 2026-07-16 | — |
| 0.9.7 | 2026-07-15 | — |
| 0.9.6 | 2026-07-15 | — |
| 0.9.5 | 2026-07-13 | — |
| 0.9.4 | 2026-07-10 | — |
| 0.9.3 | 2026-07-09 | — |
| 0.9.2 | 2026-07-07 | — |
| 0.9.1 | 2026-07-06 | — |
| 0.8.25 | 2026-06-26 | — |
| 0.8.24 | 2026-06-26 | — |
| 0.8.23 | 2026-06-25 | — |
| 0.8.22 | 2026-06-23 | — |
| 0.8.21 | 2026-06-22 | — |
| 0.8.20 | 2026-06-22 | — |
| 0.8.19 | 2026-06-18 | — |
| 0.8.18 | 2026-06-17 | — |
| 0.8.17 | 2026-06-17 | — |
| 0.8.16 | 2026-06-16 | — |
| 0.8.15 | 2026-06-16 | — |
| 0.8.13 | 2026-06-14 | — |
| 0.8.12 | 2026-06-12 | — |
| 0.8.11 | 2026-06-11 | — |
| 0.8.10 | 2026-06-11 | — |
| 0.8.9 | 2026-06-10 | — |
| 0.8.8 | 2026-06-09 | — |
| 0.8.7 | 2026-06-08 | — |
> Full history and details: NeoMind CHANGELOG.