Repository navigation
Releases
v0.9.1
Updated components
| Component | Version |
|---|---|
| Repository | 0.9.1 |
@openlines/nmnm-pi |
0.4.7 |
Changed
- Locked Pi host to 1.5.0, added CI patch line while kept 0.87.0 floor and existing matrix lanes.
- Updated
nmnm-piguides, architecture refs, and agent docs to include terminal-safe display, browser selection, and renderer validation.
Fixed
nmnm-pischema-conversion tests validated accepted/rejected inputs instead of exact schema, supporting Google-style single-value enums. Included host-validator coverage for canonical args, rejects, coercion, nullable patches, and transcript immutability.nmnm-pibrowser pagination preserved numeric focus index and clamped fallback, preventing render failures on concurrent removals.nmnm-pibrowser/list showed escaped terminal controls without altering canonical content; scrolling kept selection visible, and dialogs numbered rows for disambiguation.
Validation
nmnm-piadapter suite passed 122 tests against Pi 0.87.0, 0.87.1, 0.99.2, 1.2.0, and 1.5.0, maintained the 0.87.0 floor.
v0.9.0
Updated components
| Component | Version |
|---|---|
| Repository | 0.9.0 |
@openlines/nmnm-codex |
0.3.0 |
Changed
- Replaced
nmnm-codexshell runner and marketplace delivery with direct registration of four native stdio MCP tools. The previous invocation interface is removed without compatibility shims; existing databases remain compatible and core, CLI and UI are unchanged. nmnm-codexdirect MCP launcher binds memory to the actual session directory without manual project-path exports. It preserves original-store/provenance semantics and soft-only removal, and bounds retrieval previews and lossless full-record paging.nmnm-codexpreparation and packed-artifact validation cover the complete locked production runtime tree. Updates prepare stable files and require a restart without invoking Codex or changing user registration. The development MCP client is excluded from distribution.nmnm-codexsupports native JSONC context budgets, project/user precedence, merged autoretention rules and actual prompt-based reinjection through trusted user context hooks. All memory writes remain MCP; lifecycle failures do not block Codex.nmnm-codexreuses opt-in Logslines diagnostics with connection-stable configuration, bounded pre-handler validation and sink-failure isolation.
Validation
- Independently installed and copied
nmnm-codexartifacts pass direct stdio 4Rs and context-hook checks, including logging off/on/failed-sink and native JSONC cadence.- Native Codex CLI 0.166.0 accepted normal hook trust review
- A local deterministic provider fixture completed 14 project/global calls with an explicitly approved disposable removal policy. Default noninteractive removal rejection preceded adapter execution/logging.
- Concurrent native sessions verified workspace isolation, Unicode record paging, complete rule precedence/merging, bounded context, actual prompt cadence, reload/restart behavior and session cleanup.
v0.8.5
Updated components
| Component | Version |
|---|---|
| Repository | 0.8.5 |
@openlines/nmnm-core |
0.3.2 |
@openlines/nmnm-cli |
0.4.2 |
@openlines/nmnm-ui |
0.1.2 |
@openlines/nmnm-pi |
0.4.6 |
@openlines/nmnm-opencode |
0.3.1 |
@openlines/nmnm-codex |
0.2.3 |
@openlines/nmnm-claude |
0.2.3 |
Registry core consumers use ^0.3.2; CLI uses UI ^0.1.2. Claude 0.2.3 instead ships checked generated core/logging runtimes, removing the unpublished-core dependency from PR validation and copied installs. Its external-only registry lock is regenerated with MCP SDK ^1.32.2 and Zod ^4.6.7.
Changed
nmnm-clauderuntime generator now checks/builds four artifacts, including core and self-contained logging with version/license stamps.- Copied plugin validation runs the full core contract against the deployed bundle, Claude tests, and stdio MCP/management smoke without registry core.
nmnm-codexaddednpm run codex:preparefor first-time setup: refresh stale runtimes and copy physical core/parser dependencies without an installed Codex plugin.- README/manual now distinguish preparation, first installation, and existing-installation refresh; validation remains a separate command.
- Made active guides version-neutral: manifests, locks, and this changelog own release versions and pins. Feature introductions, significant/breaking changes, runtime/host requirements, and version-qualified test evidence retain meaningful version labels. Updated Claude runtime/pin guidance and OpenCode V1/V2 browser registration.
- Architecture and sequence diagrams now include Claude adapter's generated runtime paths
Fixed
nmnm-cliimport rejects malformed UTF-8 bytes before opening the destination, preventing silent replacement of corrupted text.nmnm-clireadable fields and stderr escape terminal controls; JSON/JSONL escape C1 controls while preserving parsed content and canonical stored values.nmnm-coreverification reports stored IDs, content, kinds, scopes, namespaces, and tags that require normalization instead of approving noncanonical records.nmnm-corepermission verification uses SQLite's effective database filename, detecting unsafe WAL/journal/shared-memory permissions through file and directory symlink aliases.- Fixed
nmnm-codexnpm run codex:updatefailing withCannot read properties of undefined (reading 'files')for package name-keyednpm pack --jsonoutput, per raised issue#30 (fix commit7342ae0).- All three pack paths normalize array/keyed output and reject invalid JSON, missing/duplicate packages, version mismatches, and malformed/unsafe filenames or file lists before use.
- Refreshed compatible root resolutions for body-parser
2.4.0, fast-uri3.1.9, Hono4.13.14, ip-address10.7.5, and required qs6.16.1.nmnm-claudeseparate frozen lock already contains the patched dependencies and audits clean.
- Added temporary root-only overrides for OpenCode's Zod
4.6.7and Effect's TOML5.0.1. Independently installed adapters do not inherit them; an upstream dependency fix remains required for those installations. Host dependency floors are unchanged.
v0.8.4
Prepared for publication; no publishing is performed by checkout updates.
Updated components
| Component | Version |
|---|---|
| Repository | 0.8.4 |
@openlines/nmnm-pi |
0.4.5 |
Changed
- Enabled Pi autoretention guidance includes minimal creation and original-store patch instructions. Additional text shares the existing injection budget; defaults and policy precedence are unchanged.
Fixed
- Pi adapter retain tool schemas now expose supported kinds/scopes, score bounds, slug and timestamp formats, and create-versus-patch semantics before execution, without changing core storage behavior.
- Documentation distinguishes host-schema rejection before adapter logging from observed runtime failures and clarifies canonical model inputs, guidance budget cost, and prepared versus published package versions.
Validation
- Five fresh synthetic Pi 1.3.0 sessions with
amazon-bedrock/global.openai.gpt-6-lunaeach succeeded on the first retain call, with no retries or post-write reads. The global patch used one pre-write recall. This single-model sample does not establish universal reliability or semantic categorization.
v0.8.3
Updated components
| Component | Version |
|---|---|
| Repository | 0.8.3 |
@openlines/nmnm-opencode |
0.3.0 |
@openlines/nmnm-pi |
0.4.4 |
Changed
nmnm-opencodeadded V2 memory tools, per-session transient context, and a model-free terminal browser while preserving bounded V1 support. Native baselines are V1 1.19.0 and V2 2.0.29, not all versions allowed by the legacy API dependency.nmnm-opencodeV2 browser operations use authenticated OpenCode RPC and the server's Node bridge. Changed locations reject stale selections; ambiguous mutations are not retried automatically.nmnm-opencodefixed V1 selection restoration and confirmation navigation.
Fixed
- Pi adapter
0.4.4caps memory browser content previews at 10 displayed lines, preserving metadata and actions without changing stored content.
v0.8.2
Updated components
| Component | Version |
|---|---|
| Repository | 0.8.2 |
@openlines/nmnm-pi |
0.4.3 |
Changed
- Pi adapter ignores custom-message agent starts introduced in Pi 1.2.0, preserving pending memory injection and user-prompt-only reinjection cadence. Older hosts without
messageTyperetain existing behavior. - Updated the development Pi host to 1.2.0; validation accepts stable patches in
~1.2.0while main CI/release validation retain exact lockfile resolution and the dependency floor remains>=0.87.0. Added regression coverage for custom starts, queued refreshes, compaction, and cadence. - Added a separate blocking Pi compatibility matrix for
0.87.0and latest stable patches in~0.87.0,~0.99.0, and~1.2.0. Adapter suites passed locally on 0.87.0, 0.87.1, 0.99.2, and 1.2.0; live-provider and rendered-TUI behavior remain outside these checks.
v0.8.1
Workbench bug fixes, accessibility improvements, and cross-browser validation. No feature expansion; core and adapter versions remain unchanged. Publication remains a separate maintainer action.
Updated components
| Component | Version |
|---|---|
| Repository | 0.8.1 |
@openlines/nmnm-ui |
0.1.1 |
@openlines/nmnm-cli |
0.4.1 |
Fixed
- UI preserves launch credentials across skip-link and anchor reloads instead of treating navigation fragments as credentials.
- Lists return to a valid page after removal, purge, or expiry changes shrink the result set.
- Unapplied filters remain staged; refresh, pagination, store changes, and mutation refreshes use the last applied filters.
- Keyboard focus returns after requests and rerenders. Mobile inspection focuses the detail heading; Back returns to the selected row.
- Focused controls remain clear of fixed chrome without moving pointer targets during clicks.
- Corrected stale publication wording; installed users receive fixes after UI
0.1.1and CLI0.4.1are published.
Changed
- Added a top-level heading and supported picker grouping; strengthened enabled input boundaries in both themes.
- Documented a WCAG 2.2 AA maintenance target, required manual checks, and automated coverage limits. The web standards guide ships with UI.
- CLI
0.4.1pins patched UI0.1.1; core remains0.3.1.
Validation
- Added disposable-store regressions for credential reloads, shrinking pagination, staged filters, keyboard/mobile focus, semantics, control contrast, and narrow layouts with text-spacing overrides.
- CI and tagged releases require Chromium, Firefox, and WebKit workflow/regression checks. A single pinned Playwright container replaces per-engine APT/browser provisioning, avoiding the observed Azure mirror stall.
- Chromium uses the headless shell; Firefox/WebKit remain headless full builds.
- Setup and suite steps are bounded, all engines are attempted, and any suite failure blocks release.
- Development-only axe-core scans five workbench states in both themes; engine-qualified screenshots and accessibility reports are retained for 7 days.
v0.8.0
Experimental memory review UI, consistent Logslines bindings and build/package organization, automated maintenance and validation, core/adapter patch releases, and dependency audit fixes. Core memory functions and the public logging import remain compatible.
Updated components
| Component | Version |
|---|---|
| Repository | 0.8.0 |
@openlines/nmnm-core |
0.3.1 |
@openlines/nmnm-ui |
0.1.0 (new), experimental, prepared for publication |
@openlines/nmnm-cli |
0.4.0 |
@openlines/nmnm-pi |
0.4.2 |
@openlines/nmnm-opencode, @openlines/nmnm-claude, @openlines/nmnm-codex |
0.2.2 |
New
- Experimental
nmnm-uiforeground workbench with loopback HTTP, a per-launch credential, locally served assets, and Openlines light/dark styling. No daemon, framework, frontend build step, or additional runtime dependency. - Header shows the installed UI version; website-matched sun/moon icons, fixed header/footer, and one Add store button for authenticated local database selection.
- Store trash icons unregister stores and close their workbench connections without deleting databases; re-added stores open read-only. The memory list scrolls independently after five preview rows, with existing 50-record pagination retained.
- Stores can collapse or expand with a keyboard-accessible title control; its added-store count remains visible in both states and updates on addition/removal.
- UI README includes five screenshots of initial launch, store selection, combined filters, editing, and lifecycle cleanup using disposable sample memories.
- Explicit project/global/custom stores and source-harness filtering; Active, Expired, and Removed views; literal content search, structured filters, and 50-record pagination with store-qualified identities.
- Read-only defaults and per-store editing authorization; changed-field edits, expiry changes, confirmed soft removal, restoration, and separately confirmed purge. Scope and provenance remain read-only.
- Unsaved-draft protection, serialized browser operations, stale-record checks, disposable-store tests, and a rendered Playwright suite. Removal/purge clears selection and resets the detail pane.
- CLI bundles core/UI as regular dependencies and loads UI dynamically through
nmnm ui.--port/-pselects a port;--no-auto/-nasuppresses default browser opening;--help/-hand--version/-vreport UI help/version. Opener failures preserve the running server and printed URL. CLI/UI require Node 22.19+. nmnm --version/-vprints installed CLI, core, and UI versions without starting UI or opening storage.- Opt-in UI Logslines diagnostics: edit/expiry/restore use the shared
retainobserver, remove/purge useremove, and general request/launcher/captured-browser errors emitui.error. Successful reads/navigation, empty patches, and canceled actions stay quiet; mutation errors emit once. - UI settings are reread per mutation/error attempt. Browser error reports are authenticated, bounded, and best effort; raw error messages remain unredacted.
- UI's build-only
src/ui-logger.jssits besidesrc/ui-logging-runtime.generated.js; explicit runtime package contents exclude the build source. Installed-tarball checks cover UI emission and source exclusion. Release tooling publishes core, UI, then CLI. - Registration/editing authorization verifies existing Nanomneme schema and SQLite integrity read-only. Unrelated SQLite files and incomplete lookalikes fail without creation or migration.
- Lists/details use full canonical exports; timestamp conflict checks are separate from mutation. Expired memories cannot be soft-removed. Creation, bulk operations, transfer, repair, adapter settings/pins, and shared general-error emission remain future features documented in UI's README.
Refactored
- Claude copied marketplace installs now include a registry-only npm lockfile resolving published core
0.3.0under^0.3.0, independently of checkout core0.3.1. Core publication does not refresh this lock automatically; a later reviewed lock update and plugin version increase are required. - Added read-only
npm run validatefor generated-output checks/full tests, shipped-dependency audit, and standalone package validation. CI/release use the same command, retain the informational full audit, and preserve release tag checks and publication order. Validation never repairs tracked artifacts or refreshes plugins. - Added
npm run codex:updatefor existing enabled local installations: refresh stale bundles, prepare only physical core/parser dependencies, compare same-version content changes, conditionally reinstall, and verify the cache. RespectsCODEX_HOMEand reports reload requirements. Extracted preparation preserves unrelated dependencies and removes obsolete managed files;--prepare-codexremains compatible. Disabled plugins remain untouched. - Added
npm run logslines:update -- <exact-tag>to coordinate validated upstream snapshot/provenance and shared release-pin updates, logger generation, repository tests, and standalone package checks. The reviewed pin now lives inshared/fixtures/logslines-release.json; offline checks detect source/provenance/fixture drift and package checks exclude the fixture from distributions. Focused external commands remain available. - Added
npm run logslines:build: check both runtimes, regenerate only stale outputs, recheck, and validate standalone logging packages.--fastexplicitly skips package validation; outcomes distinguish current, updated, validated, and failed. The import-safe generator builds both targets before writing, resolves a stable build root, and gives read-only checks distinct stale/failure exit codes. - Core, adapter, CLI, and UI bindings consistently use
src/logslines.js. Core preserves@openlines/nmnm-core/loggingandcreateMemoryLogger; its generated runtime and memory implementation are unchanged. - CLI binding construction is extracted from its executable and included in its package; command observation still includes output completion.
- One
scripts/build-logger.jscommand builds/checks both logging targets. Shared implementation and generated suffixes are retained. - Core
0.3.1and adapter patch releases cover binding refactors, metadata, and documentation. All consumers pin core0.3.1; private Claude/Codex adapters retain local/plugin distribution. - OpenCode declares its tested host dependency floor as
@opencode-ai/plugin >=1.18.15; the lock retains 1.18.15 while fresh installs may resolve newer versions. - Installed-tarball checks verify enabled success/failure logging across core, CLI, and every adapter. Documentation and the repository guide align file roles, build commands, diagnostics, packaging, and limitations.
Fixed
- Agent-facing tool/management guidance identifies explicit CLI or UI workbench purge controls. Claude's memory skill distinguishes deterministic subprocess output from the model-mediated slash-command relay.
- Pi, Claude, and OpenCode render enabled autoretention guidance before memory indexes, preserving total budgets and omitting empty indexes.
- Claude disabled reinjection reads settings only and leaves session state untouched. Enabled hooks build memory context only on cadence, advance through context failures, and recover unusable prompt counters; settings failures remain silent without state changes.
- CLI and Pi/Claude/OpenCode retain paths trim and validate scope before store selection; invalid scopes no longer create stores, and padded values cannot bypass CLI route checks or misroute adapter writes.
- Pi metadata and retrieval score filters use explicit tool schemas instead of empty schemas, preserving JSON-object/null metadata and exact/range/null score filters. Regression tests cover provider conversion, routing, and trust checks.
- Store removal restores keyboard focus to Add store after the workbench leaves its pending/inert state.
- Updated MCP SDK from
1.30.0to the patched1.31.0and raised Claude's dependency floor to^1.31.0, resolving audit advisoryGHSA-6qxp-vccf-f47h. Claude uses the SDK's stdio server, outside the advisory's HTTP OAuth-client path; the shipped audit still enforces the patched dependency. - Resolved
proxy-addrto2.0.8andbrace-expansionto5.0.12. Pi1.0.4no longer ships the blocking shrinkwrap; full and production-only audits report zero vulnerabilities. - Corrected stale repository guidance about the Pi shrinkwrap blocker and logging build/artifact boundaries.
- Corrected Claude/OpenCode management help to describe unqualified pinning as unambiguous store resolution, and separated OpenCode's historical provider probes from current checkout validation.
Validation
- Standalone validation now checks Claude manifest/lock consistency and registry-only exact resolutions, performs a frozen installation with an isolated cache and disabled lifecycle scripts, audits that tree, runs the full Claude adapter suite against locked core
0.3.0, and exercises stdio MCP 4Rs and management CLI behavior. Native Claude automatic cache installation remains a separate check. - CI and tagged releases run the same rendered desktop/mobile Chromium job with pinned Playwright, a 15-minute timeout, and screenshot artifacts retained for 7 days. Publishing requires both repository validation and rendered UI success on the tagged checkout. Release validation extracts required changelog notes before publishing and forwards them to GitHub Release creation.
- Refreshed the repo-local Pi host/TUI baseline to
1.0.4; tested minimum host compatibility remains>=0.87.0. - Full suite, installed-package checks, disposable-store adapter/CLI simulations, and desktop/mobile Chromium checks passed after the refactors. Native Pi RPC initialization and Claude MCP transport were exercised; OpenCode ran under Bun and Codex through its installed-cache runner. Provider calls, interactive harness TUIs, and native Claude/Open...
v0.7.0
Updated components
| Component | Version |
|---|---|
| Repository | 0.7.0 |
@openlines/nmnm-core, @openlines/nmnm-cli |
0.3.0 |
@openlines/nmnm-pi |
0.4.1 |
@openlines/nmnm-opencode, @openlines/nmnm-claude, @openlines/nmnm-codex |
0.2.1 |
Fixed
- Punctuation-only search returns no matches with explicit relevance ordering; invalid selectors still reject.
- Claude/OpenCode unpin resolves targets from pin files, allowing cleanup of removed, expired, and missing memories without database access; unqualified pins in both stores remain ambiguous. OpenCode browser unpin also handles inactive targets.
- Claude/OpenCode pin mutations lock the complete read-modify-write and atomically replace private files. Competing writers fail with a retry message; crash-left locks require explicit recovery after all writers stop.
- Short temporary names preserve valid long database/export filenames. Text validation rejects unpaired Unicode surrogates before SQLite replacement; valid pairs remain intact.
- Export rejects source journal/WAL/shared-memory paths and existing aliases before opening storage or replacing output.
- Concurrent first-use writers atomically publish complete private stores without overwriting another creator; failed initialization publishes no partial store. Requires same-filesystem hardlinks.
- Import and verification reject null metadata; numeric ranges reject inherited operator names.
- New POSIX databases/directories request
0600/0700; private exports preserve stricter owner permissions. Verification reports unsafe database/sidecar mode bits without changing permissions; excludes ACLs and Windows. - Transactional target reads preserve unrelated concurrent patches and each patch's committed result. Rows, tags, and FTS commit atomically; reads use per-database snapshots. Lock timeout: five seconds, no automatic retries.
- Search supports Unicode, Boolean expressions, phrases, prefixes, bounded groups, and FTS5 NEAR. Malformed syntax falls back to literals, retaining operator words; punctuation-only queries return no matches. Storage errors remain unmasked.
- Patches/restores/soft removals preserve creation time and strictly advance per-record update time under frozen/backward clocks. Imports preserve timestamps; expiry/purge use wall-clock time. Timestamp exhaustion fails atomically.
- Writes enable SQLite
secure_deleteand transactional FTS5secure-delete. Purge atomically removes rows, tags, and live FTS, including expired/removed records. Protection covers subsequent deletion remnants, not historical data, WAL/journals, reader snapshots, backups/exports, or device copies; no automatic cleanup or forensic-erasure guarantee.
Changed
- CLI/adapters pin core
0.3.0; Claude/Codex manifests match package versions. Adapter APIs and engine floors are unchanged. - Pi against core/CLI hardening: added tool-boundary coverage for Unicode search/validation, unsupported numeric-range operators, private first-use storage, and monotonic patch/restore timestamps. No tool-handler runtime change was needed.
- OpenCode against core/CLI hardening: added Node-bridge coverage for Unicode search/validation, invalid metadata and numeric-range operators, private project/global first-use storage, and handler coverage for monotonic patch/restore timestamps. No tool-handler runtime change was needed.
- Claude against core/CLI hardening: added tool-handler coverage for Unicode search/validation, malformed text, invalid metadata and numeric-range operators, null-metadata patch normalization, private project/global first-use storage, and monotonic patch/restore timestamps, plus management-CLI coverage for Unicode/structured search and malformed-query errors. No tool-handler runtime change was needed.
- Aligned manuals/READMEs with runtime contracts, adapter behavior, and manual import validation/guarantees. Diagnostic errors remain unredacted; review logs before sharing.
- Documented FTS5 requirements: official macOS arm64 Node.js 22.13.0 lacks FTS5; 22.19.0 is tested. Prepare Codex's physical core bundle before marketplace reinstall/reload.
v0.6.0
Updated components
| Component | Version |
|---|---|
@openlines/nmnm-core |
0.2.0 |
@openlines/nmnm-cli |
0.2.0 |
@openlines/nmnm-pi |
0.4.0 |
@openlines/nmnm-opencode |
0.2.0 |
@openlines/nmnm-claude |
0.2.0 |
@openlines/nmnm-codex |
0.2.0 |
New
@openlines/nmnm-coreadded thenmnm-core/loggingexport, one shared catalog/observer/runtime, and JSONC configuration.- Logging defaults off;
~/.local/share/nanomneme/config.jsoncsets the default and user-level adapternmnm.jsoncoverrides it. - Project settings cannot enable it; invalid applicable logging configuration disables that caller.
- Preserved the closed
logslines/v1envelope, empty attributes, closed error schema, per-component private JSONL files, and original operation results/errors. No database, pin, or historical log migration is needed. - Context hooks, internal reads, navigation, and canceled actions remain unlogged.
- Logging defaults off;
@openlines/nmnm-cli,@openlines/nmnm-claude,@openlines/nmnm-opencode, and@openlines/nmnm-codexadded explicit operation diagnostics.- Added CLI coverage for maintenance and transfer completion.
@openlines/nmnm-opencodebridge spawn failures emit one host-sidefailedrecord from the Bun plugin (the bridge provably never ran), carrying the spawn error verbatim; ambiguous post-spawn transport/parse failures remain outside coverage to avoid contradicting a bridge-logged outcome.- Added Codex session correlation using
CODEX_THREAD_ID, falling back toCODEX_SESSION_IDor null forsession_id; model request fields cannot select the session ID.- Added
--prepare-codexto the package checker for local marketplace installs. It copies verified physical core/parser dependencies into the adapter before Codex caches it. Root workspace links alone do not provide dependencies to the cached plugin. - Added host-correlation regression coverage for thread/session precedence, fallback, blank or invalid values, host lookup failures, and ignored request-supplied session fields.
- Added
- Added offline conformance checks against the pinned Logslines schema and isolated tarball checks for shipped imports and Codex's bundled parser. No runtime Logslines fetches or telemetry.
Changed
- Refreshed the Pi development host to
@earendil-works/pi-coding-agentv1.0.0 in the lockfile- Published compatibility range stays
>=0.87.0andMIN_PI_TUInow floors at v1.0.0. - Re-assessed the v0.99.2 and v1.0.0 changelogs and host types: all Pi adapter tests pass on the v1.0.0 host; Pi 1.0.0 still pins dev-only
brace-expansion5.0.9 in its shrinkwrap.
- Published compatibility range stays
- Migrated
@openlines/nmnm-pito the shared logger and retired its private runtime. - Extracted Bun-safe
@openlines/nmnm-opencodepath helpers intosrc/paths.jsso the Bun plugin host can load the sqlite-free@openlines/nmnm-core/loggingsubpath; the bridge client records spawn failures for logged operations (4R tools with host session correlation,browser_*mutations). - Failed diagnostics now record the thrown error:
error.messagecarries the underlying error message verbatim (previously the fixed catalog string), with derivederror.kind(validation/filesystem/timeout, elseunknown) and optionalcause_kind(error class name). - Extended Pi host-registry test coverage to execute a loaded tool definition, lifecycle injection, and the real Logslines sink.
Fixed
- Fixed
@openlines/nmnm-claudemanagement CLI reporting "ID is ambiguous" for a missing memory ID targeted without a store; it now reports not found (logged asnot_found), while an ID present in both stores still reports ambiguity and logsblocked. - Claude adapter MCP server now reports the package version instead of a stale hardcoded
0.1.0. - Documented Claude session correlation as a host limitation: Claude Code exposes
session_idonly to hook stdin, not to MCP servers or the management CLI, so Claude diagnostic records keepcontext.session_idnull; regression coverage pins this. - Hardened Pi pin mutation serialization with same-directory locks and atomic replacement.
- Locks are never reclaimed automatically, preventing stale-lock recovery from deleting a newly acquired lock and losing an update.
- Crash-left locks require explicit operator removal after all writers stop; failed ownership and temporary-file cleanup still release the lock. A completed pin update that cannot finish cleanup reports a safe manual-recovery error and records a failed diagnostic carrying that error's message.
- Fixed CLI executable detection through npm symlinks and documented checkout linking; root workspace installation alone does not replace an older global CLI.