v4.10.4
Changed
-
The default briefing level is now
minimal. A new session, and a call to
thebriefingtool ormemesh briefing, gets only what belongs to the
project it is in — its decisions, lessons, known facts and recent activity,
with the live repository state in front of them — where the default used to
bestandard. Two things a new session no longer receives unless it asks
for them: the fresh task state (goal / next / blocked / done) and the capped
index of the project's durable memories. To get them back, runmemesh config set briefing standard, or start the session with
MEMESH_BRIEFING=standard.fullis unchanged: it still adds other
projects' memory and global memory. Only the default moved. Abriefing
value you already set inconfig.json, or aMEMESH_BRIEFINGin the
environment, is honoured exactly as before, the order is still env >
config > default, and an unset value — or an invalid one — now resolves to
minimalinstead ofstandard. A stale or unknown-age task state still
gets its one-line flag at every level,memesh taskand thetask_state
tool still show the whole stored state, andmemesh briefing --indexstill
prints the index on its own. The dashboard's Project tab no longer says the
index is what an agent receives "by default": it names the levels that
include it. -
Headings name a project by its label, not its 32-character hash (#409). A
project's id is<label>~<32 hex>, and every heading of the briefing — the
session-start block, thebriefingtool andmemesh briefing— used to print
all of it:Task state for "memesh~2c0fe491888c8efb9a4894828bbc2733",
Decisions and direction for …,Recent activity in …, the index heading, the
empty-state lines, the terminal banner a project with no memories greets you
with, and the linesmemesh taskprints. They now say"memesh". The full id
is unchanged wherever it identifies data: theprojectfield of the JSON and
MCP results,project:tags, entity names (memesh learnnames lessons as
before),--project, and the unread-message line, which tells an agent which
project to poll.projectLabelinsrc/core/work-topology.tsis the one rule:
one trailing~plus exactly 32 lowercase hex characters is removed, anything
else is left as it is. The titles the session-summary and pre-compact hooks
stored (2026-09-22 memesh~…: edited 12 file(s)) still contain the whole id and
are printed as stored, so it can still appear in the lines underRecent activity. -
memesh config listshows the briefing level in effect (#412). With the
default nowminimal, a config with nobriefingkey told you nothing about
what a session would get.listnow always prints one line for it —briefing: minimal (default),briefing: standard (config.json)orbriefing: full (env MEMESH_BRIEFING)— decided by the same resolver the hook and the tool use
(env, then config, then the default). A storedbriefingis that line, not a
second one; a stored or env value that is not a level is said to be invalid and
shows the level it resolved to.
Fixed
- The ja Settings update-freshness label no longer duplicates its Check now
button (#420). Both read 今すぐ確認; the status label now reads 最新の結果を使用. qa:live-journey --host codexworks with codex-cli 0.155.1'sCODEX_HOME
rule and reports codex's real failure reason on error (#422).--codex-home
no longer requires (or refuses) a path under the OS temp dir, and a startup
failure now shows stdout, where codex's real error actually prints, not just
stderr. An end-to-end pass is still blocked by the QA account's own usage
limit, unrelated to this code.- A new session is no longer shown the oldest of a group of equally scored
memories (#401). The SessionStart hook ranks a project's memories by
confidence, use and recency and keeps the top few (sessionLimit). The daily
decay multiplies the confidence of never-accessed memories by 0.9, so the
memories captured since its last run carry one confidence value and, never
accessed, score exactly alike (so do old ones that have sunk to the decay
floor), and SQLite hands equal scores back in ascending id order (measured):
the cut kept the OLDEST of them. The lesson query, whose pool is claimed
first, had no ORDER BY at all and kept the five oldest lessons. On a real
graph, in the hours after a decay run, a new session was given the same two
old commit lines every time and never the decision made an hour earlier,
whilememesh briefingon the same data (which reads a newest-first window)
showed the right memories. Equal scores now resolve newest first ("newest" is
creation order, the key the briefing sorts by too), in both the exp/log and
the legacy ranking forms and in the global and recent pools thatfulladds,
and the lesson query orders newest first; a higher score still beats a newer
memory.tests/core/briefing.test.tspins the hook and the briefing together
on a graph in which every memory ties, lessons included. memesh briefing --json'shasTaskStateno longer counts the unread-message
reminder. It was true whenever any state line was present, and the reminder
is listed with the task-state lines, so a project with a message waiting and no
task state reported one. It is now true exactly when a task-state line leads the
block: the fresh state, the one-line stale flag, or the unreadable-record line.
The CLI's "set the task state" hint, which reads it, now appears beside the
reminder on such a project.memesh config get <key>exists (#410). It printedunknown command 'get'
and suggestedset. It now prints the stored value asconfig listshows it
(forbriefing, what is stored, not the level in effect thatlistprints),
or<key> is not set in config.json(exit 0); an unknown key gets the same
two-line refusal assetandunsetand exits 1.memesh statusno longer calls a newer install "up to date" (#410). On
4.10.2, a trial build on thenexttag while npmlatestwas 4.9.4, it printed
Update check: up to date (fresh; latest 4.9.4)and then anUpdate path:for
@latest, a downgrade. It now saysrunning pre-release version (4.10.2), npm latest is 4.9.4, asmemesh doctoralready did, and prints no update path. A
newer install that is also deprecated, whose check only partly succeeded, or
whose check could not run keeps its update path: only the "running pre-release
version" line withholds it.