popertots and Sisyphus
6c16d65476
fix(frontend): Svelte 5 reactivity, each block keys, and path resolution
...
Add proper keys to #each blocks across 15+ components to fix reordering bugs. Replace new Date() with SvelteDate in reactive contexts. Use $derived for computed values (totalPages). Use resolve() from $app/paths for all internal navigation hrefs. Add ARIA labels and keyboard accessibility to NavBar mobile menu. Remove unused handleRetry from UserPaymentModal.
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-06-04 01:08:36 +01:00
popertots
ef650e013a
feat: implement patch test management and validation improvements
2026-05-29 20:21:26 +01:00
popertots
ddaa468a3e
fix: correctly validate number inputs against null/NaN bypass in admin modals
2026-05-29 18:35:11 +01:00
popertots
20bd3e3310
fix: add inputmode to number inputs across admin modals to enforce numeric keyboard on mobile
2026-05-29 18:20:30 +01:00
popertots
eda4b6d865
fix: deduplicate service list to prevent each_key_duplicate
2026-05-29 18:09:35 +01:00
popertots
94f3f77985
fix: restore ServicesManagement.svelte component
2026-05-29 18:09:06 +01:00
popertots
df32f5518c
fix: resolve svelte syntax error and cleanup ServicesManagement.svelte
2026-05-29 17:57:33 +01:00
popertots
a22ddb7a0f
fix: remove duplicate and deprecated createService implementation
2026-05-29 17:55:23 +01:00
popertots
e1c0d3a03f
fix: remove duplicate validateMinimumAgeField
2026-05-29 17:54:00 +01:00
popertots
10bb1b4e9e
fix: remove duplicate validation functions
2026-05-29 17:52:25 +01:00
popertots
dec3e1023e
fix: remove duplicated validation functions in ServicesManagement.svelte
2026-05-29 17:51:36 +01:00
popertots
f5c2c26fe4
fix: resolve compilation errors in frontend and backend
2026-05-29 17:46:15 +01:00
popertots
f36497090a
feat: migrate to dedicated patch test management
2026-05-29 17:19:02 +01:00
popertots
a5a2ffd83e
Security: add rate limiting, input validation, and filter category
...
validation
Backend:
- Add rate limiting middleware (mw/ratelimit.go) - in-memory per-IP
limiter
- Apply rate limits per endpoint group:
- Public read-only: 120/min
- Registration: 10/min
- Portfolio filters: 60/min
- Authenticated users: 120/min
- Admin: none (trusted)
- Add 256 char input length validation on portfolio endpoints
- Validate filter categories exist in DB before querying
- Secure GetImage endpoint: only allow UUID or numeric timestamp (15-20
digits)
- Remove pattern-based image lookup to prevent enumeration
- Add services validation: name (100), duration (1-480), patch test
(0-168)
Frontend:
- Add maxlength=256 to portfolio tag/search inputs
- Add maxlength to registration: name (50), email (255), phone (20),
password (72)
- Add maxlength=100 to service name input
2026-02-20 12:03:14 +00:00
popertots
3a77e582e3
Split admin dashboard, implement user and booking search
2026-01-17 18:55:58 +00:00