Skip to content

v0.2.4

Latest

Choose a tag to compare

@DomDemetz DomDemetz released this 27 May 16:36
· 8 commits to main since this release

What changed

Critical fix: signal extraction was broken for everyone

PR #11parseTranscript silently dropped every real user message. Claude Code emits message.content as a bare string for user-typed turns, but the parser assumed it was always an array. The .filter() call on a string threw TypeError, which the surrounding try/catch swallowed. Net result: zero user messages ever reached signal extraction. Additionally, system-injected content (reminders, skill bodies, slash commands) was being treated as genuine user input, producing false signals.

Deep reflection now actually works

PR #17 — The tiered reflection architecture collapsed to a single tier in practice. clearSignals() wiped the queue unconditionally after every reflection, so deep's threshold (25–100 signals) was structurally unreachable when extraction caps at ~8 per session. Signals now carry per-tier consumedBy tracking. Quick and deep have independent memory horizons. Includes GC for fully-consumed signals.

Windows compatibility (complete)

PRs #5, #7, #8 — All hardcoded /tmp/ paths replaced with os.tmpdir() / ${TMPDIR:-/tmp}. Hook command paths use forward slashes. process.env.HOME fallbacks replaced with os.homedir(). Atomic file writes. Framework load resilience (ENOENT vs corruption discrimination). Settings.json corruption detection.

Learning system fixes

PR #9 — Lesson ranking now uses the existing selectTopLessons() function instead of raw confidence sort. Session state decays toward baseline instead of hard-resetting (preserves cross-session signal). Exemplar domain picked by highest-confidence active framework instead of insertion order.

PR #10 — Removed dead "refined" evidence type from FrameworkEvidence.type union. V4 migration coerces any existing refined → confirmed in persisted data.

Stats

Migration

Automatic. Existing signals without consumedBy default to unconsumed-by-all on first reflection after upgrade. V4 schema migration runs automatically on first load.

Install / upgrade

npx claude-soul upgrade