Give the composer full-width desktop space before the event timeline so capture stays prominent and the toolbar can keep its intended two-column composition. Add source-level regression tests to lock the new page hierarchy in place.
Replace the deprecated callModel / getText pattern with the chat.send
method and extract the response content via extractContentFromChatResponse.
This aligns with the current OpenRouter SDK interface.
Replace the button-only trigger with a native <input type="date"> (or
datetime-local when not all-day) paired with an icon button that opens
the calendar popover. This gives users direct keyboard entry while
keeping the rich calendar + quick-shortcut picker accessible.
- Add getInputValue helper to format the current value for the native
input.
- Import the Input component.
- Restructure the layout to place the input and popover trigger
side-by-side.
- Change input group horizontal padding from px-3 to pl-3 pr-2 to
better accommodate the trigger button.
- Add shrink-0 to the trigger button so it does not collapse in flex
layouts.
- Mark the Clock icon with aria-hidden to keep it out of the
accessibility tree.
- Forward the className prop in TimePickerSeparator and apply default
muted-foreground text styling.
Add [&::-moz-focus-inner]:border-0 and [&::-moz-focus-inner]:p-0 to
the base buttonVariants to prevent the extra inner dotted outline and
padding that Firefox renders on focused buttons.
- Updated OpenRouter integration to accept an array of image URLs
- Updated ImagePicker to use the `multiple` attribute natively
- Added `appendImagesDeduped` for handling client-side image deduplication
- Enhanced clipboard pasting to extract multiple images at once
- Rendered multiple images in a horizontal thumbnail strip in the AIToolbar
- Added tests to cover multi-image logic and AI request mapping