lukasmalkmus/moneymoney
v0.7.3MIT
Agent-native CLI and MCP server for MoneyMoney
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Unreleased
0.7.3 - 2026-10-30
Added
- Add Agent Plugins 1.0 packaging with portable MCP launch paths and shared Agent Skills while retaining native Claude Code support.
Fixed
- Fix Codex MCP startup by resolving the bundled launcher relative to the plugin root.
- Resolve launcher versions from portable metadata and supply system helper paths in restricted environments.
- Remove temporary download files before starting the CLI.
- Remove skill claims that tool metadata guarantees a permission prompt for every write.
[0.7.2] - 2026-10-07
Fixed
- Drop the literal
<system-reminder>tag from the skill nudge. Claude Code wraps hook context in its own reminder and, since 2.1.292, escapes tags in hook output, so the model received an escaped tag. - Quote the plugin root in the hook commands. The hooks failed with exit 127 when the plugin directory path contained a space.
Changed
- Bump dependencies:
clap4.6.7,comfy-table8.0.1,dirs7,owo-colors4.4.0,plist1.10.1,rmcp3.5.1,rust_decimal1.43.0,thiserror2.0.21,tokio1.53.2 andtoml1.1.6. Refresh transitive dependencies viacargo update.
[0.7.1] - 2026-08-24
Changed
- Refresh dependencies via
cargo update, includingrmcp3.1.4.
[0.7.0] - 2026-08-13
Changed
- The MCP server speaks protocol 2026-07-28. Older clients still negotiate 2025-06-18.
- Truncated table cells now end with
…instead of...(comfy-table 8).
[0.6.1] - 2026-06-17
Fixed
- Resolve the bundled MCP server via
${CLAUDE_PLUGIN_ROOT}/bin/mminstead of a baremmcommand. Plugin hosts spawn the stdio MCP server without the plugin'sbin/onPATH, so the bare name failed with "Executable not found in $PATH".
Changed
- Bump dependencies:
rmcp1.7.0,plist1.9.0,rust_decimal1.42.1, and refresh transitive dependencies viacargo update.
[0.6.0] - 2026-05-26
Added
- Add Codex plugin metadata and marketplace packaging alongside the existing Claude Code plugin.
- Add bundled MCP configuration for plugin and desktop hosts using
mm mcp.
Changed
- Make the plugin shim and binary-sync hook work with Codex plugin environment variables as well as Claude Code's variables.
[0.5.0] - 2026-04-21
Fixed
- Plugin shim
bin/mmand SessionStart hookhooks/ensure-binary.shnow fall back to a pure-bashsedextractor whenjqis not on PATH, so the firstmminvocation no longer fails on stock macOS, Alpine, and slim Linux containers.
[0.4.0] - 2026-04-20
Fixed
mm statements list --account "Bank/Name"(e.g."ING/Girokonto") now matches. Previously the filter only accepted bare bank names or account-number digits; theBank/Nameform — the one the skill recommends — silently returned zero results because the needle didn't match either the bank folder or the filename's digit hint.- IBAN-form account refs (
DE…5437633269) are now recognized by the statements filter via trailing-digit matching against the filename'saccount_hint.
Changed
- Extracted the statements account filter into
statements::matches_accountand deduplicated CLI + MCP call sites. Both now share the same form-aware matcher.
Skill
- "Bank Statements" section now warns about the 20-page Read
limit and the
pages: "1-20"workaround. - New section "When
mm transactionsreturns empty for historical periods" — tells the agent to fall through to statement PDFs when bank sync has gaps. - New fallback note for
mm statements listreturning empty: directlsof the Statements folder bypasses the heuristic filter. - Three new Common Pitfalls rows covering the failure modes above.
[0.3.0] - 2026-04-20
Added
ibanfield on account output (table column, JSON key,-F ibanfilter). Populated for SEPA accounts whoseaccount_numberpasses mod-97; absent for PayPal and legacy numbers.- Skill decision tree and frontmatter now cover write intents:
"Überweisung", "Lastschrift", "SEPA", "transfer", "direct debit",
"send money", "pay this invoice". The skill triggers on those
phrases and walks through drafting
mm transfer createwith the permission prompt + GUI/TAN as the safety gates.
Changed
- Skill body reorganized: a prominent "Actions (Permission-Prompted)" section moves ahead of statement handling, with worked examples for paying an invoice PDF and queueing into MoneyMoney's Ausgangskorb.
- "Write Subcommands" tail section removed (content moved up).
[0.2.0] - 2026-04-20
Added
mm transfer create/direct-debit/batch— initiate SEPA payments. Safe by construction: MoneyMoney either opens a pre-filled payment window (default) or places the payment into the outbox (--into-outbox); user confirms and enters TAN in the GUI.mm transaction add— append manual entries to offline-managed accounts (non-offline targets are rejected at resolve time).mm transaction set— mutate checkmark / category / comment on an existing transaction by numeric id.- MCP write tools mirroring the CLI verbs, with correct
readOnlyHint/destructiveHintannotations per the MCP 2025-06-18 spec. - AppleScript-string hardening: reject
"and newlines in user input at the clap / parameter layer, escape\during script generation (MoneyMoney uses\to separate nested category names). MockOsascriptRunnerfor golden-string tests of write verbs without touching a live MoneyMoney install.- Release workflow building release archives for
{x86_64,aarch64}-unknown-linux-gnuand{x86_64,aarch64}-apple-darwinon tag push. - First public release artifacts at
v0.2.0.
[0.1.0] - 2026-04-20
Added
- Initial scaffold.
- AppleScript dispatcher with
DatabaseLocked/NotRunning/NotInstallederror classification. - Domain types for
Account,Transaction,Category,Security, decoded from MoneyMoney's plist output with float-noise-freerust_decimalconversion. - Account resolver accepting UUID / IBAN (mod-97 validated via
iban_validate) / account number / alias /Bank/Namepath / bare name, with explicit ambiguity detection. - Optional TOML config loader at XDG paths for alias definitions.
- Read subcommands:
mm status,mm accounts list/get(with--treeand--include-groups),mm transactions,mm categories,mm portfolio,mm statements list/get,mm version. - Output module (table / JSON / NDJSON) with field filtering and structured JSON errors.
- MCP server (
mm mcp) over stdio viarmcpwith read-only tools. stderr-only tracing subscriber (compact for CLI, JSON for MCP).- Claude Code plugin metadata (
.claude-plugin/), PostToolUse skill nudge hook, andbin/mmshim that defers to a user-installed binary. - GitHub Actions CI covering fmt, clippy, MSRV, tests (macOS + Linux), audit, and rustdoc.