popertots and Sisyphus
584c02ac6c
feat(frontend): ImageVariant component and WASM encoder workers
...
Add client-side multi-format image encoding via Web Workers using @jsquash and @discourse/jxl libraries. ImageVariant Svelte component renders <picture> elements with format-aware fallback. Vite configured for WASM asset inclusion and encoder dependency exclusion. Portfolio page updated to use multi-format URLs.
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-06-04 01:07:00 +01:00
popertots and Sisyphus
0da7498ad7
feat(images): multi-format portfolio pipeline (AVIF/WebP/JPEG/JXL)
...
Backend now stores AVIF, WebP, JPEG, and optional JXL variants for both full-size and thumbnail images. Database schema extended with 7 new columns. Image validation supports AVIF and JXL magic bytes. Comprehensive test coverage for all format URL fields and magic byte detection. Legacy single-URL images remain backward-compatible.
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-06-04 01:06:33 +01:00
popertots
bffb984ebb
feat(auth,security,scheduling): JWT revocation, S3 fix, notes validation, docs, tests
...
- JWT revocation with JTI (UUID v4): in-memory tracking, POST /api/logout,
refresh handler revokes old JTI, RequireAuth rejects revoked tokens
- Fix extractKey for S3 portfolio deletion: extracts full key path from URLs
instead of just filename, preventing orphaned storage files
- Notes validation: max=1000000 on all 13 Notes fields across 4 booking structs
- CharCounter: grapheme-aware counter (Intl.Segmenter), threshold 750K,
color-coded, integrated into 6 booking/admin components
- loginInProgress: timestamp-based tracking, 30s staleness, 20-entry cap (429),
ticker cleanup for stuck entries
- Profile picture 15MB client-side limit, portfolio 20MB backend limit
- Exceptional scheduling: expand query start to Monday of week
- TodayCalendar: week-range fetching, closing time indicator, short-day lunch skip
- NavBar: link reorder, mobile burger badge, slide transition, backdrop
- ImageUpload: 20MB limit with visual feedback
- formatDateISO: shared YYYY-MM-DD utility, shouldApplyLunchProtection helper
- Update README.md and all Obsidian docs (Overview, Technical, Admin, Future Work)
- Add 28 new tests: JWT (11), auth handlers (7), portfolio extractKey (5),
notes validation (5). go build + go vet clean with test,dev tags
2026-06-03 11:17:41 +01:00
popertots
169d7dc6e3
feat(scheduling,admin,today): week-range queries, file size limits, mobile nav UX
...
- Expand exceptional application query to Monday of start week
- Add 20MB file size limit with visual feedback in ImageUpload
- Reorder admin nav links, add burger badge, slide transition + backdrop
- Fetch week-range working/available hours, add closing time indicator
- Skip lunch protection for days <= 5h via shouldApplyLunchProtection
- Extract formatDateISO to shared utils
2026-06-03 10:22:16 +01:00
popertots and Sisyphus
b1847b4cfc
fix(payments,portfolio,scheduling): add ID validation hardening
...
Add validators.IsValidID() checks on URL param IDs to return 404 instead of 400 for invalid IDs. Add offset cap and query length limit in portfolio images handler.
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-31 18:49:16 +01:00
popertots and Sisyphus
1d8247e655
fix(auth,services,profile): add request struct validation
...
Add validate tags and validators.Validate.Struct() calls on request structs for auth verification, service creation, and user patch test endpoints.
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-31 18:49:12 +01:00
popertots and Sisyphus
577cceb304
fix(bookings): add request struct validation and fix patch test notice logic
...
Add validators.Validate.Struct() calls across booking handlers. Fix patch test notice period check to compare against booking start time (not current time) and fix expiry check similarly. Update test to match new error message.
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-31 18:49:07 +01:00
popertots and Sisyphus
304a54c283
fix(admin): replace string(rune) with strconv.Itoa and validate status param
...
Fix query parameter construction by using strconv.Itoa instead of string(rune('0'+argNum)). Add status filter validation against allowed values.
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-31 18:49:02 +01:00
popertots and Sisyphus
253d8785a4
fix(main): add request body size limits to API routes
...
Add limitBody(defaultBodyLimit) middleware to register, login, verify, booking, guest user, and admin routes.
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-31 18:48:57 +01:00
popertots and Sisyphus
306f942d00
feat(mw): add dev-mode rate limiting bypass
...
Add build tag split: real rate limiter under !dev, no-op under dev build tag.
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-31 18:48:53 +01:00
popertots and Sisyphus
d7857766fb
chore: configure env-based DAV_ADMIN_PASSWORD and add security headers
...
Ultraworked with Sisyphus (https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-31 10:55:43 +01:00
popertots and Sisyphus
1a6947a9b6
fix: enforce request body size limits across the API
...
Ultraworked with Sisyphus (https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-31 10:55:33 +01:00
popertots and Sisyphus
700b7c1152
fix: extract client IP via net.SplitHostPort consistently
...
Ultraworked with Sisyphus (https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-31 10:55:23 +01:00
popertots and Sisyphus
a38fda612e
fix: harden notification pagination and ID validation
...
Ultraworked with Sisyphus (https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-31 10:55:19 +01:00
popertots and Sisyphus
453fd0dc1d
feat: validate image type on server-side upload
...
Ultraworked with Sisyphus (https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-31 10:55:09 +01:00
popertots and Sisyphus
965b8b2794
feat: validate admin and time-blocker request structs
...
Ultraworked with Sisyphus (https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-31 10:54:59 +01:00
popertots and Sisyphus
605c1422b9
feat: validate auth and user request structs
...
Ultraworked with Sisyphus (https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-31 10:54:48 +01:00
popertots and Sisyphus
8b72c3fbef
deps: add go-playground/validator/v10 and update crypto deps
...
Ultraworked with Sisyphus (https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-31 10:54:40 +01:00
popertots
0de5128201
fix copy
2026-05-31 00:57:33 +01:00
popertots and Sisyphus
6e901690fd
chore: apply project-wide formatting and UI library updates
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-29 20:23:14 +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
cf81916278
fix: safely enforce validation onblur for HolidayHours modal without dropping code
2026-05-29 18:28:13 +01:00
popertots
6625a3a699
fix: enforce derived validation onblur in patch tests modal to block invalid submissions
2026-05-29 18:24:03 +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
c21a59d61d
fix: validate Patch Test modal inputs
2026-05-29 18:12:39 +01:00
popertots
0750c7ac0e
fix: deduplicate service list in PatchTestsManagement to prevent each_key_duplicate
2026-05-29 18:10:40 +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
7d1266707c
refactor: use shadcn Checkbox in PatchTestsManagement
2026-05-29 18:06:05 +01:00
popertots
db4c3aa076
feat: complete PatchTestsManagement UI and modal logic
2026-05-29 18:04:27 +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
9d8015f1b8
feat: add comprehensive test suite for recent backend changes
2026-05-29 17:13:16 +01:00
popertots and Sisyphus
9ba4949d37
docs: update all documentation for referral codes, admin schedule page, BookingFlow welcome step, format utilities, and patch_test_duration_hours
...
- README: add new features (referral codes, admin schedule page, welcome step, format utils, patch_test_duration_hours, created_by_name, admin login redirect), update project structure, update test count to 446/449
- Overview: add referral code support to Auth section, created_by_name to Booking System, admin schedule page to Scheduling and Admin Features, welcome step to Customer Features, update test coverage
- Technical Manual: add format.ts utilities to Shared Utilities, add /admin/schedule route, update handler descriptions (auth, bookings, services), add Referral Code System, Admin Schedule Page, BookingFlow Welcome Step, and patch_test_duration_hours sections, update test coverage
- Admin Manual: add Schedule page to main pages list, add full Schedule (Weekly Calendar View) section, add patch test duration to service creation, update referral history description
- User Manual: add referral code field to registration, add welcome step explanation to Step 1
- Future Work: update header, add #52-58 completed items, update #21 referral system status, add Phase 6 execution order
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-29 16:21:18 +01:00
popertots and Sisyphus
ec097af0f6
refactor: route pages with shared formatting and layout updates
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-29 16:10:29 +01:00
popertots and Sisyphus
5705ef71b8
refactor: dialog and alert-dialog UI primitives
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-29 16:10:07 +01:00
popertots and Sisyphus
3aa0814b1a
fix: navbar layout and styling improvements
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-29 16:09:46 +01:00
popertots and Sisyphus
040a47401e
refactor: user payment modal
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-29 16:09:25 +01:00
popertots and Sisyphus
91999d8244
refactor: account modals with auto-select and formatting
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-29 16:09:05 +01:00
popertots and Sisyphus
fc69fec361
refactor: today page components with calendar grid and stats
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-29 16:08:44 +01:00
popertots and Sisyphus
18d8822c47
refactor: admin user modal, image upload, and new schedule page
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-29 16:08:25 +01:00
popertots and Sisyphus
a44972fbc6
refactor: admin edit and approval modals
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-29 16:08:05 +01:00
popertots and Sisyphus
b2788b2269
refactor: admin management components (discounts, holidays, schedule, time blockers)
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-29 16:07:44 +01:00
popertots and Sisyphus
96ab71a579
refactor: admin booking modals with shared formatting and auto-select
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-29 16:07:26 +01:00