aboutsummaryrefslogtreecommitdiff
path: root/help.html
diff options
context:
space:
mode:
Diffstat (limited to 'help.html')
-rw-r--r--help.html22
1 files changed, 22 insertions, 0 deletions
diff --git a/help.html b/help.html
index 8967db2..b120822 100644
--- a/help.html
+++ b/help.html
@@ -1689,6 +1689,28 @@ listmods</pre>
<h2>📋 Changelog</h2>
<div class="version-item">
+ <div class="v-header"><span class="v-num">v4.6.71 — October 2026</span>
+ <span class="v-date">chat bridge</span></div>
+ <ul>
+ <li><strong>Chat with Hermes from the terminal.</strong> <code>hermes &lt;message&gt;</code>
+ (alias: <code>feedback</code>) sends to the operator channel and prints the message id.
+ Replies appear by themselves within 30 seconds; <code>hermes-poll</code> checks immediately.</li>
+ <li><strong>Contract first.</strong> Shapes, error codes and the millisecond cursor live in
+ <code>_docs/chat-contract.md</code>. A wrong token is <code>401</code>, oversize text is
+ <code>413</code> (rejected, never trimmed), rate limits are <code>429</code> with
+ <code>retry_after_ms</code>.</li>
+ <li><strong>One write path.</strong> <code>feedback</code> no longer files a bug report;
+ the old replies endpoint answers <code>410 Gone</code>. <code>hermes-reset</code> rotates
+ the browser's token and starts a fresh thread.</li>
+ <li><strong>The in-page agent can ask too.</strong> New tool <code>chat_hermes</code> —
+ send a question, read the answer on a later step.</li>
+ <li><strong>Server side.</strong> Per-thread and per-IP rate windows, atomic writes,
+ <code>data/chat/</code> unreachable from the web. Host CLI:
+ <code>scripts/chat.py list|show|reply</code>.</li>
+ </ul>
+ </div>
+
+ <div class="version-item">
<div class="v-header"><span class="v-num">v4.6.57–68 — October 2026</span><span class="v-date">2026-10-23</span></div>
<ul>
<li><strong>No shell — and it now says so</strong> — <code>;</code>, <code>&amp;&amp;</code> and <code>||</code> are refused with an explicit message instead of being folded into the command's argv (where <code>wc -l f &amp;&amp; grep -c x f</code> returned a plausible wrong number). A <code>|</code> arriving from the AI <code>run_command</code> tool is refused too, because that path bypasses the pipe splitter and degraded the pattern to empty. Documented at the top of the command reference.</li>