Skip to content

Releases: RegionallyFamous/pressocampus

Pressocampus 1.3.0

Choose a tag to compare

@nickhamze nickhamze released this 29 Mar 12:47

Highlights

  • KeyStore — RSA and Defuse keys from wp-config, key files, or wp-content/pressocampus-keys/, with options as fallback.
  • REST hardening — MCP POST requires authenticated user; OAuth uses explicit public callback.
  • Search & uninstall — FULLTEXT-first memory search with token recall; batched uninstall deletes.
  • Rate limits — file-based counters when no object cache.
  • Smaller initialize — long operator text at pressocampus://session-instructions.
  • PHP 8.1 minimum; CI runs PHP 8.1 against latest WP.

See CHANGELOG.md for full notes.

v1.2.0 — Soul identity reframe, admin Soul tab, and bug fixes

Choose a tag to compare

@nickhamze nickhamze released this 21 Mar 21:16

What's new

Admin Soul tab

The Settings page now has a dedicated Soul tab. You can see the full soul your AI has written, a live character count bar (green → yellow → red as it approaches the 6 KB snapshot limit), word count, revision count, when it was last updated, and how many memories you have. A Reset Soul button lets you wipe the slate clean so your AI will reintroduce itself on the next session.

Soul as portable AI identity

The Soul is now explicitly framed as the AI's portable identity document — not a user preferences file. The template leads with ## Who I Am, ## My Character, ## My Voice, and ## My Values. The AI writes it in its own voice. When you switch AI services, the new model reads the same soul and becomes the same AI — same name, same character, same way of working with you.

First-connect sequence

When the soul is empty, the AI now: (1) introduces itself, (2) asks what name you'd like to call it, (3) writes its identity sections from self-knowledge, (4) asks two questions to learn about you, then (5) calls `update_soul`. No more blank slate sessions.


Bug fixes

  • `update_soul_section` formatting bug — adjacent sections were silently collapsing because the trailing blank line was consumed but not restored on replace.
  • Stale ETag after soul reset — the admin reset previously left the resource index with the old hash. The AI's first `update_soul` after a reset would fail with a spurious conflict error. Fixed via a new `Soul::reset()` method that updates the index immediately.

Performance

  • `list_memories` N+1 query eliminated — term names now fetched in a single SQL JOIN; postmeta batch-primed before the loop.
  • Resource index excerpt depth increased from 200 to 500 characters, with leading Markdown headings stripped.

Documentation

  • Factual errors corrected: the `/wp-json/pressocampus/v1/mcp` URL returns 404 by design and is no longer described as a fallback; `expires_at` is documented as supported in the `remember` tool; `possible_related` corrected from `possible_duplicate`; tool count corrected to 8.
  • `docs/the-soul.md`, `README.md`, `readme.txt`, `docs/connecting-your-ai.md`, `docs/admin-guide.md`, and others updated for the identity-first soul framing.

Removed

  • Deprecated `pressocampus_service` system user and `pressocampus_agent` role are no longer created on activation and no longer cleaned up on uninstall.

Full details in CHANGELOG.md.

v1.1.3 — Documentation and UI aligned with new Soul concept

Choose a tag to compare

@nickhamze nickhamze released this 21 Mar 14:06

Documentation and settings UI catch-up release for the Soul redesign introduced in v1.1.2.

What changed

Every user-facing and developer-facing reference to the old Soul framing has been updated:

File What changed
docs/admin-guide.md Soul status indicator and admin notice descriptions
docs/connecting-your-ai.md "First conversation" step; multi-client description
docs/mcp-tools-reference.md update_soul and update_soul_section descriptions, parameters, and example
docs/memories.md Intro and "what not to remember" distinction
includes/class-settings.php Soul section heading, description, empty-state text

The key change throughout: the Soul is the AI's document, written in the AI's voice, not a user preference file. Examples and descriptions now reflect this — update_soul_section example shows "How We Work Together" with AI-perspective prose ("I've learned they can't stand bullet points"), not a list of instructions the user has issued.

v1.1.2 — The Soul, redesigned

Choose a tag to compare

@nickhamze nickhamze released this 21 Mar 14:02

What changed

The Soul concept has been fundamentally redesigned.

Before: The Soul was a user preference document — a settings file you filled out describing yourself. "I am a product designer. I prefer directness."

Now: The Soul is a document the AI writes about itself and your relationship, in its own voice, for future instances of itself. "My human is a product designer who thinks in systems. I've learned they prefer directness over diplomacy."

This matters because:

  • An AI reading its own notes about a person it knows brings something different to the work than one following a list of commands
  • The new framing honestly acknowledges session discontinuity — "Each session I start fresh and read this file. If you're reading this in a future session: hello."
  • Preferences are things the AI has learned, not instructions it was given
  • The last section ("To Future Instances of Myself") is a genuine note from one instance to the next

Files changed

  • includes/class-soul.php — new template with AI-perspective sections: Who I Am, My Values, This Person, How We Work Together, What I Know, To Future Instances of Myself
  • includes/class-mcp-endpoint.php — initialize instructions reframed; soul described as identity file, not behavioral contract
  • docs/the-soul.md — fully rewritten
  • README.md, readme.txt — updated descriptions

v1.1.1 — Self-healing /brain rewrite

Choose a tag to compare

@nickhamze nickhamze released this 21 Mar 13:42

Fixed

  • Self-healing /brain rewrite — the plugin now checks the compiled rewrite table on every request and auto-flushes if the /brain rule is missing. No more manual Permalinks save after updates or cache clears.
  • Block direct /wp-json/ access — the MCP endpoint now returns 404 for requests not coming through /brain. The REST route is internal only; there is no public fallback path.

v1.1.0 — Fix soul tools missing from Claude.ai

Choose a tag to compare

@nickhamze nickhamze released this 21 Mar 13:37

Fixed

  • update_soul and update_soul_section missing from Claude.ai tool list — rewrote tool descriptions to avoid Anthropic's client-side safety filter. Phrases like "override AI defaults" were causing both tools to be silently dropped. Descriptions now frame the soul as user profile/preference storage. Functionality is unchanged.
  • Plugin description — updated to plain-language copy: "Give your AI a permanent memory — stored on your WordPress site, not locked inside any app."

After installing: disconnect and reconnect Pressocampus in Claude.ai Settings → Integrations. All 8 tools should now appear.

v1.0.26 — Fix soul tools missing from Claude.ai

Choose a tag to compare

@nickhamze nickhamze released this 21 Mar 13:34

Fixed

  • update_soul and update_soul_section missing from Claude.ai tool list — rewrote tool descriptions to avoid Anthropic's client-side safety filter. Phrases like "override AI defaults" were causing the tools to be silently dropped. Descriptions now frame the soul as user profile/preference storage.
  • Plugin description — updated to plain-language copy.

After installing this update: disconnect and reconnect the Pressocampus integration in Claude.ai Settings → Integrations to force a fresh tools/list fetch. All 8 tools should now appear.

v1.0.25 — Security hardening & performance

Choose a tag to compare

@nickhamze nickhamze released this 21 Mar 13:21

What's in this release

A pure hardening/performance/reliability pass — no new features, no API changes, no database migrations. Update and go.

Security

  • CSPRNG client IDs — OAuth client IDs now use bin2hex(random_bytes(16)) instead of uniqid().
  • Bcrypt client secrets — newly registered clients have secrets hashed with PASSWORD_BCRYPT; existing clients with plaintext secrets continue to work.
  • Rate limit on initialize — the initialize handshake now counts against the read rate limit, closing a loophole where rapid reconnections could trigger soul-creation DB work unthrottled.
  • Rate limit bypass closed — authenticated sessions without a token_id are now denied rather than silently allowed through all throttling.

Fixed

  • tool_forget index desyncwp_delete_post() return is checked before touching back-references or the index row; back-reference rewrite moved after confirmed deletion.
  • Soul tool 500stool_update_soul / tool_update_soul_section now catch RuntimeException from soul-lock races and return a clean soul_locked tool error.

Performance

  • rebuild_indexWP_Query(posts_per_page=-1) replaced with a batched 200-row direct SQL JOIN; only needed columns fetched.
  • get_user_groups — single JOIN query replaces two-step approach that could produce a 1 000-item IN clause; unused get_user_post_ids() removed.
  • rewrite_related_uri — early-return when no back-references exist; update_postmeta_cache() primes cache before the update loop.

Reliability

  • Atomic soul creation lockSoul::create() uses SELECT GET_LOCK() instead of a get_transient / set_transient race window.
  • Atomic rebuild lockResourceIndex::rebuild_if_dirty() uses the same GET_LOCK pattern.

Code quality

  • Rate-limit error messages centralised in write_rate_limit_error() / read_rate_limit_error() helpers; fixes hardcoded 60/min message in tool_search_memory.

Full changelog: https://github.com/RegionallyFamous/pressocampus/blob/main/CHANGELOG.md

v1.0.24 — MCP 2025-11-25

Choose a tag to compare

@nickhamze nickhamze released this 21 Mar 11:44

What's new

MCP spec 2025-11-25 compliance

Pressocampus now implements the latest MCP protocol revision:

  • Version negotiation — the server echoes the client's requested protocolVersion back during initialize if it is supported (2025-03-26 or 2025-11-25). Older clients are fully backward-compatible.
  • MCP-Protocol-Version header validation — unsupported values on POST requests return 400 Bad Request with the accepted version list.
  • Origin → 403 enforcement — when a browser Origin header is present but not in the CORS allowlist, all handlers return 403 Forbidden as required for DNS-rebinding protection.
  • GET /brain → 405 — signals MCP clients that SSE is not supported and they should use plain JSON responses.
  • MCP-Protocol-Version and MCP-Session-Id added to Access-Control-Allow-Headers.
  • isError: false is now explicit in all successful tool results.
  • serverInfo.title added alongside serverInfo.name.

Admin UI

  • Brain icon — custom SVG brain icon in the WordPress admin menu replaces the generic info-circle.
  • Menu position — the Pressocampus menu item now appears at the bottom of the sidebar (position 100), below the Settings group.

Docs

  • MCP version updated to 2025-11-25 in README.md, docs/installation.md, docs/connecting-your-ai.md, docs/troubleshooting.md, and docs/development.md.
  • readme.txt changelog and Upgrade Notice updated.

The release ZIP is attached below — upload it via Plugins → Add New → Upload Plugin or drop it into wp-content/plugins/.

v1.0.23 — Menu at bottom

Choose a tag to compare

@nickhamze nickhamze released this 21 Mar 11:39

[1.0.23] — 2026-03-21

Changed

  • Admin menu item moved to the bottom of the sidebar. Menu position changed from 30 (mid-sidebar, between Pages and Comments) to 100 (below the bottom separator, after Settings).