Libra CodeHub

CedarCopilot/cedar-mail

Branch: staging

CHANGELOG September 21, 2026

merged#2854CedarCopilot

CedarCopilot wants to merge 0 commits into staging from cursor/product-updates-automation-d883

Live on prod, watching, 1 day leftTimeline and evidence
  1. Opened
    Sep 21, 2026, 2:05 AM
  2. Merged
    Sep 21, 2026, 4:13 AM
  3. Live on prod
    Sep 21, 2026, 4:13 AM
  4. Observed 0 hours
    Sep 21, 2026, 4:13 AM
  5. Watching

    Live on prod, watching, 1 day left

    Sep 21, 2026, 4:13 AM
  6. Pipelines steady after this deploy
    Sep 21, 2026, 4:13 AM

Libra has no production signal for this change on prod yet. Libra checks hourly for 3 days after each deploy.

New features

Deal org charts

Each deal can now hold an org chart , faces, names, titles, reporting lines , built from the people actually on that deal's emails and meetings, not an account-wide sweep of strangers. Open it from the deal's Files tab. A node is a person: click through to their profile. Reporting lines draw as a tree; other relationships use a different line so you can tell them apart.

Cedar updates the chart as the committee shows up , a new CC, a new attendee, someone saying they'll run it past their VP.

Improvements

  • A drafted follow-up posted to Slack now has a Send button. Confirm once and it goes, without opening Cedar
  • When chat builds a table, it shows up as something you can open, lands in the deal's Files tab, and coming back to that chat restores the table instead of the deal
  • A playbook can now bind to HubSpot Leads, Attio people, or a Salesforce custom object , not only Opportunity/Deal , so earlier pipeline can live in Cedar the same way deals do
  • URLs in Slack, LinkedIn, and WhatsApp threads are real links
  • The LinkedIn counterpart panel shows role and work history again, instead of a name and a blank
  • LinkedIn connection requests Cedar sends no longer include a note unless you asked for one
  • Asking Cedar to remind you on a thread now creates a follow-up task. The old reminder type never saved

Fixes

  • An email sent from Cedar that failed used to stay on the timeline as if it went out. Failed sends now fail visibly, and closing the tab during undo-send no longer drops the send
  • Replies composed from Cedar now stay in the same Gmail thread on the recipient's side instead of opening a new conversation
  • Attio and HubSpot "view in CRM" actually opens the record
  • Editing a task due date from a deal's Overview, Next Steps, or Timeline no longer throws "Task not found"
  • Signing back into Google no longer fails with a confusing state_mismatch when Cedar is slow
  • Sorting a date column in a table no longer crashes the grid
  • Unlinking an account on a conversation no longer silently drops a linked Lead or Partnership record
  • Reconnecting HubSpot no longer wipes a rep's custom field mappings back to org defaults

Behind the scenes

  • Prepared Cedar's public MCP server for Claude and OpenAI app-directory submission , tool titles, hints, description length, a support page, and a domain-verification challenge
  • Split open-weight model routing across automation tasks. Unblocked a production failure where tool-calling on the Sol path rejected every request, and moved CRM updater, strategist, and next-steps onto Kimi K3 for flagged accounts
  • Added a pre-check in front of the email orchestrator so emails that need no action skip the expensive model call, and a flag-gated alternative for playbook selection on internal accounts
  • Staff and MCP config writes can now clone a playbook and rewrite the routing text that decides which playbook a new conversation belongs to
  • HubSpot OAuth now requests Leads read/write so a Leads-bound playbook can actually sync
  • Removed an unused task-group pin feature that no one had ever used, and dropped the reminder task type from the schema to match production
  • Ingest no longer records the same outbound email twice (Gmail's mid-send id differs from the committed message)
  • Client requests now carry a correlation id, and browser aborts that never hit the server are captured , the gap that made a failed send undiagnosable
  • Closed a subject-header injection path and a cross-tenant LinkedIn read that trusted an account id from the request body
  • Live-verified Salesforce Lead writes against the real generalized payload; comments that still called that shape an unsaved draft were corrected
Show production surfaces and changed-file mapping

Production surfaces

Libra has not measured any production surfaces for this change yet.

Changed files → surfaces

  • docs/changelogs/2026-W39.mdno production surface mapped