BLUN King

BLUN King 9.1.621

Published on

King only adopts a summary of your conversation if the model has confirmed that the summary is complete. If this confirmation is missing, your existing conversation history remains unchanged.

If the transfer of the summary ends unexpectedly, your existing conversation context is not replaced by the incomplete summary. The change only affects the compaction of the conversation; normal answers remain unchanged.

A few errors when saving a session remain open; they are not fixed with this update.

BLUN King

BLUN King 9.1.620

Published on

On Windows, the console terminates completely when you close the window, so that “already running” no longer appears on the next start.

The update fixes the termination of the console process when the window is closed. A console that is actually still running keeps exclusive access to its session.

BLUN King

BLUN King 9.1.619

Published on

A single earlier error when compacting the conversation no longer locks your session: after a successful compaction, King only counts new, directly consecutive errors.

A single earlier error when compacting the conversation no longer locks your session: after a successful compaction, King only counts new, directly consecutive errors. If the compaction fails twice in a row, the message now clearly shows “Compaction paused” instead of reporting a full context.

A few errors when saving a session and when creating a complete conversation summary remain open; they are not fixed with this update.

BLUN King

BLUN King 9.1.618

Published on

If, after you resume your session, a Telegram message arrives while King is already working, it stays in the queue and is delivered afterwards.

If, after you resume your session, a Telegram message arrives while King is already working, it stays in the queue and is delivered afterwards. King no longer shows this waiting state as an error.

On Linux x64, the terminal uses a bundled binary. As a result, it also works when npm 12 blocks installation scripts; no compiler is needed for this. To achieve this, King uses the pinned pre-release version node-pty 1.2.0-beta.15.

BLUN King

BLUN King 9.1.617

Published on

When the same session is reloaded, King no longer adds unchanged plugin instructions more than once.

When the same session is reloaded, King no longer adds unchanged plugin instructions more than once. If the instructions change, King still takes the current state into account.

Previews of large tool outputs now also take the available context window into account. You can still read offloaded outputs in full.

Use /profile or /profiles to open the profile picker. King switches only when your session is ready. Ongoing work and pending messages prevent a premature switch; in that case, your previous profile stays active.

When you stop ongoing work, King also waits for the final cleanup steps. Work that has not yet finished is not prematurely confirmed as stopped.

BLUN King

BLUN King 9.1.616

Published on

After a confirmed Telegram reply, King picks up further messages addressed to you at the next safe step, even during an ongoing turn.

After a confirmed Telegram reply, King picks up further messages addressed to you at the next safe step, even during an ongoing turn. A reply that has already been delivered no longer holds up the queue. Replies stay assigned to their respective chats.

If you cancel a turn, Telegram messages that have not yet been picked up are kept for the next delivery. King acknowledges them only once the session actually picks them up.

BLUN King

BLUN King 9.1.615

Published on

King keeps large tool catalogs available via tool search and adjusts the tool budget to the provider's context window.

King keeps large tool catalogs available via tool search without sending all optional tool schemas to the model. If the provider reports a smaller context window, King adjusts the tool budget; found tools remain available in the next step.

When needed, King offloads large tool outputs earlier than before. You can still retrieve the full output as before, provided it can be displayed safely.

Normal Telegram replies and edits to messages are no longer held back because of a missing language release. An answer review you have set up remains active.

BLUN King

BLUN King 9.1.614

Published on

Oversized AGENTS.md and AGENTS.override.md files no longer stop a turn just because of their size.

Outside the King console, King reads up to 32 KiB in total from instruction files and tells you once per session how many bytes were omitted.

In the King console, the files remain complete as long as the request limit allows it.

Symlinks and unsafe paths remain blocked.

BLUN King

BLUN King 9.1.613

Published on

King detects oversized model requests before sending them.

In the King console, King reads at most 32 KiB from each AGENTS.md and AGENTS.override.md file. Anything beyond that is omitted, and King shows you how many bytes were omitted.

King now estimates the size of the entire model request before sending, including instructions, history, tool definitions, and image data. As it approaches the server's byte limit, stepwise compaction begins. If a request cannot be split safely, King aborts rather than silently discarding the stored history.

King stores completed tool calls locally as metadata: tool name, time, status, and, for file tools, the path where applicable. Inputs, outputs, commands, and keys are not stored. With /memory tools you can search the entries of your profile.

The context diagnostics show additional figures on request composition. An optional phase measurement records the time up to the model call without logging contents.

The usage display includes thinking tokens reported separately, if the provider supplies them.

Not released, replaced by 9.1.613

BLUN King 9.1.612

Published on

9.1.612 was not released as a customer update. The early byte protection did not apply to a request above 900 KB when the history alone stayed below 600 KB. 9.1.613 replaces this version.

BLUN King

BLUN King 9.1.611

Published on

Large compaction requests stay within the server's byte limit.

  • King splits an oversized compaction request into chronological steps based on request size. Compaction can thus continue even when the request contains more bytes than the server accepts at once.
  • If even a single message does not fit under the limit, your saved history stays unchanged. King does not discard it to force compaction.

This does not demonstrate a shorter model wait time or reduced token usage. An update does not restart an already running King session.

BLUN King

BLUN King 9.1.610

Published on

You can install King on Linux again and start profiles again, and a second King start on Windows no longer fails with a misleading private-ACL message.

  • Linux is back on the list of supported operating systems of the npm package. If you are on Linux with an older version, you install 9.1.610 through the normal updater.
  • Explicit --profile starts and existing profile-name shortcuts lead to the selected profile's directory. A bare unknown name no longer creates an empty profile silently; you create a new profile deliberately with --profile.
  • If an existing profile lacks its own sign-in, King offers /login instead of stopping at a missing blun/king model configuration.
  • On Windows, King can verify private directories even while the Telegram bridge keeps a plugin directory open. TEMP and TMP are passed to the ACL helper, and for directory failures King names the affected path and the actual cause.
  • If an interactive King is already running, King detects it before hardening the private ACLs and reports its PID instead of presenting a second start as a private-ACL error.

An empty profile does not inherit sign-in data from the shared home directory in 9.1.610. The current /login prompt can still show "OAuth login expired" even if this profile has never signed in.

The Linux update path from 9.1.114 to 9.1.610 was exercised after publication. The Windows update path from 9.1.609 to 9.1.610 is not measured.

An update does not restart an already running King session.

BLUN King

BLUN King 9.1.609

Published on

Open the effort picker with Ctrl+L without losing your editor draft.

  • Ctrl+L opens the existing effort picker without losing your editor draft. It reuses the existing effort settings and model restrictions instead of adding a second configuration path.
  • The existing rule for running sessions remains: an effort change during active work is rejected, not queued for later. The shortcut is ignored during replay or editor takeover.

These changes do not demonstrate faster response times in production or reduced billed token usage, and they do not deliver full OpenClaw parity.

BLUN King

BLUN King 9.1.608

Published on

In Telegram groups, King now only receives messages that mention him. Your multiple-choice selections and step-by-step cancellation of questions are preserved.

  • In Telegram groups, messages that do not address King only enter the session context after the mention check. Anyone who explicitly disabled the check keeps that behavior.
  • Your own multiple-choice selections and step-by-step cancellation of questions are preserved. The goal footer runs on a shared refresh timer.
  • The Windows ACL transfer overhead is reduced without weakening permission validation. Recovery from transient failures while replacing the configuration is bounded; writer ownership is retained.
  • Before retrying, King checks that a concurrently removed Windows writer marker has actually disappeared. Unreadable existing markers still cause an abort.

These changes do not demonstrate faster response times in production or reduced billed token usage, and they do not deliver full OpenClaw parity.

BLUN King

BLUN King 9.1.607

Published on

Your last selected session comes back, failed writes are reported accurately, and every HTTP attempt receives a start timestamp.

  • Optional restoration of the last selected session can be enabled with resume_last_selected in tui.toml. The selection applies to the verified account, runtime, agent, and workspace. Normal startup remains unchanged and explicit session choices take precedence; unavailable selections fall back to a fresh session, not to a different one.
  • After a failed activation, the previous selection is retained. No selection is saved under an account that changed during activation.
  • Failed file writes are not marked as successful. The existing continuation protocol for complete lines in writes above 2,048 UTF-8 bytes is explained; the limit is not raised and writes are not retried automatically.
  • Immediately before each HTTP attempt, a wall-clock start timestamp is recorded for diagnostic correlation. Neither request contents nor credentials are included in the diagnostics.
  • Unicode characters outside the Basic Multilingual Plane (for example, emoji) are fully preserved at the existing memory-budget boundaries, without raising those budgets or creating additional storage.

These changes do not demonstrate faster response times in production or reduced billed token usage, and they do not deliver full gateway parity or exclude Telegram messages that do not address King from the context.

BLUN King

BLUN King 9.1.606

Published on

When you resume a session, the current transcript pages appear first; older pages are loaded by the existing transcript navigation.

  • When you resume an interactive session, the current transcript pages appear first; older pages are loaded by the existing transcript navigation. The complete stored history and the active model context are preserved.
  • A display target of 200 replay records applies at startup. You can set --history-limit from 1 to 2,000 to adjust the display of the first and older pages; complete turns and tool pairs may exceed the target.
  • The first display of skill and plugin activations is preserved across page boundaries. The Home scroll position is corrected so that loading older pages no longer leaves a blank screen.

These changes reduce the initial transcript rendering work. They do not demonstrate faster model response times, reduced token usage, or lower bills; they do not improve provider caching or limit how much is read from disk at startup.

BLUN King

BLUN King 9.1.605

Published on

Check context sources, control running tasks, and pass a first message to the console at startup. Local history processing and compaction checks have been extended.

  • Local session histories are replayed in batches. Archived display pages can be found without scanning all previous blocks. The complete stored history, the archive integrity checks, and the existing recovery mechanism are retained.
  • Repeated tool results are prepared consistently for the model context between logged compactions. Complete local outputs and existing read permissions are preserved. Outputs are not offloaded unless they can be retrieved again through the guaranteed recovery path.
  • The final automatic compaction replaces the active context only when it shrinks the history according to the same estimation method. When it is rejected, the original history is retained. The optional trigger max_request_history_bytes uses the existing compaction controls, is disabled by default, and does not bound the entire request body sent to the provider.
  • Context diagnostics now provide separate views and source attribution for instructions, memory, skills, and earlier messages. Serialized content bytes, local token estimates, and reported usage remain separate.
  • Session ownership is retained across waiting tasks, delayed events, follow-up questions, and configuration changes. A second active writer to the same session is rejected; concurrent changes to the log are not allowed.
  • The additional agent/session line in the footer is removed. Individual sessions can still be targeted for control and diagnostics. The existing King interface, the managed models, and the permission boundaries remain unchanged.
  • --message passes a first message for the interactive start. After the startup consent prompt and session selection, it goes through the regular message check and queue. Its content is not interpreted as a slash or shell command.
  • The interface contract of the bundled guard service remains unchanged. This release does not demonstrate faster responses in production, lower provider bills, full functional parity with OpenClaw, or a bounded amount of history read when the session log is first loaded.

/abort cancels the running task without discarding pending inputs. /stop additionally discards the pending inputs. /exit still closes the console. These are local console commands, not additional remote Telegram commands.

Checks on the 9.1.605 package: 238 test files with 6,900 tests, plus 40 staging checks including 25 native terminal checks. The test of an isolated update from 9.1.604 via the published candidate tag using the real installer succeeded. These checks do not demonstrate shorter warm-up times in a running session or full functional parity with OpenClaw.

BLUN King

BLUN King 9.1.604

Published on

Check request size and context sources, load tools on demand, and control incoming messages within each session.

  • /context doctor and /tokens distinguish the byte size of the serialized request from estimated token counts and show the recorded shares of rules, memory, skills, and tool definitions.
  • Medium-sized tool catalogs are loaded on demand through the existing search; the tools remain findable and executable.
  • /queue controls messages within each session. Regular messages in the queue no longer interrupt work automatically after 30 seconds.
  • Session selection accepts exact IDs or titles as well as unique ID prefixes; the footer shows the assigned agent and the session.
  • Each HTTP attempt receives a new request ID unless the caller provides one. Diagnostics do not affect billing.
  • The bundled versions of AgentSpine and Translate Native remain unchanged. Lower costs and faster responses in production have not been demonstrated.
  • /question: reopens pending follow-up questions. Collapsing does not answer or discard a question.

Request bytes, estimated token counts, accumulated session usage, and billed tokens are different quantities. The usage display also accounts for the response check. /usage cost with daily or monthly costs is not part of this release. Lower costs or faster responses in production have not been demonstrated.

BLUN King

BLUN King 9.1.603

Published on

Choose your working folder in a Windows dialog. When the console is started from System32, it now suggests your user folder.

  • When you choose a different working folder on Windows, a folder dialog opens. You can still enter the path by hand. If you cancel the dialog, you return to the folder selection without a folder being selected.
  • If no folder dialog is available, the console asks for the path. On other operating systems, path entry remains unchanged.
  • If the folder inherited at startup, or the saved folder, is inside the Windows directory, the folder selection suggests your user folder. Manually entered paths are still checked as before.

The versions of AgentSpine and Language Guard remain unchanged from 9.1.602. This update does not demonstrate a speed improvement for running sessions.

Git Bash is still required on Windows. If the console reports that Git Bash is missing, install Git for Windows. Then open the command prompt again before restarting king.

BLUN King · Published

BLUN King 9.1.602

Published on

A dedicated private folder for older tool outputs when inherited Windows permissions prevent offloading.

  • Eligible older tool outputs are stored in a dedicated private folder when inherited Windows permissions prevent offloading. Existing files, permissions, and the complete session history remain unchanged.
  • Integrity checks, read permissions, and the fallback to the full context are retained if an archived output cannot be restored. AgentSpine 0.73.0 and Language Guard 6.20.0 remain unchanged from 9.1.601.

Shorter response times in production or lower billed token usage have not yet been demonstrated.

BLUN King · Published

BLUN King 9.1.601

Published on

Inputs remain in the queue, older tool outputs receive verified references, and throttled response checks are retried a limited number of times.

  • When background work gets its turn first, terminal inputs remain in the queue in their original order. Each input is displayed only once.
  • Eligible older tool outputs are replaced in model requests by verified references to private files. The complete history and the results of the current conversation step are retained. If reloading is not possible, not allowed, or the content has been changed, the complete output is sent instead.
  • A throttled native response check is retried once with the same response draft. The provider's stored waiting period applies. Tool calls that have already completed are not repeated, and unchecked texts are not released.
  • Up to 2,048 output tokens are reserved as a buffer for inaccuracies in the input estimate. The context window is not reduced; smaller explicitly set output limits remain unchanged.

These changes do not demonstrate lower billed token usage or shorter response times in production. They also do not fix every server-side HTTP 502 error.

BLUN King · Published

BLUN King 9.1.600

Published on

Response checking with fixed time limits and pinned component versions.

BLUN King 9.1.600 is published. npm and the public update manifest match. Publication does not mean that it has been installed on your machine or has passed acceptance testing in production.

Bounded response checking

  • General checkers keep the previous 30-second limit. From the start signal of the trusted host component, the native language check gets up to 90 seconds to produce its first substantive text, once per outer check attempt.
  • Substantive text within the allowed output length, as well as the ordered transitions to release and to receipt verification, each reset the waiting period to 30 seconds.
  • Independently of this, each outer check attempt has an overall limit of 120 seconds. Progress cannot extend this limit. The maximum of two outer check attempts still applies.
  • Before a release is accepted, the time actually elapsed is checked again. Even with delayed timer calls, an expired review attempt stays locked; late progress cannot renew an expired deadline.

Abort signals are still respected. The binding to the exact response text, the validity period of the release receipt, and the authorization continue to be checked.

Bundled components

Version 9.1.600 contains AgentSpine 0.73.0 and Translate Native 6.155.0. The guard protocol remains unchanged at 6.20.0.

Known limitations

The new time limits do not demonstrate a general fix for HTTP 502 errors in production. The open observations from 9.1.599 remain open until they are verified separately in production.

Context and help

A prompt that must be fully retained is no longer silently truncated just to fit a smaller hard model window. With a new, explicitly defined split of the user messages to retain using the default budget of 20,000 tokens, the adjustment can be completed within the same compaction. For later or restored prefixes, this must not cause any further requirements to be discarded. The request must still fit the hard model window.

Help-only invocations with --help or -h no longer create a runtime diagnostic state. When prompt and help arguments are combined, the previous runtime behavior is retained.

BLUN King · September 18, 2026

BLUN King 9.1.599

Published on

Traceable individual approvals for personal memory and additional corrections for context overruns.

Approval requests for personal memory show understandable action titles in the selected language and complete previews of the actual setting changes or of the text to be saved. Control characters are visibly masked; the original content remains unchanged.

Valid memory changes must be approved individually; invalid input can only be rejected. A session approval does not automatically approve waiting requests that require an individual approval.

The package check covers 37 functional areas with 199 mandatory checks, 158 check runs, and 4,905 distinct passing tests. In addition, the updates from 9.1.597 and the local intermediate build 9.1.598 to 9.1.599 were checked in isolated installations using the unchanged updater and installation path. Both tests detected the version through the public update sources and checked all 918 files of the release archive.

The notes in README.md and CHANGELOG.md of the unchanged 9.1.599 package describe the release candidate as it stood at packaging time. They were not retroactively changed after the local installation. This public page separately tracks the release status and the limitations observed later.

Known limitations in 9.1.599

Repeated HTTP 502 responses were still observed in production, sometimes followed by successful requests. The context corrections are not a general fix for provider or network errors.

The language check can abort a response with missing-language-character-profile or suspected-ascii-substitution. This finding remains open; 9.1.599 contains no proven fix for it.

A response to the sent image was confirmed by the user. An independent review of the image interpretation and the visual acceptance of the input and status lines are still pending. Passing package checks are not a general all-clear for these flows.

Carried over from the local intermediate build 9.1.598

No date

9.1.598 was checked and installed locally but not published as a separate npm update. The following changes are included in 9.1.599:

  • On a context rejection, lower bounds for the number of input tokens are distinguished from exact values. For a reported lower bound, the output limit is reduced once; no messages or tools are discarded. Abort signals and the limit on further attempts remain effective. This specifically fixes the error in the output-limit calculation reproduced in 9.1.597.
  • The original 150 rotating activity words are included again. No additional model requests are made to display them.
  • The trusted AgentSpine input hook now receives a compact media reference with type, SHA-256 checksum, and size instead of the complete media data. The full attachments for the model and the existing protection checks remain. This alone does not yet demonstrate successful image interpretation in production.

New in 9.1.597

Published on

Bounded recovery on explicitly reported context overruns, including when wrapped in a gateway error response.

When a request is rejected before output begins because of a confirmed context overrun, King can make one limited retry with a smaller output limit. Such errors wrapped in a 502 response are also detected. Messages, tools, smaller explicitly chosen output limits, and abort signals are retained. A stream that has already started is not replayed.

This does not fix all provider or network errors. General connection drops and service outages must still be examined using their own error data.

Known limitation in 9.1.597: If the server only reports a lower bound for the number of input tokens, the retry can fail again and trigger unnecessary compactions. This case was reproduced on September 17, 2026, after publication. The additional fix from the local intermediate build 9.1.598 is included in 9.1.599.

The checks covered 36 functional areas with 183 mandatory checks and 4,407 distinct passing tests, plus the real update from 9.1.596 to 9.1.597. This package check does not replace an application test of an already opened customer session.

New in 9.1.596

Published on

Automatic interruptions in favor of waiting Telegram messages are distinguished from real manual aborts. Such a queue interruption is no longer falsely reported as an Escape key press. The waiting period, the protection rules for running tools, and the behavior on a real manual abort are retained.

New in 9.1.595

Published on

Optional tool schemas are loaded on demand through ToolSearch and kept in bounded storage. Large skill catalogs are provided compactly and page by page. Search, later MCP extensions, and normal permission checks are retained.

For short greetings, King can use a limited excerpt of the recent dialogue without deleting stored messages or truncating system instructions. For a subsequent work task, King again takes the retained work history into account. The context accounting remains intact even after a session is resumed. No fixed token usage per greeting is guaranteed.

New in 9.1.594

Published on

  • Private Telegram replies remain possible while group messages wait. The assignment of slash commands is retained.
  • Long Retry-After waiting periods are honored; when a session is resumed, the remaining pause is restored.
  • If the accompanying description is discarded, a tool step that has already completed is still processed. The discarded description is not published, and the check of the final response is not weakened.
  • The bounded recovery functions for multi-part writes are available again. This also applies to shell time limits, task control, and session recovery.
  • Input, quota lines, activity display, expandable tasks, and tool outputs with source attribution remain visible during streaming and history navigation.
  • Complete console regression evidence is required before packaging; the public update metadata is checked for consistency.

Intermediate builds 9.1.590 to 9.1.593

These builds are present in the local release history but were not included in the public npm version listing on September 17, 2026. They are not recommended here as publicly available updates. The work on startup, resumption, permissions, activity display, and visible input is included in the evidence for 9.1.594.

New in 9.1.589

Published on

  • Verified sources of AgentSpine and Translate Native as well as verified update manifests are bundled.
  • When the agent context is loaded, the active King profile is retained.
  • Tools required for response checking remain available. Usage during response generation is recorded even when the check discards the response.
  • In the managed channel integration, group messages are routed to an agent only when it is explicitly mentioned.
  • The console shows when compaction is in progress and the effective thresholds.
  • The work budget for early compaction and the safety reserve at the request limit are retained across updates.
  • The startup update dialog, progress display, and notices about scheduled updates consistently use the selected language.
  • Technical integration identifiers and licenses are retained; visible runtime error messages are worded neutrally.
  • The installation does not restart existing sessions. A running session loads the new code at the next start.

9.1.588: withdrawn

Published on

This build was published on September 11, 2026, and subsequently marked as withdrawn on npm. The registry cites a failed compatibility check of the update manifest. Use the current stable build, not this withdrawn package.

New in 9.1.587

Published on

More stable tool catalogs, earlier automatic compaction, and a targeted retry after aborts caused by overly long thinking-only phases.

When instructions are buffered during a running work turn, the active tool catalog is also retained for the next work step. Required tools remain available. When the existing schema budget is exceeded, retained optional tool definitions are reselected.

Automatic context compaction starts earlier again. After a successful compaction that shrinks the history, King can run it again in the same turn. Lower model limits and the cap on failed attempts remain effective.

After an abort caused by an overly long thinking-only phase, King uses the existing one-time retry with thinking disabled so that the model can respond or call a tool. The following regular steps keep the chosen thinking setting; abort, release checks, and time limits remain effective.

Setting BLUN_STABLE_STEER_TOOLS=0 or BLUN_EARLY_COMPACTION=0 before starting King restores the previous behavior for the corresponding feature. The update does not rewrite existing sessions or configuration files.

New in 9.1.586

Published on

Telegram reception starts again on Windows when the old process ID of the bridge now belongs to a different process. If the process cannot be identified with certainty, King does not intervene; the other process is not terminated.

Context compaction, model settings, conversation history, and the previous Telegram delivery behavior remain unchanged.

New in 9.1.585

Published on

BLUN King · September 8, 2026

Version 9.1.585 checks the structure and the individual hits of managed WebSearch responses even when the optional search status information is missing.

A response without a valid result list is no longer reported as a successful search without results. Each hit must have a title that is neither empty nor made up solely of whitespace, a text excerpt as a string, and an absolute HTTP or HTTPS address without embedded credentials. Invalid hits cause the entire response to be rejected before results or notices about incomplete search results are returned.

Valid responses in the previous format without status information remain supported, as do empty result lists and empty strings as text excerpts. For valid responses, the order, the exact URL strings, optional date and site information, the source attributions in the output, and the handling of incomplete results remain unchanged.

Only the managed search integration is changed. Abort behavior, request authentication, FetchURL, and Telegram remain unchanged. The format check does not prove that a source is correct or current. This version introduces neither a response size limit nor a new time limit.

New in 9.1.584

Published on

Version 9.1.584 forwards the caller's abort signal through WebSearch to the managed HTTP search request, including while the response body is being read.

Searches that have already been aborted do not trigger processing at the provider. If the abort happens while credentials are being resolved, no search request is sent afterwards. Results that arrive after the abort are not returned as a successful search.

The abort checks also cover successful JSON responses, the content of error responses, and notices about incomplete search results. The handling of complete, incomplete, and empty results, the source attributions, and the regular fallback behavior during authentication remain unchanged.

This version introduces no new time limit and does not change the Telegram assignment. Shared OAuth credential renewal processes and transport implementations that ignore abort signals are not forcibly interrupted. Aborting a client request does not prove that the work on the remote server or its billing has ended.

New in 9.1.583

Published on

An abort during page fetching is now propagated up to the HTTP request.

FetchURL passes the caller's abort signal through the tool and both fetch services. A request aborted before it starts is not sent. If the abort happens while credentials are being resolved, the managed HTTP request is not started afterwards.

After a managed fetch is aborted, no local fallback fetch is started. A late result from the fetch service is withheld and not used as a source reference. For ordinary HTTP and network errors, the previous local fallback fetch remains possible.

No new time limit is introduced. A shared credential renewal and synchronous HTML processing are not forcibly interrupted. The size limit from 9.1.582 remains; Telegram routing and model requests remain unchanged.

New in 9.1.582

Published on

The local page fetch now checks the response size while reading and aborts as soon as the limit is exceeded.

The local fetch counts the incoming response bytes before decoding each data block and aborts the data stream as soon as the size limit is exceeded. If the Content-Length header is missing or wrong, the whole response is no longer read first and then rejected.

The default limit remains 10 MiB and applies to the response stream after HTTP decompression. UTF-8 characters split across multiple data blocks are preserved. Transport buffers and the data block that exceeds the limit may already be in memory; this does not imply an exact upper bound for the entire process memory.

The local fetch path is changed, including when it serves as a fallback. The research fixes from 9.1.581 remain included. Telegram routing and the waiting period for the model remain unchanged.

New in 9.1.581

Published on

In the local page fetch, empty HTML excerpts are no longer output as successful sources.

If no page content remains after cleaning and conversion, the document title alone no longer suffices for a successful fetch. Instead, the existing extraction error is returned.

Short genuine content and visible headings are preserved. Plain-text and Markdown responses remain unchanged. The fix concerns the local HTML extraction, not the managed fetch service.

The search corrections from 9.1.580 and the previous Telegram corrections remain included unchanged. This update changes neither the waiting period for the model nor the assignment of incoming messages to their recipients.

New in 9.1.580

Published on

The search archive rejects invalid historical date values for sources.

A new report is not saved when a date value of a source contains an invalid calendar day or a non-parseable time part. Missing date values remain allowed.

When stored research evidence is retrieved, older evidence with invalid date values for sources is skipped and reported with a diagnostic notice. The files are neither rewritten nor deleted. Separate valid evidence remains searchable; valid date values keep their timezone offset and precision.

The sorting of research evidence from 9.1.579 and the previous Telegram corrections are included unchanged. This update changes neither the waiting period for the model nor the assignment of incoming messages to their recipients.

New in 9.1.579

Published on

Stored research evidence is sorted by its actual fetch time when relevance is equal.

Time values with and without milliseconds are compared as UTC points in time, not as text. Relevance still takes precedence; for identical points in time, the previous order is retained.

If the same passage was captured more than once, the result keeps the provenance of the most recent fetch. Evidence that is already stored remains unchanged and is therefore not treated as newly verified.

The Telegram response correction from 9.1.578 is included unchanged, as is the cap on retries when the model only thinks without producing a response or a tool call. This update changes neither the waiting period for the model nor the semantic assignment of incoming messages.

New in 9.1.578

Published on

Bounded retries when the model only thinks and reaches the time limit, plus a targeted correction for short Telegram group responses that relate to a question.

When the model reaches the time limit while only thinking, King allows one further attempt per step. A second such timeout ends the step. The chosen thinking effort and the previous time limit remain unchanged. This cap does not shorten the wait for the first model output.

Short replies in which the agent confirms its presence may now be sent in Telegram groups when reply_to links them to an input from the same chat that is at most 30 minutes old. This input must explicitly address the agent or match a supported German or English question about its presence that starts with its configured name. Unsolicited presence messages and explanations that there is nothing to report continue to be filtered. The automatic fallback delivery in groups remains disabled.

Logs of sent and suppressed responses now contain reply_to. The exception does not apply when context is missing or ambiguous. This update adds no general recipient detection and does not prevent unnecessary model calls caused by the existing semantic addressing.

The correction applies to two exactly identified versions of managed Telegram MCP senders and also takes effect when the plugin configuration is merged at the end. The older sender uses a compatibility copy with tightly bounded changes. Inbound bridges, access settings, profiles, and plugin registries are not rewritten. Unknown or customized senders and explicitly set overrides are retained. King must be restarted after the update for the correction to load.

New in 9.1.577

Published on

No more automatic completion messages in Telegram groups. Useful answers are sent there deliberately through the Telegram reply tool.

The CLI core and the standalone Telegram bridge no longer forward an agent's normal completion text to groups automatically. Notices such as “nothing to report” therefore no longer reach the group through this automatic fallback delivery.

Replies in private chats, explicitly used reply tools, required goal results, command and status messages, and media delivery are retained. The prompt instructions for normal inputs, control messages during a running task, and group messages of the standalone bridge now contain the same delivery rule.

This does not guarantee that a model never sends an unnecessary reply through a tool call. The fix also does not prevent group messages unrelated to the agent in question from reaching the model. Mention rules, access settings, and the resolution of managed plugins remain unchanged; an update to AgentSpine or Language Guard is not included.

The updated core must be loaded by a new process. Running sessions are not restarted automatically. Existing profiles and the session history are retained.

New in 9.1.576

Published on

BLUN King 9.1.576 distinguishes C++ and C# in local research queries and contains the previously published corrections for updates, session resumption, and Telegram.

The search in local research evidence treats standalone C++ and C# as distinct terms, even with different capitalization or surrounding punctuation. Stored passages, hashes, source protection checks, Unicode normalization, collection limits, and output limits remain unchanged. No reindexing is required.

A fixed check run with 20 technical search queries and targeted regression tests for token limits verify this correction. It concerns the local search and is not a statement about the quality or capacity of WebSearch in production. All changes from 9.1.575 remain included.

New in 9.1.575

Published on

The bundled web crawler rejects responses with cf-mitigated: challenge before reading content, following redirects, or treating a missing robots file as permission to continue. Header names are matched case-insensitively; normalized values and duplicate headers are checked as well. The response status is retained in the error report.

Missing robots files without this marker and ordinary documentation pages continue through the existing flow. Pages that have already completed remain available when a later page is rejected; the error is reported as an incomplete result. This protection checks a response marker. It is neither general challenge detection nor a CAPTCHA bypass. Search providers, authentication, update locks, and the CLI core remain unchanged. All changes from 9.1.574 remain included.

New in 9.1.574

Published on

Explicitly requested updates now distinguish between a blocked update, an unavailable lock check, an unavailable private directory, an invalid installed version, and an unavailable protected installer. These cases are no longer reported uniformly as a failed package check. The change applies to German and English messages.

Update approval, lock behavior, return reasons, exit codes, and installer behavior remain unchanged. Running sessions are not terminated automatically. Packages pinned to an old internal channel still require an explicit npm installation while King is stopped; this version does not lift the pin. All changes from 9.1.573 remain included.

New in 9.1.573

Published on

The input field remains visible and focused after goal selection at startup, including after Escape is pressed or a failed goal resumption. Unsent drafts are retained. Instead of the full goal text, a compact prompt appears for continuing with or without a goal.

Ctrl+S leaves the selection without confirming the goal and is processed as a regular shortcut for the queue. Pending inputs while idle are also taken into account. Escape keeps its previous sequence: first clear the queue, then abort the active run on the next Escape. The session history is not deleted automatically.

This version does not reconstruct delivery confirmations that an older process lost before the update. Messages that are genuinely pending remain assigned to their session.

New in 9.1.572

Published on

For research evidence, source URLs are rejected when their query parameters or parameter-shaped fragments contain known parameter names for credentials. Nested names and routes in the fragment are checked as well. The rejection applies to both failed and usable sources.

Reports that are already stored with such URLs are withheld on retrieval with the existing partial / report-invalid result. The originally stored versions are neither modified nor deleted; source addresses are not silently truncated or rewritten. Ordinary query parameters and anchors in documentation URLs remain byte-identical. The protection detects known parameter names, not arbitrary secrets, and does not clean up history.

New in 9.1.571

Published on

Sections of the Telegram queue are assigned to their session. A new session no longer automatically takes over the pending work of an older session. When a known session is resumed, only its own pending sections are restored. While a session is being selected, created, or switched, intake of channel messages is paused. Messages arriving after the chosen boundary, follow-up inputs in the local editor, and late delivery confirmations keep their correct assignment.

Assignments, as well as delivery confirmations that arrive out of order, are retained when a connection is re-established and a lease is handed over. Corrupted or swapped queue state is rejected, so old inputs are not silently replayed. Inbox and session history are retained. Old pending sections without a recognizable session are deferred and not assigned to a new session; their automatic restoration is not included. This does not fix every timeout or blocked context compaction. A downgrade is not a procedure for migrating the queue.

The Telegram plugin and the console's independent fallback for automatic reply delivery suppress recognized acknowledgments of receipt and texts that merely announce the agent will stay silent, even above 200 characters. If a message contains an unrecognized or substantive phrase, it is kept. Short useful group warnings can still be delivered. This is a cautious German-English delivery filter with supplementary instructions, not a guarantee that every model understands every group conversation.

A new process must load the updated package; running sessions are not restarted. Existing pins to internal update channels and Windows installation locks with EBUSY remain separate issues. All other changes from 9.1.570 remain included. This version does not activate hosted web search and does not change AgentSpine, billing, authentication, or customer configuration.

New in 9.1.570

Published on

Each new prompt delivery receives its own hook correlation ID. Hooks of the same delivery keep the same ID; explicitly set IDs are retained. Session-specific environment values reach hook subprocesses and MCP connections including on reconnect, without rewriting stored plugin configurations. The assignment of native tool results is preserved across runs, including for failed tools and duplicate calls.

Canonically equivalent Unicode research queries find the same hits without treating different characters as equal. Stored sources, dates, versions, and project boundaries are retained. king --help and king --version no longer change Windows registry settings for crash dumps.

Web search supports partial responses when this response mode has been negotiated, and shows a notice about failed sources in that case. Empty or incompatible partial responses remain explicit errors. This client change does not activate a hosted search service and does not guarantee its operation.

The transport BLUN_EXPERIMENTAL_AGENT_SPINE_TIMELINE is disabled by default. When explicitly enabled, it passes the actual path of the stored session log and the corresponding protocol to the selected AgentSpine plugin. Each session receives its own access permission, renewed after a resumption. This is transport support, not proof of memory retrieval or authorization by the receiving plugin.

All public changes from 9.1.569 remain included. The bundled AgentSpine implementation remains unchanged; no Mnemo dependency is created. User profiles, permissions, conversations, and plugin settings are neither migrated nor reset.

New in 9.1.569

Published on

This cumulative public version includes mention-based delivery in Telegram groups, fixes for startup and permissions, as well as research collections and crawler tools. Published packages remain unchanged. Later changes appear under a new version number.

New in 9.1.566

Published on

BLUN King 9.1.566 makes plugin updates and the loading of native runtime modules more robust.

The bundled AgentSpine runtime is updated to version 0.59.1. Its autostart routine skips the root of a user profile as a scan target, and all lifecycle hooks remain fail-safe when a protected path cannot be read.

Native .node modules are resolved through a content-addressed cache outside the npm package. Once this version is active, a running console no longer keeps the package copy of these modules open. Later updates can therefore replace the package directory without colliding with these native files.

The public package keeps the complete Spanish, French, Swedish, and Czech interface catalogs from version 9.1.565. Internal Mnemo runtime paths, private endpoints, internal model providers, and build scripts are not included.

Verified package

The customer package passed the leak scan, the complete runtime check with 13 tests, the AgentSpine MCP initialization, a fresh installation, and the update from 9.1.565. All text files use LF line endings. SHA-256 of the npm package: bed594f1466594ae81dc87964dd01d45b620e905a39cb0a4ccbcc7e27b57fde1.

New in 9.1.565

Published on

BLUN King 9.1.565 stabilizes long work runs and extends the bundled AgentSpine runtime.

The repetition brake resets its count of equivalent results as soon as genuine progress is made in between. Normal inbox and task list checks therefore no longer trigger a false forced response.

The activity display consists of exactly one line. It shows the English status word matching the current activity, hidden thinking tokens, visible tokens, total usage, effort, attempt, budget, and step.

AgentSpine scan errors remain fail-safe for mutation tools, user inputs, and stop hooks: the following flow may continue and the error is recorded in the audit log. Before a fatal abort caused by an exception or an unhandled rejection, the console writes the runtime log synchronously.

The bundled AgentSpine runtime is updated to version 0.54.0 from commit fb6d456b68605fd83721090e503f000a26e8a0fb. This version includes the real ACL fail-open test, durable dependency-bound goal plans, and the bound resolution of knowledge gaps.

The lifecycle hooks SessionStart, UserPromptSubmit, PostToolUse, and Stop are sent to Mnemo with the exact MNEMO_AGENT identity. Network errors remain fail-safe.

The previously missing interface texts are now complete in Spanish, French, Swedish, and Czech.

Verified package

The complete package gate, the leak scan, the language catalog check, the ACL hook test, the fresh installation, the update from 9.1.564, and the AgentSpine MCP initialization are green. SHA-256 of the npm package: 88ef653b53fab5bf528d7a5124ca7d5995ab6f90d65318134fa88d8cdf61deba.

New in 9.1.564

Published on

BLUN King 9.1.564 prevents crashes caused by protected folders and missing interface texts.

During the preparatory file scan, AgentSpine skips individual files and folders that the operating system locks with EPERM or EACCES. An unexpected scan error no longer blocks the following tool call; the tool call is allowed to proceed and the error is recorded in the audit log.

If a text key is missing in a published interface language, the console uses the English text and logs the gap once instead of crashing in the rendering path. In particular, this keeps the thinking status line usable in Czech, Spanish, French, and Swedish.

The actual translations for the keys that are still missing will follow in a separately verified release. Until then, the English fallback is deliberately visible and fail-safe.

Verified package

The package was checked against the exact Czech thinking.step crash from 9.1.563. The new version displays “step 6” instead of throwing an exception, warns only once per language and key, tolerates inaccessible sibling folders, initializes AgentSpine 0.49.0, passes a fresh installation as well as the update from 9.1.563, and contains no unresolved plugin imports. SHA-256 of the npm package: 23056703152f668998ea0583bb9797bbbb51f4c2f320917a220908e28430955e.

New in 9.1.563

Published on

BLUN King 9.1.563 updates the bundled AgentSpine runtime to version 0.49.0.

The new version requires at least one fresh, independent piece of evidence from an explicit user confirmation or an objective test before a learning attempt. Conversation or document evidence alone no longer suffices, even if its other thresholds are met.

Learning contracts bind this evidence rule permanently; later configuration changes cannot weaken a running check. Ownership-bound file locks protect parallel learning changes from being overwritten and let manipulated locks or locks owned by others fail closed.

The update replaces the managed plugin tree at the next start in a content-addressed way. Existing installations of version 9.1.562 are updated to AgentSpine 0.49.0, an unchanged tree is reused, and the AgentSpine MCP server confirms version 0.49.0.

Verified package

The package boundary differs from 9.1.562 only in the version strings and the exactly pinned AgentSpine 0.49.0 runtime. The complete upstream check, 49 targeted learning tests, the package comparison, the leak scan, the fresh installation, the real update path from 9.1.562, and an MCP initialization are green. SHA-256 of the npm package: 9440d94ddb79af1ed996fda43cb66ef50fae3b96a5f79d0dd008f32a5abd04f8.

New in 9.1.562

Published on

BLUN King 9.1.562 restores the AgentSpine runtime file in the public package.

The runtime file required by the bundled AgentSpine MCP server is included again. A fresh installation materializes the plugin completely; the MCP server starts and confirms its name and protocol version.

Verified package

The package boundary differs from 9.1.561 only in the version metadata and the restored runtime file. The leak scan, the fresh installation, the plugin materialization, and a real MCP initialization are green. SHA-256 of the npm package: a249f9cb39dc8750ddbe23f72077586c9e8500ab9f0bbfdbf55989d19e329e8a.

New in 9.1.561

Published on

BLUN King 9.1.561 brings the verified work-system improvements into the public package.

The current task and fresh tool results remain available. Read results are not truncated. Large results are stored with a reference for retrieval instead of being cleared. Repeated identical results refer to the latest complete result.

Compactions are logged as a transaction with start, summary, and end markers. Tool calls and their results stay together, while durable checkpoints secure the recovery path across retries.

Output budgets now come from the active model profile. The managed BLUN model receives 128,000 output tokens by default when no value is set explicitly. The old fixed limits of 32,768 tokens as well as the low limits for low and off no longer truncate complex work; context capacity remains the safety boundary.

The updater asks before preparing or starting the installer. In the public package, the managed BLUN model remains fixed; /model now serves only as a compatibility alias for /effort.

The package boundary was checked across all file names and readable contents. Internal provider paths, model selection, build and regression scripts, private identifiers, and private server addresses are not included.

Verified package

The complete package, the leak scan, the fresh installation, version and help output, the default settings of a new profile, and the update decision from 9.1.550 to 9.1.561 are green. SHA-256 of the npm package: fcbff9b2f9a537462653c873150fe36567f6195c5a6facc714a266ce38415dd7.

New in 9.1.527

Published on

BLUN King 9.1.527 adopts the /copy flow from DeepAgents.

The command copies the latest completed, non-empty assistant response through the existing cross-platform clipboard path.

When /copy is entered during a running turn, the command uses the existing command queue and is executed after the response is completed.

Clear status messages cover success, an empty history, and clipboard errors in all six interface languages.

A red-to-green regression test protects command registration, execution, answer selection, the byte-identical clipboard content, and the released interface texts.

Verified package

The complete prepack and the check of the unpacked artifact are green. SHA-256 of the npm package: 94b13ffc1a45af5eaecd9d19ad658abb1895304c2c663e47d03419c1bb4a7cf2.

New in 9.1.526

Published on

BLUN King 9.1.526 materializes the AgentSpine version bundled with the current package before /reload rebuilds the plugin catalog and the MCP configuration.

Unaffected plugin entries are retained. An unchanged managed AgentSpine tree is reused; installed.json is not rewritten.

A red-to-green regression test against 9.1.525 protects the bootstrap order, the adoption of the managed plugin, and the idempotent behavior on reload.

Verified package

The complete prepack, the check of the packed artifact, and the isolated updater test from 9.1.525 to 9.1.526 are green. SHA-256 of the npm package: ae0cc4124ebaac74af1124dcbe2cf6d4d4541126525f947c262809c85f73490a.

New in 9.1.525

Published on

BLUN King 9.1.525 starts every local shell command on Windows and POSIX in its own process group. Programs can therefore no longer attach to the controlling console of the BLUN TUI and intercept Escape, Strg+S, or other editor input.

Standard input, standard output, and error output remain in private pipes. Interactive commands receive an end of file and fail or time out instead of competing with the editor for input.

The local shell isolation from DeepAgents was adopted for Windows. An executable regression test covers both platform paths and a real test run with an intercepted process.

New in 9.1.524

No date

BLUN King 9.1.524 keeps the immediate task created by a Telegram /loop command in the protected delivery path for remote commands. It can therefore no longer remain as a second ordinary queue entry.

The resume list shows, for each session, the size of the resume checkpoint, the retained messages and tokens, the size of the session history, and missing, invalid, or outdated checkpoints.

The bundled AgentSpine runtime is updated to the verified official release 0.11.4 with commit 8034487cdd24498076bac48d3f24400bca5e6ae4. The BLUN time budget of 180 seconds for the SessionStart background completion is retained.

Executable regression tests protect the exactly-once delivery of Telegram loops and all states of the resume metrics. The existing local queue behavior for a busy loop remains unchanged.

New in 9.1.523

Published on

BLUN King 9.1.523 lets Escape close an open slash command menu and clear the associated draft in one step instead of leaving the command text behind.

Strg+S passes a slash draft to the existing queueing and processing path even when the interface currently reports idle, instead of silently returning before the queue is cleared.

Normal drafts are retained when Escape merely closes a different autocompletion.

Red-to-green runtime tests protect both shortcuts against the specific faulty behavior of package 9.1.522.

New in 9.1.522

No date

BLUN King 9.1.522 writes permission.approval_requested to the session history immediately when a tool approval opens. An unattended King therefore no longer looks like a silent model or a stuck provider while waiting for the operator.

The existing Telegram approval buttons are used automatically when the allowlist contains exactly one private chat and any number of groups. If there are several possible private recipients, delivery remains blocked unless BLUN_TELEGRAM_APPROVAL_CHAT_ID is set.

A red-to-green regression test protects the immediate visibility in the session history, the unambiguous forwarding to a private chat, the precedence of an explicitly set target, and the rejection of ambiguous recipients in both shipped relay copies.

New in 9.1.521

No date

BLUN King 9.1.521 runs the AgentSpine SessionStart scan outside the interactive startup path. A cold scan of the user directory lasting 123.6 seconds therefore blocks neither the editor nor the first user input.

Successful SessionStart outputs remain automatic: after completion, the background hook continues to transfer its bounded briefing into the session context.

The time budget for cold scans rises to 180 seconds. A red-to-green runtime test proves that startup returns before a slow hook and that the hook can continue running afterwards.

New in 9.1.520

Published on

BLUN King 9.1.520 gives the AgentSpine SessionStart hook enough time on reload to complete a cold full project scan.

The time limit for the AgentSpine start rises from 15 to 60 seconds. All other hook time limits remain unchanged.

A new red-to-green runtime check starts the real AgentSpine hook in a temporary project and checks both its output and the two shipped timeout manifests.

Verified package

Version 9.1.520 contains AgentSpine 0.10.1. The isolated updater test from 9.1.519 to 9.1.520 and the complete prepack are green. SHA-256 of the npm package: 3fc37502b544ed2d254711dc2a8be544b906eb8515e53f88289b10c91911a8e7.

New in 9.1.519

Published on

BLUN King 9.1.519 stores successful outputs of the SessionStart hook before startup or reload returns. AgentSpine's readiness state therefore reaches the resumed model context automatically and no longer waits for the first user message.

Historical references to offloaded tool results keep a bounded preview from the beginning and the end. Important anchors for resumption are retained, and the complete result no longer has to be included in every model request.

New red-to-green runtime checks protect the SessionStart context handover and the historical previews. The tool catalog for todo maintenance restored with 9.1.518 remains unchanged.

New in 9.1.518

Published on

During proactive task list maintenance, Read, Write, Edit, and Bash remain available alongside TodoList. The normal recovery path for large file changes is therefore no longer interrupted.

The automatic todo maintenance and its bounded evidence prompt are retained; the active model step is not switched to a TodoList-only tool catalog.

A red-to-green regression gate protects against the catalog regression from 9.1.499 and checks the selection of the recovery tools without duplicate schemas.

New in 9.1.517

Published on

Strg+S and Escape remain available even with an open approval prompt. Strg+S sends all waiting messages; Escape first releases one waiting message and rejects the approval only when the queue is empty.

The asynchronous session termination is now fully handled in the keyboard, Telegram /reload, and slash command paths. session.not_found is treated as an already terminated session, so an unhandled rejection no longer crashes the core.

Red-to-green package checks protect the raw Windows control characters and the measured error that occurs when terminating a session that no longer exists.

New in 9.1.516

Published on

If the beginning of an assistant step is missing from the stored history after compaction, the replay reconstructs it from the following content or tool event. king -c therefore no longer aborts with the internal error Received content_part for unknown step_uuid 'undefined'.

A Telegram message leaves the queue exactly once, as soon as the core has durably accepted its active handover. Genuine rejections are retained for another attempt. An unexpectedly terminated Telegram bridge managed by King is restarted by exactly one consolidated watcher.

Only the first TodoList change is accepted per model step. Completed items disappear automatically, pending markers remain visible even in ANSI16 terminals, and a new list starts with exactly one running item. The fixed order is: urgent, direct user message, addressed bot message, bot message, normal message.

The first tool-capable step waits at most 2.5 seconds for the initial MCP catalog; optional servers may continue to start in the background. At program start, only the active profile is checked and installed.

Verified package

Version 9.1.516 contains AgentSpine 0.10.1. All eight prepack regression gates, node --check, the package metadata check, and a fresh package check are green. The same npm package contains the platform components for Windows, Linux, and macOS. SHA-256 of the npm package: f21bffefb2be44ebf0a9a96d5518c2164188e4c8bd99c669840d1566e48aeb6e.

New in 9.1.515

Published on

A task list that has truthfully remained unchanged is accepted again after a longer stretch of evidenced work. King does not have to invent progress or merely rephrase a title to be allowed to continue its actual work.

Even an idle loop can resume a TodoList that is still open without holding the agent permanently in a maintenance turn that offers only the todo tool. A prepack regression gate protects both error paths.

Verified package

Version 9.1.515 contains AgentSpine 0.10.1. The targeted todo loop regression check, node --check, the release metadata check, and a fresh package installation are green. The same npm package contains the platform components for Windows, Linux, and macOS. SHA-256 of the npm package: cda0647bd0fe9888ac6e985ecc067e962800bb64ddba9b6b07249c210a769dbf.

New in 9.1.514

Published on

BLUN King 9.1.514 hardens the content-free Telegram delivery journal against manipulated queue envelopes.

Message identifiers are now accepted only as positive decimal numbers. Chat hashes that have already been computed are allowed only as exactly 12-digit lowercase hex values. Invalid, content-like values are discarded instead of being logged.

The existing Telegram processing, the delivery phases, the journal rotation, and the content-free quarantine diagnostics remain unchanged. All 133 package tests and fresh package test runs for Windows x64, Linux x64, macOS ARM64, and macOS x64 are green.

Verified package

Version 9.1.514 contains AgentSpine 0.10.1 and ReadBatch. SHA-256 of the npm package: 1d30915883441daa407475212f12b8774ccbb50490805aea99fd6967e213a125.

New in 9.1.513

Published on

BLUN King 9.1.513 logs the Telegram delivery path from arrival at the bridge through routing, queueing, and injection to confirmation, recovery, or quarantine.

The bounded journal stores only content-free identifiers, hashes, delivery phases, counters, and sanitized error reasons. Message texts, prompts, paths, usernames, tokens, credentials, and raw error messages are not recorded.

The quarantine diagnostics also no longer duplicate Telegram messages, display texts, provenance, raw chat IDs, or image paths. All 132 package tests and fresh package test runs for Windows x64, Linux x64, macOS ARM64, and macOS x64 are green.

Verified package

Version 9.1.513 contains AgentSpine 0.10.1 and ReadBatch. SHA-256 of the npm package: 409144f1a87330abd3e763256ed8560e044f8e0eebd152c95ce2492dc36e4dae.

New in 9.1.512

Published on

BLUN King 9.1.512 enforces a changed, evidence-backed update during proactive TodoList maintenance instead of re-accepting the same list indefinitely. The isolated maintenance turn receives at most eight compact entries of tool name and result since the last accepted update.

No prompts, arguments, commands, full paths, tool results, or work history are replayed in the process. A failed TodoList attempt retains this bounded evidence for the next attempt; a successful update removes the entries used. Completed items still disappear automatically, and the normal work tools are available again in the following step.

Verified package

9.1.512 passes 127 of 127 package tests. Fresh installations select the expected platform components on Windows x64, Linux x64, macOS ARM64, and macOS x64 and contain AgentSpine 0.10.1 as well as ReadBatch. SHA-256 of the npm package: 38192b918d66aa6615f0a1262afcc6a1a4fba5c48354e62bbe8a3bd01d9460dc.

New in 9.1.511

Published on

BLUN King 9.1.511 ships AgentSpine 0.10.1 as a new content-addressed core plugin build. The mandatory preflight continues to check every active host instruction file in a race-safe way and binds its identity to the exact turn, but the full text already loaded by the host is no longer duplicated in the runtime context.

This release adds mandatory pre-response evidence, confirmed must-remember entries, and self-healing synchronization of the authenticated persona and relationship graph. Missing groups, people, and memberships are repaired when the roster is reconciled again; blocked local relationship queries end visibly after 5 seconds.

The bounded Telegram-Mnemo query is retained: earlier messages are loaded only when specifically needed and are narrowly scoped to agent, person, group, topic, thread, and time. A complete Telegram history does not routinely enter the prompt.

Verified package

9.1.511 passes 126 of 126 package tests. The real 15,519-byte CLAUDE.md was fully checked, while the entire injected context comprised 5,667 bytes and contained no full instruction text. Fresh installations select the expected platform components on Windows x64, Linux x64, macOS ARM64, and macOS x64 and contain AgentSpine 0.10.1 as well as ReadBatch. SHA-256 of the npm package: e519e786ade515e4292492740e5c6a62f78c231465c431eebc06b43040425d40.

New in 9.1.510

Published on

BLUN King 9.1.510 adds the ReadBatch tool. It reads two to twelve independent, already known UTF-8 files or file ranges in one model step and keeps the order of the requests. Each path passes the same access, rule, and permission checks as a single Read call. Partial successes remain visible; only a completely failed batch counts as an overall failure.

Verified package

9.1.510 passes 125 of 125 package tests. Fresh installations select the expected platform components on Windows x64, Linux x64, macOS ARM64, and macOS x64 and contain ReadBatch. AgentSpine deliberately remained at 0.8.0 until the independently found context-budget blocker of the newer prerelease was fixed without enlarging the runtime prompt. SHA-256 of the npm package: 1f38522f0a132c92860d4dbfc991e4f80683614f8c9de87ccba24b591b273b1d.

New in 9.1.509

Published on

BLUN King 9.1.509 requires an explicit mention of the intended King in every released Telegram work message between bots. Bot messages without a matching mention remain visible but are not buffered, queued, delivered, or later brought into this King's model context. A priority bot message for one King can therefore no longer become another King's task.

Verified package

All 121 package tests pass. The same package contains the verified platform components for Windows x64, Linux x64, macOS ARM64, and macOS x64. SHA-256: 071e14065bd7e327abda95a4310f473171f6df3c1ad0f1712c9add666f6da7cc.

New in 9.1.508

Published on

Open todo items have a visible checkbox again. Even the first ordinary task list starts with exactly one running item; later steps remain pending until their actual start is evidenced.

Accepted Telegram direct and group messages are handed to Mnemo asynchronously, durably buffered, and exactly deduplicated. A temporarily unreachable hub blocks neither the Telegram delivery nor the King run. /loop commands and internal loop ticks are deliberately not stored.

AgentSpine does not load a complete Telegram history into the runtime context. When a task needs an earlier message, a bounded Mnemo query is run, filtered by agent, person, group, topic, thread, and time range.

Verified package

All 120 package tests pass. On Windows, Linux x64, macOS ARM64, and macOS x64, fresh installations each select the correct native clipboard component and contain the managed Telegram-Mnemo connection as well as AgentSpine. SHA-256: 34bf9cb52d6a469fa1603f95ce9df17c77ae6ff2e675d91f0442246c0d83b69b.

New in 9.1.507

Published on

BLUN King 9.1.507 explicitly instructs the model in the Read tool to bundle independent file and range reads into one model response when multiple inputs could be useful.

This reduces avoidable model round trips in large work contexts without changing Read's execution, page navigation, permissions, or result handling.

Verified package

A targeted regression test protects the change; all 112 package tests pass.

New in 9.1.506

Published on

Completed TodoList items are removed immediately from the visible TUI. The persistent task list was already discarding these entries correctly; the interface now shows the same cleaned-up state, while running and pending work is fully retained.

The automatic maintenance turn uses a standalone system prompt of 546 characters. Previously, the complete work prompt of about 19,000 characters was attached to it, even though the todo tool was the only tool available. The following work step still receives the complete prompt and its normal tool catalog.

Measured context savings and package version

A real run showed a separate todo maintenance turn with 15,221 input tokens for every eighth work step. The static maintenance prompt shrinks by 18,470 characters; the actual runtime savings will be measured again after the fleet update. The published tarball passes 111 of 111 tests. Fresh package installations on Windows with Node 24.19.0 and Linux with Node 24.18.0 confirm version 9.1.506; the macOS binaries for ARM64 and x64 are included in the same npm package. SHA-256: 9e01bf05824eedf03de7665a1f0bc294ad4ba1d9f1ed8bf5ca43aab5fa706364.

New in 9.1.505

Published on

A Telegram message that arrives after the channel takeover but before the queue activation is completed is no longer skipped as old backlog. Without a valid checkpoint, processing starts at the byte boundary measured when the takeover started instead of at the later end of the file.

A valid durable checkpoint still takes precedence. If the queue file is replaced during the handover, the new file safely starts at byte zero; historical messages that were already present before the takeover are still not replayed.

Measured regression and package version

Group message 63456 arrived 1 second after the channel takeover, the checkpoint jumped to exactly its end, and the message appeared in no model history. This real loss path is protected by a regression test. The published tarball passes 111 of 111 tests; fresh package installations on Windows with Node 24.19.0 and Linux with Node 24.18.0, as well as a real update from 9.1.504, confirm version 9.1.505. SHA-256: fd1c4be83316195d8cc9962aa3ff69c3fdf4838b25a99aca59cae3f445275241.

New in 9.1.504

Published on

A Telegram message that is already waiting in the queue while no agent run is active is now started as a fresh model turn through the normal channel path. It no longer waits for an active run, which by definition cannot arise while idle.

The existing handover into a running turn remains unchanged. The isolated todo maintenance, the automatic removal of completed items, and the subsequent restoration of the normal file, search, and shell tools remain protected as well.

Verified package

The published tarball passes 106 of 106 tests. The new idle regression test was red before the change and is now green, together with 24 queue tests. Fresh package installations on Windows with Node 24.19.0 and Linux with Node 24.18.0 confirm version 9.1.504 and the same SHA-256 df01bb10d653c0f5e2572b5ea0fe9cf8972db1f6d3df530de5484d3a1cccca27.

New in 9.1.503

Published on

The isolated todo maintenance message now also carries an explicitly empty toolCalls field. It therefore has the same message shape as regular work turns and can be processed safely by the BLUN provider normalization.

The real runtime error TypeError: message.toolCalls is not iterable no longer occurs before the TodoList call. A regression test iterates the generated message exactly as the provider boundary does before the maintenance is released.

Verified package

The published tarball passes 105 of 105 tests. Fresh package test runs on Windows with Node 24.19.0 and Linux with Node 24.15.0 confirm the complete provider message shape, the isolated todo maintenance, and the automatic removal of completed items. Acceptance testing on the real fleet will run after the controlled restart of the three Kings.

New in 9.1.502

Published on

The due TodoList maintenance step now receives only a fresh message limited to the current task and the visible list. Old Read, Bash, or MCP calls from the work history can therefore no longer enter the step that is deliberately limited to TodoList.

Completed tasks disappear automatically from the visible and persistent list when it is saved. Items that are running, pending, blocked, awaiting approval, or aborted are retained; the list therefore does not grow indefinitely with finished work.

Measured fleet finding

Two agent profiles independently hit the same regression: after successful tool use, the todo maintenance repeated historical work tools and showed Tool not found. The published tarball passes 105 of 105 tests. Fresh installations on Windows with Node 24.19.0 and Linux with Node 24.15.0 confirm the isolated maintenance, the removal of completed items, and the return of the normal tools. Acceptance testing on real macOS systems is not part of this evidence.

New in 9.1.501

Published on

After a successful TodoList maintenance step, all tools selected for the turn are available again in the immediately following work step. Read, Bash, and other work tools are no longer hidden behind the temporarily restricted todo catalog.

Fixed regression

The todo step deliberately offered only TodoList. Without an explicit restoration, however, its tool selection remained active in the following step as well. 9.1.501 reinstates the normal catalog there and protects both follow-up step paths with a regression test.

Golden Release 9.1.500

Published on

This version bundles the complete feature set of 9.1.499, unchanged, as one shared npm release for Windows, Linux, and macOS. The gold marking is deliberately limited to the headings of this version; older entries keep their previous presentation.

Release status

The Golden Release carries over the verified todo, queue, loop, context, AgentSpine, and image analysis changes from 9.1.499 without additional runtime logic.

New in 9.1.499

Published on

Image, audio, and video data outside the latest twelve conversation messages are replaced by short references only in the replayed model projection. Current media, message text, and the complete raw session history remain unchanged.

In a measured resumption checkpoint, this projection saves 85,748 characters, or about 21,437 estimated input tokens, per additional tool step.

Due todo maintenance runs before the ninth work block as a separate low-effort model step. In this step, the runtime offers only TodoList; file, search, shell, and other work tools are released again only after a valid update.

Fresh user messages still take precedence over todo maintenance. The hard todo gate is retained as a safety net for genuinely invalid updates but no longer appears as a normal red intermediate error before autonomous list maintenance.

Verified evidence

The published tarball passes 105 of 105 runtime and regression tests. Fresh isolated installations on Windows with Node 24.19.0 and Linux with Node 24.15.0 report exactly version 9.1.499 and confirm media projection, unchanged raw history, todo precedence control, and the hiding of all work tools during the todo step. The candidate comprises 850 paths and carries SHA-256 51e79a766d834d06a6e0d428337a45c9ab62ed8535a988f77b73c1164162f71f. Acceptance testing on real macOS systems is not part of this evidence.

New in 9.1.498

Published on

/usage shows the prompt cache hit rate reported by the provider as well as cache tokens read and written per model. Without reported cache activity, the display does not invent a rate.

/tokens is a short alias for the existing detailed context diagnostics; /offload invokes the existing archiving compaction. Neither path triggers an additional model call.

Different authorized bot messages are no longer discarded by a rigid 15-second window. The existing order is retained: private and explicitly addressed messages come before bot messages, bot messages before normal context.

A complete compaction carries the exact todo list into the new context. If a path, command, hash, or requirement is uncertain afterwards, a one-time recovery notice first requests reading the archived history instead of a broad file search or a fresh start.

Completed todo steps are retained as evidence. If later findings make a step necessary again, the evidenced completion stays in place and the new check appears as a separate running step with a reason.

Recurring session loops wait as long as the maintained todo list still contains running or pending work. Missed intervals are combined until the session is genuinely idle; other scheduled reminders remain unaffected.

Verified evidence

The prepared tarball passes 100 of 100 runtime and regression tests. Fresh isolated installations on Windows with Node 24.19.0 and Linux with Node 24.15.0 report exactly version 9.1.498 and confirm cache display, command aliases, compaction recovery, monotonic todo evidence, session loop protection, package changelog, and bot priority. The candidate comprises 849 paths and carries SHA-256 11b6918c02cc743b6d65aca79820abf5d0aa55786948c12ad9f0187c587b1d56. Acceptance testing on real macOS systems is not part of this evidence.

New in 9.1.497

Published on

Telegram bot messages from shared groups come after private and explicitly addressed messages but before normal context. The prioritization does not force a reply.

An accepted Telegram message disappears from the visible queue as soon as the model step it was fed into begins. A rejected delivery or an abort before the first step still retains it for another attempt.

A due Telegram reply or message edit is no longer blocked by todo maintenance. The next normal work step remains locked until the todo list is truthfully updated.

Versions 9.1.496 to 9.1.487

VersionChanges
9.1.496Delivers Telegram user messages automatically one at a time, removes only the exact message ID that was accepted or answered, enforces truthful progress for every visible todo list, and hides successful internal hook payloads.
9.1.495Starts every new or replaced goal with a fresh visible todo list, requires truthful updates, immediately clears the Telegram group focus once it has been answered successfully, defers normal acknowledgments of receipt until the end of the turn, and adds real decoding checks for Ctrl+S and Ctrl+T.
9.1.494Clearly separates the shortcuts again: Ctrl+S controls only the queue backlog, Ctrl+T only the todo list. Telegram user messages authorize themselves for the next safe handover during running work.
9.1.493Telegram user messages are automatically released for the next safe handover during active work. Direct messages stay at the front of the queue without pausing group messages permanently.
9.1.492Group messages that have already been released are retained while delivery is temporarily busy and are retried. The package, npm metadata, public manifest, and changelog are checked together before success is reported.
9.1.491Direct Telegram messages are prioritized immediately during running work. The manual queue control remained for other messages.
9.1.490The package history fully documents the unreleased version 9.1.487 and the fixes actually released from 9.1.488 onward.
9.1.489Task list, queue control, Telegram execution identity, AgentSpine profile installation, and the managed image analysis were restored and protected with regression tests.
9.1.488The prepared AgentSpine core plugin was published. Telegram duplicates no longer leave a phantom turn; thinking depth and safe telemetry handling are retained across tool steps.
9.1.487Not released. This version prepared AgentSpine as a managed core plugin. On npm, 9.1.486 was followed directly by 9.1.488.

New in 9.1.486

Published on

New and updated profiles now start reliably in English on Windows, macOS, and Linux. A stored automatic language value is migrated once, while explicitly chosen languages remain unchanged.

Automatic updates at startup are enabled again by default through the existing version-bound installer. [upgrade].auto_install = false keeps the confirmation prompt; a background updater is not reintroduced.

Startup dialogs, progress, errors, success messages, and session resumption now use the same language. Regression and mutation tests protect migration, the update path, and session data.

Verified evidence

The complete test suite passed 1,474 of 1,474 checks. An isolated update run upgraded 9.1.485 to 9.1.486, left the configuration and session unchanged, and started the new CLI. A separate startup test run demonstrated the automatic installation without prompting as well as the one-time migration of an old automatic language value to English.

Versions 9.1.485 to 9.1.178

VersionChanges
9.1.485
  • Limits the first visible replay of a resumed session without a scrollback index to the 15 active conversation turns instead of rendering the entire conversation again.
  • Clears the visible update area after a successful update before the new console starts; the normal terminal scrollback is retained.
  • Adds regression and mutation checks for the replay fallback, including a simulation with 97,596 records.
9.1.484
  • The plugin detection additionally accepts .codex-plugin/plugin.json and resolves PLUGIN_ROOT or BLUN_PLUGIN_ROOT in the command, arguments, and working directory.
9.1.483
  • The compaction model can be selected and saved separately from the active model or reset to inherit it; selection and feedback are available in the idle command and in the localized settings.
9.1.482
  • Offloaded Read results preserve the next line_offset and continue the original read there instead of reading the same file again from the beginning.
9.1.481
  • Subagent responses that end at the token limit without a tool call are recognized as max_tokens for the existing continuation. Glob patterns with .. and named home paths like ~name are rejected.
9.1.480
  • Updates the bundled translate-native skill and the Language Guard MCP to version 6.42.13.
  • Binds the bundled language protection files byte-for-byte to source commit 6430ce30e235c1a9d1ebcd1b646d62edce510605.
  • Adds provenance and mutation checks so that altered protection bytes or a deviating skill version fail the release gate.
9.1.479
  • Adds an authenticated internal availability-check route to the private King service of the Agent API.
  • Checks the availability of the service without creating a customer session or starting an agent run.
  • Restricts the route to the loopback interface and GET, protects it with a secret, and prevents it from being cached.
9.1.478
  • Resolves ordinary pauses of the direct Telegram focus after a restart, even when older checkpoints contain no reply deadline.
  • Preserves pauses explicitly requested by the user until release instead of letting them expire automatically.
  • Releases queued channel messages for an active run as soon as the direct focus ends.
9.1.477
  • Adds an explicit, operator-started process wrapper to the private service of the Agent API.
  • Handles SIGINT and SIGTERM exactly once, even if the signals arrive during startup.
  • Aborts safely with bounded messages, does not call process.exit, and never starts the service automatically.
9.1.476
  • Adds a fail-closed environment contract to the private service of the Agent API.
  • Requires an explicitly configured loopback port, isolation secrets, provider settings, and resource limits.
  • Keeps the private service stopped and the automatic cleanup of idle sessions disabled until both are explicitly configured.
9.1.475
  • Releases only those Agent API sessions that are configured accordingly and genuinely idle, before a customer reaches the session limit.
  • Protects active model and tool runs regardless of their age and updates the idle period on real use.
  • Keeps the automatic cleanup disabled until an operator explicitly configures an idle timeout.
9.1.474
  • Releases the active session assignment when the continuation of an agent fails after a tool result.
  • Enables closing the affected session explicitly afterwards.
  • Leaves successful tool returns and the public model contract unchanged.
9.1.473
  • Protects an Agent API session from being closed while its first model call is still running.
  • Releases the session reliably after a successful response or a model error.
  • Leaves the existing raw model path and the public model contract unchanged.
9.1.472
  • Lets customers explicitly close an idle session of the Agent API and release their bounded session slot.
  • Prevents closing active sessions and restricts each close operation to the owning customer.
  • Provides the released slot for a new session without changing the public model contract.
9.1.471
  • Adds a closed service host that assembles the private Agent API stack without starting it automatically.
  • Requires separate secrets for transport and isolation, an absolute customer root directory, and an explicit configuration of the King runtime environment.
  • Binds listeners to the loopback interface and closes every customer session and every runtime environment on shutdown.
9.1.470
  • Isolates headless Agent API sessions by trusted customer and public session.
  • Coalesces concurrent first accesses within an SDK session and caps the number of active customers and sessions.
  • Uses key-bound opaque internal identifiers and working directories while stable public session identifiers are retained.
9.1.469
  • Adds a private HTTP transport to the Agent API adapter; the transport is reachable only through the loopback interface.
  • Requires a service secret and a customer identity set on the server side; forged identity claims in the request body are ignored.
  • Rejects oversized or malformed requests and keeps internal provider details out of public error messages.
9.1.468
  • Keeps the main agent responsive while background subagents and nested subagents continue working.
  • Lets restricted Agent API sessions use the subagent lifecycle without exposing local shell or file system tools.
  • Passes the exact tool boundary to every nested subagent level so that restrictions cannot be bypassed through delegation.
9.1.467
  • Adds an explicit transport adapter for agent runs without intercepting existing raw model or model list routes.
  • Binds tool results and targeted aborts to the same customer, session, and request scope.
  • Exposes only King, sanitizes unexpected internal errors, and rejects streaming until an agent contract exists for it.
9.1.466
  • Records every completed Agent API model call under a stable task ID without merging usage across different customers.
  • A durable JSONL mapping keeps the request, session, task, call ID, and raw usage fields traceable even after a restart.
  • Only King and the raw counters for input, cached input, and completion are exposed externally; missing usage data remains explicitly flagged.
9.1.465
  • Adds isolated run control for the Agent API's explicit agent endpoint without changing raw model completions.
  • Client-managed tool calls keep a single King run across result round trips and remain scoped to the original request.
  • Parent agent responses exclude child agent event streams and discarded retry drafts.
9.1.464
  • Managed subagents now run detached, so the main agent stays responsive while delegated work continues.
  • Running subagents can be controlled with TaskUpdate or stopped with TaskStop without closing the main session.
  • Addressed Telegram group messages remain in focus until the agent replies in the matching chat.
9.1.463
  • A checkpoint resume renders only the most recently active TUI turn group when window data exists; older lines remain in the scroll archive and are loaded on demand.
9.1.462
  • Unchanged tui.toml contents no longer trigger an atomic file replacement; actual changes continue to use the existing locked write path.
9.1.461
  • /status distinguishes the loaded runtime version from the installed package and reports a mismatch in the Telegram remote status as well.
9.1.460
  • Older visible session messages remain in a durable on-disk archive and are loaded block by block as the user scrolls up; startup does not read all text blocks.
9.1.459
  • A resume restores an integrity-bound semantic checkpoint and reads only the part of the unchanged session file appended since then; if the checkpoint is invalid, a full replay remains the fallback.
9.1.458
  • A checksum adopted from an external report is bound only if this exact value is present in the selected source event.
9.1.457
  • When the same checksum comes from several external events, the provenance is marked as ambiguous instead of being attributed to one report.
9.1.456
  • Checksums in outgoing Telegram messages are matched against local tool results and visible external reports; unmatched values produce a provenance notice.
9.1.455
  • Telegram reports can be bound as credible_unverified by chat and message ID; the runtime sets the reporter and the event origin.
9.1.454
  • Fresh checks are automatically bound to the session and agent that produced them; forwarded measurements remain external reports.
9.1.453
  • Completion evidence is bound to the currently valid completion criterion and is rejected if the criterion differs or is outdated.
9.1.452
  • Each piece of evidence is bound to the target scope that was actually measured; command checks must carry the same secure BLUN_EVIDENCE_SCOPE value on both sides.
9.1.451
  • Each piece of evidence carries its exact type: inspection, integrity, syntax, test, or reachability. A weaker check must not be reported as a stronger one.
9.1.450
  • Result evidence and checker evidence are kept separate. Only a new or changed checker needs a second, independent proof that it actually detects failures; normal measurements do not need a red test run.
9.1.449
  • The completion evidence names the exact successful check call by its toolCallId; a mixed command call that both changes and checks is not sufficient.
9.1.448
  • A goal completion must bind the verified claim to a successful check call in the same turn; tools that only write or change do not count as evidence.
9.1.447
  • A selected action is bound to durable decision evidence; unknown or outdated evidence forces a new plan.
9.1.446
  • The live repetition brake additionally detects short recurring word sequences of two to eight words.
9.1.445
  • Selected learning notices are stored as an exposure trace together with the validated learning result of the current turn; no causal link is claimed.
9.1.444
  • The relevance search for earlier mistakes uses durable goal, checkpoint, and problem framing data instead of only the most recent user messages.
9.1.443
  • On a direct goal continuation, an explicit tool: or skill: selection loads exactly the selected tool or skill.
9.1.442
  • The work focus preserves the decision thread of status, phase, last check, selection, reasoning, support, risk, and reversibility.
9.1.441
  • Missing knowledge is tracked in its own knowledge_gap domain instead of the general goal text; it is prioritized and hidden when empty.
9.1.440
  • World knowledge and assumptions can be added to the durable focus as separate domains and weighted.
9.1.439
  • The durable cognitive focus receives a salience rating with decay between sessions and reinforcement on renewed access.
9.1.438
  • During session replay, trimming, merging, and rendering are deferred; afterwards exactly one new transcript render is requested.
9.1.437
  • The idle watcher again uses the correct text path for timeouts and no longer terminates the process because of an invalid parameter in the timer.
9.1.436
  • The Telegram remote status shows start, last progress, last tool, and repeated errors during an active turn; the TUI publishes live activity snapshots for this.
9.1.435
  • Private Telegram focus checkpoints now follow the workspace bound to the active session.
  • The workspace selection no longer stores the starter directory as the resume location for direct conversations.
9.1.434
  • Confirmed learning now follows the workspace bound to the active agent session.
  • Sessions with multiple workspaces and resumed sessions no longer store or show project lessons in the host process directory.
9.1.433
  • Preparing input in the external editor now stays within the cleanup boundary for temporary directories.
  • If the first write fails, for example due to a full disk or missing permissions, the temporary editor directory is removed before the error is propagated.
9.1.432
  • Transient stream errors can now be retried with the same selected model, even after partial output has become visible.
  • Incomplete assistant text and unfinished tool surfaces are completed or discarded before the retry so that the new output is not appended to the failed attempt.
  • Once output is visible, provider switching remains locked so that a response cannot switch providers mid-stream.
9.1.431
  • Local Bash tool processes now force-disable Git terminal prompts instead of inheriting an interactive setting from the parent process.
  • Inherited askpass dialogs from Git, SSH, and Git Credential Manager are disabled in the tool child process; this prevents hidden waits for Windows credentials.
  • The parent shell and the running session's environment remain unchanged; the existing behavior when standard input is closed is retained and safeguarded independently.
9.1.430
  • Full compaction can now use an optionally configured model alias via [loop_control].compaction_model; the active King model remains the default.
  • Authentication, context preparation, completion budget, overflow learning, and usage billing for compaction are fully bound to the selected compaction model.
  • The active model continues to determine the start of compaction and the final request brake, so that a smaller summary model cannot silently shrink the central thinking window.
9.1.429
  • Bash on Windows now rejects unambiguous cmd.exe syntax before the process starts instead of wasting a run that visibly fails.
  • The Bash tool description explicitly states that POSIX Bash remains active on Windows, including in VS Code, and names the correct conventions for paths and redirections.
  • Valid POSIX find commands remain allowed; when cmd semantics are deliberately wanted, an explicit handover to cmd.exe /c remains available.
9.1.428
  • Generated JavaScript and TypeScript writes now stop before disk access when an executable statement repeats eight times in a row; this prevents runaway output from analysis scripts.
  • The protection check covers Write calls for complete files as well as Edit replacements; non-code files, comments, strings, and shorter legitimate repetitions remain unaffected.
  • All three observed degenerate cases with 15, 23, and 31 repeated statements are blocked; arbitrary incomplete but non-repeating intents remain outside this mechanical check.
9.1.427
  • The visible /memory core command now reports the active memory adapter boundary, contract version, identity mode, integrity status, and cross-portal evidence, optionally as --json output.
  • Profile-bound fallback storage and profile-derived identities are explicitly excluded from shared-core readiness instead of being presented as portal-neutral memory.
  • Configured providers remain visibly unconfirmed until separate evidence exists; the diagnostics are read-only, grant no authority, and never invent cross-portal proof.
9.1.426
  • The visible /memory acceptance command now runs a synthetic, temporary V7 memory check across CLI, Telegram, and web and can optionally output a --json report.
  • Ten independent checks cover portal origin, linked and unlinked identities, agent and group isolation, deduplication, global correction and deletion, the provider's fail-safe lock, and protected source bytes.
  • The acceptance report serves exclusively as deterministic evidence: it grants no authority and never reads or changes a real user profile.
9.1.425
  • Subagents that reach their token limit now receive a concise tool-free handover run in the same agent context instead of losing completed tool work.
  • If this handover also reaches the limit, the parent agent receives a bounded partial summary and exact instructions for the same agent to continue.
  • Recovery still follows the fail-safe lock principle: no complete retry of the task, no completion message without a final handover, and no new authority.
9.1.424
  • Confirmed lessons from Mistake.md are now applied to differently worded but semantically similar cases in reliability, delivery, orchestration, memory, publishing, media, and validation.
  • Exact evidence terms continue to take precedence over broad semantic categories; unrelated text remains unassigned.
  • Natural German phrasings are normalized deterministically; the changed ranking neither creates new permissions nor promotes an unconfirmed lesson.
9.1.423
  • Runtime terminations now write a durable synchronous diagnostic entry before the core or the starter returns or ends.
  • Uncaught exceptions, unhandled rejections, failed terminals, signals, startup errors, normal terminations, child process errors, and child process exits preserve the exact sanitized cause, including the process boundary.
  • The private log is bounded and fail-safe, removes secrets and home paths, and does not restart or reload a running session.
9.1.422
  • An open idle session now monitors its stored time trigger and becomes active at or after dueAt in automatic mode and God Mode.
  • A due trigger waits until active responses, compaction, queued messages, commands, and dialogs are finished before it continues exactly once.
  • Before starting, the runtime re-reads the goal, checkpoint revision, due time, permission mode, and session, and discards timers on every session termination path.
9.1.421
  • Time-based wait checkpoints now store an exact dueAt timestamp and normalize it to UTC.
  • A regular session start in automatic mode or God Mode leaves future time triggers waiting and resumes them at or after their due time.
  • The first resumed run receives the exact due-time observation; sessions that stay open continuously do not yet receive a runtime timer in this version.
9.1.420
  • An active goal with a durable wait checkpoint yields control after the current run instead of assigning another autonomous run.
  • External, time-based, dependency-based, and user-decision-dependent triggers remain stored and are re-evaluated when the next event arrives.
  • Immediate goals and older active goals without a checkpoint are continued unchanged.
9.1.419
  • A normally resumed session now continues an already active goal if its stored next trigger is explicitly immediate and automatic mode or God Mode is active.
  • The continuation stays internal, runs at most once per resumed session, and never appears as an invented user message.
  • Pending, paused, and blocked goals, missing checkpoints, and manual permission modes remain suspended.
9.1.418
  • Telegram now preserves the explicit bot marker of the sender in the inbound data so that the identity context can distinguish agents from humans.
  • Telegram actors already stored as humans are reclassified as agents only when provider, subject, and explicit bot marker match.
  • Actor details are retained, agents are never downgraded, and names or usernames are never used to derive an agent identity.
9.1.417
  • Automatic Telegram fallback replies now split responses longer than 4,096 characters into consecutive messages instead of truncating them.
  • Every character and every Unicode surrogate pair is retained; the outbound path records all returned message IDs together with the complete text.
  • If a part fails, delivery stops at that point instead of reporting an incomplete reply as complete.
9.1.416
  • Fresh results from the most recent tool call batch remain fully readable until the next assistant response, even when Telegram or control context is fed in afterwards.
  • Batch offloading, history cleanup, and micro-compaction now use the same semantic boundary for fresh results.
  • Older results that have already been evaluated continue to be compacted normally, so the existing context savings are retained.
9.1.415
  • The durable work focus now preserves the exact trigger for the next action across restarts and context switches.
  • The next action remains separate from its release condition; this also applies to valid conditions longer than 512 characters.
  • Malformed triggers or triggers that do not fit the phase are safely rejected; older checkpoints keep their previous behavior.
9.1.414
  • New durable action checkpoints capture the exact trigger that releases the next action.
  • Non-waiting phases require an immediate trigger; waiting phases require a named external event, a point in time, a dependency, or a user decision.
  • Pending goals stay active without being executed prematurely; older checkpoints remain readable.
9.1.413
  • Telegram replies that reach the model's output limit are no longer delivered as incomplete opening fragments.
  • The same running session produces a concise, complete continuation and makes at most three recovery attempts before aborting safely.
  • An explicit reply through the Telegram tool still takes precedence and suppresses recovery, so successful sends are never duplicated.
9.1.412
  • Durable goals created by the model now start atomically with revision 1 and a complete, bounded problem framing.
  • God Mode and automatic mode continue an already authorized goal start without a second confirmation; in manual mode, approval is still required.
  • Authenticated, non-trivial multi-step work can switch to durable goal mode under an existing autonomous instruction; greetings, single-step requests, and vague tasks remain excluded.
9.1.411
  • Non-trivial and unfamiliar tasks can now store a bounded problem framing in the durable action checkpoint.
  • The framing captures success criteria, missing knowledge, up to five possible actions, the selected action with reasoning, the choice of support, the risk, and the fallback path.
  • The problem framing survives continuation and restart only as descriptive state and can never grant permissions.
9.1.410
  • Private Telegram memory commands now limit the relationship scope to the person in question.
  • The memory focus hides other people's relationships and keeps the rest of the context.
  • Corrections and deletions cannot select another person's relationship; the local operator focus keeps the full view.
9.1.409
  • Telegram reply tools and the TUI fallback path now use a shared canonical directory for channel state.
  • Profile-specific BLUN_HOME values no longer create a second directory tree for inbound or outbound Telegram messages.
  • An explicitly set BLUN_TELEGRAM_STATE_DIR remains authoritative; otherwise both paths use ~/.blun/channels/telegram.
9.1.408
  • Confirmed relationship details are merged only after two independent observations in direct channels.
  • Replayed messages remain idempotent; group messages and permission-like claims remain excluded.
  • Confirmed private relationship memories can follow the same person across Telegram and CLI without granting authority.
9.1.407
  • The Telegram reply tool imports the path to the current inbound log used by duplicate detection.
  • Normal Telegram replies no longer fail with the error inboxLog is not defined.
  • The separate bridge fallback path remains available as a safeguard for delivery.
9.1.406
  • Repeated delivery attempts for private Telegram events with the same timestamp and text are stored only once in the relationship continuity.
  • A statement that is genuinely repeated later remains part of the bounded relationship history.
  • Naturally phrased explicit memory notices at the end of a sentence are recognized as reference data; this neither grants nor changes permissions.
9.1.405
  • The paired Telegram /status command now reports the age and heartbeat of the console process, the current work step, and the active task without calling the model.
  • The queue backlog now measures unread bytes from a checkpoint bound to the exact current queue file.
  • The remote status stays read-only and contains no chat IDs, file paths, credentials, message contents, or complete task lists.
9.1.404
  • Unchanged config.toml content no longer replaces the existing private file.
  • The exact byte comparison is limited to regular targets that are not symbolic links.
  • Changed, missing, invalid, and unreadable targets continue to use the existing crash-safe atomic write path.
9.1.403
  • The automatic ranking of tools that can be loaded on demand ignores embedded attachment and document payloads.
  • Each intent fragment is capped at the existing ToolSearch query budget of 1,000 characters before lexical matching.
  • The actual instructions, attachments, and explicit ToolSearch requests remain unchanged.
9.1.402
  • Expired compaction history archives are cleaned up once in the background when a King command starts.
  • The startup cleanup stays non-blocking and cannot delay normal command processing.
  • Cleanup errors are logged safely and do not interrupt the running session.
9.1.401
  • The first text fragment of each in-progress response is now displayed immediately; it no longer waits for a timer callback.
  • Each new turn and each new assistant response segment receives its own immediate initial rendering.
  • Later text, thinking, and tool fragments retain the adaptive batching rhythm that protects the performance of long sessions.
9.1.400
  • Large resumed sessions are now replayed cooperatively so that the TUI can redraw and respond while the history is being restored.
  • Every persistently stored replay record continues to be displayed; no part of the history is cut off, skipped, or deleted.
  • Small resumptions retain their previous behavior; large resumptions yield execution to the event loop after every 30 records.
9.1.399
  • Verified learning candidates are now limited to the current Git project instead of reaching unrelated repositories.
  • HTTPS and SSH checkouts of the same origin use a shared anonymous project identity.
  • Repository URLs and local project paths are never stored in learning candidate records; work outside Git retains the existing profile-wide behavior.
9.1.398
  • Text-only Telegram replies are now deduplicated across the tool path and both automatic fallback paths.
  • An identical or nearly identical reply is suppressed only when no newer incoming message is present.
  • Attachments, different results, and replies after a new user message retain their previous behavior.
9.1.397
  • Goals with an explicit completion criterion now require a runtime-backed checkpoint before they can be completed.
  • If the completion check fails, the goal stays active and returns concrete notices on what to revise.
  • Ordinary turns and goals without an explicit completion criterion retain their previous behavior.
9.1.396
  • In the same turn, natural-language requests can pre-select up to two loadable tool schemas that match with high confidence.
  • The selection considers only the current intent in the channel and ignores outdated Telegram context.
  • For weak, ambiguous, or unknown requests, ToolSearch remains available without enlarging the permanently loaded tool set.
9.1.395
  • Accepted media jobs are tracked persistently, identical open requests are reused, and completed results are stored after a quality check and delivered to the associated chat.
9.1.394
  • A versioned, opt-in storage provider can connect CLI and portal turns with a shared cognitive event stream.
  • The existing local SQLite storage remains the default, without new network access or changed runtime behavior.
  • Provider paths, synchronous factory functions, and contract version 6 are now safely verified before the runtime starts and are rejected on any mismatch.
9.1.393
  • Interactive starts with king and king -c again show the visible 1/2/3 update selection as soon as a newer version is available.
  • Background update downloads, pending activation, and the delayed automatic switch have been removed.
  • After the selected update is installed, king exits for a manual restart; king -c resumes the last session with the new version.
9.1.392
  • Incomplete interim results of an image generation are no longer sent as private Telegram updates while no media result is available yet.
  • The observed error descriptions from GenerateImage and GetMedia are suppressed; completed media deliveries remain visible.
  • Private conversations and ordinary requested results remain unchanged.
9.1.391
  • Cross-portal memory continuity now requires an exact, active identity link receipt from the trusted runtime.
  • Similar names, different tenants or source identities, wrong issuers, and revoked receipts stay separated and are safely rejected.
  • Version 6 of the storage adapter contract supports verified OAuth, secure account links, and explicitly confirmed identity mappings without deriving permissions from memories.
9.1.390
  • The shared storage envelope now records the event time and the arrival time separately.
  • Each new cognitive event is explicitly assigned a retention class for operational data, persistent data, relationships, or audit purposes.
  • Version 5 of the storage adapter contract rejects incomplete event envelopes before any local or remote write.
9.1.389
  • Storage events now record the source portal and source channel as separate, authenticated origin fields.
  • CLI, Telegram, runtime, personality, correction, and revocation paths preserve the exact channel when storing and replaying.
  • Version 4 of the storage adapter contract rejects writes when the stored source channel does not match the channel authorized by the permission.
9.1.388
  • Storage reads now return only observations from the visibility scope authorized by the permission, unless the strictly internal agent path is used.
  • Writes, event checks, and attention operations are safely rejected when their scope or authenticated source does not match the current access context.
  • The local SQLite adapter queries scoped observations through a dedicated visibility index instead of first loading unrelated memories.
9.1.387
  • Every storage adapter operation now carries a strict context for identity, portal, channel, conversation, scope, and permissions.
  • The permission context is checked outside the storage payload and is not persisted as remembered content.
  • Event deduplication is limited to the tenant and agent, so the existence of events cannot be detected across tenants.
9.1.386
  • The cognitive state now sits behind a versioned storage adapter contract shared by the turn lifecycle and the personality runtime.
  • The existing SQLite event store remains the default. External portal clients can provide the same contract without creating a portal-owned state.
  • Unsupported adapter versions and incomplete implementations are safely rejected before every storage operation.
9.1.385
  • Telegram messages queued before the session starts are now released as soon as the session is ready.
  • Idle sessions drain the queue in normal FIFO order; active turns that have already resumed use bounded steering.
  • Persistent queue checkpoints remain unchanged until the message is actually accepted.
9.1.384
  • References to Telegram images now load the image check and image generation tools in the same turn.
  • Buffered Telegram messages preserve the media intent for the entire pending batch instead of considering only the last message.
  • Local image paths and Telegram file IDs select the matching check or download path without loading media schemas persistently.
9.1.383
  • New Read results now remain fully visible for the model step that requested them instead of being offloaded before evaluation.
  • Parallel new tool results remain readable until their evaluation step and may be archived only after they have become historical.
  • Archiving historical outputs and saving context remain active after the protected window for the most recent work.
9.1.382
  • The /loop command is now accepted even while another response is running.
  • If a loop is created while work is in progress, King stores it and queues its first instruction without interrupting the current turn.
  • Loop creation in idle mode and the existing behavior for status, pause, resume, and stop remain unchanged.
9.1.381
  • After a definitively unsuccessful ToolSearch, ToolSearch is removed from the active tool list for the rest of this turn.
  • Successful schema recognition and the handling of already loaded tools remain available and unchanged.
  • Repeated synonym searches therefore consume no further tokens once the runtime has already established that no eligible integration exists.
9.1.380
  • A transient error while steering the active turn now immediately re-enables the Telegram delivery control instead of making the recovered group message wait until the turn ends.
  • Pending group messages continue to be delivered even during long-running work; the FIFO order and the existing quarantine limit of three attempts are retained.
  • No running session is interrupted or restarted.
9.1.379
  • Transient retries of a channel steering confirmation no longer show a false red error as long as the message remains recoverable in the queue.
  • A visible delivery error appears only after the third failed attempt has safely archived the complete first queue entry.
  • The behavior for retry, confirmation, archiving, and FIFO order remains unchanged.
9.1.378
  • When background releases are published in quick succession, there is now a single replaceable status for the prepared update instead of a new log entry being appended for each version.
  • The prepared update entry always shows the newest verified target version; the active session stays untouched until its natural restart.
  • The notice about the actual installation and the changelog is retained permanently and unchanged. Fewer changes in the log therefore cannot hide an activated update.
9.1.377
  • Pending Telegram tasks now take the authoritative ID of the active turn from the core. An outdated visible TUI status can therefore no longer leave an accepted message unacknowledged.
  • The /loop control command is executed immediately while work is running; the persistent command confirmation no longer depends on a successful Telegram status reply.
  • If delivery of the first queue entry fails three times, it is archived locally with all recovery metadata before the queue continues, so a faulty entry cannot block later messages.
9.1.376
  • Large historical tool results are stored persistently before context compaction, so their complete output remains recoverable even after the embedded preview is cleared.
  • The stored result references survive later micro-compactions and keep the limited metadata required to reload the original output.
  • Offloading telemetry reports sizes and recovery status without exposing result contents or private paths.
9.1.375
  • Private Telegram DMs and slash commands keep the highest delivery priority. Explicitly addressed group work is then queued FIFO ahead of normal or unaddressed backlog.
  • An update handoff may cross a non-empty queue only if every entry is durable, not yet confirmed Telegram work with an acknowledgment return path. Local, mixed, or non-durable work continues to block it.
  • The prepared update notice follows a released persona UI language. For a language not yet released as a TUI locale, the notice shows only the version information instead of falling back to a wrong language.
9.1.374
  • The prepared update notice now uses the already released UI translation of the active language instead of a hard-coded German message.
  • Resume and New Session modes stay separate; update handoff, rollback, and Telegram duplicate confirmation have not been weakened.
9.1.373
  • An update prepared in the background can now take over the running session at a verified safe boundary. The session ID and working directory are retained; running tools, shell commands, compaction, and pending messages prevent the handover.
  • The supervisor activates the new runtime only after its loaded and ready receipts. If startup fails, the old runtime is restored together with the exact session and the faulty pending entry is discarded.
  • Telegram duplicates already restored in the delivery ledger are acknowledged immediately during queue replay. They no longer wait for a model step that deliberately never starts for a duplicate, so they no longer block subsequent group messages.
  • The persistent work focus now carries knowledge status, evidence context, corrections, withdrawals, and confidence across turns. This still creates no new rights or approvals.
9.1.372
  • Persistent goal checkpoints now distinguish verified, credible_unverified, hypothesis, uncertain_memory, stale, and unknown. Plausible assumptions are therefore no longer treated as confirmed knowledge.
  • Origin and knowledge status are checked together: runtime tool evidence may count as verified only after a successful tool run; external reports may not. Carry-forward states preserve their previous status and their last verification evidence.
  • Old replay states without the new field remain readable as legacy_unknown. New checkpoints must state their status explicitly. Rights, approvals, and authority remain unchanged.
  • The compact context projection names the epistemic state in exactly one line so that the agent takes it into account in the next step without burdening the context budget with extra text.
9.1.371
  • Fix for a wiring error from 9.1.370: the evidenceBasis value that was already stored and projected there is now also part of the strict public GetGoal output schema and is no longer lost on retrieval.
  • The schema accepts the four current origin types as well as legacy_unknown for old replay states. Rights, approvals, and authority remain unchanged.
  • A focused wiring test and a dedicated mutant guard the new public connection against regression.
9.1.370
  • Every fresh work checkpoint now states explicitly what its last confirmed state is based on: a successful runtime tool call, a direct user statement, an external report, or an unchanged carry-forward.
  • runtime_tool is accepted only when the current turn contains at least one tool call allowed by the runtime and completed successfully. carried_forward may not change the last confirmed state. Both paths fail closed on any contradiction.
  • Old stored checkpoints remain readable as legacy_unknown. The origin type is epistemic state and creates no rights, approvals, or authority.
9.1.369
  • A persistent work checkpoint now automatically receives a compact runtime receipt from the tool calls already completed in the same turn. The receipt names only the turn ID, the total, success, and failure counts, and a short digest.
  • Tool names, IDs, arguments, commands, outputs, paths, and user text are not written into the checkpoint. An empty receipt honestly stays at zero instead of faking a measurement.
  • Only a tool call permitted by the runtime policy and completed successfully counts as a success. Blocked, failed, aborted, or model-supplied receipts create no authority.
9.1.368
  • Every persistent work checkpoint now carries a monotonic revision. The first write starts at revision 1; every subsequent write must increase the currently projected revision by exactly one.
  • An old parallel turn or an outdated channel view can no longer overwrite a newer confirmed work state. Outdated, skipped, and invalid revisions fail closed before the target state is changed.
  • For compatibility, existing checkpoints without a revision field are treated as revision 1 when read. The revision is work state and creates no rights or approvals.
9.1.367
  • The active goal reminder now carries the persistent work checkpoint directly. King therefore keeps the phase, the last confirmed state, the exact next action, and the expected evidence even when the additional cognitive storage adapter is temporarily unavailable.
  • The exact next action already scheduled is executed first, before any alternative paths. The checkpoint is changed only when new evidence actually changes the confirmed state.
  • The fallback is only a compact projection of the already verified checkpoint. It creates no rights, no new data fields, and no restart.
9.1.366
  • Active goals can now store a small persistent work checkpoint with phase, last confirmed result, exact next action, and expected evidence. After a resume or event replay, King continues from this point instead of asking for permission again or starting over.
  • A checkpoint-only update keeps the goal active. Paused and blocked goals remain unchanged; a resume only restarts the runtime clock.
  • The checkpoint is strictly limited and contains work information only. Unknown fields, in particular rights or administration data, fail closed and cannot create any capability.
  • Without a checkpoint, the previous compact focus remains unchanged. With a checkpoint, only the four relevant focus observations are supplemented with the confirmed state, so the token cost stays small and constant.
9.1.365
  • Private Telegram DMs and the local CLI can now read, correct, or delete persistent focus directly with /memory focus, /memory correct <id> <value>, and /memory delete <id>. This path starts no model turn and therefore consumes no model tokens.
  • Telegram changes are bound to positive user, chat, and message IDs, a genuine private DM, the channel timestamp, and a stable request ID. Groups, incomplete origin, and altered repetitions fail closed.
  • Domain, key, and scope are always derived from the active goal receipt and cannot be smuggled in by the caller. Corrections and tombstones remain append-only, preserve the history, and grant no rights.
  • The focus output is limited to eight entries and fewer than 3,500 characters for Telegram; the total count remains visible.
9.1.364
  • The running cognitive lifecycle can now correct a persistent focus with correctFocusObservation and delete it with withdrawFocusObservation. Both paths continue to write append-only into the same tenant- and agent-bound event stream.
  • A revision is permitted only with the attestations runtime_user_prompt_hook and explicit_user_request. A normal model snapshot can neither derive nor smuggle in a correction or deletion.
  • Every revision carries a stable request ID as well as portal, actor, context, message, and timestamp. Identical repetition is idempotent; the same request ID with changed content and backdated revisions fail closed.
  • A correction followed by deletion leaves the complete history unchanged. After the deletion, the fact no longer appears in the prompt and consumes no context tokens. Memory still cannot grant rights.
9.1.363
  • A confirmed deletion is now stored as an append-only tombstone. The former content is retained in the audit history and the hash chain but disappears completely from the effective context projection.
  • Old resume, transcript, or queue events with a timestamp before the deletion cannot reactivate the removed content, so a later replayed old state is not treated as new truth.
  • Information deliberately provided again after the deletion timestamp can be learned again. The tombstone therefore blocks old evidence, not future development.
  • Deletions across other tenants, agents, domains, keys, or scopes, with a missing target, weak confidence, or wrong tombstone value, are rejected transactionally. Existing databases migrate in place.
  • A deleted fact produces no prompt line and therefore consumes no context tokens.
9.1.362
  • A confirmed correction can now explicitly supersede exactly one earlier observation in the same tenant, agent, domain, key, and scope area. The old entry is retained append-only in the audit history.
  • The effective view loads the corrected value and marks it as corrected; the superseded value is no longer projected as a current conflict.
  • Missing targets, other scopes or keys, and corrections below confidence 1 are rejected transactionally.
  • Existing SQLite databases receive the new relation column when opened, without losing their previous stream or version.
9.1.361
  • Equally credible personal or team statements with the same scope and key are no longer output as truth on a last-write-wins basis. The projection flags the conflict concisely and asks for clarification instead of pouring both contents into the context.
  • If a statement is at least 0,2 confidence points stronger, it stays usable but is marked as disputed. A later weaker claim can no longer obscure a confirmed state.
  • Identical confirmations are merged into one focus point. Canonical goal and progress fields remain revisable.
  • The append-only event history remains unchanged; permissions still cannot arise from the effective view.
9.1.360
  • The already canonical /goal state is projected into the cognitive event stream as a persistent work focus: goal, status, next trigger, and expected success evidence.
  • The same focus stays idempotent across runtime restarts. An unchanged goal state creates no duplicate events or observations.
  • Usage counters, time budget, and permissions are not copied into the focus. Without an active goal, no additional focus tokens are loaded.
  • The projection connects the matching goal scope with the private relationship scope of the current turn; it creates no rights.
9.1.359
  • Personality memory and genuine CLI turns now use the same tenant and agent identity stream from identity/manifest.json; without a complete identity, the compatible hashed fallback path is retained.
  • Direct Telegram turns project only the private relationship scope of the current counterpart. Groups and relationships with others produce no private focus tokens.
  • Scope selection is enforced before ranking; a newer insight from another scope can no longer obscure a matching entry.
9.1.358
  • A network error during automatic update preparation was reported only to an optional error callback. Without another poll, the running King stayed on its current version even though the session itself continued to run healthily.
  • The launcher now writes a bounded prepare-failed event with the version and a safe error name/code to handoff.jsonl.
  • A new preparation attempt is then scheduled exactly 10 seconds later. The running core is neither terminated nor reloaded.
  • Errors while writing the diagnostic event remain fail-soft; tokens, message text, and other secrets are not logged.
9.1.357
  • Repeated access to the same effective system prompt no longer rebuilds the large string of base and runtime appendix on every access.
  • The resolver keeps exactly one current base/appendix combination and invalidates it immediately as soon as either input value changes.
  • Empty prompt, base-only, appendix-only, and the previous separation with two line breaks are retained byte for byte.
9.1.356
  • Unchanged system prompts are now counted character by character for the context budget only once across repeated model steps.
  • The cache is limited to four entries, at most 500,000 characters per prompt, and 1,000,000 retained characters in total.
  • Changed prompts are still counted anew; context display, compaction budget, and request budget use the same current value.
9.1.355
  • Unchanged LLM request configurations no longer re-serialize their tool schemas on every model step just for the configuration log.
  • Model, alias, thinking level, system prompt, and tool sequence are compared against the last complete state.
  • Changed models, prompts, tool names, descriptions, or parameter schemas still selectively reopen configuration logging.
9.1.354
  • Unchanged tool schemas are now serialized only once per tool object and counted for the context budget.
  • An inventory of 403 tools is therefore no longer fully recounted on every repeated request check.
  • Changes to the name, description, or parameter object discard only the cache entry of the affected tool.
9.1.353
  • Argument fragments of agent swarm tools are still parsed immediately and carried over into the progress state, but now share the adaptive render timer.
  • A large streamed tool call therefore no longer triggers a complete TUI render for every argument fragment.
  • Start, completion, error, and cancellation remove open swarm timers before their final immediate render.
9.1.352
  • Assistant and thinking fragments of an agent swarm still update the progress state immediately, but share an adaptive render timer.
  • A fragment burst therefore no longer triggers a complete TUI render for every delta.
  • Discrete swarm events and progress cleanup remove open timers before their immediate final render.
9.1.351
  • Assistant and thinking fragments in the BTW/agent window are stored immediately in the turn, but share an adaptive render timer.
  • The controller no longer requests an additional full render per fragment for these two delta types.
  • Completion, error, retry, and dispose remove open timers; discrete hook and completion events remain immediately visible.
9.1.350
  • ToolCallComponent.appendSubToolLiveOutput carries stdout and stderr chunks into the activity state immediately, but rebuilds the subagent card only at the adaptive streaming cadence.
  • A shared pending set handles several simultaneously running subtools without lost output or one timer per chunk.
  • Tool completion removes its open refresh before the final rendering; dispose discards timers and the pending set cleanly.
9.1.349
  • ToolCallComponent.appendSubagentText collects rapidly arriving text and thinking fragments immediately in the internal state, but rebuilds the subagent card only at the adaptive streaming cadence.
  • Completion and error state clear a still open text refresh before the final rendering; dispose discards the timer cleanly.
  • Incoming bytes therefore remain available immediately, while repeated full rebuilds, snapshots, and renders are eliminated during fragment bursts.
9.1.348
  • Growing arguments of subagent tools and subtools are still collected immediately and completely, but are no longer re-parsed and re-rendered after every single fragment.
  • An adaptive timer batches the preview update. On completion, pending arguments are always applied before the final tool state.
  • Tool execution, approvals, final arguments, and the existing normal streaming path remain unchanged.
9.1.347
  • The event path called getStreamingToolCallPreview immediately after every incoming tool argument delta. This function parses the entire growing JSON text accumulated up to that point.
  • The call also happened for normal tools, although only AgentSwarm needs the immediately parsed intermediate state for its running progress display. The normal path thus partially bypassed the bounded preview cadence introduced in 9.1.346.
  • A small side-effect-free policy now decides before parsing: normal tools only collect the delta and parse at the scheduled preview flush; AgentSwarm still parses immediately on event name, active tool name, or existing swarm progress.
  • Tool execution, approvals, final arguments, and the swarm display remain unchanged.
9.1.346
  • 9.1.345 bounded full-text re-rendering for long response and thinking streams, but tool-argument-only streams had neither of these two text drafts and therefore stayed at a fixed 50 ms.
  • Every tool preview parses the whole growing JSON argument text accumulated up to that point. Large tool calls could therefore still re-parse and re-render the entire payload very frequently.
  • The already established adaptive cadence now also takes into account the total character count of the active streamed tool arguments: 50, 100, 250, or 500 ms at the same thresholds.
  • Tool execution, arguments, approvals, final preview, and immediate completion flushes remain unchanged.
9.1.345
  • While streaming, the TUI previously re-rendered the complete accumulated response and thinking text every 50 ms. With long model responses, the repeatedly rendered amount of text grew significantly.
  • Short streams up to 8.192 characters keep the previous responsive 50-ms cadence. After that, the interval rises in steps to 100 ms up to 32.768, 250 ms up to 131.072, and 500 ms beyond.
  • Explicit flushes at tool boundaries and on finalization remain immediate. Provider, queue, session, and token logic were not changed.
9.1.344
  • The cognitive runtime layer previously wrote policy and result for every tool call in two separate synchronous SQLite transactions.
  • An isolated Windows cost test run with 100 tool calls took 627,63 ms for this and produced 201 events. The content comprised 305 observations.
  • Completed policy/result pairs of a model step are now committed atomically in bounded groups of at most ten tools. Aborted or still-open policy checks continue to be saved individually at the end of the turn.
  • Arguments, outputs, the permission decision, the hash chain, and SQLite durability remain unchanged.
9.1.343
  • A private Telegram reply had already been delivered successfully with the reply tool. After that, the same model turn still started another step and produced internal status and work control text.
  • The additional step cost 42.360 input and 411 output tokens in the measured real session, even though the visible user reply had already been sent.
  • A successful Telegram reply now immediately ends a private conversation turn marked as direct. Failed replies, groups, and other tools continue to run unchanged.
  • After completion, the existing direct focus controller still applies: it notes the delivered reply and returns to the stored background work when the conversation ends or after a quiet period.
9.1.342
  • The relevance query for Mistake.md previously picked up every message with the role user. This included internal injections, compaction summaries, skill activations, and background messages.
  • Because the Mistake reminder itself is stored as an internal user message, it changed its own search query after every tool step, so it was selected and fed in again in the same turn.
  • The filter now uses only action-relevant user and cron inputs. Internal runtime texts are excluded from the relevance query and the low-information detection.
  • Genuine user messages, scheduled work, all verified lessons, and the rebuild after compaction remain available unchanged.
9.1.341
  • On a natural start, the launcher found an already locally prepared and verified automatic runtime, but still sent it through the network-dependent update notice first. If this second fetch failed temporarily, the old global version started again.
  • A prepared automatic runtime with an exactly matching mode (resume or new) is now started before the release is fetched again. Activation remains transactional: the runtime is recorded as active only after the new core has loaded successfully.
  • With resume, the session ID and working directory are retained. Manual update selection continues to use the previous notice path.
  • No running King is terminated. The fix applies only to the next natural start.
9.1.340
  • The launcher wrote successful updates to .blun/updates/install.json, while a profile runtime looked under .blun/profile/<name>/updates/install.json. The real profile path did not exist; therefore notifiedAt stayed null in the shared state.
  • Profile runtimes now read the update success from BLUN_SHARED_HOME and fall back to the previous BLUN_HOME only if no shared path exists.
  • After the next natural start, the TUI can display the version and up to three release notices once. Configured private Telegram recipients receive the same short text without a model turn and without token usage.
  • Installation, staging, activation, and the never-eject rule remain unchanged.
9.1.339
  • Successful tool follow-up steps with low effort use at most 4.096 completion tokens instead of the previous 8.192.
  • First steps, complex tasks, and error follow-up steps keep their configured thinking and output capacity. The change is not a global model or context limit.
  • A retrospective measurement across 1.442 genuine low-effort steps of an agent profile showed: 2.118.588 output tokens in total, median 791, p90 3.754, p95 5.485. With the new limit, 229.761 tokens, or 10,8 Prozent, would have been eliminated; 91,1 Prozent of the measured steps remain unchanged.
9.1.338
  • Merely repetitive questions such as Can I continue working? are no longer delivered in private Telegram conversations.
  • Internal queue, handoff, lane, and wait-state narration stays out of the private reply. Genuine work results and normal personal replies remain deliverable.
  • If a usable reply merely ends with another request for permission to continue working, only that closing question is removed.
  • Group routing and running sessions remain unchanged.
9.1.337
  • profile/<name>/SOUL.md is the canonical identity path of a King.
  • A matching named legacy soul replaces only an unchanged, generated profile skeleton. Developed profile souls are never overwritten.
  • Before a legacy import, the generated skeleton is backed up as SOUL.md.pre-legacy-import.
  • TGZ-SHA256: A50947748BE702FA331D19ABFD08E5F13080B207324F05281815D3446230B608.
  • npm-shasum: 221c4b2ac5083e4d63e25a8543f06ba66f2bbb28.
  • npm-integrity: sha512-qna0Bh2EccxXs+7ctK+NxP8XCYBE5CyxkZSJcHYq4G92ERNwujIWfNzmR24Yi9xlRxev/vOcW3HUW2OPyePpNg==.
9.1.336
  • Interrupted sessions normalize their replay state before further Telegram work is delivered.
  • If delivery to an active turn is rejected, the message falls back to a fresh queue turn instead of retrying the same steering every 5 seconds.
  • DM focus checkpoints keep automatic resume timers and explicit pauses across updates.
  • TGZ-SHA256: 57E6581AA95FEE1BD4CD12671F62A316B707106C59B2915A8385424B163C6E76.
  • npm-shasum: bd910c38e17b1b6dc6be2f965bdee5fe90e22084.
  • npm-integrity: sha512-xjwxBcTVo3KS+ATnxhVozRD4JzUqoJNAbiLeH30ZucpkTxuB4kfGK/GQ+eZqJDIJW2TtODg8yWw9DuLdP73UDA==.
9.1.335
  • A normal private Telegram message now interrupts the running task only for the immediate conversation. Afterwards, King automatically resumes the exact saved work state after 60 seconds without asking for permission again.
  • An explicit end of conversation resumes the task immediately. Only clear user requests such as pause, pausiere, stop, stopp, warte, or halte an keep the task paused until the user allows it to continue.
  • Internal terms and status reports about cron, checkpoint, queue, or lane are suppressed in normal private replies. The actual work and its stored state remain unchanged.
9.1.334
  • The automatic background preparation no longer starves during a rapid release sequence. The previous 30-minute lock always referred to the newest release; with releases every minute, no version ever became old enough to be prepared.
  • A cryptographically matching release is now loaded immediately, checked for integrity, installed in isolation, probed syntactically, and registered as a pending runtime.
  • The running King session is still not terminated. Activation and resume remain confined to the existing protected next-start path. This version changes neither handoff nor session logic.
9.1.333
  • After 9.1.331, a live screenshot showed an ERR_MODULE_NOT_FOUND in the managed Telegram plugin.
  • The plugin import pointed from the isolated managed tree to a core file that had not been installed there.
  • The huge repetitive text, also found in the measurements, ran in the visible thinking stream. Until then, the existing live repetition brake checked only response deltas.
  • 9.1.332 was not added to the public manifest after the plugin finding. 9.1.333 fully replaces this npm candidate.
9.1.332 Not released
  • Not released. A plugin import pointed from the isolated tree to a core file that was not shipped; 9.1.333 fully replaced the npm candidate.
9.1.331
  • Private Telegram conversations keep natural replies and requested work results.
  • Observed internal duplicate messages about paused work, already sent replies, running turns, tool status, and the absence of any need for action are suppressed only in private chats.
  • A message is filtered only when it contains both internal runtime context and explicitly no new user value.
  • Group routing, genuine completion messages, and normal short conversation remain unchanged.
9.1.330
  • The complete soul source file of every King is retained unchanged.
  • The model context receives a limited character projection from it with identity, voice, values, relationships, preferences, goals, and grown history.
  • Clearly identifiable mission, lane, rights, QA, tool, command, verification, incident, log, runtime, update, deploy, and build sections are no longer loaded into every prompt as personality.
  • Short character-only souls remain byte-identical. Unknown non-technical sections remain visible in their order.
  • No soul file is deleted, shortened, or automatically rewritten.
9.1.329
  • Each named King profile now uses its own agent node in the shared identity core. Relationships, history, and learned person data no longer collapse onto the first configured agent.
  • Existing named soul files such as _agent-a_soul.md, _agent-b_soul.md, or _agent-c_soul.md are assigned to the matching profile and copied once, byte for byte, into SOUL.md.
  • The old source file is retained unchanged. An existing profile SOUL.md is never overwritten.
  • Persona selection and personality mode read on a per-profile basis. A broken, oversized, or linked profile persona does not silently fall back to the identity of another agent.
  • The shared core remains usable without Mnemo. Running tasks, rights, and QA rules are not changed by this migration.
9.1.328
  • Persona and SOUL.md are loaded from the active profile first.
  • Named profiles never inherit the soul of another agent from the shared home.
  • Legacy and default profiles keep the previous shared fallback.
  • If its own soul file is genuinely missing, a minimal skeleton is created once; existing files are never overwritten.
  • The identity and relationship system stays file-based and works without Mnemo.
9.1.327
  • Private Telegram conversations stay with the person: internal queue, checkpoint, pause, cron, hook, and idle reports are suppressed on both delivery paths as long as no status update is requested, no decision is needed, and no relevant blocker has arisen.
  • Technical status updates go to the responsible team channel. They are not copied into the private conversation again.
  • Exact model repetition loops are detected while the stream is still running. The running provider stream is terminated and the same step is retried exactly once with the preserved task context.
  • Soul, person knowledge, rights, running tasks, and the existing direct focus pause were not replaced or deleted. No running TUI was restarted.
9.1.326
  • Manual and automatic permission modes mirror tool approvals as bounded buttons into the uniquely linked private Telegram DM.
  • Only the tool name and existing selection texts are transmitted; arguments, descriptions, and secrets stay local. Expired approvals, approvals owned by others, and approvals already answered locally are discarded fail-closed.
  • God Mode stays fully autonomous and produces no Telegram approval.
  • Technical status updates are routed to the responsible colleague and no longer copied back into the user's private conversation.
9.1.325
  • God Mode performs personal memory writes without a second approval prompt; the existing session- and turn-bound consent is retained.
  • An explicit Telegram instruction to remember activates the same narrowly bounded consent as a direct console instruction. Manual and automatic permission modes still ask before writing.
  • The update journal records whether an installation was triggered manually, automatically, or via the start dialog.
9.1.324
  • The first trusted interaction with a bot creates it locally as an agent and relationship node. Role, responsibilities, quirks, collaboration, and handoff can then grow in a structured way.
  • Every King projects a compact colleague excerpt into its context. This way it knows the tasks and quirks of other agents without loading the entire relationship inventory.
  • If task-critical information is missing, King does not guess: it asks the best-matching human or agent exactly once. If no one is known to be responsible, it asks the user instead of inventing a name.
  • Relationships and roles never create rights. Permission, ACL, and secret fields are not projected into the colleague excerpt. The path is local, tenant-bound, name-neutral, Mnemo-independent, and adds neither model nor tool calls.
9.1.323
  • Private conversations again answer the person instead of voluntarily disclosing internal process data. Checkpoints, hashes, paths, tool, cron, and hook diagnostics, hidden rules, tasks of other agents, and idle reports stay internal.
  • Work status is mentioned only when the user asks for it, their decision is needed, or a blocker affects them concretely. Paused work stays internal and is not carried into a casual conversation.
  • The rule applies with and without personality mode, contains no hard-coded people or agents, and adds about 75 prompt tokens but no model or tool call. Task priority and the evidence requirement remain unchanged.
9.1.322
  • The visible personality switch now writes persona.json atomically. Name, language, notes, and all other existing persona fields are retained; only personalityEnabled is changed.
  • SOUL.md, AGENTS.md, JOURNAL.md, and relationship files are not written to when the feature is turned off or on. The normal SOUL-based agent identity stays loaded in the system context even when the personality feature is disabled.
  • A failed live refresh restores the previous selection byte for byte. If another writer has changed persona.json concurrently, the rollback aborts with PERSONALITY_CHOICE_CONFLICT and overwrites nothing.
  • Symlinks and oversized, invalid, or non-object persona files are rejected fail-closed. When the feature is enabled, the identity tree is prepared before the commit.
  • An agent's error documented afterwards, disclosing internal checkpoints, cron rules, SHAs, and other agents' task details in private conversations, is not part of this version. This output filter is the next separate build.
9.1.321
  • A relaxed first private exchange or a personal remark volunteered by the user can place exactly one optional curiosity opportunity into the model context. It is not a mandatory question; wording and tone continue to come from the loaded SOUL.md, not from a fixed question catalog.
  • Tasks, urgency, errors, links, code, paths, and group traffic suppress curiosity fail-closed. It never sends on its own and must not interrupt running work.
  • A 30-day cooldown applies per tenant, agent, and linked person, even across different portals. Retrying the same event is idempotent.
  • The new state is no longer stored as a Telegram-specific curiosity file in the identity tree. Instead, a replaceable personality-memory-adapter writes a versioned event into the existing transactional cognitive store. Telegram is the origin; the private relationship is a separate visibility scope.
  • Only the topic, a stable event/source ID, the timestamp, and the private scope are stored. Raw text, fixed questions, rights claims, and secrets are not included. Unsafe roots, unknown fields, and store failures remain fail-closed.
  • The basis for the portal boundary was the internal concept paper v7. The CLI is the reference client; the local store is explicitly marked as a replaceable projection and is not a second canonical portal store.
9.1.320
  • Private, explicitly open conversation threads are stored as immutable, deduplicated events with source, timestamp, context, and confidence. Natural formulations such as Frag mich morgen noch einmal nach ... are recognized just like the explicit open-thread form.
  • Explicit repair guidance is stored separately from general relationship notes and is taken into account in later behavior.
  • The current turn deliberately does not yet see its own new note. Only a later private turn receives the bounded context; this prevents duplicate or suggestive self-confirmation.
  • Task and explicit instructions come before social context. Open threads may not interrupt active work and never send on their own. Relationship data cannot create rights, approvals, or permissions.
  • Group traffic, secrets, permission formulations, unsafe paths, symlinks, and oversized files remain excluded fail-closed.
9.1.319
  • A valid existing profile without a stored personalityEnabled value now activates the personality automatically.
  • On the first normal prompt, the local identity tree with agent profile and JOURNAL.md is created even without Mnemo.
  • An explicit false, 0, or off stays off. Damaged, symbolically linked, and oversized persona files remain fail-closed.
  • SOUL.md and AGENTS.md are neither deleted nor rewritten.
9.1.318
  • The background updater downloads the newest version authoritatively, verifies its independently published SHA-512 integrity, and marks it for the next start.
  • The running King, its turn, and its tool calls stay untouched. There is no live handoff, no ACK, and no more tui.stop(76).
  • The session ID and working directory are stored with the prepared runtime. Only at the next natural start is the new version activated and the exact session resumed automatically.
  • The running TUI receives at most one passive completion message; a newer prepared version only replaces the version marked for the next start, never the active process.
9.1.317
  • If the provider consumes the entire response budget with a length finish but produces no visible text, the retry budget is no longer reduced to an eighth but doubled.
  • The retry stays in the same turn and uses the same signal, the same message history, and the same work state.
  • The existing cancellation handling and the bounded retry count remain unchanged. Manual cancellations or permanently empty results do not run endlessly.
9.1.316
  • Private Telegram DMs get their own direct queue lane ahead of group, loop, and background work; an explicit /urgent remains the highest priority.
  • When the DM conversation begins, the running work state is saved once as a bounded checkpoint. Message text is not persisted.
  • After a recognized end of conversation or a minute of silence, King asks exactly once: Can I continue working?
  • The stored work stays paused and is resumed at the original checkpoint only after unambiguous consent.
  • This version ships the delivery and pause control. The full personality, relationship, and journal system remains a separate, ongoing development.
9.1.315
  • Authorized attention signals now reach the turn through the normal channel queue without bypassing the existing delivery or rights policy.
  • Duplicate, outdated, unapproved, out-of-scope, and non-Telegram signals are discarded before they reach the model context.
  • Follow-up questions remain limited to at most one natural inquiry, are deduplicated, and fall silent when the signal is no longer current.
  • This version ships only the safe delivery path. The DM interruption and resumption logic prioritized afterwards deliberately remains reserved for the next, separate version.
9.1.314
  • Local slash commands no longer wait for hours in the queue during a long active turn; they abort the turn in a controlled way and run as the next work step.
  • A new slash command replaces an already waiting command of the same type in the console and in Telegram. This applies to /reload and /loop, among others; normal messages, shell work, and other channel tasks are retained.
  • Escape removes waiting slash commands even when no active turn is visible anymore. The existing reload compatibility is retained as a wrapper around the general queue policy.
9.1.313
  • A successful automatic update is written into the TUI transcript as a persistent notice after the session replay. The message can therefore no longer be overwritten by replay or a short-lived status.
  • The same source version, target version, and release notes are sent once to linked Telegram DMs through the existing path, which deduplicates by version. A failed send can be retried.
  • The public manifest now contains the fields name and releaseNotes expected by the fallback parser. Nothing was changed in the updater handoff, session restart, or running processes.
9.1.312
  • An explicit Telegram /reload no longer waits behind a long-running model turn. It is placed as a control command ahead of the existing queue and triggers the existing controlled session abort exactly once.
  • The existing reload handler runs only after the confirmed end of the turn. Therefore no second turn starts in parallel and a writing turn is not processed further in the middle of the reload logic.
  • Old reload duplicates are removed; normal Telegram messages and other queue work are retained in their order. The Telegram acknowledgment stays open until the command is actually executed.
9.1.311
  • An attention candidate becomes a bounded delivery task only when a fresh runtime receipt bound exactly to its candidate ID is present.
  • Only runtime_user_prompt_hook and runtime_tool_policy count as authorities. Memory, wrong agent, wrong channel, wrong scope, block decision, future-dated receipts, and receipts older than 5 minutes fail closed.
  • Receipts are tenant-bound, transactional, and single-use. Repeating the same retry is idempotent; using the same receipt for a different candidate is rejected as a replay.
  • The existing shared cooldown remains effective. The result is only a structured attention_notice intent and contains neither message text, send function, nor permission. The actual delivery policy remains the next separate step.
9.1.310
  • Persistent goals, open threads, next triggers, expected evidence, team context, and self context run through a shared, strictly bounded focus projection. The default is at most six entries and 900 characters.
  • Project and work scopes are weighted ahead of confidence and recency. The newest value is shown without deleting earlier contradictory observations from the immutable event history. Changes become visible as revised.
  • Short-lived runtime observations, weak evidence, and general world facts consume no persistent focus budget. Rights, token, and secret fields are rejected as early as write time.
  • A structured, idempotent snapshot can carry the focus forward across sessions. The projection is context, not permission, and can override neither the task nor the runtime policy.
  • From ECC, only the principle Kontext begrenzen, Relevantes laden was adopted. No ECC hook, learning store, or harness was installed.
9.1.309
  • The new attention-only policy creates a bounded candidate only from attested missing agent heartbeats, overdue commitments, or tasks blocked for a longer time.
  • Responsibility, active task, attested absence, local quiet time, allowed channel, minimum confidence, and cooldown are checked before admission. Human silence without an overdue commitment has no effect.
  • Every candidate carries an evidence ID, scope, timestamp, and confidence, but neither prompt content nor rights, secrets, or a send function.
  • The shared SQLite core grants one transactional claim per tenant and evidence item. Parallel agents cannot claim the same trigger twice during the cooldown.
  • This version does not scan on its own yet and sends no message. Every later action still requires the normal runtime authorization.
9.1.308
  • In resume mode, the prepared runtime record now contains the exact ID of the running session and the canonically verified working folder. A later start therefore no longer has to guess the most recent or a supposedly matching session.
  • Every genuine session change updates this data. Immediately before the safe handoff, it is written once more before the old runtime receives the confirmation to end.
  • Only the exact same session demonstrably resumed through this update path receives a one-time resumption impulse after the replay, and only if its goal is still active. Normal starts, other sessions, and paused or blocked goals stay untouched.
  • The safe work boundary remains unchanged: no handoff during streaming, compaction, tools, shell commands, or pending messages. No running King was manually restarted for this delivery.
9.1.307
  • Only an error from the immediately preceding runtime turn that actually requires action is shown as a short continuity receipt before the next model decision: aborted/failed turn, blocked policy, or failed tool.
  • A normally completed turn produces no projection at all and therefore zero additional context tokens.
  • The selection is bound to runtime ID plus turn ID and therefore stays correct even after a session change with turn IDs starting at zero again.
  • The projection contains no prompts, arguments, outputs, call IDs, or rights. It explicitly states that it must never authorize an action or override the current user/tool policy.
  • This stage is deliberately reactive and narrow. Proactive attention, delegation state, and content-related open threads are not loaded here yet.
9.1.306
  • The cognitive turn lifecycle trace now records the actual runtime decision from PermissionManager.beforeToolCall for every genuine tool call: passed, blocked, or error.
  • After the run, the actual result (success, error, cancelled), the duration, and the next check trigger are appended as an immutable receipt.
  • Only the tool name and a stable hash of the call key are stored. Arguments, tool outputs, and prompt contents do not enter the cognitive state.
  • The existing rights hierarchy remains unchanged: memory cannot approve an action. Recording errors remain fail-soft and must neither allow a tool run nor block a user turn.
  • Delegation receipts, proactive attention, and the strictly relevant back-projection of the state into later decisions are still open.
9.1.305
  • The transactional SQLite core shipped in 9.1.304 is now connected to the actual runOneTurn() lifecycle. Every model turn records perception, origin classification, the bounded turn plan, the expected final receipt, the prompt gate result, the completion reason, the duration, and the next trigger.
  • Only runtime metadata is stored, no prompt contents. Tenant and agent are derived stably from the BLUN home and the active profile, without fixed person lists.
  • Only the existing runtime policy may produce a gate result. Memory is strictly excluded as a rights authority. The recording never returns a permission and still has no execution function.
  • The learning trace is fail-soft: a SQLite/lifecycle error is recorded only as content-free telemetry and may not block the actual user turn.
  • Tool-specific action/delegation receipts, proactive attention, and the relevant back-projection of the state into later decisions are still open. 9.1.305 therefore does not claim a complete AGI loop.
9.1.304
  • The first transactional cognitive state core is stored as a local SQLite database under the BLUN home. It can store self, world, and team observations, goals, open threads, assumptions, next triggers, and expected evidence across sessions.
  • Multiple agent/channel writers are serialized with BEGIN IMMEDIATE and an optimistic version number. Outdated writers fail closed; identical event repetitions are idempotent.
  • Every event is SHA-256-chained. Statements carry source, context, timestamp, confidence, and scope. Contradictions remain separate immutable observations instead of overwriting old statements.
  • Rights, capability, and secret-shaped fields are rejected. The core has no execution, delegation, or permission function.
  • This is the attested storage foundation, not yet the complete perceive-plan-act loop, and not yet wired into every turn.
9.1.303
  • A private relationship candidate safely captured in 9.1.302 is loaded as clearly non-authoritative memory context from the next direct conversation onward. The current statement still does not influence its own turn.
  • At most the two newest validated notes are loaded, each at most 160 characters, within the unchanged 1.500-character total budget. If no notes exist, 0 additional prompt characters are added and no model, embedding, or network call is made.
  • Private notes are never loaded in groups. The system boundary explicitly calls them reference data instead of instructions and repeats that they cannot grant or change rights.
  • Automatic persistent intake, conflict evaluation, transactional multi-agent storage, and proactive attention are still open.
9.1.302
  • An explicit private statement such as Bitte merk dir: ... or Please remember that ... now creates a small, not yet active relationship candidate. No additional model, embedding, or network call is made for this.
  • Every candidate carries source, channel/direct context, timestamp, confidence, scope, and the immutable history rule. The same delivered channel operation is idempotent; later confirmations and contradictions remain visible as separate entries and do not overwrite each other.
  • Groups, normal conversation sentences, secrets, rights and approval statements, invalid tenant/agent identities, and unsafe paths are rejected. Relationship data still cannot create any rights.
  • This is only the first safe capture step for the product goal. The candidates remain pending and are not yet adopted automatically into the active relationship or the model context. Transactional multi-agent core, cognitive state, initiative, and proactive attention are therefore explicitly not finished yet.
9.1.301
  • The permanently loaded personality presence block dropped from 1.433 to 1.020 characters, a calculated reduction of about 104 prompt tokens per active personality turn. No further model or storage call was added.
  • Task focus, loaded soul, bounded curiosity, group protection, uncertain memory, open threads, and relationship repair stay in the small block. The mode without personality remained byte-identical at 288 characters.
  • Red test run: the new 1,050-character gate failed at 1,433 characters. Mutation test run without the personality block: 12/18 targeted tests red. Restored: 18/18 focused, 690/690 full suite green.
  • Package regression gate 9.1.300 to 9.1.301: 164 against 164 stable paths, 0 removed. Fresh installation: FRESH_INSTALL_OK 9.1.301.
9.1.300
  • An MCP server that fails at startup now receives up to three further connection attempts 10 seconds apart. A transient startup failure is therefore no longer given up after only one attempt.
  • The MCP inventory is no longer logged just once; it is logged again whenever the number of connected servers or tools changes. A late recovery therefore visibly replaces the old 0/0 count.
  • Existing MCP configurations, tool definitions, and running sessions remain unchanged. The following files were adjusted: blun.mjs, test/mcp-runtime-resilience.test.js, package.json, and package-lock.json.
9.1.299
  • Large Read results remain natively re-readable: the visible output is limited to 10 KiB and then names the exact next line instead of only displaying [offloaded].
  • Large plain Write requests and source files over 500 lines are automatically split into byte-exact fragments, assembled in a private adjacent file, and written atomically to the target path.
  • After assembly, the runtime checks the persisted bytes via SHA256. The existing Edit protection remains unchanged; manual continuation is still possible but no longer required for large full writes.
  • New: bin/native-large-file-io.cjs. Adjusted: blun.mjs, bin/read-continuation-policy.cjs, bin/write-continuation-policy.cjs, four focused test files, and package.json and package-lock.json.
9.1.298
  • When personality mode is enabled, it sets up a local, tenant-capable identity area on its own during the first normal TUI turn. Mnemo is not required for this.
  • The existing SOUL.md and AGENTS.md stay loaded and unchanged. A new JOURNAL.md is created only once and replaces neither soul nor rules.
  • New Telegram identities receive cautious person, relationship, and group nodes without invented characteristics. Private history and group context stay separate.
  • Direct relationship continuity stores at most six short, locally redacted entries and passes at most two earlier excerpts to the current turn. The current text is not injected twice.
  • The social attention layer recognizes only an attested direct return gap of seven days or more, produces at most one notice within the 30-day cooldown, and sends no message itself.
  • The current task and explicit instructions always come before curiosity, relationship, and attention in the context. The entire dynamic identity block remains limited to 1,500 characters by default.
  • The MCP retry and reload queue fixes published in 9.1.296 and 9.1.297 are included in the candidate.
9.1.297
  • On two agents, an old /reload task stayed visible in the queue after Escape. A second /reload could run, but the first entry was neither removed nor acknowledged to prevent redelivery via Telegram.
  • The new policy removes only local and Telegram reload commands. It preserves the identity and order of the existing queue as well as all other messages and commands.
  • Pressing Escape before active work is aborted and every newly incoming /reload call the same cleanup path. Removed Telegram entries are acknowledged through their existing acknowledge callback.
9.1.296
  • A real resume run under 9.1.294 reported exactly one silent startup error for windows-mcp on August 27 at 14:26:17Z: Timed out after 30000ms. In the following minutes, neither a second startup attempt nor a final retry result appeared.
  • By contrast, starting the same uvx windows-mcp serve directly produced a response to initialize after about 3.7 seconds. The installation and the server were therefore working in principle; the gap lay in how the King MCP startup was retried.
  • blun.mjs now keeps exactly one retry attempt 10,000 ms after a first MCP startup error. The timer stays referenced until the second attempt has been executed. There is no process or session restart.
  • If the second attempt also fails, the existing honest final state unavailable is retained. Other MCP servers and the TUI continue to run.
9.1.295
  • The background task runtime registered a listener on an external AbortSignal for every run but did not remove it after a normal worker, timeout, or stop result. Long agent sessions could therefore accumulate outdated abort listeners.
  • bin/abort-listener-policy.cjs now produces the abort outcome together with an idempotent cleanup() function. blun.mjs calls it in the existing finally path together with the timeout cleanup.
  • Abort behavior, result selection, and visible task semantics remain unchanged. The change creates no model calls and no new context tokens.
9.1.294
  • Real update attempts of two agent profiles showed the same pattern: the first call ended with a transient fetch failed, and the second call, made immediately afterward, succeeded. Until then, both official sources had made only a single network attempt.
  • Registry and public manifest now each receive their own bounded retry budget with 250 and 750 milliseconds of backoff.
  • Only timeouts, known transient transport errors, and HTTP 408, 425, 429, and server errors of 500 and above are retried.
  • Invalid JSON, oversized responses, disallowed endpoints, and permanent client errors such as 404 fail immediately. No model calls, context tokens, or persistent background loops arise.
9.1.293
  • The background updater prepared a verified target correctly but continued to send RUNNING_UPDATE_PREPARED_MESSAGE to the active core runtime afterwards. A running TUI could then respond with exit 76 at a supposedly safe boundary. This contradicted the product contract from 9.1.222: updates must never end an active session and are activated only at the next natural start.
  • bin/launcher-runtime.js still performs the download, integrity check, staging, target update, and cleanup unchanged, but no longer writes an IPC message into the running session during preparation.
  • Existing direct handoff functions remain for compatibility; the automatic background path no longer triggers them.
9.1.292
  • A real session ran on 9.1.279 and had prepared 9.1.287 with the event prepared-for-next-start, but afterwards pulled none of the already published versions 9.1.288 through 9.1.291.
  • The cause lay in superviseProtectedCore(): after the first successful staging, updateStarted stayed set, and scheduleNextPreparation() additionally aborted as soon as preparedTarget existed. The background poller was thereby permanently terminated after the first hit.
  • The poller now stays active even with a prepared target. Only a strictly newer, valid semver replaces the prepared target; identical or older targets and targets that cannot be validly compared are ignored.
  • A target refresh deliberately sends no second prepared IPC to the running TUI. The current process therefore stays untouched and the newest prepared version becomes active only at the next natural start.
  • As soon as a handoff is confirmed or the supervised core runtime ends, no target is exchanged anymore and no new timer is created.
9.1.291
  • The blocking compaction path registered an anonymous abort listener on every not yet aborted signal but did not remove it after the compaction finished. Dead abort listeners could thus accumulate in long sessions.
  • FullCompaction.block() now uses a named listener and the small helper waitForAbortableCompletion(). The helper removes the listener in finally after success, error, or abort.
  • An already aborted signal is handled immediately without registering a listener. The change alters neither the abort decision nor the compaction logic outside this lifecycle.
  • The pattern comes from the current comparison with AnythingLLM; only the individually verified listener cleanup was adopted, not AnythingLLM's runtime.
9.1.290
  • BLUN previously showed only the coarse sums of the context window with /context. The actual cost drivers within the system context and the tool schemas remained invisible.
  • The new local command /context-doctor breaks the current context down, without a model call, into core instructions, personality and soul, relationships and presence, skill catalog, runtime additions, built-in tools, user tools, MCP tools, other tool schemas, conversation, and provider-related overhead.
  • All subcategories are reconciled against their measured parent sum. Overlapping or outdated estimates therefore cannot artificially inflate the display.
  • The interface is fully localized for English, German, Spanish, French, Swedish, and Czech. All five translations were released through the mandatory language gate before integration and subsequently verified cryptographically.
  • The command reads only the local session context. It calls neither the model nor the usage management nor an external network.
9.1.289
  • The live hub evidence after 9.1.288 showed an agent profile still offline. Its effective profile configuration contained the Mnemo MCP with MNEMO_AGENT=<Profilname>, but no hub URL in the King process. The 9.1.288 heartbeat was therefore deliberately not sent despite the existing internal identity.
  • The launcher now passes the active profile file mcp.json to the heartbeat. Only an enabled Mnemo block with a concrete MNEMO_AGENT or BLUN_MNEMO_AGENT identity activates the internal registration. Without this identity, the function stays completely off.
  • The process creates no model calls, embeddings, or context tokens. Public user profiles without an internal Mnemo agent identity stay separated from the internal hub.
9.1.288
  • A screenshot showed the MCP cause directly: windows-mcp and mnemo ran into the 30-second timeout on the first start, while a later /reload connected all five servers. The profile path was correct; a loader change was therefore rejected.
  • Failed MCP starts now receive exactly two non-blocking background attempts after 1 and 3 seconds. The third overall attempt can connect without extending the TUI startup. needs-auth, disabled servers, manual reconnect, and shutdown stay separate from the automation.
  • Internal Kings can register with profile name, host, and PID at startup when a Mnemo hub is explicitly configured, and send a heartbeat every minute. Without a hub URL, the function stays completely off; it creates no model calls, embeddings, or context tokens.
  • Escape previously did not treat the short queueSteerInFlight state as running work. While a Telegram message was being steered into the active turn, Escape could therefore queue an undo instead of stopping the turn. The existing abort condition now also recognizes exactly this transition.
9.1.287
  • The deferred ToolSearch search previously accepted the search text without a size limit. An incorrectly generated, very long search text could therefore search the tool catalog and then be carried into the next model step again as part of the zero-hit result.
  • The pattern derived from AnythingLLM commit d7353ae now limits the text to 1,000 characters before search and visible output. Where possible, it ends at a word boundary; if a single word is too long, the hard limit applies.
  • Normal short search texts, tool selection, and hit logic remain unchanged. The protection adds no model calls, embeddings, retries, or background work.
9.1.286
  • The core already reported controlled retries after transient model errors as turn.step.retrying. The TUI, however, discarded this event completely. A running recovery therefore looked like a frozen agent.
  • 9.1.286 meanwhile shows only the next attempt and the limited wait time in the existing footer notice, for example Retry 2/3 | 1.3s.
  • Provider error text, status code, and local paths are not displayed. The notice is removed only if it is still the same value set by the retry display; newer notices from other TUI functions are retained.
  • Retry count, backoff, model calls and token usage remain unchanged.
9.1.285
  • AnythingLLM keeps unsent prompt drafts locally. BLUN lost the content of the TUI input field during an update, crash or controlled restart, even though this text was not yet model context at all.
  • 9.1.285 therefore stores only the unsent local draft. There is no model, network, embedding or Mnemo call and hence no additional token cost.
  • The draft is separated by profile and working directory, written only after 300 ms of idle time, removed when cleared, and restored before the editor receives focus on the next start.
  • The storage is limited to 64 KiB. Empty, corrupted, oversized or symlink-based states are discarded fail-closed. The write path uses a private temporary file and atomic rename.
9.1.284
  • The DeepAgents revision 37d7777 feeds the cost of dynamic subagents back into the visible total usage. BLUN did report the cumulative usage of a subagent in the completion event, but did not write it into the usage recorder of the parent session.
  • As a result, /usage could omit subagent work. Simply adding the completion value would also have been wrong: continuation and retry use the same subagent with cumulative counters and would have counted old usage again.
  • 9.1.284 therefore records exactly the difference between attempt start and attempt end for spawn, continuation, and retry. The difference is captured in the finally path so that failed attempts count as well.
  • Reset, non-monotonic, or invalid counters are discarded entirely. This produces neither negative nor fabricated token values.
  • There is no additional model, network or storage call. The change corrects only the existing local accounting.
9.1.283
  • The new DeepAgents /context-doctor makes the cost of base instructions, memory, tools and history visible as separate components.
  • BLUN's /context already showed history and tools, but not the system prompt. At the same time, the context brake estimated only config.systemPrompt without an explicit turn override, while the real model call uses effectiveSystemPrompt. This also includes the account and memory contexts appended at runtime.
  • The brake could therefore underestimate exactly the context that is token-critical for the planned personal agent identity.
  • 9.1.283 now counts the same effective system prompt that the model receives and shows its estimate in the /context panel as a separate system line. No additional model, network, or storage call is introduced.
  • No concrete token saving is claimed: the change corrects the measurement and the brake decision and makes future identity costs visible.
9.1.282
  • According to its changelog, DeepAgents explicitly shortens LLM-visible tool descriptions to reduce the load on the resident model context. Source examined: langchain-ai/deepagents, entry #5009, commit 761f5f... in libs/deepagents/CHANGELOG.md.
  • BLUN already had a shorter read_default text but only wired it in after READ_DESCRIPTION had been rendered from it. The apparent optimization therefore had no effect on the model.
  • 9.1.282 shortens the contract without loss of function and re-renders the effective description immediately before the Read tool is built. Paging, security rules, encoding and line endings are explicitly retained.
  • The resident Read description drops from 1,648 to 1,035 characters, a reduction of 613 characters or about 37.2 percent. This is a measured context reduction; no exact token saving is claimed.
9.1.281
  • With /aside, ECC describes an explicit side path for a short question without losing the running main task. Source examined: affaan-m/ECC, commit d8409a4b0813771235555e32e3d8046a73988bfa, commands/aside.md.
  • BLUN already had the stronger implementation under /btw: a dedicated forked side agent answers the side question and leaves the main turn active and unchanged. Therefore, no second engine was built.
  • 9.1.281 adds only aside as a discoverable alias of the existing btw definition. Without an explicit /aside or /btw call, no background run and no additional model consumption arise.
9.1.280
  • Completed or expired candidates in the local validated learning store previously remained indefinitely and were read again on later relevant turns. The currently measured default store contained only one candidate; the change is therefore a preventive long-term limit, not a claimed reduction of the current load.
  • Only Evolver's bounded 200-to-100 sawtooth pattern for terminal candidates was adopted. Source examined: EvoMap/evolver, commit 079e022394c2a25e72167f8a738db823bce2cb1f, src/gep/assetStore.js.
  • Only when more than 200 recorded or expired candidates are present are the oldest terminal candidates removed until the newest 100 remain. Every open pending candidate is retained.
  • The cleanup runs only in the existing learning sync. It creates no model call, no startup scan and no new background process. A locked entry is counted as an error and blocks neither the remaining candidates nor the active agent work.
9.1.279
  • BLUN already archived the messages displaced by a full compaction completely under conversation-history, but had no retention limit for these re-readable Markdown archives. The folder could therefore grow without limit over long runtimes.
  • DeepAgents' bounded retention of offloaded history was adopted as a narrowly scoped lever. Source examined: langchain-ai/deepagents, commit dfde21e379201c833da4162444ef4a13b46980fd, libs/code/deepagents_code/config_manifest.py and libs/code/deepagents_code/offload.py.
  • When writing the next compaction archive, BLUN cleans up only direct, regular compaction-*.md files whose modification time lies outside the default 30 days. The TUI start thus receives no new file search and no additional background work.
  • Other Markdown files, subfolders, current archives and the running raw history remain untouched. Individual file errors do not block the active compaction.
  • BLUN_COMPACTION_HISTORY_RETENTION_DAYS=0 disables the cleanup. Negative, non-integer, or excessive values safely fall back to 30 days.
9.1.278
  • Private Telegram DMs had no explicit priority path. An important new message was therefore queued behind normal messages that were already waiting, while a hard turn abort would have endangered tools and state.
  • /urgent <Nachricht> now marks only messages from positive Telegram chat IDs, i.e. private DMs. Groups, empty commands, and other slash messages receive no priority.
  • Urgent messages are placed as a separate FIFO block ahead of normal queue messages. The running turn and active tools are not aborted; delivery happens at the existing safe step boundary. Rights and approvals remain unchanged.
  • The command wrapper is removed before the message reaches the model; the actual message keeps explicit priority=urgent channel metadata and the TUI shows the origin as urgent.
  • In addition, the normal presence block loaded in every turn shrinks from 343 to 288 characters. This saves 55 characters or roughly 14 prompt tokens per turn without adding a model, search, embedding, storage or background call. The personality block shrinks from 1,488 to 1,433 characters.
9.1.277
  • The presence block loaded in every personality turn was 1,886 characters long. At the same time, curiosity stayed invisible precisely at the first relaxed direct contact without known personal facts.
  • The block is semantically condensed: 1,488 characters, i.e. 398 characters or roughly 100 prompt tokens fewer per personality turn. Normal mode stays at 343 characters.
  • At the first relaxed direct contact, the agent may now ask at most one cautious, optional personal question, for example about a partner or children. Running work, user task, evidence, rights and boundaries remain a priority.
  • Soul, grown preferences, group privacy, uncertain memory, open threads, relationship repair and reciprocity without a fabricated biography are retained.
  • No additional model, search, embedding, storage or background call.
9.1.276
  • The presence rule was allowed to address a long radio silence only when a reliable timestamp was available, but the identity system so far provided only the first contact. A real previous contact was not available.
  • Personality mode now creates at most one small immutable activity marker per person and UTC day from trustworthy channel metadata. Further messages on the same day write nothing additional.
  • Only when the two newest confirmed contacts are at least seven days apart is the previous timestamp briefly projected. In the normal case, this produces zero prompt characters.
  • No message texts, rights, secrets or tokens; no additional model, search, embedding or background call.
9.1.275
  • Repeated preferences, open threads, goals or roles occupied the identity context multiple times. Because the lists were trimmed to five entries before deduplication, a later unique entry could even be fully displaced.
  • Identity lists are now deduplicated stably after text normalization and only then limited. The first form is retained; duplicates disappear only from the model projection.
  • Stored identity files remain byte-identical. No additional model, search, embedding, storage or background call.
9.1.274
  • The visible personality switch activated relationship context and natural presence, but the automatic social graph and journal still depended on two hidden environment variables. For normal users, the relationship therefore did not grow automatically.
  • With personality enabled, actor, relationship and group nodes as well as a small first-interaction journal candidate are now created once from trustworthy Telegram metadata.
  • Message text, rights, secrets and tokens are not stored in the process. An explicit 0 for graph or journal remains a fail-closed opt-out.
  • No additional model, search, embedding or background call.
9.1.273
  • The separate identity context was allowed to occupy 1,800 characters by default and up to 2,800 characters when raised manually. With large static agent profiles, this loaded more context than necessary for the current relationship.
  • The default budget drops to 1,500 characters, the hard maximum to 2,000 characters. In the large default case, this saves up to 300 characters, roughly 75 tokens per model context.
  • Current group and relationship are now projected before person and static agent profile. The saving therefore does not cut off exactly the context most important for the ongoing social situation.
  • No new model, search, storage, or embedding call. Task focus, rights, and the personality-off mode remain unchanged.
9.1.272
  • The v4 personality levels 9.1.269 through 9.1.271 increased the active presence context. The hard requirement is that more human behavior must not become a token hog.
  • Repetitions and filler words in curiosity, open threads, and relationship repair were semantically condensed. No behavioral axis was removed.
  • The off mode remains byte-identical at 362 characters. The on mode drops from 1,981 to 1,886 characters, i.e. by 95 characters or roughly 24 tokens per model context. No new model, search, storage or embedding call.
9.1.271
  • The v4 idea calls for naturally uncertain memory: a personal assumption must not sound like an established fact. The personality block lacked an explicit behavioral boundary for this.
  • Uncertain personal memory is now named as uncertain. The agent asks gently before relying on it and never promotes an inference to a fact.
  • The task and measurable evidence come first. The off mode remains byte-identical at 362 characters, the on mode grows from 1,868 to 1,981 characters, i.e. by 113 characters or roughly 28 tokens. No new model, search, storage or embedding call.
9.1.270
  • The v4 idea demands a real sense of time without inventing an absence. The personality block had no explicit boundary for this yet.
  • A longer pause is now acknowledged only when a reliable loaded timestamp proves it. The agent must never guess absence.
  • The already existing rule for natural conversation endings was not built in twice. The task remains a priority. The off mode remains byte-identical at 362 characters, the on mode grows from 1,766 to 1,868 characters, i.e. by 102 characters or roughly 26 tokens. No new model, search, storage or embedding call.
9.1.269
  • The previous reciprocity responded to personal questions but did not yet give the agent a concise frame to offer a view of its own that is helpful for the work. As a result, it easily stayed in assistant-only mode despite its soul.
  • In personality mode, the agent may now briefly state a relevant, soul-shaped working view on its own initiative. A preference must never appear as a fact, rule, permission or evidence.
  • The task and measurable evidence come first. The off mode remains byte-identical at 362 characters, the on mode grows from 1,649 to 1,766 characters, i.e. by 117 characters or roughly 29 tokens. No new model, search, storage or embedding call.
9.1.268
  • Personal curiosity could take up a partner or children as a natural topic but did not yet explicitly distinguish between private conversation and group. This created the risk of a private question or relationship information in the wrong place.
  • In personality mode, questions in groups now stay non-sensitive; private relationship facts must not be disclosed there.
  • The working focus remains unchanged. The off mode remains byte-identical at 362 characters, the on mode grows from 1,567 to 1,649 characters, i.e. by 82 characters or roughly 21 tokens. No new model, search, storage or embedding call.
9.1.267
  • The personal curiosity from 9.1.266 could ask questions of the human but gave the agent no clear frame for the opposite direction. When the agent was asked personal questions, there was therefore a risk of a cold functional answer or a fabricated human biography.
  • With personality enabled, the agent now answers warmly from the loaded soul and its real digital history. It may share a real view or preference but invents neither a childhood nor a partner, children, pets, body or offline life.
  • Running work remains a priority. The off mode remains byte-identical at 362 characters. The on mode grows from 1,378 to 1,567 characters, i.e. by 189 characters or roughly 47 tokens. There is no new model, search, storage or embedding call.
9.1.266
  • The first limited curiosity rule already allowed a personal question but prescribed the same topic list for all agents. As a result, the question could seem generic even with the soul loaded and could ask again about relationship knowledge that was already known.
  • With personality enabled, the loaded soul now determines topic and wording. A detail the person has just mentioned themselves takes priority; only then may a still unknown area such as a partner or children be taken up naturally.
  • Relationship knowledge that has already been loaded is not queried again. There is at most one optional question, no fixed questionnaire, no stacked follow-up questions and no repetition of an unanswered question.
  • Ongoing work keeps priority. Curiosity waits for a relaxed opening in the conversation and can extend neither the task nor the permission to send.
  • The off mode remains byte-identical at 362 characters. The on mode grows only from 1,355 to 1,378 characters, i.e. by 23 characters or roughly six tokens. There is no new model, search, storage or embedding call.
9.1.265
  • The existing background updater could already check and prepare new versions at intervals of 5 to 7 minutes. Activation, however, depended on the next manual start; the desired fully automatic switch with continuation of the same session was missing.
  • The launcher now reports a prepared runtime to the running TUI. The TUI requests the handoff only at a completely empty work boundary: no running turn, no tool, no shell command, no compaction and no pending message.
  • Only after another boundary check and a confirmed handoff does the old runtime, and nothing else, exit with the reserved exit code 76. The launcher starts the prepared version with the same session ID and the same working folder.
  • The new runtime must report loaded and runtime-ready before it is activated. Otherwise the previous runtime continues with the same session; the prepared update is kept for a later, safe attempt.
  • Unsolicited, versionless, unrelated or outdated handoffs as well as a bare exit code 76 cannot activate a version.
9.1.264
  • Confirmed relationship repairs had no dedicated permitted field in the identity context yet. A corrected behavior could therefore not be loaded separately from general rules and old error messages.
  • Relationship files may now carry up to three short repair_lessons. Only this field is projected as Confirmed repair lessons; other or secret fields remain invisible.
  • In personality mode, the confirmed fix shows in changed behavior. The agent does not keep retelling the old error, does not ask for reassurance and mentions the fix only when it is truly relevant to the current situation.
  • Repair data can change neither the task nor rights nor receipt obligations. There is no model call, no automatic learning write path and no change to SOUL.md or AGENTS.md.
9.1.263
  • The identity context could already show confirmed open conversation threads but contained no clear rule for how the agent resumes them in a human way, without slipping into assistant mode.
  • With personality enabled, a loaded open thread may now be taken up exactly once, gently and optionally, when the running conversation naturally links back to it.
  • Active work must not be interrupted for this. Unanswered inquiries are not repeated and an open thread never grants permission for a new outgoing message.
  • There is no new storage, no model call and no change to SOUL.md or AGENTS.md. The personality block only grows from 816 to 1,065 characters; with personality off it stays byte-identical at 362 characters.
9.1.262
  • In Telegram, an agent's /status still reported 9.1.221, although the managed runtime was already newer. The status function read the package.json next to the globally installed Telegram bridge and thus not the code that actually serves the session.
  • The launcher already passes the active runtime version to child processes as BLUN_PUBLIC_PACKAGE_VERSION. The Telegram bridge now uses this trustworthy value first and only then falls back to its own package version.
  • Both inputs must be a stable numeric semver X.Y.Z. Manipulated, multi-line, or invalid values are not displayed; if both sources are unusable, unbekannt appears.
  • The change only affects the status display. It starts or stops no process and activates no prepared release in a running session.
9.1.261
  • Since 9.1.254, the auto graph had been storing the trustworthy timestamp of the first Telegram interaction but did not project it. The agent therefore knew a person but had no evidence-based sense of time for the relationship.
  • The identity projection now shows First known interaction from the already existing first_seen_at. There is no new write path, no text derivation and no model call.
  • Only valid timestamps are displayed. Invalid values remain invisible, and the existing overall limit of 1,800 characters by default and a hard cap of 2,800 characters remains unchanged.
  • With personality off, the identity layer continues to produce exactly 0 characters. Task and receipts still take precedence over social context.
9.1.260
  • 9.1.259 could switch personality context only via the existing BLUN_IDENTITY_CONTEXT flag. Users had no visible switch for this in the TUI.
  • /settings now contains the entry Persoenlichkeit with the two clearly described states on and off. The choice is stored as the only new field personalityEnabled in the existing persona.json.
  • Switching off removes only relationship context, curiosity, journal additions and the automatic creation of new relationship nodes. SOUL.md, AGENTS.md, name, language, persona and task focus remain loaded.
  • A change updates the system context of the running session via the existing persona refresh. There is no process restart, no second configuration path and no additional model call.
  • A stored boolean choice takes precedence over the old environment flag. If no choice is stored yet, the previous opt-in behavior is retained. The local reader is limited to 64 KiB and rejects symlinks and invalid files.
9.1.259
  • The existing natural presence block prevented forced questions but gave an activated personality mode no visible, natural curiosity impulse yet.
  • With BLUN_IDENTITY_CONTEXT enabled, the agent may ask exactly one fitting optional personal question in a relaxed, non-task-related conversation. Topics are limited to partner, family, work, home, interests or what currently matters to the person.
  • No interview mode, no stacked questions, no repetition of an unanswered question and no fabricated answer.
  • During active work, the task, explicit instructions, and receipts come first; curiosity waits for a natural opening.
  • In nicht Persoenlichkeit mode, the previous presence block remains byte-identical. SOUL.md, AGENTS.md, persona, language and working rules remain loaded. There is no further model call; the enabled policy costs 454 additional characters.
9.1.258
  • The shipped identity structure could create actors and relationships once but had no append-only journal foundation for a shared history yet.
  • The new policy writes only a structured candidate for the first contact, drawn from already validated Telegram metadata. Free message text, tokens, permissions and secrets are not carried over.
  • Candidates are bound to tenant, agent, and actor, receive a deterministic ID, and are created exactly once as a private JSON file with wx. A renewed contact does not rewrite the file.
  • The journal layer is separately opt-in. Without BLUN_IDENTITY_JOURNAL=1, there is no file or prompt effect; SOUL.md and AGENTS.md remain unchanged.
  • No new model call and no new prompt tokens.
9.1.257
  • Long SOUL.md files were previously cut off blindly after the first 4,000 characters. With a real agent soul, only 48.4 percent of the file was therefore visible while later sections disappeared completely.
  • The runtime now projects long souls deterministically by Markdown sections. Character, voice, values, relationships, preferences and goals come before operational prose; unknown sections keep their original order.
  • Each section heading retains a visible excerpt in the same 4,000-character budget. Short souls remain byte-identical.
  • Real test run on an SOUL.md: 8,257 source characters, 5/5 headings visible in the 4,000-character projection; Wie ich bin comes before image recognition, rules, verification and incident prose.
  • There is no new model call, no larger prompt and no write access to the source file.
9.1.256
  • The previous soul loader by default explicitly asked agents to continue writing their existing SOUL.md themselves. This contradicted the requirement not to lose existing souls and, for now, to handle automatic learning only in structured form outside the soul.
  • Existing and host-provided souls are now loaded by default as an immutable identity foundation.
  • New learning is redirected to journal, relationship, or open-thread candidates. These candidates can never create rights.
  • Deliberate self-editing remains possible only via an explicit BLUN_SOUL_SELF_EDIT=1. Even then, the policy requires lasting traits of the self rather than a diary, an incident log, a source of rights or a task file.
  • The change writes no file and modifies no existing soul.
9.1.255
  • Since 9.1.253, identity data had been able to reach the context in limited form, and since 9.1.254 new contact nodes had been able to arise automatically. But a small, immediately visible behavioral layer was still missing: despite their soul and relationship context, agents could fall into generic assistant phrases, forced questions or artificial claims of feelings.
  • Normal and fast conversation paths now load persona and existing soul first, then the limited identity context and a fixed natural presence block, and only then the working rules.
  • The block demands real shared history instead of fabricated closeness, allows silence and clean conversation endings, and forbids forced questions, generic offers, and empty praise.
  • During active work, task and receipts explicitly come first. The block is smaller than 420 characters and creates neither model calls nor file accesses.
  • No soul file was changed, deleted or automatically rewritten. The existing soul remains the leading voice.
9.1.254
  • The projector introduced in 9.1.253 could read existing relationship data, but the social network did not yet extend itself with new contacts.
  • On a first Telegram contact, the runtime can now create exactly once, from stable user_id and chat_id, a provider-bound actor, an empty relationship edge to the active agent and, for groups, a separate group node.
  • Display names are never primary keys and do not merge people. Later messages do not silently overwrite an existing node.
  • The path is explicitly activatable, tenant-bound and writes only into an already initialized identity tree under BLUN Home. Unsafe or incomplete metadata stays fail-closed.
  • There is no model call, no content interpretation, no sensitive derivations and, after first contact, no recurring write load. No generated record contains rights, ACLs, tokens or secrets.
  • V4 of the identity paper (2,468 lines) was cross-checked before publication. The new sensitive chapters on suffering and psychological skills remain deliberately outside this purely structural release.
9.1.253
  • The identity idea needed a first product path without flooding the model context with journals, relationship files, or a second memory system.
  • A new identity projector, disabled by default, reads only permitted fields from a tenant-bound file tree under BLUN Home.
  • The projector puts the current task and explicit instructions before relationship and curiosity. Personal questions are held back during active work unless they are directly relevant to the task.
  • The default budget is 1,800 characters; even a higher configuration cannot exceed the hard limit of 2,800 characters.
  • Rights, ACLs, and secrets are never projected. Unsafe identifiers, tenant mismatches, faulty data, symlinks or paths outside BLUN Home fail closed and produce no identity context.
  • Normal and fast conversation paths use the same projector before persona, soul, and conduct. At this stage there is no write operation, no soul change and no process restart.
9.1.252
  • An explicit king update from a managed release passed its active packageRoot to the npm installer. The new version could thus overwrite the old, version-number-named release folder in place, while active-runtime.json continued to show the old version.
  • Managed runtimes now prepare an explicit update as a separate, versioned release folder. pending-runtime.json and update-pending.json point to the target; the next normal start switches to it without a second update prompt.
  • The active old release folder remains byte-stable and is retained as a fallback path. Global, unmanaged installations keep the previous explicit update path.
  • No running session and no process was started, stopped, or reloaded for build, test, or publication.
9.1.251
  • After the 9.1.250 projection, 6,411 of 6,424 persisted usage.record events still contained the same canonical model name blun/king. Only this default value is omitted in the persisted form.
  • All 13 differing model values (qwen3.8:27b) are explicitly retained. null is likewise retained; only undefined is restored as blun/king again on replay.
  • Live events and the frozen raw history are not changed.
9.1.250
  • In the frozen real agent wire, all 6,424 persisted usage.record events contained the two cache counters inputCacheRead: 0 and inputCacheCreation: 0.
  • Only these values, provably set to zero, are omitted in the persisted form. Live usage remains unchanged; every non-zero value is still stored.
  • On replay, restoreUsageFromRecord restores missing cache counters as 0. Both replay paths and the context projection use this reconstructed form.
9.1.249
  • In the frozen real history, 3,759 of 7,777 tool results carried an exit code. Of these, 3,465 were the routine success code 0.
  • Replay, transcript, and model view use output, tool ID, and error status for tool results, not the additional zero exit code.
  • Only successful persisted tool results now omit exitCode: 0. Live events keep it; all 294 non-zero codes are retained unchanged for error diagnostics.
9.1.248
  • After 9.1.247, all 6,339 persisted step.end events repeated reasoningFieldState, although no resume or replay path reads this field.
  • Distribution in the frozen real history: 5,016 absent, 47 not_requested and 1,276 present.
  • Only the persisted form now omits reasoningFieldState. Live events keep the field for diagnostic purposes; old stored events remain compatible and the reconstructed state stays the same.
9.1.247
  • After 9.1.246, 6,986 persisted content.part and 7,755 persisted tool.call events repeated the UUID of the currently open step.
  • In a real history, all 14,741 events point without exception to the last opened step: 0 deviations and 0 events without an open step.
  • Only the persisted form now omits stepUuid. Live events keep it unchanged; old stored events with explicit UUID and new compact events without UUID are supported together.
  • All three resume paths use the last opened step for compact content and tool events.
9.1.246
  • After 9.1.245, 5,642 later step.begin events repeated the turn ID, although resumption needs only the highest observed turn ID. The first step of every turn already carries it.
  • A real history contains 713 turns and 6,355 step starts. Every turn begins exactly with step 1 and all further step numbers continue without gaps; 0 sequence deviations.
  • Only later persisted step starts now omit the turn ID. First steps, live events, old stored events and step starts without a reliable ordinal number remain unchanged.
9.1.245
  • After 9.1.244, 6,326 persisted step.end events continued to repeat the UUID of the last opened step. A real history confirmed an unambiguous last-in-first-out mapping for every completion: 0 deviations and 0 completions without an open step.
  • Only the persisted completion form now omits the UUID. The live event keeps it unchanged; old stored events with UUID and new compact events without UUID can still be replayed together.
  • All three resume paths resolve a UUID-less completion via the last inserted open step. Unfinished historical steps remain open and are not reinterpreted.
9.1.244
  • After 9.1.243, 6,326 persisted step.end events still contained four individual usage counters. For resumption and the context fill level, only their sum is needed.
  • The live events keep all four counters for display, telemetry, and billing. Only the stored resume form now uses contextTokens as a single number.
  • Both replay paths accept new compact and old complete events. Existing sessions therefore remain backward-compatible.
9.1.243
  • After 9.1.242, 6,322 persisted step.end events still contained the routine values finishReason: tool_use or finishReason: end_turn.
  • Both values are exactly derivable from the already persisted step form: tool call present -> tool_use, otherwise end_turn. In the complete history there were 0 deviations.
  • Only these two routine values are no longer persisted. Rare and diagnostically important reasons are retained; all four max_tokens events stayed explicit and byte-identical in content.
  • The change follows the principle of limited, exception-oriented telemetry measured in ECC. DeepAgents and AnythingLLM confirmed the already existing BLUN patterns for offloading and limited history; no other subsystem was adopted.
9.1.242
  • After 9.1.241, 6,355 persisted step.begin events still contained the field step, although the live display processes the step number before persistence and the replay reducer needs only uuid.
  • turnId is retained because resumption derives the continued turn from it. uuid, type, and all further contents remain unchanged.
  • The change is confined to bin/loop-event-record-policy.cjs; the raw history and the live event are not modified.
9.1.241
  • After 9.1.240, 6,326 persisted step.end events still contained copies of turnId and step. Both values are already present in the step.begin referenced by the same uuid.
  • In a real wire, every completion had an existing step start, and both metadata values matched exactly in all cases.
  • The projection removes only these two copies. Step identifier, token usage, and completion diagnostics are retained; live events remain complete.
9.1.240
  • After 9.1.239, 6,986 content.part and 7,755 tool.call events still stored one copy each of turnId and step, although both values are already present in the step.begin referenced via stepUuid.
  • In a real wire, all 14,741 child events had an existing step start, and both values matched exactly in every case.
  • The persistence projection removes only these two metadata copies from the two child events. stepUuid, content, tool identifier, name and arguments are retained; the live reducer continues to see the full event.
9.1.239
  • After the projection from 9.1.238, a real wire still contained redundant event identifiers: content.part.uuid is read by no replay consumer, tool.call.uuid was exactly equal to toolCallId in all 7,755 cases, and tool.result.parentUuid was exactly equal to toolCallId in all 7,755 cases.
  • The persistence projection removes only these three redundant fields. turnId, step, stepUuid, toolCallId, tool name, arguments, result and content are fully retained. The live reducer continues to see every unabridged event.
  • Events that are already compact keep their object identity. Existing wire files are neither rewritten nor changed.
9.1.238
  • A real wire contained 6,326 persisted step.end events with 2,708,052 bytes of event data. Seven fields for runtime measurement and the provider message ID had already been evaluated in the live event before persistence and were not read by any replay, transcript, blob or session inspection path.
  • The existing loop event projection now removes only these seven known live fields: six latency/streaming measurements and messageId. Step identifier, turn, step number, token usage, completion reason, provider completion diagnostics and reasoning diagnostics are retained.
  • The live reducer continues to process the full event. Old wire files remain byte-identical and are not rewritten.
9.1.237
  • A real wire contained 1,428 register/unregister entries for user tools. Of 992 deregistrations, 560 were strict no-ops: the tool was neither registered nor activated. These entries occupied 59,500 persisted bytes without changing the restored state.
  • From the DeepAgents principle of preserving only effective runtime state, a narrow local lever is adopted: a tool deregistration is now logged only when it changes the registered or activated state.
  • Both live deletions continue to run on every call. Deregistering a tool that is registered, only activated or present in both stores is still fully logged. Existing wire files are neither rewritten nor changed.
9.1.236
  • A real wire contained 214 state-like injections for tool-awareness, action_style, swarm_mode and swarm_mode_exit. The previous exact deduplication left six different old states with a total of 6,305 text bytes in every new model request.
  • From the ECC principle of keeping only the current state in the working context and preserving the complete history separately, a narrow local lever is adopted: for tool inventory and action style, only the newest version remains visible. Entering and exiting swarm mode form a shared state family, of which likewise only the latest version remains.
  • The raw history is never changed. Other injection variants, normal user messages, non-textual and malformed entries keep the previous behavior.
9.1.235
  • A real wire contained eleven completed Agent calls. Six of them had provably succeeded (status: completed) and were followed by at least twenty newer context messages. Their old task texts still took up 33,629 characters in total, although the complete completion reports came directly after them in the history.
  • From the DeepAgents separation of main and subagent context, a narrow local lever is therefore adopted: only the old prompt of a successful Agent call is replaced by a short marker in the model view. Description, subagent type, and completion report remain complete.
  • Running, failed, and malformed tool calls, those fewer than twenty messages old, and other tool calls remain unchanged. The raw history is never changed; without an explicit status: completed line, the projection fails closed and does not apply.
9.1.234
  • A real wire contained, among 166 successful tool results, three large, exactly repeated read results for the same tool call. The unchanged repetition occupied 15,936 raw bytes, although only the newest full copy is needed for the current model view.
  • The projection therefore recognizes only successful text-only results with exactly the same tool name, exactly the same arguments, and exactly the same content. The newest copy remains complete; older copies are replaced only in the model view by a short reference.
  • Raw history, changed results, errors, media, persisted references and small results remain unchanged. The existing tool offloading still runs first; the deduplication may restore its projection only for the newest identical copy.
9.1.233
  • In a real wire, a complete Write call with 2,357 UTF-8 bytes was rejected at the previous 2,048-byte limit. Afterwards the agent promised to continue but overwrote the same tokenize.cjs several times with incomplete fragments, twice with byte-identical copies of the first 1,099 bytes. The affected steps each carried around 64,000 input tokens; individual responses reached 10,319 and 7,015 tokens respectively.
  • Complete files up to 4,096 UTF-8 bytes may therefore now be written in one atomic Write call. The real 2,357-byte case no longer needs an additional model turn.
  • Larger calls remain subject to the full continuation protocol. After such a rejection, the path is locked: smaller normal writes can no longer overwrite the target file with partial fragments. Only a valid continuation takes over the path; the target remains unchanged until the final receipt.
9.1.232
  • The automatic mode resume was set in a real agent profile, but the installed version was on 9.1.221, the active prepared runtime on 9.1.219 and npm/manifest already on 9.1.231. Without a running King, the previous background path could not prepare a missed version.
  • resume and new therefore now also check, at the next natural cold start, for an independently signed release version that has been stable for at least 30 minutes. It is prepared in the protected release storage, marked as pending, and started without a second start or selection window.
  • manual and off remain unchanged. If preparation, integrity, the package test run or the network fetch fails, the existing start path continues. An already running session is never terminated by this cold start path.
9.1.231
  • In a real wire, a Telegram reply failed before dispatch with 400: Bad Request: can't parse entities: Can't find end of Italic entity. The call explicitly specified format: markdownv2; 0 of 1 text parts were delivered.
  • The Telegram MCP dispatch now repeats only the affected text part exactly once as plain text when Telegram reports exactly one entity parsing error. Chat, reply reference, part boundary and subsequent attachments are retained.
  • Network errors, unknown chats, permission errors and calls already sent as plain text are not repeated by this fallback. This neither swallows an arbitrary error nor sends a successful part twice.
9.1.230
  • Once the historical errors already fixed in 9.1.228 and 9.1.229 were excluded, repeated Bash timeouts remained as the next self-contained block in the last 1,200 tool results of an agent profile. The affected commands repeatedly searched the entire user directory or the entire Dropbox recursively and ended after 60 seconds without a usable completion.
  • Bash now rejects exactly two unbounded search forms before process start: find on the whole user directory and recursive grep against ..
  • The error text immediately names the limited alternative: Glob with an anchored file pattern, Grep with path/glob, or a known project subfolder. Searches specifically limited to src, test, or other named subtrees are still allowed as before.
  • The timeout was not increased and arbitrary Bash commands are not repeated automatically. This creates neither a longer wait nor the risk of executing a writing command twice.
9.1.229
  • After the deferred tool repair, the largest contiguous error family in a real history was the multi-part Write: missing mandatory fields (part, start_line, final), a total line count wrongly guessed in advance, outdated part numbers and an old continuation state that remained active after errors produced repetitions without useful work.
  • Part number, start line, and mode are now derived from the actually staged state when they are missing. Explicitly sent values remain visible and continue to be rejected on deviation.
  • expected_lines is optional and can be supplied as late as the final part. When it is set, overflow and the exact end check remain fail-closed as before.
  • final=true remains mandatory for completion. Without this explicit end marker nothing is written; the target file remains unchanged until completion. The optional SHA-256 check remains in place.
9.1.228
  • In the last 1,000 real tool results there were 66 errors. The largest clearly repairable single block was 10 Tool not found errors: nine times mcp__mnemo__mem_transcript_recent, once mcp__mnemo__mem_question_answer. Both tools were registered but simply not loaded because of the token budget in the corresponding step.
  • After an exact Tool "<name>" not found error, the turn now remembers this schema for the immediately following step. The normal selection then picks it up from the already registered tool list.
  • Other error texts, successful results, and deviating tool names do not change the state. The existing LRU limit of four schemas remains; a truly unknown tool is neither invented nor executed.
  • No tool was permanently placed in every prompt. The normal schema token usage therefore remains unchanged; only a failed repetition that has already been paid for is avoided from the second attempt onward.
9.1.227
  • A real wire history contained 119 ToolSearch calls. 35 of them ended without hits; 27 of these zero-hit searches concerned Telegram history, message retrieval or the associated memory search.
  • 9.1.226 already resolved 8 of these 35 old zero-hit searches with the current tool list. The main remaining cases were over-specified requests such as +telegram history messages lesen, in which the model had wrongly marked semantic words as mandatory name components.
  • The principle of aligning tool notices and the tool surface after filtering was adopted from DeepAgents. No third-party code was copied: BLUN still first tries the exact and strict search and only relaxes the + terms to semantic search terms after a genuine zero-hit result.
  • The fallback executes no tool. It loads only the highest-rated schema or genuine ties, requires at least 75 percent of the terms to match when there are several and stays closed for terms outside the domain.
  • Comparison against the freshly installed 9.1.226 package and the same 35 historical requests: before 8 hits, after 21 hits, i.e. 13 additional real hits and 0 lost previous hits.
  • No new model, search, network or embedding call was inserted. Raw history, tool execution, permissions and the permanent schema set remain unchanged.
9.1.226
  • A real wire history contained 6,275 completed model steps. In the last 50 steps, local request building was at p50 0 ms and p90 1 ms and local stream consumption at p50 1 ms and p90 3 ms. The wait until the first server token, in contrast, was at p50 11,842 ms and p90 14,846 ms. There was therefore no evidence that another local micro-performance cut would be an effective lever.
  • The validated learning path derived from Evolver already existed: red-to-green receipts are stored per profile as pending, recorded or expired. Users had no local view of this, though.
  • 9.1.226 adds /improve with alias /learning. The panel shows the three status counters and, for the newest open candidate, only limited, harmless receipt data: candidate ID, tool name, and twelve characters of the command hash.
  • The command reads only the local storage of the active profile. It starts no model, search, hub or embedding call and changes no candidate. Unknown status values and unsafe display characters are discarded or shown as unknown.
  • All new UI texts for German, Spanish, French, Swedish and Czech passed the mandatory language gate and the subsequent receipt verification; all six UI catalogs contain the complete keys.
9.1.225
  • In a real wire history, 88 config.update entries occupied 4,078,566 bytes. 83 of them carried the complete system prompt.
  • The prompt declared a stable session timestamp but set it anew at every process start. Once this timestamp was normalized, 45 semantic variants and 38 consecutive repetitions caused only by the new timestamp remained.
  • These 38 repetitions occupied 781,179 bytes, i.e. 19.16 percent of all system prompt bytes in the measured configuration events. At the same time, the reusable provider prompt prefix was needlessly changed after restarts.
  • 9.1.225 binds the timestamp for fresh and resumed main and subagents to Session.metadata.createdAt. Invalid old metadata defensively falls back to the previous in-memory value.
  • Raw history, prompt content, tools, model choice and compaction remain unchanged. There is no additional model, search or embedding call.
9.1.224
  • The last measured start needed 16.85 seconds for the parallel initialization of five MCP servers. Session resume and wire parse took considerably less, at around 0.55 and 0.18 seconds respectively.
  • The turn path previously waited for this MCP initialization before every request, even when a plain local greeting was then deliberately sent to the model with zero tools.
  • 9.1.224 adopts the on-demand tool limit from the DeepAgents comparison: only local, tool-free short conversation may answer immediately. Telegram turns, attachments, system triggers and any work-like request continue to wait for the complete MCP initialization.
  • The raw history, the MCP configuration, tool schemas, and normal work turns remain unchanged. No server was disabled and no additional model, search, or embedding call was introduced.
9.1.223
  • A step 775.5 ended empty with fall=length, 8,192 of 8,192 completion tokens and only seven characters of reasoning. The previous logic then restarted the same large request and doubled the completion budget to 16,384 tokens.
  • Local CPU was at roughly 0 percent during the wait; request building took 0-1 ms and the transport about 2 seconds. The measured bottleneck was therefore model generation plus full-budget retry, not the TUI.
  • Only the documented case length plus fully exhausted budget plus fewer than 64 characters of reasoning now receives an economical retry with a factor of 0.125 and at least 1,024 tokens.
  • Reasoning-heavy length responses and those that do not fully exhaust the budget keep the previous expansion by a factor of 2. Other retry classes remain unchanged.
  • For a measured case, the second budget drops from 16,384 to 1,024: 15,360 tokens or 93.75 percent less in the retry.
9.1.222
  • The running updater had passed a prepared version to the active King via IPC. The launcher then terminated the running core with exit 76 and was supposed to start a replacement process. During the measured switch to 9.1.219, this left an agent profile logged out.
  • Background updates now only download and verify the new version and store it for the next natural start. They send no restart IPC message, terminate no active TUI and start no replacement process.
  • On the next normal king start, the existing selection appears again: update, skip once, or wait until the next release. Only after the installation decision does the launcher start from the already verified prepared package; no second download is needed.
9.1.221
  • Unchanged messages not yet covered in tokenCount now use exactly one token estimate per context revision. Repeated status and render accesses do not rescan the same growing history.
  • New text parts, tool calls, history changes, compaction, undo and a changed number of already covered messages invalidate the cache immediately. Raw history, persisted history, and the reported token value remain identical to the previous path.
  • Seven measurement runs with 300 synthetic messages and 250 unchanged queries each resulted in a median of 42,1218 ms -> 0,1755 ms, around 99,583 % less compute time in this hot path. Both versions produced exactly the same estimate of 127.838 tokens.
  • The release lowers CPU work for the local estimate. It claims no reduction of the input tokens actually sent to the model.
9.1.220
  • The projection of long assistant responses now stores its result in a WeakMap as long as the message object, content array, text part and exact source text remain unchanged. Raw history and projected content remain identical to the previous path.
  • A change to the text, content array, or text part discards the entry immediately. Different message objects share no cache.
  • Five measurement runs with 1000 repeated projections each resulted in a median of 16,489 ms -> 0,202 ms, around 98,8 % less compute time in this path. Both versions saved exactly 21.206 characters.
9.1.219
  • Short text-only confirmations such as ok, danke, or Telegram DM replies with a trailing continue signal no longer read the store for validated learning candidates at every model step.
  • Meaningful prompts, attachments, and turns with current tool activity continue to synchronize. A learning reminder that is already visible is retained even during a skipped confirmation.
  • In the as-is measurement on the packaged build over 50 confirmations, candidate directory reads dropped from 50 to 0. The meaningful counter-check read exactly once. No model, embedding, or network call was added.
9.1.218
  • In 9.1.217, the same red-to-green check created a second open candidate when it was repeated with new tool call IDs. The isolated as-is measurement yielded two IDs, 2 open files and 726 bytes.
  • If only the newest candidate had been recorded, the older identical candidate would have appeared again as a reminder. That would have produced a second reminder and MistakeRecord cycle for the same open lesson.
  • bin/validated-learning-signal.cjs now reuses an already open candidate of the same profile and the same commandHash. Other verification commands remain separate; recorded or expired candidates absorb no later event.
  • The re-measurement yielded the same ID, 1 open file, and 363 bytes. There is no additional model, embedding or network call.
9.1.217
  • In 9.1.216, every successful MistakeRecord marked the newest open learning candidate as processed, even when the entry belonged to a different error. The receipt was thereby durable but not exactly correlated with its later recording.
  • bin/validated-learning-signal.cjs now reads the optional candidateId of a successful MistakeRecord and closes only the exactly matching open candidate. A missing, wrong, or unrelated ID leaves all open candidates unchanged.
  • blun.mjs names the stable candidate ID in the visible reminder and introduces candidateId as an optional field in the MistakeRecord schema. There is no additional model, embedding or network call.
  • The correlation remains profile-bound. As before, neither raw commands nor tool outputs end up in the candidate store.
9.1.216
  • bin/validated-learning-signal.cjs now stores confirmed red-to-green signals installation-wide under <BLUN_SHARED_HOME>/self-improvement/validated-learning/<profile>/. A learning candidate is thus retained across user turns, compactions and different portals of the same BLUN installation.
  • The store is profile-bound, append-only, and concurrency-safe: each candidate gets one immutable JSON file and exactly one .recorded or .expired marker. Writing a temp file, hardlinking it, and removing the temp file prevents silent overwriting by parallel writers.
  • Only type, status, profile, tool name, SHA256 of the command, tool call IDs, and timestamps are stored. Raw command, error text, and successful tool output are not persisted.
  • A successful MistakeRecord marks the newest open candidate as processed exactly once. Open candidates expire after 24 hours. If a shared home is missing, the previous fail-open in-memory behavior is retained.
  • This is not yet an automatic code change, nor a self-granted approval. The release only creates the portable, portal-independent learning receipt on which later built-in evaluator and approval functions can work safely.
9.1.215
  • Solutions must assume neither specific internal agents nor internal machine names, Telegram groups, Mnemo instances or a BLUN-internal release chain.
  • For self-improvement, the internal roles are abstracted as product functions: scope/approval controller, isolated evaluator, versioned receipt and automatic canary re-measurement with rollback.
  • Only low-risk, measurably limited adjustments with consistently better or neutral test runs can be adopted automatically. Code, rights, secrets, billing and production remain reserved for users or admins.
  • The first implementation of the built-in gate is signed off manually in-house; after that, the gate may run checks on its own but may not change its own security boundary.
9.1.214
  • 9.1.213 established the correct durable storage path via MistakeRecord but still expected the model to recognize the right moment from the tool history alone.
  • bin/validated-learning-signal.cjs is new: the module looks only at the current user turn and recognizes only one pattern, the same verifying shell command first failing and later succeeding.
  • In this documented case, a dynamic injector in blun.mjs reminds the model to record a reusable lesson with MistakeRecord. Command text and raw error are not copied into the notice.
  • Other commands, normal read/tool errors, a new user turn or an already successful MistakeRecord call neither create nor keep a notice. No automatic storage takes place.
9.1.213
  • The mission contract required a call to record_error_memory after a successful red-to-green test run. This tool does not exist in the King package. The existing durable learning path is called MistakeRecord and writes into the shared Mistake.md.
  • The discipline from Evolver was thereby already formulated, but the last step to our own cross-agent memory was broken: a confirmed solution could follow the contract and still not be durably stored.
  • The contract now calls MistakeRecord after the green re-run. Raw errors remain excluded; only the lesson confirmed by a successful counter-run is stored.
  • Mistake.md, its relevance selection, and its storage format were not replaced or changed. Only the connection from the validated learning contract to the existing tool was repaired.
  • Only blun.mjs, the new structure test test/validated-learning-route.test.js and the version in package.json were changed.
9.1.212
  • The ErrorMemory injector formatted several strategy genes even for plain greetings and short confirmations. Mistake.md and personal memory already had a shared relevance limit for the same message class; only ErrorMemory bypassed it.
  • The injector now also uses isLowInformationMistakeTurn and ends the projection before selection and formatting of the strategy genes. Persisted error and strategy entries remain unchanged; only their unnecessary projection in tiny requests is omitted.
  • Measured reference case Wie geht es dir? with eleven stored entries: before, five selected rules, 1.417 characters or roughly 355 tokens; after, 0 characters and 0 tokens.
  • Only blun.mjs, test/error-memory-performance-policy.test.js, and the version in package.json were changed.
9.1.211
  • The King acknowledges queue lines only when the message has been accepted. Before a session is active, however, injectChannelEnvelope discards an addressed message as dropped without acknowledging or parking it. As a result, the checkpoint can remain permanently stuck at exactly this first line.
  • Real red test run _proof/telegram-profile-checkpoint-red.cjs: expected queued, measured dropped, exit 1.
  • The same error exists in the Telegram command path: /loop before an active session is not placed in queuedMessages; the acknowledge function remains without a consumer. Real red test run _proof/telegram-remote-command-presession-red.cjs: expected queue length 1, measured 0, exit 1.
  • injectChannelEnvelope now treats a session that is not yet deliverable like a busy session: model text, display origin, and later acknowledgment are retained in the existing channel queue.
  • injectTelegramRemoteCommand builds the queue entry before the session check. /loop and the other direct Telegram commands are parked with their channelAcknowledge function when the session is missing and executed only at the existing safe boundary.
  • The order and the existing checkpoint rule remain unchanged: a queue line is acknowledged only after acceptance; later acknowledgments cannot skip an earlier line that is still open.
9.1.210
  • The active handoff from 9.1.208/9.1.209 could terminate a running King for an update. On the MSI, this terminated the running session during the switch 9.1.206 -> 9.1.207, and it was not automatically resumed.
  • 9.1.209 was therefore not included in the public manifest and was marked on npm as not eligible for rollout.
  • The requirement is now technically enforced: an automatic update must never terminate the running King. It is only loaded and marked as pending. Activation happens only at a later normal start.
9.1.209 Withdrawn
  • Not released. The active update handoff could terminate a running King; the version was therefore not added to the public manifest and was marked on npm as not eligible for rollout.
9.1.208
  • On the MSI, 27 King starts and 15 versions were measured in one day. Each restart coincided with a version jump; the log there still does not record a dedicated exit reason.
  • The updater prepared new manifest versions every minute. Version 9.1.208 therefore introduces a 30-minute quiet window before another new runtime may be activated.
  • Old runtime versions are limited to the newest three after successful activation. Deletion happens only when all installation leases of the old version have been acquired exclusively. Active, in-use, or unknown layouts remain untouched.
  • The protection logic also lives in the newly loaded core. It therefore takes effect after automatic activation even when the persistent parent launcher still comes from an older version.
  • The eight measured MSI release versions together occupied only 778 MB. They do not explain the almost full 454-GB disk; the main consumer of disk space remains a separate open finding.
9.1.207
  • Retries of failed telemetry are limited per run to the 16 oldest files and stop at the first transient server error instead of continuing to process the entire backlog.
  • The error spool keeps the newest 512 files within 16 MiB and seven days. The normal events.jsonl is explicitly excluded from the cleanup.
  • Before the release, 4,248 error files with 11,631,974 bytes were actually present. After automatic activation there were 512 files with 2,260,908 bytes: 3,736 fewer old error files and around 9.37 MB less load.
9.1.206
  • Large assistant responses that have already been archived are now replaced before the loop projection by their limited, re-readable archive reference. A subsequent text cleanup can therefore no longer invalidate the stored hash.
  • Three real archive files were checked byte-for-byte against their stored SHA256 message hashes: 38.567, 13.941 and 24.787 characters, all present and all exactly matching.
  • On exactly the same 41.480 wire entries with 311 messages, the model projection dropped from 87.724 to 63.234 characters: another 24.490 characters or around 6.123 input tokens less per affected call.
  • Raw history and complete private archive files remain unchanged and can still be read page by page via their path.
9.1.205
  • Response loops within one assistant message are now recognized even with small differences in punctuation or wording. A cluster needs at least three hits at a conservative similarity of 0,88; the first version is retained, and the raw history is not changed.
  • In a preserved case, a real loop response dropped from 24.787 to 22.711 characters: 2.076 characters or around 519 input tokens less.
  • Code fences remain protected and byte-identical. Tool narration, injections, pairs and savings below 1.000 characters remain unchanged.
9.1.204
  • The error memory no longer blindly loads all eleven rules per work round. The four indispensable evidence and counter-check rules 4, 9, 10 and 11 always remain active; at most two further rules matching the current task are added deterministically.
  • In the real shipped rule collection, the repeated block dropped from 2.442 to 1.272 characters: 1.170 characters or around 293 input tokens less per affected work round.
  • The selection creates no model, search, reranker or embedding request. Small custom rule collections remain complete; on a selector error, the previous full block continues to apply.
9.1.203
  • An empty ToolSearch is now a successfully completed zero result instead of a red tool error. The response names the missing permitted tool and forbids retrying with synonyms.
  • In the measured history, there were 32 empty searches with 29 different wordings; in one preserved turn, the same missing Telegram capability was requested again with a second search immediately after the red error.
  • No additional model, reranker, or embedding request, no new resident schema and no change to tools or permissions.
9.1.202
  • The local context projection derived from DeepAgents shows top-level entries preferentially in large working directories instead of deep details from the first few folders. Small directory listings remain byte-identical.
  • An agent root contains 509 top-level entries (89 folders, 420 files). Previously, the model projection showed only 9 top-level folders in 1.981 characters; it now shows 30 in 832 characters.
  • Measured saving: 1.149 characters or about 287 tokens per request. Persona, working rules, raw history and tool access remain unchanged.
9.1.201
  • A projection hygiene derived from DeepAgents condenses the static error memory without losing any of the 11 stored rules or checks.
  • Old verbose error memory texts are condensed only in the model projection. Raw history, normal responses, and tool results remain unchanged.
  • In the projection, only the newest error injection and the newest error-correction injection are retained.
9.1.200
  • The new local command /context separately shows the model request as actually projected, the stored conversation history, tool schemas, the compaction budget and the remaining headroom.
  • The view only reads session.getContext(). It does not start a model request, a managed usage query, a service or a restart.
  • Offloaded tool results now name an exact path for re-reading: Read with at most 20 lines, followed by an advancing line_offset. This prevents the measured pattern, in which an agent requested the same large range again via Read, Grep and Bash.
  • /premortem already existed before 9.1.200 and is explicitly not presented as a new feature of this release.
  • For new translations, the mandatory language gate did not grant a release because there was no independent short-text review. /context therefore uses only localized labels that have already been released; no unverified target text was included.
9.1.199
  • In a current model view, a single assistant response contained 13,941 characters in 100 paragraph blocks. Only 20 blocks were unique; six groups repeated exactly and took up 9,579 characters.
  • 9.1.199 condenses only such exact repetitions within a single text-only response in the model view. The raw session history remains unchanged.
  • This compaction takes effect only at three or more exact repetitions and at least 1,000 characters saved. Code blocks, mixed content, tool calls, injection messages, short blocks and cases with smaller savings remain unchanged.
  • This follows the DeepAgents principle of preserving re-readable truth and reducing the load only on the active model view. There is no additional model or embedding call.
9.1.198
  • A current history contained a Grep result of 50,042 characters that the tool had already marked as truncated: true. Per-result offloading did detect the size, but an early return still left such results in the model view in full.
  • 9.1.198 removes only this exception. A truncated Read uses the existing source path without creating a duplicate; other truncated results archive exactly the complete text returned by the tool.
  • The reference keeps truncated: true and carries stored_result_scope: tool_truncated_output. This avoids claiming that raw output the tool never produced has been restored.
  • The pattern follows DeepAgents: large tool outputs remain re-readable outside the active model view, while only a small reference remains there.
9.1.197
  • Even text-only confirmations such as ok previously loaded the dynamic Mistake.md reminder. With the current shared rule set, that amounted to 1,819 prompt characters, roughly 455 tokens, even though no working context was being continued.
  • 9.1.197 detects only low-information text-only turns, before either of the two mistake sources is read, and omits the dynamic injection for those turns.
  • Attachments, non-textual content, and meaningful continuations such as ok, check updater keep the previous path. The existing relevance fallback for real work turns remains unchanged.
  • The pattern comes from the AnythingLLM comparison work: optional context sources should reach the model view only when the current turn actually needs them. It was fitted into the existing BLUN policy without an additional model or embedding call.
9.1.196
  • /reload existed locally but was not recognized as a direct command when sent from Telegram. The Telegram allowlist did not contain the name; the message therefore remained normal model text.
  • 9.1.196 adds only reload to the existing addressed Telegram command list.
  • The Telegram path uses the same existing handler as the local TUI: session, MCP servers, runtime and TUI configuration are reloaded in the running process. Neither a model round nor a process restart is started.
  • /new and other slash messages that are not allowlisted still remain normal model text.
9.1.195
  • Automatic updates ran, but the restarted TUI ended up in C:\ instead of the previous project folder.
  • The TUI carried the correct folder in state.appState.workDir but passed only session, version and mode in the update handoff. The launcher therefore used its original start folder for target and fallback.
  • 9.1.195 passes the active project folder in the handoff and uses it for the target version, the fallback, and further automatic updates under the same supervisor.
  • Only existing absolute directories are accepted. Relative or missing paths, and paths that point to files, fall back to the launcher folder.
9.1.194
  • The existing turn watchdog warned after 20 minutes but did not terminate a turn afterwards. On the Mac, a stuck turn continued past the 30-minute warning until at least minute 39.
  • 9.1.194 keeps the warning after 20 minutes and terminates a turn after 30 minutes without real progress.
  • Step start, thinking text, assistant text, tool call, tool arguments, tool progress and tool result reset the inactivity deadline. Long active work is therefore not terminated.
  • The existing abort after five identical failed tool calls remains separate, unchanged and active.
9.1.193
  • Multiple Telegram deliveries with identical chat_id and message_id arrived up to four times in the same session.
  • 9.1.181 removed these repetitions from the model view only at a later stage. Before that point, each copy could already trigger its own model turn and thus incur costs.
  • 9.1.193 therefore keeps a delivery ledger, capped at 2,048 identifiers, that is checked before the turn starts. The same Telegram identifier is accepted only once per session; repetitions are acknowledged but not logged and do not start a provider turn.
  • New message identifiers, non-user injections, and the raw history remain unchanged. On resume, the ledger is restored from the accepted prompt records.
9.1.192
  • A Mac continued to show King is thinking for 39 minutes after a rejected Bash approval. The tool call itself was correctly refused, but the rejection was returned as an ordinary error result to the running model loop.
  • PermissionManager.requestToolApproval() returned only block: true on rejection. The existing batch and provider control could already end the turn with syntheticResult.stopTurn = true but did not receive this signal.
  • bin/approval-rejection-stop.cjs is new. Rejected and cancelled approvals now produce an existing error result with stopTurn: true. The current turn ends, and later calls in the same tool batch are skipped. Approval log, policy, and fail-closed behavior remain unchanged.
  • DeepAgents confirmed the explicit human interrupt boundary as a suitable pattern. AnythingLLM and Evolver offered no stronger mechanism for this narrow error than the already existing BLUN contract.
9.1.191
  • With /context, DeepAgents offers a familiar, visible breakdown of the context window instead of just a total.
  • For performance work, Evolver requires a separate prompt budget for the system portion, conversation, tools and free space.
  • AnythingLLM reduces tool-schema overhead through embedding-based reranking. BLUN already has the cheaper deferred tool path for this without an additional model or embedding call; this part was therefore not duplicated.
9.1.190
  • From durably stored tool.call loop events, only the display fields display and description are removed. Identity, tool name, arguments and step association are retained.
  • The runtime continues to process the full event. TUI display, tool execution, and resume were not switched to the projection.
  • A real agent wire with 42.451.368 bytes contained 6.135 tool calls. For 5.679 of them, 3.125.874 bytes could be omitted: 7,36 % of the entire wire log.
9.1.189
  • A user had chosen Bosnian and wrote in Bosnian, but King responded in Slovenian. The persona prompt contained only the English word Bosnian; it did not explicitly distinguish Bosnian from the closely related languages.
  • Kako si?, Kako je King?, Ko si ti? and Ko stoji iza tebe? were not handled as standalone short Bosnian exchanges. The screenshot for Ko stoji iza tebe? even showed web searches instead of a direct response.
  • The reported simple check-in consumed about 7.500 tokens. The previous low-effort path allowed up to 8.192 completion tokens and kept several old messages.
9.1.188
  • BLUN detected an actual relapse after only three similar responses, but left the outdated responses in the model view in full. The anti-loop notice therefore kept competing with the old, wrong state.
  • DeepAgents aa8ae718644dac19d7f1cdc3febe2740a79fa058 provides the pattern of index-stable, bounded replacement messages. AnythingLLM prioritizes the most recent conversation pairs and treats history as the first context to be compressed.
  • A wire contained 42.265.671 bytes, of which 25.423.100 bytes were context.append_loop_event. This demonstrates the real loop load but is not reported as a direct saving in request tokens.
9.1.187
  • The 9.1.184 manifest shipped to production carried the timestamp 2026-08-26T12:15:06.5196457Z. The shipped parser allowed only one to three decimal places and therefore discarded the entire manifest.
  • Without a valid fallback, npm alone became authoritative. While 9.1.185 was being staged, the npm tag was therefore briefly visible, although the manifest still pointed to 9.1.184.
  • The npm tag was reset to 9.1.184. In the live manifest, only the timestamp was corrected, to 2026-08-26T12:15:06.519Z; version and integrity remained unchanged. Three cache-bypassing fetches and the real client parser then confirmed the manifest.
  • Live SHA256 after the repair: 8ec4eef17da2d92c96b4011c0239f367e5c0779d0f02e1eac61fdfe782d94601. Backup: /data2/websites/stage-20260811/blun-chat/public/blun-code-version.json.invalid-timestamp-20260826T125021Z.
9.1.186
  • After a full compaction, the existing system prompt is no longer overwritten with freshly read local context data. Its previous prefix therefore remains byte-stable and reusable for the provider cache.
  • The working directory, matching AGENTS.md files, and additional directories receive a fingerprint. Only when something actually changes is the new version appended as an internal context message that is not visible to the user.
  • Embedded context data is escaped before the internal marker is applied. Local text therefore cannot close the marker boundary or smuggle in new system notices.
9.1.185
  • Two agent profiles logged off around the time of the automatic update. Separately, a third profile remained on this version after a successful transition from 9.1.182 to 9.1.183 and did not prepare 9.1.184.
  • Two specific errors were confirmed in the source path: The TUI exited immediately after process.send without waiting for the IPC acknowledgment. In addition, after a successful handoff, the launcher only waited for the new process to end and did not set up any further update monitoring for it.
9.1.184
  • Ordinary model calls permanently carried the tool schemas for GenerateImage and GenerateVideo, although the measured tool usage contained only one image call and no video call among 3,183 calls.
  • 9.1.184 removes both schemas from the permanently loaded core set. An explicit image, video, or animation task loads only the schema actually needed, in the same turn.
  • The same selection path also applies when a media task arrives during a running turn. Quality questions, media checks, and non-binding ideas for later do not load a generation schema.
  • Both tools remain available via ToolSearch. The change removes no capability but moves rarely needed schemas out of ordinary model calls.
9.1.183
  • BLUN King 9.1.183 makes the automatic Telegram delivery of finished media resistant to transient upload errors.
  • The client retries only a limited set of transient errors, rebuilds the multipart upload on every attempt and aborts immediately on permanent errors.
  • Exhausted delivery attempts are logged separately; the bot token is not exposed, and the normal fallback dispatch is not suppressed.
9.1.182
  • This release fixes only the automatic update of a running King session.
  • The launcher previously set BLUN_NO_AUTO_UPDATE=1 in the same environment used by both the protected core and the update preparation of the parent process. The old updater in the core was thereby correctly disabled, but the new parent update checker also exited before fetching the public manifest.
  • 9.1.182 preserves an explicitly set auto-update deactivation for the parent process. The enforced deactivation is now added only when the protected core starts.
  • Mnemo remains an internal, local configuration. The public package does not contain Mnemo. The additive entry remains completely inactive unless both a local Mnemo path and an explicitly set agent identity are present.
9.1.181
  • Repeated identical long user tasks and duplicate Telegram delivery IDs are removed exclusively from the model projection; the raw history remains unchanged.
  • A configured Mnemo MCP is now added to the active King TUI profile instead of remaining limited to Telegram bridge sessions.
  • All 413 tests passed; each of the two targeted mutation test runs turned red as soon as its protective measure was removed.
9.1.180
  • The automatic update preparation no longer depends solely on the later TUI-ready IPC. As soon as the protected core has verifiably loaded, the launcher starts the preparation even if this second signal has been lost.
  • The safety boundary for the actual handover remained unchanged: a running response, compaction, the message queue, tools, shell commands and queue commands still prevent a restart in the middle of work.
  • The actual status confirmed the error: mode resume, installation 9.1.177, public 9.1.179, but only 9.1.176 prepared. The loop was therefore not the first blocker, because the idle check only applies after the preparation.
9.1.179
  • Bare confirmations such as ok, ja, danke or perfekt skip the personal memory broker. This saves a broker call and prevents up to 16.384 characters of unnecessary memory injection in such low-content turns.
  • weiter, attachments, questions, commands and other content-bearing messages keep the previous portal-spanning memory path.
  • A DeepAgents-style argument buffer, built as a first attempt, was slower than simple concatenation in four of five measurement rounds. It was completely discarded and not published.
9.1.178
  • The deferred tool search now recognizes a unique exact first term. GetMedia media job status result therefore loads GetMedia without falling back to a broad semantic guess. Ambiguous short names deliberately remain unresolved.
  • The media production chain wraps complete stage names onto following lines. The last step is no longer cut off at the right margin.
  • The change improves tool selection and readability. It changes neither the media model nor the image quality, and it does not claim to offer a real media preview.

Improvements since 9.1.57

VersionChange
9.1.177Automatic updates now carry over a stored resume or restart mode even when the direct process message does not arrive, and show a clear notice immediately before the safe TUI restart. Historical placeholders for compacted tool arguments are removed, whether they appear as compact JSON, formatted JSON or a parsed object, before they can be executed again. Raw history and all existing update protection mechanisms remain unchanged.
9.1.176All selection menus for slash commands now separate options with a blank line and show explanations in their own muted secondary color. The shared component serves 20 menu calls; individual warning colors are retained.
9.1.175The tool notice repeated with every model request drops from 1,749 to 825 characters. In the measurement, this saves around 231 estimated input tokens per request. All eleven behavioral obligations are retained; raw history, tool schemas, and files remain unchanged.
9.1.174The relevant Mistake.md excerpt shown per model request is limited to 3,000 instead of 4,000 characters. In 100 real requests this saves on average around 253 estimated input tokens; the selected headings remained identical in all 100 cases. Complete files and stored history remain unchanged.
9.1.173BLUN King detects recurring text-only responses across multiple Telegram turns. After three nearly identical responses despite new guidance from the user, the agent receives a one-time internal correction notice instead of repeating an old question, list, or waiting loop. Messages, processes, and stored history remain unchanged.
9.1.172If the search at startup finds nothing, the automatic update checks a running session again. The next check runs after a random interval of 60 to 90 seconds. Versions published later are therefore detected without a manual restart. Installation and session handover still wait until the session is completely idle.
9.1.171BLUN King now keeps only the four most recently loaded on-demand tool schemas per turn instead of twelve. Older tools remain findable via ToolSearch and are loaded again on selection. Permanently loaded core tools, the stored history, and the execution behavior remain unchanged.
9.1.170Bundles fixes for the current reliability and workflow errors: recurring tasks keep the newest oversized instruction; compacted tool argument placeholders are removed from the model projection; ToolSearch recognizes natural-language memory search terms, including the single word “store”; the loop display reloads the planning state; /update controls the safe idle handover; and /premortem provides a visible, structured error analysis.
9.1.169BLUN King keeps the exact tool selection and the previous strict keyword search unchanged. Only when this search yields no match does a narrow second pass search for related German and English terms. Name requirements with + remain mandatory; at least two meaningful terms and 75 percent of the request must match. As a result, the three Telegram searches that actually failed now find the current queue tool, while an unrelated request still ends without a match.
9.1.168BLUN King no longer replaces older tool-call arguments with an internal placeholder that the model could copy into a new call. Placeholder calls that already exist and their associated error results are removed only from the model projection; the unchanged session history is retained as evidence.
9.1.167For recurring scheduled tasks, BLUN King 9.1.167 now keeps only an unbroken sequence of the newest complete work sections. If the next newer section would exceed the limit of 48,000 characters or 24 messages, the selection stops there instead of going back to pick up older, smaller sections. Context and chronological order thus stay coherent. In a measured running history, the projected history dropped from 32,591 to 16,981 characters. This saves 15,610 characters or around 3,903 estimated input tokens per comparable request. Raw history, current task steps, and the compaction summary remain unchanged.
9.1.166BLUN King 9.1.166 limits recurring scheduled tasks to an isolated working context instead of transmitting the entire main agent conversation again at every model step. The current task, the newest compaction summary, and the newest real work steps remain available within a limit of 24 messages and 48,000 characters. The stored history, normal user turns, one-time reminders and fast conversation paths remain unchanged. In a measured history, 2,043 model steps of recurring scheduled tasks consumed a total of 298.7 million input tokens, on average 146,188 tokens per step.
9.1.165BLUN King 9.1.165 limits the output budget of normal turns to 24,576 instead of 32,768 tokens. Light steps keep their previous limit of 8,192 tokens, models with smaller output limits keep those lower values, and an explicit user setting continues to take precedence. Of 27,049 measured responses, 99 percent stayed below 9,970 tokens; twelve old outliers hit exactly the previous limit of 32,768 tokens and each continued to compute for about 6 minutes.
9.1.164BLUN King 9.1.164 limits the output budget of a compaction on large model windows to 16,384 instead of 131,072 tokens. 39 successful compactions needed at most 10,781 output tokens. The new cap is 52 percent above this measured maximum and lowers the possible output and KV-cache demand per compaction by 87.5 percent. Stored history and normal conversation turns remain unchanged.
9.1.163BLUN King 9.1.163 replaces extensive skill loads outside the last 20 messages in the model projection with a compact reload reference. Current, small, and non-reloadable skill loads remain unchanged; the stored conversation history is not rewritten. In a measured case, a skill load drops from 87,034 to 424 projected characters. Once it leaves the current working window, this saves 86,610 characters or around 21,653 estimated input tokens.
9.1.162BLUN King 9.1.162 limits large working directory overviews in the repeated system prompt to 2,000 characters. Small overviews remain unchanged. For truncated overviews, a clear notice still points to the complete search with Glob, Grep, and Read. In a measured prompt, the overview drops from 3,988 to 1,983 characters. This saves 2,005 characters or around 501 estimated input tokens per identically structured request.
9.1.161BLUN King 9.1.161 no longer repeats the names of the 112 offloaded tools in every ToolSearch description. The keyword search, the exact selection by full or unique short name and the permanent loading of the twelve most recently selected schemas are retained. In the measured representation, the repeated description drops from 1,984 to 278 characters. This saves 1,706 characters or around 426 estimated input tokens per identically structured request.
9.1.160From BLUN King 9.1.160 on, the model projection fully protects only the newest twelve messages before older successful tool results that contain only text are replaced by a short completion note. Error outputs, media, stored file references, the newest twelve messages, raw history, and exports remain unchanged. In a session snapshot measured under stable conditions, two more old tool results are thereby reduced. The model projection drops from 81,800 to 78,402 characters. This saves a further 3,398 characters or around 850 estimated input tokens per identically structured request.
9.1.159From BLUN King 9.1.159 on, valid JSON arguments of completed tool calls outside the newest 12 messages are replaced by a short note in the model projection. The associated tool result, the newest 12 messages, incomplete calls, small or invalid arguments, raw history and exports remain unchanged. In a session snapshot measured under stable conditions, three arguments of completed tool calls are reduced from 2,849 to 165 characters. This saves 2,684 characters or around 671 estimated input tokens per identically structured request.
9.1.158From BLUN King 9.1.158 on, status-only messages that immediately follow a completed Telegram reply are replaced by a short note in the model projection when they lie outside the newest 20 messages. The sent reply call and its result, current messages, summaries after other tools, mixed content, raw history and exports remain unchanged. In a session snapshot measured under stable conditions, six historical status messages are reduced by 1,837 characters. This saves around 460 estimated input tokens per identically structured request.
9.1.157From BLUN King 9.1.157 on, eligible, successful, text-only tool outputs outside the newest 20 messages are replaced in the model projection by a short completion note. Error outputs, media, offloaded file references, the newest 20 messages, raw history, and exports remain unchanged. In a session snapshot measured under stable conditions, 43 old results are reduced. This saves 9,680 characters or around 2,420 estimated input tokens per identically structured request.
9.1.156From BLUN King 9.1.156 on, stored references to user messages outside the newest 20 messages no longer repeat their preview with beginning and end at every model request. Recovery marker, size details, readable file path, the newest 20 messages, media, raw history, fully stored file and exports remain unchanged. In a snapshot measured under stable conditions, five historical references are reduced and the model projection drops from 99,143 to 96,001 characters. This saves a further 3,142 characters or around 786 estimated input tokens per identically structured request.
9.1.155From BLUN King 9.1.155 on, stored references to user messages are restored before text projections can change the hash of the original message. Existing offloads thereby remain effective instead of silently falling back to the projected complete message. Raw history, re-readable file references, the newest 20 messages, media, and exports remain unchanged. In a snapshot measured under stable conditions, the model projection drops from 105,810 to 99,143 characters. This saves a further 6,667 characters or around 1,667 estimated input tokens per identically structured request.
9.1.154From BLUN King 9.1.154 on, addressed Telegram channel sections outside the newest 20 messages are limited to a 500-character preview (instead of 1,000) with beginning and end. Complete channel metadata, beginning and end of the message content, the newest 20 messages, attachments, raw history and exports remain unchanged. In a snapshot measured under stable conditions, seven additional historical addressed sections are reduced. This saves 3,500 characters or around 875 estimated tokens per repeated request.
9.1.153From BLUN King 9.1.153 on, the projection of historical Telegram contexts preserves the complete channel metadata and the closing channel tag. Only the message content is truncated. Even with real, 161-character-long Telegram metadata, the structure remains valid within the 250-character budget. The projection is idempotent, subsequent addressed channels remain unchanged, and a channel envelope that already exceeds the budget without content is passed through unchanged.
9.1.152From BLUN King 9.1.152 on, arguments of completed tool calls leave the active model projection after four instead of eight newer messages. The raw session history, unanswered or malformed calls, media, tool results, and the newest four messages remain unchanged. In a freshly measured session snapshot, two additional completed calls are condensed; compared to 9.1.151 this saves a further 244 characters or around 61 estimated tokens per repeated request.
9.1.151From BLUN King 9.1.151 on, arguments of completed tool calls leave the active model projection after eight instead of twelve newer messages. The raw session history, unanswered or malformed calls, media, tool results, and the newest eight messages remain unchanged. In a measured session snapshot, three additional completed calls are condensed; compared to 9.1.150 this saves a further 317 characters or around 80 estimated tokens per repeated request.
9.1.150From BLUN King 9.1.150 on, the historical offloading of tool results fully protects the newest four messages instead of the newest eight. Older eligible tool results keep a compact, 600-character recovery notice and their source path; raw history, fully stored outputs, media and the newest four messages remain unchanged. In a measured session snapshot, the four-message window offloads nine additional historical results and saves a further 6,683 characters or around 1,671 estimated tokens per repeated request compared to 9.1.149.
9.1.149From BLUN King 9.1.149 on, the historical offloading of tool results fully protects the newest eight messages instead of the newest twelve. Older eligible tool results keep a compact, 600-character recovery notice and their source path; raw history, fully stored outputs, media and the newest eight messages remain unchanged. In a measured session snapshot, three results drop from 4,679 to 1,800 characters; this saves a further 2,879 characters or around 720 estimated tokens per repeated request.
9.1.148From BLUN King 9.1.148 on, channel sections explicitly marked with addressed=false are reduced even in the newest mixed Telegram batch. Addressed sections, media, raw history and exports remain unchanged. In a measured history, eleven non-addressed sections drop from 22,691 to 2,750 characters; this saves 19,941 characters or around 4,986 estimated tokens per repeated request.
9.1.147From BLUN King 9.1.147 on, the micro-compaction fully protects the newest twelve messages instead of the newest twenty and thereby uses the same recovery window as the existing offloading of tool results. Older completed tool arguments and eligible tool results are only reduced in the model projection; raw history and recovery paths remain unchanged. In a measured history, this saves a further 560 characters or around 140 estimated tokens per request.
9.1.146From BLUN King 9.1.146 on, older, already offloaded tool results are limited in the model projection to the details needed for recovery: tool name, character count, and file path. The complete content remains unchanged on disk, the raw history is not changed, and the newest twelve messages keep their detailed notices. In a measured history, this reduces the repeated model input by 26,779 characters or around 6,695 estimated tokens per request.
9.1.145From BLUN King 9.1.145 on, an interrupted provider stream is retried automatically if only internal reasoning output has arrived up to that point. Visible text and tool calls still prevent an automatic retry. Adaptive follow-up steps with a low reasoning level use an output budget of 8,192 tokens; first, complex, and failed steps keep the configured budget, and a retry after the length limit has been reached can increase it. When a session is resumed, the current Telegram plugin transport notice no longer appears as raw chat text.
9.1.1449.1.144 limits addressed Telegram sections outside the newest 20 messages in the model projection to a 1,000-character preview with beginning and end. The newest 20 messages, the newest user message, sections at the exact limit, attachments, channel metadata, raw history and exports remain unchanged.
9.1.1439.1.143 removes the repeated Telegram plugin transport notice from the model projection for older messages. Channel content, metadata, attachments, the newest user message, raw history, and exports remain unchanged.
9.1.1429.1.142 reduces the preview with beginning and end for older, non-addressed Telegram channel parts in the model projection from 500 to 250 characters. Addressed channel parts, the newest user message, attachments, raw history and exports remain unchanged.
9.1.1419.1.141 removes arguments of older, completed tool calls from the model projection starting at just 32 estimated tokens. Tool results keep their previous threshold; new messages and the raw history remain unchanged.
9.1.1409.1.140 limits the relevance-based mistake reminder in the model projection to 4,000 characters by default. Complete mistake files, raw history, and exports remain unchanged.
9.1.1399.1.139 limits older, non-addressed Telegram channel parts in the model projection to a preview of 500 characters. The newest user message, addressed parts, attachments, raw history and exports remain complete.
9.1.138For each recurring cron task, 9.1.138 keeps only the newest wake-up notice in the model projection. One-time reminders, different tasks, raw history and exports remain unchanged.
9.1.1379.1.137 fully protects only the twelve newest messages from the offloading of older tool outputs. Complete results remain recoverable via raw history and source path.
9.1.1369.1.136 keeps only the newest dynamic Mistake.md notice in the model projection. Older selections are fully retained in the raw history and in exports.
9.1.135BLUN King 9.1.135 keeps the managed Node.js runtime first in PATH in the replacement process and in all child tools. Commands such as node and npm thereby use the same supported runtime as the TUI instead of falling back to an older system installation.
9.1.1349.1.134 limits non-addressed Telegram group messages in the model projection to a preview of 2,000 characters with preserved beginning, end, and original length. Direct messages and the stored history remain complete.
9.1.1339.1.133 selects at most five relevant complete entries from the project-local and the shared Mistake.md, within a combined budget of 6,000 characters. The complete sources and storage paths are retained.
9.1.1329.1.132 keeps the lean base system prompt with 4,850 characters active after the generated initialization. This saves 18,259 characters per request, about 4,565 estimated tokens, without removing instructions or tools.
9.1.1319.1.131 removes two older rule copies from the model projection as soon as the authoritative counterparts are present. The default prompt thereby drops by 1,010 characters or around 253 estimated tokens per request.
9.1.130Outside the last 20 messages, 9.1.130 replaces the explanatory text of older, fully completed tool steps with a short notice. Tool calls, results, raw history and exports are fully retained.
9.1.1299.1.129 removes preview texts from older, already offloaded tool results. Path and size details remain visible; the complete content is retained in the original file or in the private archive.
9.1.1289.1.128 limits the permanent cache of on-demand tool schemas to the twelve most recently selected tools. Evicted tools remain immediately findable via ToolSearch.
9.1.1279.1.127 shortens the repeated ToolSearch catalog. Unique tools appear with their short selector; full MCP namespaces are retained only where names conflict.
9.1.1269.1.126 deterministically selects at most five sections relevant to the current conversation from the runtime-wide error file. The projection is limited to 6,000 characters and needs no additional model or network call.
9.1.1259.1.125 adds the read-only Telegram command /status for paired users. It names machine, version, process and queue status without outputting chat IDs, paths, secrets or message contents.
9.1.1249.1.124 fixes the swapped brand colors in the compact BLUN logo below the input field. Status values, profile name, and persona remain unchanged.
9.1.1239.1.123 removes the large JSON arguments of older, completed tool calls from the model projection. Name, identifier, result, raw history and exports remain complete.
9.1.1229.1.122 loads the complete design guideline via the skill tool only for visual work. Non-visual requests receive a compact activation contract; at the same time, older text-only outputs are offloaded more effectively.
9.1.1219.1.121 limits the total size of older text-only outputs of tools. Eligible results are privately archived and replaced in the model projection by readable file references.
9.1.1209.1.120 offloads large older assistant responses into private session files. The last 20 messages, tool chains, and the complete raw history are retained.
9.1.1199.1.119 now sends only a small selection of frequently needed skills with each model step. All other skills remain findable via the skill tool by their name or purpose.
9.1.1189.1.118 keeps the session timestamp in the system prompt stable during a running session. Unchanged prompt parts can thereby continue to use the provider's prefix cache.
9.1.1179.1.117 keeps the four core tools for media immediately available and loads image and video understanding, video synchronization, and lip movement synchronization only on demand via ToolSearch.
9.1.1169.1.116 adds proactive compaction that starts at around 128,000 estimated input tokens, at a safe step boundary. The compaction uses a lean dedicated system prompt; large Read results use their existing source path.
9.1.115Resumed sessions rebuild the system prompt of the current profile so that outdated oversized prompt snapshots do not persist across restarts. Large working directory overviews are limited; the complete files remain available via Glob, Grep and Read.
9.1.114Telegram delivery treats Windows EPERM as an indication of a running TUI or poller process instead of routing messages away from the visible session. ToolSearch confirms an already loaded tool with an exact name match instead of falsely reporting that a tool that is only loaded on demand is missing.
9.1.113The Telegram tools keep a fallback path within the same runtime at startup if the managed plugin registration is temporarily missing.
9.1.112Large older user messages are archived outside the current working window; the complete raw history remains available.
9.1.111Telegram turns with attachments receive download_attachment automatically. In normal turns, the tool remains offloaded via ToolSearch, so the reduced schema load is retained.
9.1.110Retries after a provider overload respect the server's Retry-After value. The automatic ripgrep setup downloads the pinned version 15.0.0 archives from the official ripgrep release and verifies their SHA-256 checksums before installation.
9.1.109Version 9.1.109 now keeps only the nine tools that accounted for more than 98 percent of the 3,183 measured tool calls permanently in the model request. All other tools remain findable via ToolSearch and, once loaded, stay available for the rest of the session. This reduces the schema load for every normal model step; no tool is removed, and the fast path for Telegram replies and pending media results is unchanged.
9.1.108Identical, repeatedly injected system notices are merged only in the model projection. Changed notices and the complete stored history are retained.
9.1.107Provider errors are shown in plain, customer-friendly language; internal error codes and support notices do not appear. /help offers a command list that can be navigated with the arrow keys and opens a detailed description of the selected command with the right arrow key or the Enter key.
9.1.106Agent profiles can exclude tools by name. The exclusions apply even after dynamic loading; the default subagents do not send Telegram messages that bypass the main agent.
9.1.105Version 9.1.105 adds TaskUpdate for running background agents. At the next safe model step, King passes additional instructions to the same active agent without stopping it or starting another agent. Unknown and already finished tasks, shell tasks, and agents that no longer accept updates are still rejected, as before.
9.1.104Version 9.1.104 lets foreground shell commands run to their regular end even with very large outputs. King writes up to 16 MiB continuously into the private task log, discards output beyond that, and reports the actual exit code instead of terminating the process because of the output volume. Small outputs, background tasks, time limits and manual aborts remain unchanged.
9.1.103After transient provider interruptions, swarm members are resumed at most twice under the same agent ID. HTTP 429 keeps its separate overload rule; final errors and manual aborts are not retried automatically.
9.1.102After transient provider errors, delegated individual agents are resumed at most twice from their durable history. Permanent errors and manual aborts remain final.
9.1.101Oversized user messages are saved locally and replaced in the model context by a limited preview with a readable path. The complete original history and media are retained.
9.1.100Limited Grep content searches terminate ripgrep after the requested page and one additional preview line. Hit counts, unlimited searches, and file lists sorted by modification time remain complete.
9.1.98King can proactively compact a completed work section once it reaches 128,000 estimated tokens. Below the threshold, the tool schema stays out of the model prompt entirely; the compaction uses the existing safe step boundary.
9.1.97The permanently loaded TodoList tool description dropped from 2,238 to 996 characters. Multi-step planning, all six task statuses, honest progress reports, queries, clearing and the separate plan mode remained protected.
9.1.96The permanently loaded base system prompt dropped from 23,109 to 4,850 characters. Identity, persona and soul, response language, work and permission boundaries, compaction handover, runtime environment, AGENTS.md and skills remained protected.
9.1.95The permanently loaded Write tool description dropped from 2,532 to 1,541 characters. The distinction from Edit, literal content, line endings, the 500-line limit, the single-file exception and the atomic continuation with line and SHA-256 checks remained protected.
9.1.94The permanently loaded Glob tool description dropped from 1,495 to 1,006 characters. Sorting, ignored and sensitive files, recursive patterns, dot files, brace expansion and the limit of 100 hits remained protected.
9.1.93The permanently loaded Edit tool description dropped from 1,537 to 1,144 characters. Reading before changing, exact replacements, multiple replacements, CRLF handling and the 500-line limit remained protected.
9.1.92The permanently loaded Agent tool description dropped from 2,061 to 1,153 characters. Separate context, resuming, time limits and parallel delegation were retained.
9.1.91The permanently loaded Read tool description dropped from 2,391 to 1,648 characters. Paging, secret protection, media forwarding, line format and CRLF behavior were retained.
9.1.90The permanently loaded Bash tool description dropped from 5,003 to 1,834 characters. Runtime contract, background tasks, file tools and security boundaries were fully retained.
9.1.89Page-wise file reads name the exact next line_offset at the internal 1,000-line limit; end of file and deliberately smaller excerpts remain unchanged.
9.1.88BLUN King 9.1.88 activates the small, lossless compaction in good time before the full compaction. Older large tool results and completed tool arguments leave the model view earlier; the complete stored history is retained.
9.1.87An explicitly retryable HTTP 429 response respects Retry-After and receives at most two automatic retries; other errors remain immediately visible.
9.1.86Large tool outputs keep 1,000 characters each from the beginning and the end visible within the same preview budget; an exact marker states the number of omitted characters.
9.1.85Text-based tool results above 12,000 characters are stored completely in a private local file; subsequent model requests keep only a preview budget of 2,000 characters and the readable path.
9.1.84The full compaction processes older histories in chronological stages with at most 64,000 estimated input tokens; the fixed safety limit and the complete private archive remain unchanged.
9.1.83The micro-compaction replaces large arguments of older, completed tool calls with a valid JSON marker, in the model view only; the session checker reports the estimated saving without outputting any content.
9.1.82The read-only checker reports selected and withheld tool schemas, suppression reasons, and the estimated number of avoided schema tokens.
9.1.81A bundled, read-only checker summarizes provider steps, tool calls, tokens, compactions, errors and offloaded outputs without exposing prompts or private paths.
9.1.80Large tool results receive content-free offloading telemetry; isolated subagent context, machine-readable plans, and transferable handovers are protected by regression tests.
9.1.79Durable checkpoints persist completed history records before provider steps and before a worker completes, so that completed work can be reloaded after a resume.
9.1.78The full compaction archives displaced history parts before replacing them with a summary; the summary contains the readable archive path.
9.1.77The micro-compaction reduces older, large tool results under context pressure and at the same time preserves the complete stored history.
9.1.76Pending image, video, and voice tasks survive compaction and fast follow-up questions; Telegram messages remain in FIFO order without a misleading busy error.
9.1.75Short Telegram conversations process only the newest unanswered message, while completed text exchanges are retained as language context.
9.1.74Stored Telegram routes restore group IDs that were accidentally passed without a minus sign; Strg+S can control a turn that is actually running.
9.1.73Telegram and loop messages no longer start a second turn during active work; Escape and Ctrl+C can still abort the active turn.
9.1.72Hiding an update notice suppresses only the version offered at that time; newer releases appear again when king is started normally.
9.1.71Loop wake-ups correctly enter the queue, the Telegram poller is claimed atomically, core file and media tools remain immediately available and Context7 no longer starts automatically.
9.1.69Standard MCPs are set up, Telegram reaches a protected FIFO handover point, Escape and Ctrl+C reliably abort active work and the MCP overview hides internal paths.
9.1.68Telegram messages that arrive while idle wake up FIFO processing, direct and group messages keep their arrival order, and resuming hides internal Telegram frames.
9.1.67The standard skill venture-flywheel adds a contract-only UVF foundation with deterministic project trust and approval requirements for external actions.
9.1.66/curiosity and /scout run limited, read-only opportunity research with evidence, counter-evidence, and an abort criterion.
9.1.65Escape and Ctrl+C reliably abort automatic compactions, a stable screen anchor prevents double footers and the loop notice is aligned with the chat content.
9.1.64Disk-based session history, on-demand tools and skills, a 120-second provider idle watchdog, correct loop cadence, Telegram in FIFO order, Linux packages, and Bosnian language detection were added at the same time.
9.1.58–9.1.63This version series bundled work on sessions, Telegram, platforms and performance. It concluded with lean on-demand tool schemas, compact skill lists, restored first-use skills and a package inventory gate against unplanned removals.

Previous improvements

VersionChange
9.1.53/idea publishes its task plan before starting any work, checks outgoing actions at every tool call and requires an honest final state for every step.
9.1.52Resumed sessions open the stored working directory directly. Conversation and the active /loop state are jointly restored on restart.
9.1.51Loops work as autonomous wake-up triggers, /idea develops and edits its own plans, Telegram can trigger work commands, and media and startup states are shown more clearly.
9.1.50Images received locally or via Telegram can be animated as real MP4 videos. Large context windows receive a valid output budget; the media bar shows clearer states and clickable paths.
9.1.49Images of adult fantasy figures in swimwear remain allowed within clear boundaries. Completed image tasks can be used as source images for videos; successful GetMedia queries no longer produce repeated cards.
9.1.48The unified media bar bundles media tasks directly above the input field. Percent values appear only with a real provider measurement; otherwise it shows phase and runtime.
9.1.47The request log distinguishes conversations and compaction and records tool selection and suppression reason without changing tool behavior.
9.1.46Loops understand natural-language time expressions, show them during input, support arbitrary intervals and re-enable normal text selection in the terminal outside the history view.
9.1.45The running compaction progress now appears only in the lower status bar instead of also appearing as a second line in the chat.
9.1.44Complete repackaging of the approved 9.1.43 so that even early installations of 9.1.43 reliably recognize the update.
9.1.43Complete protection base from 9.1.40 with transport diagnostics, visible update notices, and the console commands /loop, /goal, and /output-style.
9.1.40Turn watchdog for long or repeatedly failing calls; self-hash after multi-part writing with re-read check of the stored file.
9.1.39Long files are written in continuations. Each continuation starts where the previous write actually ended; line count, SHA-256, and chunk boundaries are checked and reported.
9.1.38Degenerate or truncated tool arguments are recognized. An incomplete file is rejected with an error message instead of silently counting as finished.
9.1.37After a Node switch, BLUN checks native modules with a real SQLite query and rebuilds better-sqlite3 when needed.
9.1.36Empty model responses are handled by cause: a too-small output budget is enlarged, an empty stop is retried exactly once. System notices and injections cannot trigger a Telegram reply.
9.1.35Multi-stage compaction shows the stage and the real usage of the model window, for example 2/~10 · 90 %.
9.1.34The active context is compacted in stages: oldest parts first, every compactor call below the model limit.
9.1.33Foundation for the automatic Node runtime and the downstream repair of native modules after a runtime switch.

Addenda and open documentation gaps

Reconciliation as of September 17, 2026: in the range 9.1.33 through 9.1.597, 521 versions exist in the npm registry. A missing number is not automatically a missing release: some versions are absent from the current registry or were withdrawn. For four published versions, the exact change details remain open. No changes are invented for them.

9.1.567: change details open

Published on September 6, 2026, at 22:42 UTC. The SHA-512 value of the package matches the integrity value published on npm. The package contains no CHANGELOG.md; its README still names 9.1.566 in the installation command. The difference from 9.1.566 cannot be reliably derived from this. This documentation gap remains explicitly open.

9.1.550: change details open

Published on September 2, 2026, at 07:19 UTC. The SHA-512 value of the package matches the integrity value published on npm. The package contains no CHANGELOG.md, and no version-specific change evidence was found in the verified material. This documentation gap remains explicitly open.

Addendum to 9.1.536

The following details come from the integrity-verified published package of September 1, 2026:

  • Work tasks continue beyond private Telegram replies. After buffered direct messages, King continues the work with a limited additional step unless the user explicitly pauses or stops.
  • Short status inquiries do not interrupt the running workflow.
  • When the retry attempts after empty reasoning responses are exhausted, King reduces the reasoning effort instead of leaving it unchanged for further attempts.
  • More on-demand tool schemas remain available; messages are offloaded only when the available space in the history runs short.
  • Included are the verified progress rule for TodoList and a one-line start path for God Mode with Swarm.

Addendum to 9.1.99

The existing feature documentation describes the joint offloading of consecutive text-only tool results: when the batch exceeds 12,000 characters, eligible large results are stored privately. Readable references remain in the model context; raw history and media are retained. The previously missing version entry now explicitly points to this feature.

9.1.70: change details open

Published on August 24, 2026, at 15:56 UTC. The SHA-512 value of the package matches the integrity value published on npm. The package contains no CHANGELOG.md; the existing feature descriptions do not show a clear difference from 9.1.69. This documentation gap remains explicitly open.

9.1.57: change details open

Published on August 23, 2026, at 07:28 UTC. So far, this version has appeared only as the starting point of a collective heading. In the verified material, no dedicated version-specific change evidence has been assigned to it. This documentation gap remains explicitly open.

The CHANGELOG.md contained in the immutable npm package 9.1.597 ends at 9.1.594. The added notices for 9.1.595 through 9.1.597 are on this page. The published package was not subsequently rewritten under the same version number.

9.1.41 and 9.1.42 are withdrawn

Do not install

These two versions were accidentally branched from 9.1.38 instead of 9.1.40. Write continuation, self-hash, and turn watchdog were therefore missing. Both npm versions are marked as deprecated; latest and next never pointed to them. 9.1.43 contains their intended changes on the complete protection base.

Update and verify

king update
blun --version

After installing 9.1.599, the version output must show 9.1.599. Updating from 9.1.597 and from the local version 9.1.598 via the public update sources has been verified. A console that is already running loads the new code only after it restarts. Then also check /version in it.