Commit Graph

37 Commits

Author SHA1 Message Date
b048e34891 test(ai-toolbar): prove textarea paste bypasses global listener 2026-04-22 23:28:22 -04:00
c92633e647 test(ai-toolbar): cover editable paste behavior 2026-04-22 23:25:08 -04:00
46f7aff815 fix(ai-toolbar): ignore editable targets during global paste fallback 2026-04-22 23:19:18 -04:00
8cc868c22a test(ai-toolbar): verify paste listener gating at component boundary 2026-04-22 23:15:29 -04:00
9f23597e53 test(ai-toolbar): cover paste gating behavior 2026-04-22 17:58:14 -04:00
bfb29d3986 fix(ai-toolbar): gate paste capture on AI availability 2026-04-22 17:54:49 -04:00
e817fb52cf test(ai-toolbar): verify masonry prompt wrapping contract 2026-04-22 17:48:15 -04:00
a93d95ee2e fix(ai-toolbar): wrap masonry prompt cards correctly 2026-04-22 17:45:57 -04:00
e1a12d0c71 refactor(ai-toolbar): cluster example prompts in masonry layout 2026-04-22 17:42:29 -04:00
8b17d75193 test(ai-toolbar): harden stacked preview regression 2026-04-22 17:39:34 -04:00
f5058803b6 test(ai-toolbar): harden stacked preview regression 2026-04-22 17:37:54 -04:00
7b61703b01 refactor(ai-toolbar): stack attachment previews by row 2026-04-22 17:35:12 -04:00
7efc22c19c test(ai-toolbar): tighten desktop layout regression 2026-04-22 17:32:31 -04:00
4e4cca193c refactor(ai-toolbar): use 70-30 desktop composer split 2026-04-22 17:29:11 -04:00
7df8419368 refactor(layout): promote AI capture above timeline on desktop
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.
2026-04-22 11:34:37 -04:00
88265678db refactor(header): improve mobile header layout with responsive action controls 2026-04-21 23:23:43 -04:00
7f7c945396 feat(settings): add theme preference selector replacing header ModeToggle 2026-04-21 23:23:32 -04:00
3e3c8056b1 feat(sign-in): make auth buttons responsive with icon-only mobile affordance 2026-04-21 23:23:20 -04:00
7a917e5c22 feat(ui): drive mobile layouts from useIsMobile 2026-04-21 22:46:07 -04:00
a2d9782d8f refactor(ui): switch surfaces to shared shadow tokens 2026-04-21 21:43:17 -04:00
e0b6120cd3 refactor(theme): make light mode the default shell 2026-04-21 21:43:11 -04:00
276fbad45e chore: legacy cleanup
Signed-off-by: Dmytro Stanchiev <git@dmytros.dev>
2026-04-21 20:24:04 -04:00
915e0b7cf8 feat: redesign
Signed-off-by: Dmytro Stanchiev <git@dmytros.dev>
2026-04-21 20:23:15 -04:00
f3350e0124 feat: simplify date picker shortcuts 2026-04-10 15:40:47 -04:00
27492ee01f feat: add location autocomplete 2026-04-10 15:40:38 -04:00
12849b2362 feat: add AI settings controls 2026-04-10 15:40:29 -04:00
e01a7ed1ad feat: use friendly event date labels 2026-04-09 17:41:37 -04:00
12f2fd95dc refactor: centralize event dialog form state 2026-04-09 17:41:26 -04:00
911e5735a4 feat: add shared recurrence helpers 2026-04-09 17:41:04 -04:00
aef22f704f ️ feat: keep event actions menu visible 2026-04-09 01:10:37 -04:00
92f60d3a9a 📱 fix: hide keyboard shortcuts trigger on mobile 2026-04-09 00:59:15 -04:00
513aafcebc feat: support multiple image uploads for AI event generation 🖼️
- 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
2026-04-08 20:46:43 -04:00
d850d88a3a test: add unit tests for extractImageFromClipboard 2026-04-08 19:58:03 -04:00
722c0f0f7d 🚸 feat: redesign AI toolbar with two-zone layout and HoverCard shortcuts popover
- Split composer into AI zone (primary accent) and data actions zone (neutral)
- Move Attach/Generate to labeled footer bar below textarea (left/right aligned)
- Add info icon with HoverCard (hover preview) + Popover (pinned click) showing identical keyboard shortcuts content using shadcn HoverCard to fix theme inconsistency vs Tooltip
- Expose imperative triggerRef on ImagePicker for keyboard shortcut access
- Wire TooltipProvider in root layout; install shadcn kbd and hover-card
- Unauthenticated state shows locked CTA with real sign-in button weight
- Add behavioral contract tests for footer bar, info trigger, and zone layout
2026-04-08 13:08:36 -04:00
650d1d5f95 🩹 fix: restore textarea placeholder padding in ai-toolbar
Replace px-0 py-0 override with px-3 py-1 so placeholder text is
never flush against the edge. The ::placeholder pseudo-element
inherits box padding from the textarea; zeroing it out removed all
visual breathing room for the hint text.

Also adds tests/textarea.test.ts that locks down this behaviour via
class-string assertions on the resolved cn() output.
2026-04-08 09:19:59 -04:00
9dfd4ef326 feat: add Google and Apple OAuth via better-auth socialProviders 2026-04-08 09:12:50 -04:00
cbd2559169 🐛 fix: normalize AI-generated dates to valid ISO offset datetimes
- add normalizeAiDateString() to coerce bare ISO datetimes, date-only
  strings, and fractional-second variants into offset-aware format
- apply via z.preprocess in AiEventResponseItemSchema so Zod validation
  no longer rejects AI responses missing a timezone offset
- fix system prompt to use toISOString() (unambiguous UTC) and clarify
  expected datetime format for the AI model
- install bun-types and add to tsconfig so bun:test resolves cleanly
- add 8 behaviour-driven tests covering all normalizer edge cases
2026-04-07 23:01:42 -04:00