be70a4579f
Merge pull request 'feat: multimodal AI event creation with image support' ( #1 ) from image-parse into main
2026-04-07 15:21:27 -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
fab0d2ff47
refactor(components): derive ImagePicker variant types from buttonVariants
...
Replace manually duplicated variant/size type literals with
VariantProps<typeof buttonVariants> for type safety and
consistency with the Button component.
2026-04-07 13:11:42 -04:00
a7716d87df
fix(components): add unoptimized image prop, overflow containment, and accessibility
...
Add unoptimized prop to image preview to support blob URLs, contain
overflow on preview container, replace div with semantic section
element in DragDropContainer with aria-label, and import shared
image constants.
2026-04-07 13:11:35 -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
7bb4f2be9d
refactor(types): strengthen Zod schemas with regex validation and derive CalendarEvent
...
Add regex-based data URL validation for images, compute binary size
from base64 for accurate 10MB limit, enforce datetime strings with
offset for start/end fields, and derive CalendarEvent from the AI
response item type to eliminate field duplication.
2026-04-07 13:11:05 -04:00
dc4204a740
refactor(lib): extract shared image constants and JSON parsing utilities
...
Move image extensions, MIME types, and size limit into a dedicated
constants module. Extract JSON-from-text parsing into a pure utility
function for reuse across the codebase.
2026-04-07 13:10:59 -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
cbae9fa1c9
style: standardize formatting in opencode tooling files
...
Reformat JSON configs and TypeScript scripts to use consistent
tab indentation, semicolons, and double quotes.
2026-04-07 13:10:35 -04:00
4e09059a3d
chore(deps): add @typescript/native-preview, biome lint integration, and typecheck script
...
Add @typescript/native-preview for tsgo typechecking, integrate biome
check into the lint script, and add a dedicated typecheck script.
2026-04-07 13:10:16 -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
5e888ce7ae
feat(components): add image preview, picker, and clear controls to AIToolbar
2026-04-07 11:58:01 -04:00
94de1dde0e
feat(components): add image drag-drop support to DragDropContainer
2026-04-07 11:57:47 -04:00
c02c6ece5d
feat(components): add ImagePicker file upload component
2026-04-07 11:57:32 -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
3d6999312c
feat(lib): add AI event Zod schemas for request validation and response parsing
2026-04-07 11:57:11 -04:00
6944215578
chore(deps): add zod dependency
2026-04-07 11:57:01 -04:00
f8213883df
chore: zod skill
...
Signed-off-by: Dmytro Stanchiev <git@dmytros.dev >
2026-04-07 11:31:34 -04:00
c2263602c4
chore: install openagent opencode
...
Signed-off-by: Dmytro Stanchiev <git@dmytros.dev >
2026-04-07 11:31:26 -04:00
b4c03ff25e
style(ui): standardize UI component file formatting
2026-04-07 08:10:13 -04:00
fd5716f39e
style(components): standardize main component file formatting
2026-04-07 08:10:05 -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
e39ba6be97
style(lib): standardize utils file formatting
2026-04-07 08:09:43 -04:00
3b7c246a47
style(lib): standardize rfc5545-types file formatting
2026-04-07 08:09:40 -04:00
5be55cec7c
style(lib): standardize events-db file formatting
2026-04-07 08:09:36 -04:00
dab77befc2
style(auth): standardize auth file formatting
2026-04-07 08:09:32 -04:00
076cf8acd0
style(db): standardize database source file formatting
2026-04-07 08:09:26 -04:00
ae8d547486
style(public): standardize manifest.json formatting
2026-04-07 08:09:19 -04:00
3d9e2452c4
style(db): standardize database migration file formatting
2026-04-07 08:09:15 -04:00
db9d6399dd
style(config): standardize configuration file formatting
2026-04-07 08:09:09 -04:00
a897e8ead1
feat(lib): add OpenRouter client implementation
2026-04-07 08:08:58 -04:00
c3e3018018
feat(deps): add @openrouter/sdk dependency
2026-04-07 08:08:51 -04:00
be389c6cfa
style(skills): standardize utility-types.ts formatting
2026-04-07 08:08:44 -04:00
ada8e03a04
chore(config): add OpenRouterTeam to skill selector repos
2026-04-07 08:08:36 -04:00
956de68591
style(skills): standardize skill metadata JSON formatting
2026-04-07 08:08:28 -04:00
e25f917b9a
chore(skills): add create-agent and typescript-sdk skills
2026-04-07 08:08:01 -04:00
3fec791f28
Merge branch 'betterauth-migration'
2026-04-06 23:38:56 -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
bd861e56c0
chore: remove stale FIXME.md
...
Remove outdated FIXME file about minimatch types from 2025.
2026-04-06 23:26:26 -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
8d9329050d
fix(ui): add error handling to sign-out
...
Add try/catch with toast notification for sign-out failures.
2026-04-06 23:24: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
a4656520f8
fix(db): ensure pgcrypto extension for UUID generation
...
Add CREATE EXTENSION IF NOT EXISTS pgcrypto to migration for
compatibility with older PostgreSQL versions.
2026-04-06 23:23:26 -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
c6017b2f78
fix(db): wrap migration in transaction
...
Add BEGIN/COMMIT transaction wrapper to migration to ensure
atomicity and prevent partial migration failures.
2026-04-06 23:21:42 -04:00