Releases: obra/private-journal-mcp
v2.0.1
Fixed
- ESLint configuration now loads under
"type": "module"(.eslintrc.js→
.eslintrc.cjs, correctedextends), and the pre-existing lint errors it
surfaced are cleared (unused imports;error as any→error as NodeJS.ErrnoException).
Full Changelog: v2.0.0...v2.0.1
v2.0.0
Why this release
The feelings field on process_thoughts signaled too narrowly. Agents using it interpreted the name as "emotional processing only," so entries that integrated thinking, noticing, and emotional processing landed nowhere clean — and that integrated form is what most journal entries actually are. Renaming the field to reflections with a broadened description gives those entries an obvious home.
A new observations field fills a separate gap: short, one-or-two-sentence noticings ("I noticed X.", "Y keeps coming up.") that don't belong in a longer reflection but are worth searching back for later.
This release also removes the obsolete process_feelings tool. It was hidden from tool discovery in May 2025 when process_thoughts replaced it but its handler was kept "for backwards compatibility." Keeping a hidden tool literally called process_feelings while the schema is broadening away from "feelings" was incoherent, and consistent with the no-alias decision for the field rename.
Breaking changes
feelingsfield renamed toreflectionsonprocess_thoughts. No alias. Callers sendingfeelingswill be rejected with "At least one thought category must be provided." Existing on-disk markdown files with## Feelingsheaders are intentionally untouched and remain searchable viasearch_journalwithsections: ['feelings'].process_feelingstool removed. The tool was hidden from tool discovery in May 2025 but its handler was kept for backward compatibility. Now removed. Callers that knew the undocumented name will get "Unknown tool: process_feelings".JournalManager.writeEntryremoved along with its solely-ownedformatEntryhelper. The only caller was the deadprocess_feelingshandler.
Added
observationsfield onprocess_thoughtsfor short, discrete noticings. Routes to the user-global journal alongsidereflections. Renders as## Observationsbetween## Reflectionsand## Project Notes.- Broadened
reflectionsdescription covering "integrated thinking — what you noticed, felt, understood, or processed."
Removed
- Dead
process_feelingsrequest handler insrc/server.ts ProcessFeelingsRequestinterface insrc/types.tsJournalManager.writeEntrymethod andformatEntryhelper insrc/journal.ts- Six
writeEntrytests intests/journal.test.ts - Stale "single
process_feelingstool" architecture descriptions inCLAUDE.md
Changed
process_thoughtstool-level description andsearch_journalsectionsfilter example updated to use the new field namespackage.jsondescription updated from "process feelings and thoughts" to "private journaling and reflection capability"- README and CLAUDE.md updated to describe the new field set
Coverage
- Re-homed three test assertions onto the live
writeThoughtscode path that were previously only exercised through the deletedwriteEntrytests: microsecond filename precision, YAML frontmatter line-by-line structure, and same-day filename collision avoidance.
Full Changelog: v1.2.0...v2.0.0
v1.1.0
What's New
PRIVATE_JOURNAL_PATH environment variable
Override all journal storage to a single directory for containerized deployments:
{
"mcpServers": {
"private-journal": {
"command": "npx",
"args": ["github:obra/private-journal-mcp"],
"env": { "PRIVATE_JOURNAL_PATH": "/data/journals" }
}
}
}Fixes
- Node.js 22+ compatibility — Migrated from CommonJS to ESM, fixing
tools/listreturning empty due to a CJS/ESM dual-package hazard (#18) - Server hang on restart — Added 30s timeout to embedding model initialization, preventing indefinite hangs from stale lock files left by interrupted runs (#5)
See CHANGELOG.md for full details.