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
f38b0188df
🚨 fix: resolve all linter and typecheck warnings across codebase
2026-04-07 14:42:24 -04:00
54ca910609
🔧 chore: add biome config for Tailwind CSS and CSS module declarations
2026-04-07 14:42:17 -04:00
096f548ec3
refactor(page): extract AI handler helpers and add client-side image validation
...
Break down the monolithic handleAiCreate into focused helpers
(sendAiRequest, persistAiEvents, populateEventForm), add client-side
image file validation before upload, and use toast.promise finally
callback for loading state cleanup.
2026-04-07 13:11:26 -04:00
79f98ebfd3
refactor(api): simplify AI event route with extracted utilities and env-based model
...
Replace inline JSON extraction with the shared json-utils module,
extract chat response content parsing into a dedicated helper, make
the AI model configurable via AI_MODEL env var, and improve error
messages for production safety.
2026-04-07 13:11:15 -04:00
a0a7e021a8
style: standardize import ordering, type imports, and formatting in source files
...
Sort imports alphabetically, convert value imports to type-only where
appropriate, normalize indentation to tabs, and sort exports
alphabetically across UI components, pages, and lib modules.
2026-04-07 13:10:49 -04:00
95de6ae46a
feat(page): wire image upload state, base64 conversion, and API integration into home page
2026-04-07 11:58:10 -04:00
8d1b04f646
feat(api): refactor AI event route with Zod validation, multimodal image support, and JSON extraction
2026-04-07 11:57:22 -04:00
954e73c007
style(app): standardize app page file formatting
2026-04-07 08:09:56 -04:00
48ef4f60df
style(api): standardize API route file formatting
2026-04-07 08:09:49 -04:00
5922a835cb
style: fix unused variable warnings
...
Prefix unused error variables with underscore to indicate
intentionally unused catch parameters.
2026-04-06 23:27:32 -04:00
403f41f078
fix(auth): sanitize error messages in error page
...
Add basic XSS sanitization by removing angle brackets from error
URL parameters before rendering.
2026-04-06 23:26:09 -04:00
4e7c56eec9
fix(ui): add error handling and loading state to sign-in
...
Add try/catch with toast notification and loading state for sign-in
button to improve UX and error visibility.
2026-04-06 23:25:40 -04:00
e1fd7dc5a3
feat(api): add input validation to AI endpoints
...
Add prompt validation to ai-event (non-empty string, max 2000 chars)
and events array length validation to ai-summary (max 100 items)
to prevent abuse and injection attacks.
2026-04-06 23:24:15 -04:00
3b5934dbfd
fix(auth): correct session check in sign-out page
...
Change !session to !session?.user to properly detect unauthenticated
state. useSession() returns an object, not null.
2026-04-06 23:23:08 -04:00
cfa93da149
refactor(auth): remove unused SessionProvider wrapper
...
Remove the passthrough AuthSessionProvider component and its usage
in layout. better-auth hooks work without a provider wrapper.
2026-04-06 23:22:33 -04:00
bcd488e2d3
fix(auth): use correct sign-in method for genericOAuth
...
Add genericOAuthClient plugin to auth client and change sign-in
call from signIn.social() to signIn.oauth2() with correct
providerId parameter.
2026-04-06 23:20:39 -04:00
c3026c8262
feat(api): add auth check to ai-summary endpoint
...
Require authentication for ai-summary endpoint to prevent
unauthorized API key usage and cost leakage.
2026-04-06 23:18:46 -04:00
15be2399c6
refactor: migrate session usage to better-auth API
2026-04-06 22:41:57 -04:00
d7d52ef1a8
refactor: migrate auth pages to better-auth client
2026-04-06 22:41:37 -04:00
08a894577b
refactor: replace next-auth with better-auth core and client
2026-04-06 22:41:11 -04:00
824768ce93
Add RRuleDisplay component and clean up unused imports
...
- Create new RRuleDisplay component for better recurrence rule formatting
- Replace Badge with RRuleDisplay in EventCard for improved UX
- Remove unused imports across multiple files (CalendarEvent, Badge, Card components)
- Remove unused catch parameter in ai-event route
2025-08-22 13:35:13 -04:00
eb73f9f929
Refactor event management into reusable components
...
- Extract EventCard, EventsList, and event dialog into separate components
- Add new AI toolbar and drag-drop container components
- Simplify main page.tsx by removing inline component definitions
- Improve code organization and maintainability
2025-08-22 12:33:07 -04:00
6ab2946e8a
refactor events list as shadcn cards
2025-08-20 14:12:32 -04:00
cde44ee2d7
fix grammar
2025-08-20 14:11:53 -04:00
9a836fc866
refactor ai event creation into a promise toast
2025-08-20 13:14:29 -04:00
275e83a6c0
replace alerts with toasts
2025-08-20 13:13:52 -04:00
6e6e9b0699
update logo font
2025-08-20 12:36:33 -04:00
044e4fbb07
remove shadow from the header
2025-08-20 12:36:22 -04:00
2d0da9dbeb
autoresize textfield with content & minor ui tweaks
2025-08-20 12:22:38 -04:00
e0ff037c06
clear ai event prompt after generation
2025-08-20 11:14:24 -04:00
d50d77538b
change shadcn theme
2025-08-20 11:04:05 -04:00
308f5c8380
fix d&d cta position
2025-08-19 05:52:28 -04:00
112ab01445
moved sign-in component to a proper folder
2025-08-19 05:41:46 -04:00
ef035e2b7d
add labels to action button sections
2025-08-19 05:33:36 -04:00
1a30b729e6
fix sign buttons inconsistencies in the header
2025-08-19 05:32:29 -04:00
caa89a87de
update metadata & use logo as a link to root
2025-08-19 05:00:58 -04:00
fa39d7584b
fix csr nextjs build error
...
https://nextjs.org/docs/messages/missing-suspense-with-csr-bailout
2025-08-19 04:35:07 -04:00
f92c79ac60
implement auth error page and moved auth-related pages to /auth path
2025-08-19 04:27:13 -04:00
12e9ec5d85
proper user/session creation and auth integration into UI
2025-08-19 03:40:06 -04:00
92535f7e54
claude drizzle integration
2025-08-19 01:54:19 -04:00
b17ed18d46
remove explicit coloring from shadcn summary card
2025-08-16 19:32:39 -04:00
63d32931b2
move summarize button to action bar
2025-08-16 19:32:15 -04:00
0e919ea69b
create auth session provider
2025-08-16 19:26:19 -04:00
2c6737ceb4
implement authentik auth
2025-08-16 19:09:57 -04:00
bb00d9548d
use textarea instead of input for ai prompt
2025-08-16 11:48:55 -04:00
6ec15c9124
fix description overflow
2025-08-16 11:34:47 -04:00
e7de213c18
use button as a file picker
2025-08-16 11:34:34 -04:00
f747a82322
actual dark mode theme
2025-08-16 11:05:47 -04:00
eea61bcb0f
shadcn orange theme
2025-08-16 10:33:55 -04:00