Releases: caty-ai/persona-engine
Release list
v0.2.6 — lock/recovery files created with mode 0600 (defense-in-depth)
v0.2.6 — lock/recovery files created with mode 0600 (defense-in-depth)
The state lock file and the stale-lock recovery file are now opened with
mode 0600 and fchmod(0600) before any write, completing the "every write
hardens" posture started in v0.2.5 (#1 / PR #53). Lock acquisition and
recovery semantics are unchanged. One POSIX-guarded regression test added.
Evidence: PR #60 (completion record L1-7; 3 review seats GLM 5.3 / Opus 5 /
Kimi K3, 0 blocking) #60
CI test-lint (ubuntu + macOS) green on head e3eecf6.
Note: packages/core/package.json stays at 0.2.5 (npm catch-up lane #56);
the next npm publish bumps it.
npm: @persona-engine/core@0.2.6 published 2026-09-04 from main a964f61 (PR #63 = this tag tree + version bump + #61 README fix). Run https://github.com/caty-ai/persona-engine/actions/runs/33901047430 · provenance https://search.sigstore.dev/?logIndex=2714302008 · registry tarball vs local pack CONTENT_IDENTICAL (52 files).
v0.2.5 — self-healing state/status file permissions (0600/0700)
Self-healing state/status file permissions in the TypeScript core (closes the single-UID assumption documented in SECURITY.md for the TS path).
state/<domain>.jsonandstate/status.jsonare now written at mode 0600: temp files are opened with 0600 and fchmod'ed to 0600 before any content is written, then renamed into place.- The
state/root ischmod 0700after every mkdir in both write paths, so a pre-existing looser directory is healed on the next write — matching the Python runtime (adapters/hermes/runtime.py). - Three POSIX-guarded tests (state root pre-loosened to 0755; stale fixed-name temp pre-existing at 0644; status/domain files after
set+turn). They skip with an explicit reason on filesystems that cannot express permission bits (WSL2 DrvFs), via the existingfs-capsprobe.
Out of scope, noted for follow-up: lock/recovery files are still created at umask default inside the now-0700 root (defense-in-depth only).
Full record: #1 / PR #53 (L1-7 completion record in PR comments; writer Codex GPT-5.6 Sol; 3-seat review GLM 5.3 / Kimi K3 / Grok 4.6 → GO-WITH-MINOR / GO / GO, delta re-review by GLM → cumulative GO 3/3; risk-reviewed label by roster owner).
npm 0.2.5 published (2026-09-04, via #56 / PR #58 / run 33887221802 — manifest aligned to this tag; registry tarball == this tree, CONTENT_IDENTICAL).
v0.2.4 — WSL2/DrvFs fail-soft test hardening
Test-suite hardening + docs; no runtime behavior change.
- New test helper
fs-capsprobes filesystem capabilities (POSIX permission modes, chmod(000) denial, symlinks, mkfifo) at runtime; permission/mkfifo/symlink/exec-bit test cases across core vitest and hermes/claude-code pytest now skip with an explicit reason on filesystems that cannot express them (WSL2 DrvFs/mnt/c) instead of hard-failing — and assert exactly as before everywhere else. A canary test keeps probe false-negatives visible in CI.PERSONA_TEST_FORCE_FSCAPS=nonesimulates the capability-less filesystem. .gitattributes(* text=auto eol=lf+ binary excludes) — index verified all-LF, content hashes unaffected.- READMEs (en/ja/zh/th) name WSL2 with the clone-into-Linux-filesystem note; openclaw adapter README drops the macOS-only PATH idiom.
Full record: #47 / PR #48 (L1-7 completion record in PR body; 3-seat review GLM 5.3 / Kimi K3 / Grok 4.6, cumulative GO 3/3). Note: v0.2.3 was taken by the repo-state caller lane (family-os#140) earlier the same day; this lane's declared release moved v0.2.3→v0.2.4 (superseding note on PR #48).
repo-state caller v0.12.1: app-authenticated stamp pushes (family-os#140)
repo-state caller v0.12.1: app-authenticated stamp pushes (family-os#140)
repo-state caller + generation stamp (family-os#127 rollout; closes #45)
repo-state caller + generation stamp (family-os#127 rollout; closes #45)
v0.2.1 — standard gated npm publish flow; @persona-engine/core 0.2.1 (#42, PR #43)
macOS support and a redesigned guide to persona modes, policy, and customization
macOS support and a redesigned guide to persona modes, policy, and customization
There are no breaking implementation changes, and existing npm consumers have no migration to perform. The published package keeps the name @persona-engine/core, version 0.1.0, the same root export, the persona bin, Node.js 22 or later, and the yaml dependency. Its implementation entry points are unchanged; only the package description changed. Evidence: packages/core/package.json, packages/core/src/index.ts, packages/core/src/cli/index.ts, and packages/core/bin/persona at 827cf3b1e942c8bb3d63a2d7a9938820220ab443.
This repository tag does not identify a new npm package version: @persona-engine/core remains 0.1.0 at this commit. The redesigned repository guide is README.md; the npm tarball's packages/core/README.md is unchanged from v0.1.0.
-
The root guide now explicitly supports the core on Linux and macOS with Node.js 22 or later. The pull-request test and lint caller requests its macOS lane with
run_macos: true. Evidence:README.md,.github/workflows/test-lint.yml, and platform-support merged4d0e8fee889a2cb44bb8a4c58bff108ed7d9c69. -
The macOS statement is scoped to the core. The current project-status section says the Python and Node adapter suites run on Ubuntu. Evidence:
README.mdand.github/workflows/ci.yml. -
The root README now leads from the relationship-layer and emotion-gradient model through installation, a complete starter-pack walkthrough, route policy, CLI commands, adapters, security, and FAQ material. Evidence:
README.mdand README-restructure merge553801ce7b4153dbed553aaa8f14808b63356d15. -
A new customizing guide explains how consumers add modes, vocabulary catalogs, and switch aliases, then rebuild and inspect an installation. Evidence:
docs/customizing.md. -
The English and Japanese guides were rewritten, and Simplified Chinese and Thai README translations were added. Evidence:
README.md,README.ja.md,README.zh.md, andREADME.th.md. -
The guide now includes a hero image, an architecture diagram, and a CLI demonstration. Evidence:
docs/assets/hero.jpg,docs/assets/architecture.svg, anddocs/assets/demo.gif. -
Release target: merge commit
827cf3b1e942c8bb3d63a2d7a9938820220ab443. -
README redesign: merge commit
553801ce7b4153dbed553aaa8f14808b63356d15andREADME.md. -
Linux and macOS support declaration: merge commit
d4d0e8fee889a2cb44bb8a4c58bff108ed7d9c69,README.md, and.github/workflows/test-lint.yml.
v0.1.0 — first public release
The first public release of persona-engine: a safe, policy-driven engine for giving LLM agents a different face for each situation — while never rewriting the original personality.
Install
npm install -g @persona-engine/coreHighlights
- Declarative packs — modes (faces) and vocabulary catalogs as plain YAML/text files, compiled once into deterministic, byte-stable blocks
- Route policy — per-surface allow-lists and switching levels; unknown contexts fail closed to an empty
publicmode - Three switching paths — explicit utterance aliases, agent-initiated
persona_set(owner-verified routes only), and admin CLI — all through one policy gate - Audit built in — every transition and denial is an append-only event, inspectable with
persona audit - Adapters — Claude Code, Hermes, and OpenClaw; the adapter contract in SPEC.md is small
- Starter pack — a complete four-mode example (
focus/casual/professional/roleplay-template) with catalog samples
See the README for a quick start, a full walkthrough, and the customizing guide.