3845ed337c
test: add failing tests for Drawer mobile branch in EventDialog
2026-05-24 22:12:22 -04:00
71e4133d57
fix(ai-toolbar): finalize normalized clipboard test coverage
2026-04-23 10:38:35 -04:00
251520fd29
test(ai-toolbar): cover primary generate action
2026-04-23 10:30:17 -04:00
2590e1dbaf
test(ai-toolbar): isolate split suites and action coverage
2026-04-23 05:52:48 -04:00
bd08e9fc63
test(ai-toolbar): split coverage and add fallback failure cases
2026-04-23 05:41:43 -04:00
075d88a247
test(ai-toolbar): close remaining modifier and identity gaps
2026-04-23 05:22:57 -04:00
42a888df76
fix(ai-toolbar): align attach and fallback modifier rules
2026-04-23 05:16:41 -04:00
502bd6237a
fix(ai-toolbar): align fallback shortcut and identity guards
2026-04-23 05:10:55 -04:00
85f4066ce2
test(ai-toolbar): cover normalized clipboard paste paths
2026-04-23 05:04:00 -04:00
35731fb684
fix(ai-toolbar): use stable clipboard fallback identities
2026-04-23 04:53:39 -04:00
d9aa035dce
fix(ai-toolbar): tighten modifier and clipboard fallback guards
2026-04-23 04:47:11 -04:00
470d76d46c
fix(ai-toolbar): honor AI state in shortcuts and clipboard dedup
2026-04-23 04:39:27 -04:00
6f7f727b27
test(ai-toolbar): complete modifier and dedup coverage
2026-04-23 04:31:21 -04:00
1d2bbdf46c
test(ai-toolbar): cover shortcut and dedup behavior
2026-04-22 23:54:01 -04:00
f2816247c1
test(ai-toolbar): reduce layout brittleness and cover shortcuts
2026-04-22 23:49:29 -04:00
6f46925596
test(ai-toolbar): assert runtime layout and action states
2026-04-22 23:41:26 -04:00
62e6be5742
test(ai-toolbar): replace stale layout contracts
2026-04-22 23:36:29 -04:00
c37c39a0ba
fix(ai-toolbar): keep textarea paste on component path
2026-04-22 23:31:46 -04:00
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