Skip to content

v0.3.0 — Detail-panel rebuild, search, mobile cards

Choose a tag to compare

@mgoldsborough mgoldsborough released this 08 May 03:40
· 3 commits to main since this release

What's new

  • New navigation: deal/contact details now slide in from the right with a back-stack — drill from a deal into its contact (or vice versa) and pop your way back. Click the contact name on a deal, click a deal row on a contact: both push onto the panel.
  • View / edit / create modes in a single panel for both deals and contacts. The old centered modal is gone.
  • + New Deal / + New Contact in the toolbar (right of the view switcher), label switches per active view.
  • Contact search — case-insensitive across name, company, and email — with a clear (×) button.
  • Deals column on the contacts table: count + active pipeline value, or count · closed when nothing is active.
  • Mobile: contacts table renders as cards below 640px; panel becomes a full-screen sheet; 44px touch targets across all interactive elements.
  • Map view removed — was noise; ~1000 LOC deleted.
  • Theming: every color and font now reads from host theme tokens via a centralized useStyleTokens() helper. No more hardcoded hex.
  • Idempotent startup linker: link_deals_to_contacts runs once at server boot so seeded deals always carry belongs_to edges.
  • Schema fields nullable: value, probability, close_date on the deal schema now admit null. The UI sends null when a user clears a field in edit mode (was a silent no-op before).
  • Structured server errors surface as data.error / data.message / data.detail (or JSON) instead of [object Object].
  • Race-safe ContactView loads via per-load seq counters so fast drill-downs don't land contact-A's data under contact-B's header.

No breaking changes to the MCP tool surface or entity schemas.

Companion fix: nimblebrain#191 — host bridge now accepts ui/update-model-context notifications, so useVisibleState pushes are no longer dropped. This release's panel-context payload (openPanel, panelDepth) needs that fix to reach the agent.

Full PR: #4