• v0.24.1 6d414435ba

    0.24.1 — a boot line you can read
    All checks were successful
    CI / gate (push) Successful in 1m24s
    CI / image (push) Successful in 15s
    Stable

    joeyr released this 2026-08-20 12:55:47 -05:00 | 37 commits to main since this release

    The boot summary had grown to nineteen fields on one line. It is the line this project tells you to check after every deploy — it is how version= and tenant= get confirmed — so it is read often, and at that width it wraps three times in Portainer's viewer and gets skimmed instead.

    The split

    One line per group, behind a short mcp-gateway starting line carrying only version and tenant:

    mcp-gateway starting | version=0.24.1 tenant=icloudmail
    account | tenant=icloudmail imap=imap.mail.me.com:993 mail_address_domain=icloud.com timezone=America/Chicago
    serving | bind=0.0.0.0:8787 mcp_path=/icloudmail allowed_hosts=icloudmail.mcp.jrendar.org
    grants  | mail_folders=3 allowlisted mail_writable_folders=3 writable trash_folder=(default) unsubscribe=on
    auth    | auth_mode=oauth resource_url=... forgejo_url=... allowed_subjects=joeyr fastmcp_home=/var/lib/fastmcp
    limits  | max_messages=200 mail_body_max_bytes=262144 attachment_max_bytes=5242880 imap_timeout=60
    

    Ordered by what gets read first when a deploy looks wrong: which account, then whether it is serving on the right hostname, then what it may do, and only then the auth wiring and the numbers. grants is the line the split exists for; on the flat line it sat between a timeout and a URL.

    The grouping is a partition of summary(), not a filter, and a test pins that on every tenant: a field is on exactly one line, and a field on no line fails the suite. Without it a setting added later silently stops printing — and the settings most likely to be added here are grants, where "it never printed" and "it is off" look identical from a log.

    unsubscribe=on|off

    Not hypothetical, because 0.24.0 had just done it. unsubscribe_message shipped with no boot field at all, so whether the tool was registered was answerable only by reading the connector's tool list from a client — and when it was missing there, nothing in the log said why. It is the grant with the widest reach on this tenant, being the sole outbound request to a host the operator did not choose, and every other grant was already confirmable from the boot log.

    MAIL_UNSUBSCRIBE_ENABLED is documented

    0.24.0 missed that too. Every other setting is documented in .env.example at length; this one existed only in code and in a deployment file that is not in this repo — which put the full rationale (the allowlist of non-blocking hygiene flags, dmarc=pass, DKIM coverage of the unsubscribe headers, and what one-click does not cover) nowhere a reader of this project would find it.

    No behaviour change to any tool. 940 tests pass.

    Downloads