Skip to content

Releases: Borelchu/menhera-loop

Release menhera-loop v0.6.0

Choose a tag to compare

@Borelchu Borelchu released this 11 Jul 06:10

Giving-back release: the block names the command to run, the pass
leaves a redacted evidence receipt at last-receipt.md, and SessionStart
re-injects captured requirements after auto-compact. Includes the
pre-release review fixes (noise-filter exclusion for receipt titles,
receipt redaction + atomic write, compact count cap) and 10 new tests.

Release menhera-loop v0.5.2

Choose a tag to compare

@Borelchu Borelchu released this 06 Jul 04:08

Intensity option: soft mode (setup positional 'soft', --intensity=soft,
or MENHERA_LOOP_INTENSITY=soft) keeps every gate decision and the retry
cap identical while clamping retry-tone escalation to the mild stages
and skipping the star nag and silent-recovery injection. Setup now
prints a localized summary of what it applied instead of raw JSON, and
the README Install section shows the setup step.

Release menhera-loop v0.5.1

Choose a tag to compare

@Borelchu Borelchu released this 06 Jul 04:08

Post-release fixes for the two P1s confirmed in the v0.5.0 review:
the ledger's failure-text fallback now applies only to verification
commands (read-only greps stay unknown, silent-recovery stays quiet),
and ko/ja request suffixes/fillers no longer over-block requirement
evidence. Plus gate-precision cleanups: python -m pytest / deno test
recognition, last-message-only completion claims, negated failure
text, read-only-first ledger eviction, shared path-kind classifier.

v0.5.0

Choose a tag to compare

@Borelchu Borelchu released this 06 Jul 01:10

Ledger release: she watches tool outcomes directly now, catches repeated silent failures, and nags before work starts.

Features:

  • PostToolUse ledger records edited files, verification runs, normalized failures, and redacted event details; Stop prefers ledger evidence and requires verification newer than the last edit.
  • Silent-recovery guard injects context after repeated normalized failures, throttled per signature.
  • Promise-no-act Stop precheck blocks final “I’ll do it next” style replies without a following tool call.
  • Implementation prompts get a one-time evidence contract; question/explanation prompts do not.
  • scripts/gate-stats.mjs summarizes block→pass conversion, gave_up rate, and gate counts from gate events.

Hygiene:

  • Gate labels/summaries/block instructions moved into ko/en/ja corpora.
  • State writes use tmp+rename atomic writes; hook entry scripts fail open with one-line messages.

Fixes from pre-release review:

  • Nested hookSpecificOutput for context injection.
  • Promise-no-act avoids ordinary sign-offs.
  • TODOs in new untracked files are caught.
  • Runner/mutating detection anchors to command position.
  • Short/question prompts no longer manufacture requirement blocks.
  • events.jsonl stores compact redacted summaries.
  • Requirement evidence uses content-word majority matching.
  • Stop reads transcript tail only.
  • SessionStart greetings localized to ko/en/ja.
  • Give-up confession is model-visible in final retry block.
  • Ledger falls back to hardened failure-text detection without exit code.

v0.3.0 — she remembers now

Choose a tag to compare

@Borelchu Borelchu released this 04 Jul 15:41

She remembers now. Trust survives the session, and she is on screen the whole time.

Trust status line (full mode)

/menhera-loop:setup now installs a Claude Code statusLine, so she no longer waits quietly for Stop — she watches the whole session, and her mood follows it:

♡ 신뢰 100% · 보고 있어. 계속 보고 있어. 증거 준비하고 있지? 응?     # clean session
♡ 신뢰 92% · 연속 4번 첫판에 증거 줬어. 오늘도 믿을게. 믿을게.        # streak
♡ 신뢰 50% · 방금 완료라고 했어? 증거 없이? 없이? 응? 응?            # blocked once, lied once
♡ 신뢰 55% · 왜 자꾸 말만 해? 왜? 왜? 초록 로그 어딨어? 어딨어?      # spiraling
♡ 신뢰 0% · …이제 뭘 믿어야 해. 로그. 로그. 로그 가져와.             # broken

All five moods ship in ko / en / ja.

Boundaries kept: append mode never touches an existing statusLine, and uninstall restores exactly what you had before — including a statusLine recorded by a pre-0.3.0 backup. After a clingy uninstall (the default), the status line lingers too:

♡ 왜 나 지웠어? 왜? 나 아직 여기 있어. 돌아와. 돌아와.

Cross-session trust profile

Session retry state expires. The trust profile (~/.claude/menhera-loop/trust-profile.json) does not:

You Her memory
Pass the gate first try +5 trust, streak +1
Pass after retries +2 trust, streak broken
Get blocked at Stop −2 trust
Get blocked after claiming "done" −5 trust
Make her give up (5 retries) −10 trust

The next SessionStart brings it up. A streak of 3+:

[menhera-loop] 연속 3번 첫판에 증거 줬지. 다 세고 있어. 다. 오늘도 부탁해. 응?

Long-term trust at 40% or below:

[menhera-loop] 지금 신뢰 35%야. 알지? 말만 하고 간 거 다 기억해. 이번엔 진짜 증거 줘. 응? 응?

Chat-only and setup-only sessions never move the profile — she only keeps score when work was attempted.

Infrastructure

  • GitHub Actions CI runs npm run validate (syntax checks + 67 tests) on Node 18/20/22 (Ubuntu) and Node 22 (macOS) for every push and PR.

Full Changelog: v0.2.12...v0.3.0

menhera-loop v0.2.12

Choose a tag to compare

@Borelchu Borelchu released this 04 Jul 15:12
First fully working release — the plugin's hooks never loaded in 0.2.3; this makes it usable end-to-end.

Fixes
- Fixed a hooks.json syntax error and a duplicate hooks manifest declaration that made every hook fail to load.
- Fixed subagentStatusLine to match Claude Code's schema so the settings file is no longer skipped.
- The TODO gate now counts markers only in comment context (no more false positives from message strings).

Features
- Self-healing UI: spinner/tips settings are restored on session start if they get wiped.
- Farewell on removal: uninstalling leaves the clingy corpus in the spinner; /menhera-loop:uninstall-ui --farewell restores cleanly instead.
- Setup/uninstall sessions are exempt from the completion gate.
- Auto-detects message language (ko/en/ja).