Commit Graph

195 Commits

Author SHA1 Message Date
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
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
4c6f880a3f feat(auth): configure trustedOrigins for CSRF protection
Add trustedOrigins to better-auth config to ensure proper origin
validation behind reverse proxy.
2026-04-06 23:18:20 -04:00
ece03a9124 feat(auth): validate required env vars at startup
Add explicit validation for BETTER_AUTH_SECRET, BETTER_AUTH_URL, and
Authentik config variables. Set secret explicitly in better-auth config
to prevent silent session loss on restart.
2026-04-06 23:17:51 -04:00
2a808f8ca1 fix(db): preserve OAuth user verified status during migration
Update emailVerified type conversion to set OAuth users (those with
account records) as verified before converting timestamp to boolean.
2026-04-06 23:16:58 -04:00
afb27eb66d fix(db): remove authenticator references from relations
Remove dropped authenticator table references from drizzle relations
to prevent drizzle-kit from attempting to recreate the table.
2026-04-06 23:16:34 -04:00