What changed
Critical fix: signal extraction was broken for everyone
PR #11 — parseTranscript 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
- 7 PRs merged from 2 community contributors (@Abdallah01, @mobogojo)
- Test suite: 48 → 74 tests
- All issues closed (#6, #12–#16)
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