chore: create symlink for ui-ux-pro-max skill in Claude directory
chore: update .nuxtrc to include test-utils dependency
docs: add basic principles and development guidelines to AGENTS.md
chore: create symlink for AGENTS.md in CLAUDE.md
fix: change database from postgres to sqlite in README.md
chore: update bun.lock with h3 version override
feat(nuxt): add alias for shared package in nuxt.config.ts
chore: add h3 version override in package.json
chore: update SQLite database in drizzle-pkg
feat(shared): add exports field in shared package.json
chore: create skills-lock.json for ui-ux-pro-max skill tracking
Score 2 (letters+digits >=8) previously only matched lowercase letters.
Now uses hasLetter = hasLower || hasUpper to match the spec's intent.
Added test case for uppercase-only + digits password.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Zod v4 does not support .omit() on schemas containing .refine(). Restructured
the shared schema to define server and client schemas independently while
sharing field definitions to avoid duplication.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Previously the catch block treated all insert errors as "username already
exists". Now it checks the error message for UNIQUE/SQLITE_CONSTRAINT and
only returns the duplicate-username message for that case. Other errors
are logged and return a generic failure message.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Guard onSubmit against concurrent calls via loading flag
- Add role="img" and aria-label to captcha SVG container for accessibility
- Wrap initial captcha fetch in try/catch to show error toast on failure
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Replaced select-then-insert with direct insert wrapped in try-catch.
The UNIQUE constraint on username catches duplicate registrations
atomically, returning a clean error message instead of leaking
a raw DB exception.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Use properly typed computed properties for API data
- Cast UTable rows through unknown to avoid type overlap errors
- Use valid Nuxt UI badge colors (success/error/warning/neutral)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Nuxt's bundler tree-shakes side-effect-only imports (import "./file").
Changed to export the handler from cleanup-logs.ts and call registerTask
explicitly in the plugin to ensure the task is registered at startup.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>