Releases: AncientiCe/palace-rs
Release list
v0.9.1
[0.9.1] - 2026-07-02
Added
- MCP Bundle (
.mcpb) release artifact — the release workflow now assembles a
singlepalace-<version>.mcpbbundle containing the Linux x86_64, macOS
arm64, and Windows x86_64 binaries plus an MCPBmanifest.json(binary server
type with per-platform overrides). The bundle and its SHA-256 are uploaded as
release assets, enabling one-click install in MCPB-aware hosts. - Official MCP registry auto-publish — a
server.json(namespace
io.github.ancientice/palace-rs, MCPB package pointing at the release bundle)
is published toregistry.modelcontextprotocol.ioon every tagged release. The
release workflow authenticates via GitHub Actions OIDC (no stored secret) and
fills in the version, download URL, and bundle hash automatically.
v0.9.0
[0.9.0] - 2026-06-29
Added
- Ambient warm-start recall at session start — the
SessionStarthook now
injects real recalled memory alongside the protocol text: recent diary entries
for the session's project (cross-agent, so a different agent the next day still
benefits) plus the top drawers of the wing thecwdmaps to. Prior
investigations land in context deterministically, without the agent having to
call any palace tool. Fail-open: a missing or empty palace yields the protocol
text alone. Applies to every client with aSessionStarthook (Claude Code,
Codex, Cursor).
Fixed
- Read recall gap —
PostToolUseauto-recall fired for theReadtool (it is
in the installed matcher) but never surfaced anything, because the query
extractor did not read Claude'sfile_pathfield. Reads now surface relevant
prior memory. The CursorpostToolUsematcher was also aligned to
Grep|Read|Globfor parity with Claude. - UTF-8 truncation panic in memory layers — snippet truncation in the L1/L2/L3
layer renderers sliced on a byte index (&s[..197]/&s[..297]), panicking
when a multibyte character (e.g.─,—) straddled the boundary — reachable
viapalace wake-up,palace recall, andpalace searchon real mined
content. Truncation is now char-boundary safe.
v0.8.0
[0.8.0] - 2026-06-19
Added
- First-class protocol tools — the nine memory-protocol-critical MCP tools
(palace_status,palace_session_context,palace_diary_search,
palace_project_status,palace_search,palace_kg_query,
palace_preference_search,palace_diary_write,palace_kg_add) now emit
_meta."anthropic/alwaysLoad" = trueintools/list. Clients that honor the
hint (Claude Code >= 2.1.121) keep these resident at session start instead of
deferring them behind tool search, so the mandatory three-trigger protocol
(SESSION START / BEFORE ANSWERING / AFTER WORK) no longer depends on the agent
remembering to load the tools first. All other tools remain deferrable to keep
standing context cost low.
Fixed
- Docs — updated remaining contributor, mission, and Claude notes references
from the oldmempalace-rs/mempalace mcpnames topalace-rs/
palace mcp.
v0.7.0
[0.7.0] - 2026-06-13
Added
- First-class wings registry — a new
wingstable is now the source of truth
for every wing (both code repos and non-repo topics), recordingkind
(project/topic),description,project_path, andlast_mined_at. It is
populated idempotently on every database open by backfilling distinct wings
already present on drawers (wing_diary__*/general/conversationsare
inferred as topics, everything else as projects), so existing palaces upgrade
automatically without touching drawer data. - MCP project-awareness and on-demand mining — three new MCP tools:
palace_project_status(reports whether the current repo ismined/
registered_not_mined/unknown, with a recommendation),palace_mine
(mines a code repository on demand after the user agrees, auto-initialising
palace.yamlfor first-time repos and running with its own short-lived
connection so the server's shared connection is untouched), and
palace_create_wing(declares a topic wing for non-repo users such as sales
or PMs).palace_rememberandpalace_add_drawernow auto-register an unknown
wing as a topic, andpalace_list_wingsreturns full registry records. palace wingsCLI subcommand — lists registered wings with their kind,
drawer counts, and last mined time.- Session-start PROJECT CHECK guidance — the bundled memory protocol now
tells agents to callpalace_project_statuswhen entering a workspace, ask the
user before mining a repo (mining is repo-only and implicitly initialises it),
and offerpalace_create_wingfor non-repo topics.
Changed
- Mining records registry state —
miner::minemarks the wing as mined
(set_wing_mined) on success, the watcher refreshes mined state, andmine
gained aquietflag so MCP-triggered mining does not write progress to the
JSON-RPC stdout stream.
v0.6.1
[0.6.1] - 2026-06-13
Removed
- Dead
llmmodule and--no-llmflag — the unused local LLM refinement
scaffolding (src/llm.rs), itspub mod llm;export, the emptyllmCargo
feature, and thepalace init --no-llmflag have been removed. Nothing in the
default path used them.
Fixed
- No more panic on an invalid built-in entity pattern —
compile_regexin
the entity detector no longerpanic!s if a built-in regex fails to compile;
it logs to stderr and falls back to a never-matching pattern so detection
degrades gracefully instead of crashing. Covered by new tests that verify the
built-in patterns compile and the fallback behaves.
Changed
- Crate metadata — removed the broken
docs.rs/palace-rsdocumentation link
(the crate is not published there) and pointedhomepageat
https://palacememory.com. - Docs — corrected stale
MEMPALACE_*/mempalace.yamlmigration claims in
the README (those names were removed in 0.3.0) and linkedpalacememory.com
for remote mode. - CI/release — the install smoke matrix now targets
aarch64-apple-darwin
to match the actual macOS runner architecture, and the release workflow runs an
install-smokejob that downloads the freshly published asset on macOS and
Linux and verifies an end-to-end install.
v0.6.0
[0.6.0] - 2026-06-09
Added
- Remote MCP mode (shared palace-server client) —
palace mcpcan now run as
a transparent stdio→HTTP bridge to a shared remotepalace-serverinstead of the
local palace. Every AI client keeps its existing stdio registration; when remote
mode is on, each JSON-RPC request is forwarded to the server's/mcpendpoint
with aBearerAPI key and the response is streamed back verbatim
(application/jsonandtext/event-streamboth handled). This lets a whole team
share one memory backend in their own infrastructure without per-client URL/header
wiring.palace remote set --endpoint <url> [--api-key <key>]— store the remote
endpoint andps_…API key. The endpoint accepts a bare host, a base URL, or a
full/mcpURL (normalised automatically). Omit--api-keyto be prompted on
stdin so the key never lands in shell history.palace remote on/palace remote off— switch the MCP server between the
remote palace-server and the local palace.palace local— alias forpalace remote off.palace remote status— show the current MCP mode, normalised endpoint, and
masked API key.palace remote test— one-shot connectivity + auth probe that runs the MCP
initializehandshake and reports the number of tools the remote exposes.- New configuration surface:
PALACE_MCP_MODE,PALACE_REMOTE_ENDPOINT, and
PALACE_API_KEYenvironment variables, plus themcp_mode,remote_endpoint,
andremote_api_keykeys in~/.palace/config.json(written with owner-only
0600permissions since the file holds the API key). - For non-standard responses, the proxy unwraps palace-server's text envelope for
initializeandtools/listso any spec-compliant MCP client understands the
handshake, while passingtools/calland error responses through unchanged.
v0.5.0
[0.5.0] - 2026-06-02
Added
-
Automatic memory hooks (all clients) —
palace installnow registers
user-scopesession start,post tool use, andstophooks for every client
that supports them, enforcing memory use in every project without per-project
rules.post tool useauto-recalls relevant memory while the agent
investigates;stopnudges the agent to record its work when it engaged Palace
but saved nothing. Coverage:- Cursor —
~/.cursor/hooks.json(recall matched toGrep/Read). - Claude Code —
~/.claude/settings.jsonnested hooks (recall matched to
Grep/Read/Glob). - Codex —
~/.codex/hooks.jsonnested hooks (recall matched toBash,
since Codex investigates through the shell; run/hooksonce to trust them). - Claude Desktop — no hook system, so it remains rules-only (
CLAUDE.md).
Claude Code and Codex share a "Claude-style" output dialect
(hookSpecificOutput.additionalContext;decision: "block"+reasonon
stop), selected viapalace hook <event> --client <cursor|claude|codex>. The
palace::hooksmodule exposes the pure, client-aware response builders. - Cursor —
-
Cross-agent recall —
palace_diary_searchacceptsall_agentsand
project_pathto surface investigations recorded by any agent, and
palace_session_contextfalls back to another agent's recent project work when
the caller has none, so a different agent the next day still benefits from
prior work.
Changed
- Write-path dedup —
palace_diary_write(scoped per agent) and
palace_remembernow skip near-duplicate content, preventing diary/fact bloat
from repeated similar writes. Durable decisions still belong in the
deduplicated knowledge graph.
Fixed
- Resilient model download — the embedding model fetch now retries with
exponential backoff, so transient HuggingFace failures (notably HTTP 429 rate
limiting) no longer fail the first embedding call or CI. CI also caches the
downloaded model (~/.cache/huggingface) across runs to avoid repeated
downloads.
v0.4.0
[0.4.0] - 2026-05-22
Added
- Preference lane v2 — preference-shaped drawers now store a
preference_spanmetadata field and optionalpref_embeddingsecondary
vector. Preference queries receive a separatepreference_matchscore so the
knownsingle-session-preferenceweakness can improve without adding an LLM
to the default path. - Query intent provenance — searches classify queries as
preference,
decision,how_to,definition,temporal, orunknown, and return the
intent in MCP andPalace::search_with_provenanceresults. - Optional local rerank path —
PALACE_RERANK=1,palace search --rerank,
orpalace_search({"rerank": true})reranks top hybrid candidates and returns
rerank_scoreprovenance. The default search path is unchanged. - Gain v2 feedback —
palace_gainnow accepts an optionalrecordpayload
for explicit usefulness feedback and reportsprecision_at_1,
precision_at_5, and per-intent precision. Diary entries that cite returned
drawer IDs also infer useful feedback automatically. - Eval CI lane — CI now runs the coding-agent memory eval separately and
checks the sampled LongMemEval baseline guard.
Changed
palace upgrade-embeddings --refresh-preferencesand
palace_upgrade_embeddings({"refresh_preferences": true})can refresh
preference-span embeddings while re-embedding drawers.Palace::search_with_provenanceis additive: results include
preference_match,intent, andrerank_score.
v0.3.2
[0.3.2] - 2026-05-15
Changed
- Agent rule restructured into 3 hard trigger blocks —
RULE_BODY(installed
into.cursor/rules/palace.mdc,.codex/AGENTS.md,.claude/CLAUDE.md) and
PALACE_PROTOCOL(embedded inpalace_statusMCP response) are now structured
as three imperative blocks: SESSION START, BEFORE ANSWERING, and
AFTER WORK. The previous 11-step and 9-step numbered lists caused agents to
front-load steps 1–2 and deprioritise the rest; the new block layout makes each
trigger an unconditional gate, improvingpalace_diary_searchand
palace_kg_querycall rates in practice. rule_is_weakdetection updated to check for the new block keywords
(SESSION START,BEFORE ANSWERING,AFTER WORK) rather than the old numbered
step phrases. Runpalace installto refresh installed rules.
v0.3.1
[0.3.1] - 2026-05-15
Added
palace_importMCP tool — import drawers from a JSON snapshot produced
bypalace_export. Skips drawers that already exist (idempotent). Returns
inserted,skipped, andtotalcounts.palace_upgrade_embeddingsMCP tool — re-embeds all drawers using the
current embedding model. Run after upgrading the model to keep search quality
consistent.palace_pruneMCP tool — deletes drawers filed more thanolder_than_days
days ago. Irreversible; export first if unsure.palace prune --older-than-days N [--dry-run]CLI command.palace upgrade-embeddingsCLI command.palace timeline [--entity <name>]CLI command — human-readable
chronological view of knowledge-graph facts, optionally filtered to one entity.