Skip to content

v0.4.0

Choose a tag to compare

@github-actions github-actions released this 07 Sep 04:39
· 66 commits to master since this release

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)