old4ever
3958b24307
refactor: remove isMobile forks from DialogContent and DialogFooter
2026-05-25 09:24:24 -04:00
old4ever
565974b19f
chore: install shadcn skill
...
Signed-off-by: Dmytro Stanchiev <git@dmytros.dev >
2026-05-24 23:21:06 -04:00
old4ever
e6fc16deaf
chore: ignore skills assets
...
Signed-off-by: Dmytro Stanchiev <git@dmytros.dev >
2026-05-24 23:20:57 -04:00
old4ever
6cdb1d23cd
chore: ignore next-dev logs
...
Signed-off-by: Dmytro Stanchiev <git@dmytros.dev >
2026-05-24 23:04:42 -04:00
old4ever
ab3b32f419
fix: address code review issues from Task 4 (onSubmit, AiDraftBanner, STEP_FIELDS)
2026-05-24 22:42:50 -04:00
old4ever
de03f9129b
feat: add mobile Drawer branch with guided steps to EventDialog
2026-05-24 22:37:11 -04:00
old4ever
77dcb98c25
fix: address code review issues from Task 3 (unused import, dead code, DrawerFooter layout)
2026-05-24 22:32:30 -04:00
old4ever
260b77ee10
refactor: extract DetailsStep, ScheduleStep, RecurrenceStep into EventDialog
2026-05-24 22:19:27 -04:00
old4ever
cad1e809a8
fix: remove Tailwind breakpoint prefixes from drawer.tsx
2026-05-24 22:16:54 -04:00
old4ever
db92f99542
test: add drawer.tsx to hook-driven files list
2026-05-24 22:12:29 -04:00
old4ever
3845ed337c
test: add failing tests for Drawer mobile branch in EventDialog
2026-05-24 22:12:22 -04:00
old4ever
c5ac786e29
feat: install shadcn Drawer component via CLI
2026-05-24 22:07:52 -04:00
old4ever
982320099e
chore: install vaul dependency
2026-05-24 22:05:27 -04:00
old4ever
c3c5f5f03f
docs: add implementation plan for mobile event modal guided drawer
2026-05-24 21:58:17 -04:00
old4ever
e99a8b44ae
docs: add mobile event modal design spec (Design C — guided drawer)
2026-05-24 21:50:02 -04:00
old4ever
abb472c83d
chore: ruler files update
...
Signed-off-by: Dmytro Stanchiev <git@dmytros.dev >
2026-05-24 21:03:49 -04:00
old4ever
97b3ddd653
chore: update mcp servers
...
Signed-off-by: Dmytro Stanchiev <git@dmytros.dev >
2026-05-24 20:53:00 -04:00
old4ever
aa9db76e9d
chore: update envrc with opencode superpowers plugin
...
Signed-off-by: Dmytro Stanchiev <git@dmytros.dev >
2026-05-24 20:50:20 -04:00
old4ever
4a5c367959
chore: enable dotenv in devenv
...
Signed-off-by: Dmytro Stanchiev <git@dmytros.dev >
2026-05-24 20:50:01 -04:00
old4ever
f6c815eebd
chore: nixpkgs-fmt formatting
...
Signed-off-by: Dmytro Stanchiev <git@dmytros.dev >
2026-05-24 20:49:51 -04:00
old4ever
709c2029c8
chore: use official dokploy mcp
...
Signed-off-by: Dmytro Stanchiev <git@dmytros.dev >
2026-04-23 13:04:38 -04:00
old4ever
8bc4258c1b
Merge branch 'feat/redesign-vercel'
2026-04-23 11:47:31 -04:00
old4ever
abca2a5d6d
docs: add AI capture ratio planning and design specs
2026-04-23 11:45:49 -04:00
old4ever
71e4133d57
fix(ai-toolbar): finalize normalized clipboard test coverage
2026-04-23 10:38:35 -04:00
old4ever
251520fd29
test(ai-toolbar): cover primary generate action
2026-04-23 10:30:17 -04:00
old4ever
2590e1dbaf
test(ai-toolbar): isolate split suites and action coverage
2026-04-23 05:52:48 -04:00
old4ever
bd08e9fc63
test(ai-toolbar): split coverage and add fallback failure cases
2026-04-23 05:41:43 -04:00
old4ever
075d88a247
test(ai-toolbar): close remaining modifier and identity gaps
2026-04-23 05:22:57 -04:00
old4ever
42a888df76
fix(ai-toolbar): align attach and fallback modifier rules
2026-04-23 05:16:41 -04:00
old4ever
502bd6237a
fix(ai-toolbar): align fallback shortcut and identity guards
2026-04-23 05:10:55 -04:00
old4ever
85f4066ce2
test(ai-toolbar): cover normalized clipboard paste paths
2026-04-23 05:04:00 -04:00
old4ever
35731fb684
fix(ai-toolbar): use stable clipboard fallback identities
2026-04-23 04:53:39 -04:00
old4ever
d9aa035dce
fix(ai-toolbar): tighten modifier and clipboard fallback guards
2026-04-23 04:47:11 -04:00
old4ever
470d76d46c
fix(ai-toolbar): honor AI state in shortcuts and clipboard dedup
2026-04-23 04:39:27 -04:00
old4ever
6f7f727b27
test(ai-toolbar): complete modifier and dedup coverage
2026-04-23 04:31:21 -04:00
old4ever
1d2bbdf46c
test(ai-toolbar): cover shortcut and dedup behavior
2026-04-22 23:54:01 -04:00
old4ever
f2816247c1
test(ai-toolbar): reduce layout brittleness and cover shortcuts
2026-04-22 23:49:29 -04:00
old4ever
6f46925596
test(ai-toolbar): assert runtime layout and action states
2026-04-22 23:41:26 -04:00
old4ever
62e6be5742
test(ai-toolbar): replace stale layout contracts
2026-04-22 23:36:29 -04:00
old4ever
c37c39a0ba
fix(ai-toolbar): keep textarea paste on component path
2026-04-22 23:31:46 -04:00
old4ever
b048e34891
test(ai-toolbar): prove textarea paste bypasses global listener
2026-04-22 23:28:22 -04:00
old4ever
c92633e647
test(ai-toolbar): cover editable paste behavior
2026-04-22 23:25:08 -04:00
old4ever
46f7aff815
fix(ai-toolbar): ignore editable targets during global paste fallback
2026-04-22 23:19:18 -04:00
old4ever
8cc868c22a
test(ai-toolbar): verify paste listener gating at component boundary
2026-04-22 23:15:29 -04:00
old4ever
9f23597e53
test(ai-toolbar): cover paste gating behavior
2026-04-22 17:58:14 -04:00
old4ever
bfb29d3986
fix(ai-toolbar): gate paste capture on AI availability
2026-04-22 17:54:49 -04:00
old4ever
e817fb52cf
test(ai-toolbar): verify masonry prompt wrapping contract
2026-04-22 17:48:15 -04:00
old4ever
a93d95ee2e
fix(ai-toolbar): wrap masonry prompt cards correctly
2026-04-22 17:45:57 -04:00
old4ever
e1a12d0c71
refactor(ai-toolbar): cluster example prompts in masonry layout
2026-04-22 17:42:29 -04:00
old4ever
8b17d75193
test(ai-toolbar): harden stacked preview regression
2026-04-22 17:39:34 -04:00
old4ever
f5058803b6
test(ai-toolbar): harden stacked preview regression
2026-04-22 17:37:54 -04:00
old4ever
7b61703b01
refactor(ai-toolbar): stack attachment previews by row
2026-04-22 17:35:12 -04:00
old4ever
7efc22c19c
test(ai-toolbar): tighten desktop layout regression
2026-04-22 17:32:31 -04:00
old4ever
4e4cca193c
refactor(ai-toolbar): use 70-30 desktop composer split
2026-04-22 17:29:11 -04:00
old4ever
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
old4ever
88265678db
refactor(header): improve mobile header layout with responsive action controls
2026-04-21 23:23:43 -04:00
old4ever
7f7c945396
feat(settings): add theme preference selector replacing header ModeToggle
2026-04-21 23:23:32 -04:00
old4ever
3e3c8056b1
feat(sign-in): make auth buttons responsive with icon-only mobile affordance
2026-04-21 23:23:20 -04:00
old4ever
7a917e5c22
feat(ui): drive mobile layouts from useIsMobile
2026-04-21 22:46:07 -04:00
old4ever
16bbd9ab08
chore(gitignore): ignore root screenshots
2026-04-21 22:45:55 -04:00
old4ever
71c84875fa
feat: add use-mobile shadcn hook
...
Signed-off-by: Dmytro Stanchiev <git@dmytros.dev >
2026-04-21 22:20:26 -04:00
old4ever
a2d9782d8f
refactor(ui): switch surfaces to shared shadow tokens
2026-04-21 21:43:17 -04:00
old4ever
e0b6120cd3
refactor(theme): make light mode the default shell
2026-04-21 21:43:11 -04:00
old4ever
276fbad45e
chore: legacy cleanup
...
Signed-off-by: Dmytro Stanchiev <git@dmytros.dev >
2026-04-21 20:24:04 -04:00
old4ever
915e0b7cf8
feat: redesign
...
Signed-off-by: Dmytro Stanchiev <git@dmytros.dev >
2026-04-21 20:23:15 -04:00
old4ever
420a971ff7
docs: customize DESIGN.md
...
Signed-off-by: Dmytro Stanchiev <git@dmytros.dev >
2026-04-21 17:08:56 -04:00
old4ever
08ca19d2eb
docs: add local cal redesign spec
2026-04-21 17:01:20 -04:00
old4ever
5d0a043626
chore: design.md inspired by vercel
...
Signed-off-by: Dmytro Stanchiev <git@dmytros.dev >
2026-04-21 15:13:19 -04:00
old4ever
036278bab4
chore: add agent-browser skills
...
Signed-off-by: Dmytro Stanchiev <git@dmytros.dev >
2026-04-21 12:23:35 -04:00
old4ever
77e778d8b0
chore: nuke openagentcontrol
...
Signed-off-by: Dmytro Stanchiev <git@dmytros.dev >
2026-04-21 12:23:22 -04:00
old4ever
15f1e1ceb5
chore: add design.md
...
Signed-off-by: Dmytro Stanchiev <git@dmytros.dev >
2026-04-20 20:59:55 -04:00
old4ever
ddc7a82e0e
refactor(ai-event): migrate to OpenRouter chat.send API
...
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.
2026-04-15 18:21:23 -04:00
old4ever
6bc84d5b58
feat(date-time-picker): add native date input alongside calendar popover
...
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.
2026-04-15 18:21:17 -04:00
old4ever
29bf4d2200
fix(time-picker): improve layout stability, a11y, and separator styling
...
- 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.
2026-04-15 18:21:09 -04:00
old4ever
8d7948298b
fix(button): suppress Firefox inner focus ring and padding
...
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.
2026-04-15 18:21:03 -04:00
old4ever
82d04e7a84
feat: add reusable date and time picker primitives
2026-04-11 00:02:51 -04:00
old4ever
1ad5603bf6
chore: remove database env example
2026-04-10 15:41:00 -04:00
old4ever
42989b1437
style: format recurrence helpers
2026-04-10 15:40:56 -04:00
old4ever
f3350e0124
feat: simplify date picker shortcuts
2026-04-10 15:40:47 -04:00
old4ever
27492ee01f
feat: add location autocomplete
2026-04-10 15:40:38 -04:00
old4ever
12849b2362
feat: add AI settings controls
2026-04-10 15:40:29 -04:00
old4ever
e01a7ed1ad
feat: use friendly event date labels
2026-04-09 17:41:37 -04:00
old4ever
12f2fd95dc
refactor: centralize event dialog form state
2026-04-09 17:41:26 -04:00
old4ever
911e5735a4
feat: add shared recurrence helpers
2026-04-09 17:41:04 -04:00
old4ever
95bc5db9a8
refactor: move calendar chrome into the home page
2026-04-09 13:25:52 -04:00
old4ever
22224bebc6
feat: redesign local calendar workspace
2026-04-09 13:25:30 -04:00
old4ever
f05e6f5792
feat: clarify AI draft messaging in toolbar
2026-04-09 11:59:45 -04:00
old4ever
ecff8bebb1
feat: review single AI-generated events before saving
2026-04-09 11:59:32 -04:00
old4ever
aef22f704f
♿ ️ feat: keep event actions menu visible
2026-04-09 01:10:37 -04:00
old4ever
e4953ee42e
chore: update skills
...
Signed-off-by: Dmytro Stanchiev <git@dmytros.dev >
2026-04-09 01:04:00 -04:00
old4ever
92f60d3a9a
📱 fix: hide keyboard shortcuts trigger on mobile
2026-04-09 00:59:15 -04:00
old4ever
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
old4ever
cac201a4d2
feat: add document-level paste and Ctrl/Cmd+V handler for image clipboard support
2026-04-08 19:58:40 -04:00
old4ever
1c864f162e
feat: handle image paste in AI toolbar textarea via onPaste handler
2026-04-08 19:58:36 -04:00
old4ever
b3121ed532
refactor: remove strict MIME-type allowlist check from validateImageFile
2026-04-08 19:58:05 -04:00
old4ever
d850d88a3a
test: add unit tests for extractImageFromClipboard
2026-04-08 19:58:03 -04:00
old4ever
2d34bbebc4
feat: add extractImageFromClipboard utility with broad image/* MIME matching
2026-04-08 19:58:01 -04:00
old4ever
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
old4ever
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
old4ever
b93669a416
🔥 fix: remove border and background from empty events skeleton
2026-04-08 09:15:05 -04:00