* [aidan] bug: fix schedule button
* [aidan] fix/agent-errors: surface provider rate limits
* [aidan] ux/cards: click-to-rename for chat and workflow titles
Single-click a card's title to enter edit mode inline. Commit on Enter/blur,
cancel on Escape. Rename persists via PATCH for workflows and sessions.
* [aidan] feat/workflows: seed build prompt for zero-step workflows
When a new workflow has no steps, seed the agent with a prompt asking
the user to describe what the workflow should do, rather than starting blank.
* [aidan] feat/workflows: add-to-schedule popover for unscheduled workflows
Clicking the "+" on an unscheduled workflow row opens a popover with two options:
- Keep this schedule: enables the workflow's existing cadence and moves it to Scheduled
- Change schedule: opens the scheduling editor to pick a different time
* [aidan] ux/workflows: wire add-to-schedule popover and simplify New button
- Made the "+" icon on unscheduled workflow rows clickable, opening a popover
to keep or change the schedule
- Removed AddIcon from toolbar "New" button (now reads "New" instead of "+ New")
* [aidan] fix/scheduled-tasks: open schedule calendar when Schedule pill clicked
Fixed the Schedule pill click being swallowed by the toolbar's dismiss handler.
Exempted the toolbar pills via data-toolbar-pills so their click handlers fire.
* [aidan] ux/workflows: open New workflow in agent build chat instead of empty card
When creating a new workflow from the hub, open it in edit_agent view (with the
agent builder chat) instead of a preview card. The workflow is created on the
backend first so the embedded session has a real ID.
SelectionOverlay portals to document.body and drew highlights at the raw getBoundingClientRect() of the selected element, so a tall message bubble let the blue overlay bleed past the chat panel onto the rest of the UI. Walk up every overflow-clipping ancestor, intersect the rect with each, and skip rendering when fully out of view. Applied to hover, persistent, and drag-preview rects, with labels clamped to the clip top/left so they never paint above the chat container.
Dashboard stays mounted (visibility-hidden) behind every other route, so its ElementSelectionProvider and portal-rendered SelectionOverlay kept firing on top of the App Builder. Gate both the overlay render and the global mouse listeners in useDomElementSelector on useDashboardActive, leaving selection state untouched so it restores on return.