Skip to content

Releases: fishman/notmutt

v0.4.2

Choose a tag to compare

@github-actions github-actions released this 10 Sep 04:34

v0.4.2 (2026-09-10)

Changes since v0.4.1:

Features

  • render the crm queue through a shared table grid (21e56ca)
  • route tag and mark_read writes through shared per-id apply (fed047c)
  • render html-only bodies to text for the model feed (51d2b68)
  • fill only reading-column images to the text column (d1992cb)
  • lay floated table columns side by side (306da5f)
  • gate bodies and tag writes behind [mcp] capabilities (c15a5df)

Bug Fixes

  • reconcile view rows after a tag op renames the file (7f13391)
  • keep a demoted cell's column as an anonymous grid slot (89de023)
  • keep crm prompts off the index ai command list (9cd3ab1)
  • refresh view paths at tag seams after maildir flag renames (3b4b114)
  • delete moved files only after the index releases them (e539ad2)
  • sync maildir flags on tag writes (86ae20f)
  • root-normalize paths in the scope folder pin (7c2ffbb)
  • stop an underline bleeding onto a following space (c7ade81)
  • honor CSS width and min-width on table boxes (22f1bbb)

Documentation

  • rewrite the moving-mail doc as tags, paths, and maildir sync (c249040)
  • checkpoint parked specs and the hubspot handoff (189fb06)
  • make brief comments an agent rule, tighten the mover doc (b4d2f08)
  • explain the mover's copy-index-delete ordering (108c21a)
  • note v1 release gates and the crm follow-up workflow (7581f06)

Build

  • bump fishman/go.notmuch to v0.40.6 (d11ee70)
  • format applies gofmt, check gates the ci run (f746cb9)

CI

  • gate on make check, format is now a writer (09b54d4)

v0.4.1

Choose a tag to compare

@github-actions github-actions released this 07 Sep 17:10

v0.4.1 (2026-09-08)

Changes since v0.4.0:

Features

  • copy moves via temp-then-rename (9007fca)
  • flock the mover's live move (cbcde76)
  • reconcile the poll over the database revision, not new's bracket (45450f0)
  • persist the last-classified revision (L) (b23911d)
  • resume-draft key, dispatch, and seam usage (cf0c29b)
  • resume prefill - parse a draft back into a dialogue (e2a6db9)
  • retire the resumed draft on success, replace it on re-save (0af43dd)
  • resume builder streams attachments from the stored draft (e8bdb54)
  • fuzz ParseDraft and harden the part readers against nil parts (3550fbd)
  • parse a stored draft and stream its attachment parts (b016464)
  • split a body's signature tail at the structural marker (b28f136)
  • carry the resume identity across the event round trip (843d6bf)

Bug Fixes

  • parse @media blocks as units and strip !important from decls (1011eea)
  • refuse the tag when the apply move fails (233b6cc)
  • classify a client-written copy's own index bracket (18da98d)

Documentation

  • spec width-aware media queries for the stage-2 render (6e2a221)
  • bring temp-then-rename into the mover work (2a6586a)
  • scope the reconcile's cross-client safety to a mover flock (335bd0d)
  • spec the reconciling poll - classify (last, cur], not the new bracket (a598a24)
  • align spec and plan with the streaming-resume pivot (a008e36)
  • spec the resume path - retire on send, update in place (f58c75b)

Refactoring

  • resolve the cache paths through xdg.CacheHome (c2f5e4e)
  • one sender/fcc identity and folder resolver (272f95e)
  • one message resolver for the reply and resume opens (32b57c4)

Testing

  • centralize cache hermeticity in testutil.CacheDir (deeafe7)
  • redirect the apply evict test's mover lock to the test cache (8d04e5a)
  • workflow - save, resume, send retires the draft (022546e)
  • re-arm the re-crop burst gate deterministically under -race (0d9012c)

CI

  • push the release to a named branch, never a detached HEAD (ecf14ca)

v0.4.0

Choose a tag to compare

@github-actions github-actions released this 07 Sep 04:39

v0.4.0 (2026-09-06)

Changes since v0.3.0:

Features

  • forbid meta-responses in the seed prompts, draft from sparse context (e3675d1)
  • make Q a singleton tab and report op-level progress (425c026)
  • run CRM-flagged prompts from the picker instead of a fixed draft (3179500)
  • build the client per operation and pull on CrmOpened (bacd0ca)
  • open the CRM prompt picker from the queue, publish CrmOpened (2be66f8)
  • ship the built-in follow-up and reconnect prompts (9c4eb87)
  • flag CRM prompts in the command frontmatter (ecbe5c3)
  • add the crm.hubspot account context key (c8f5d48)
  • add the CrmOpened bus event (beb675f)
  • refresh the hubspot token on 401 and wipe the key (69973b1)
  • surface the follow-up queue over the index (af1c149)
  • write back the follow-up marker on send (7936b2a)
  • RunDraft drafts a follow-up and opens a prefilled compose (7deb14e)
  • wire the crm adapter and split the lua-crm build (4ad8e5b)
  • crm review-queue surface with hooks (e658c34)
  • RunAnalyze briefs a contact over the ai entry (70b1fe4)
  • runPull publishes the unprocessed queue (12e0b40)
  • briefing context builder from contact company and research (d17aa5d)
  • research facts over the ai chat connection (6ae532d)
  • hubspot client with bearer auth and paged search (d7d525e)
  • neutral CRM queue and row event types (f380b90)
  • [crm] section with per-vendor hubspot table (8a55579)

Bug Fixes

  • resolve the prompt tree from the config dir, not the mail root (40433b0)
  • gate the mail-ground query on a plausible email (557eda3)
  • close the queue overlay when a crm compose attaches (5ba5a91)
  • cover RunDraft error branches and harden split/grounding (c72db3f)
  • reconcile CRM queue rows to page order (9a53343)
  • distinguish AI step failures in RunAnalyze errors (4f2a45e)
  • inline-table keeps grid identity under an ancestor table (6fae09e)
  • fill blank research cells and index field errors (ccc1b7c)
  • cap research fact and url fields like the snippet (03eae32)
  • request explicit properties and bound response decode (fb9379a)

Documentation

  • spec the briefing cache and cross-client refresh (a58e54f)
  • document the account key and the prompt picker draft (92150f2)
  • plan the lazy client, account context, and prompt picker rework (e9ffa70)
  • refresh the token on 401, retry once (2f4a32a)
  • spec the lazy client, account context, and AI-prompt drafts (6131c46)
  • roadmap-land the hubspot follow-up workflow (955bf6d)
  • RunPull publishes one queue snapshot per run (7257c58)
  • crm job bodies are exported for the app adapter (ac26f67)
  • the crm feature gates on lua and crm (1ae50ba)
  • client.go is a neutral Client seam; hubspot lives in lib/crm/hubspot (8bb092e)
  • CrmQueue snapshot is a tail net, not the full queue (c805225)
  • crm core consolidates in src/lib/crm with a thin app adapter (6d8e8cf)
  • config lives in a [crm] section with per-vendor tables (43fb369)

Refactoring

  • share the bus-wait and poll helpers across packages (a77b7bc)
  • export RunPull for the app adapter (265d46f)
  • name the error-body cap and wrap the retryable sentinel (cc8e64c)
  • split client.go into a neutral Client seam + hubspot subpackage (8afd975)

Testing

  • drive the reworked workflow through CrmOpened and the picker (5f1ce63)
  • poll the briefing cache before the draft leg; clarify crm docs (d519b71)
  • rename integration test to match the plan's run filter (8fc3cc4)
  • pin the bounded success decode cap (83092eb)

Build

  • require both lua and crm tags for the feature (4e742f6)

Other

  • add more html mail test fixtures (daca251)

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 04 Sep 13:28

v0.3.0 (2026-09-04)

Changes since v0.2.4:

Features

  • relayout on the images toggle, remote images seat after fetch (40a6ef7)
  • carry the images render flag through the open job (cea062b)
  • size images on the images-on render path (1d7f278)
  • stage-2 link-label injection for the F-key render (1490852)
  • stage-2 table strip quantization (982bb9f)
  • stage-2 quantization of text rows, images, markers, and hr (21aca4d)
  • stage-2 facade frame with px quantization and page colors (2842b52)
  • export the span line model, image display px, and list ordinals (6e0234f)
  • pin image used px in the wrap budget and re-resolve on re-layout (1a9d310)
  • inline layout resolves images to used px and emits them at that width (cc9d01a)
  • make ResolveImages intrinsic tests load-bearing per review (14a6ddf)
  • ResolveImages pre-pass fills intrinsic sizes from a caller loader (8c07247)
  • keep specified img height under a max-width clamp (probe-pinned) (e8e9c9a)
  • replaced-image sizing core (weasyprint-faithful used size and extent width) (3d4e686)
  • cascade width/height/max-width as px and percent lengths (3dad4c0)
  • nested tables and block content in cells (2876697)
  • rowspan claims expire by row index, not per-row tick (2343b53)
  • colspan and rowspan grid occupancy (590d20e)
  • table auto layout and Cells row emission (2e4ff43)
  • consume x/net/html table grammar without re-implementing it (5d5e012)
  • build table-family boxes with anonymous repair (b70f963)
  • block flow with margin collapse and list gutters (2e12a22)
  • cascade px margins and UA margin defaults (1583c70)
  • linear inline atomizing and char-break measurement (c772a78)
  • greedy inline line fill with normalize and alignment (08cf685)
  • flatten inline box children into an atom stream (a09e025)
  • collapse text leaves into inline atoms (7491505)
  • metrics interface for px text measurement (b0ffe39)
  • white-space behavior table for inline layout (2357af7)
  • build flow boxes with blockification and list markers (b31bfcd)
  • UA display and white-space floor table (b71d5d7)
  • parse precise white-space class into Style (d220efd)

Bug Fixes

  • isolated images seat at the block text-align lead (05c35d8)
  • kitty images re-place per image instead of wiping on scroll (a3a2c90)
  • standalone images fill the column and center (170e9f3)
  • presence-check semianalysis pins and tighten stage-2 pins (8705d15)
  • stage-2 link labels on block anchors and pre text (e5ba84d)
  • track inline image runs at placeholder text columns (da30e36)
  • cap image extent width by px max-width on the measure side (f25aa73)
  • clear a percent width attribute under a css px width (6acc51c)
  • translate cell markers with block rows (872460d)
  • sort scheduled list by send time, not the display string (7e2fdb3)
  • hang list markers per owning li gutter and keep empty-item rows (869d31d)
  • stop re-appending a settled summary error on every tick (b287697)
  • account for the dropped break space in wrap remainder width (83cb18e)
  • track preserved-wrap remainder width instead of re-measuring (781ab59)
  • stop preserved wrap scanning past the width budget (72111bd)
  • inherit html element style and pin tree contracts (ce54922)
  • UA li display and 3+ marker depth nesting (76a67fc)

Documentation

  • standalone images align to the block, not the window (0664fb9)
  • feature-table the in-process HTML renderer (af2a065)
  • standalone images fill and center on the images-on view (20020a3)
  • document the images-on relayout (259a429)
  • mark the architecture sketch superseded (7cea93e)
  • describe the stage-2 engine and recorded divergences (f74b2c2)
  • plan stage-2 terminal wiring of the html engine (20ee36a)
  • record plan-5 post-review test hardening (8bf1f84)
  • record plan-5 image stage-1 divergences (bd69c96)
  • correct Task 2 verbatim - runExtents file, pct-height guard, Fatalf escape (028744e)
  • html images and replaced elements (plan 5) (850ac56)
  • record html table stage-1 divergences (aa11fe4)
  • note parser depth cap bounds Task 4 Step 6 scratch test (b89a86c)
  • rowspan claims expire by row index (Task 3a) (451acdd)
  • lock library consumption contract for html plans (3f6ad8f)
  • conform table build to x/net/html grammar (Task 1a) (354adf7)
  • memoize nested-table extents in the table plan (a9c4ffa)
  • plan the table stage (0a622c9)
  • plan the block-flow stage and the layout foundation (0e1dd27)
  • close html inline O(n^2) and contract-pin bugs, and the schedule sort bug (091203a)
  • note scheduled-list sort bug and collect review nice-to-haves (98c972c)
  • name marker-only rows in the Row contract (72d8abb)
  • provider-neutral crm row model (9838c46)
  • provider-neutral crm row model (5ddacc9)
  • align plan 2 snippets with the reviewed code (56d0337)
  • hubspot follow-up workflow implementation (c2d531f)
  • hubspot follow-up workflow design (b7755a9)
  • hubspot follow-up workflow design (4ec51fd)
  • plan the inline layout and whitespace stage (5010a91)

Refactoring

  • delete the walker, stage-2 engine is the renderer (6ced3d2)
  • drop dead ul margin guard and pin rem and heading-ladder rows (99e3ea9)
  • canonical block runs and body style inheritance (17d49bc)

Testing

  • migrate semianalysis layout pins to the stage-2 engine (b02d3ac)
  • pin white-space apply triples and normal override (2d44e6f)

v0.2.4

Choose a tag to compare

@github-actions github-actions released this 03 Sep 07:27

v0.2.4 (2026-09-03)

Changes since v0.2.3:

Features

  • open the notmutt lua IPC channel (bd2ca39)
  • export the message as a PDF with the E key (f561353)

Bug Fixes

  • reopen the backend before every read (0ccdc85)
  • declare the pdf page and contain overflowing mail (cba1d5f)
  • drop the racy nil-write on the walk block signal (aa8cc86)

Documentation

  • spec the weasyprint-shaped two-stage layout engine (78c83cf)
  • design and plan the notmutt lua IPC channel (8f50629)
  • list PDF export follow-up niceties (0a49efb)
  • document the Claude Code MCP setup (3413ab4)

v0.2.3

Choose a tag to compare

@github-actions github-actions released this 02 Sep 17:12

v0.2.3 (2026-09-03)

Changes since v0.2.2:

Bug Fixes

  • return search and count results as records (3f3dd93)
  • surface real notmuch status from the walk constructors (73ce619)

v0.2.2

Choose a tag to compare

@github-actions github-actions released this 02 Sep 17:12

v0.2.2 (2026-09-02)

Changes since v0.2.2:

v0.2.1

Choose a tag to compare

@github-actions github-actions released this 01 Sep 05:09

v0.2.1 (2026-09-01)

Changes since v0.2.0:

Features

  • per-account AI context and prompts (725edb7)
  • seed ai.toml on first load (c3165dc)

Bug Fixes

  • keep paragraph breaks in AI drafts (42592da)

Testing

  • share WantMode, WantNot, WriteFile helpers via lib/testutil (87602da)

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 01 Sep 04:02

v0.2.0 (2026-09-01)

Changes since v0.1.12:

Features

  • per-account data grants, ai_chat network gate, shared aiStream (0f8ca77)

Bug Fixes

  • drop key-release events, not just the legend path (2638ce6)

Documentation

  • lock regression tests, require confirmation for edits (a0d20b7)

Refactoring

  • one frame assembles every view's chrome (2b2adba)

v0.1.12

Choose a tag to compare

@github-actions github-actions released this 31 Aug 15:44

v0.1.12 (2026-08-31)

Changes since v0.1.11:

Features

  • chain AI commands on the last summary with e-key prompt amendment (03c4b17)
  • AI commands with privacy-scoped context and provider backends (1d8678f)

Bug Fixes

  • streamed summary keeps open lines and every chunk (2a46905)

Refactoring

  • single-source provider protocols and draft wrap default (d477384)
  • drive provider protocols and URLs from one registry (cec0d8c)