Commit Graph
729 Commits
Author SHA1 Message Date
popertots 8384197ef0 fix: clear date selection when clicking an unavailable/closed day
bits-ui blocks onValueChange for unavailable dates, leaving stale selection. Adds native click detection on [data-unavailable] elements to call onchange(undefined) so the time picker hides and the user knows nothing was picked.
2026-08-22 00:34:49 +01:00
popertots 1fb84b8998 test: add hours validation tests for edit request handler
Add TestRequestEditHandler_PastClosing_Blocked (19:30 extends past 20:00 closing), TestRequestEditHandler_StagedHoursClosed_Blocked (day closed under staged change), and TestRequestEditHandler_ValidTime_Succeeds (10:00 within open hours). Removed the closed-day test that was incompatible with the bookings test DB seed (all 7 days open 08:00-20:00) — that case is covered by the staged-hours test.
2026-08-22 00:34:49 +01:00
popertots 991f3af540 fix: add hours validation to user edit requests (was M8/L5 stubs)
RequestEditHandler had empty M8/L5 placeholder comments where hours validation was planned. Implemented full validation: staged-hours-aware closing time check via getClosingTimeForDate, closed-day check, and closing-hours boundary check using the booking's total_duration_minutes. Removed placeholder comments. Updated test to propose an open-day time that doesn't extend past closing.
2026-08-22 00:34:49 +01:00
popertots c80ad467e7 fix: add staged hours check to edit request approval
AdminApproveEditRequestHandler checked exceptional hours but not staged default hours changes. Added getClosingTimeForDate check for the proposed reschedule time, matching the pattern used in AdminRescheduleBookingHandler.
2026-08-22 00:34:49 +01:00
popertots 503449b0bc fix: staged hours no longer leak closed values to days before effective date
The else-if chain in GetWorkingHours/computeAvailableHours entered the staged change block for ALL days when a pending change existed, but only applied hours for future dates — leaving earlier days as zero-value (closed). Moved the effective date check into the else-if condition so early days fall through to default hours.
2026-08-22 00:34:49 +01:00
popertots 9eecb375cf docs: update test counts from ~1,642 to 1,716 (4 skipped, 0 failures)
Reflect current test run results across README, Overview, Technical Manual, and Testing Architecture docs.
2026-08-22 00:34:49 +01:00
popertots a991642157 fix: show only differing days in scheduled hours change section
Replace unreactive @const with  for the changed-days filter. Normalize PostgreSQL microsecond times before comparing (TIME::text produces '17:00:00.000000' but staged hours are '17:00'). Change header text to 'These opening hours will change from' when fewer than 7 days differ.
2026-08-22 00:34:49 +01:00
popertots aa31b19f1c docs: update all docs for staged default hours feature
Update Technical Manual (API endpoints, DB schema, scheduling system, job catalogue), Admin Manual (scheduled changes workflow), Overview, Future Work backlog, and README to reflect the new staged default hours change scheduling system with conflict detection and auto-apply at 00:05.
2026-08-22 00:34:49 +01:00
popertots 0323313921 fix: add conflict re-check guard before saving holiday hours and time blockers
Re-check conflicts immediately before finalizing holiday hours and time blocker saves to prevent race conditions. Add Refresh button to conflict banners. Fix prettier formatting in login page.
2026-08-22 00:34:49 +01:00
popertots 6470a3f6c9 feat: add scheduled change UI and conflict display to weekly schedule
Convert WeeklySchedule to schedule staged changes with an effective date picker and conflict detection UI. Show pending scheduled changes in BusinessHours component. Update admin page to pass through props.
2026-08-22 00:34:49 +01:00
popertots a6cb803ff2 test: fix today_test flakiness with London-timezone-aware booking times
Replace clock.Now() with fixed London-timezone times in TestGetCurrentNext_WithMultipleDataPoints to prevent near-midnight UTC failures where bookings fall outside the London 'today' window.
2026-08-22 00:34:49 +01:00
popertots 70613497b4 feat: add daily cron to apply scheduled default hours changes
Add ApplyScheduledDefaultHours which checks default_hours_scheduled_changes at midnight, bulk-updates working_hours with staged values, and inserts an admin_notification. Register as the 'apply-default-hours' job in the scheduler (daily at 00:05).
2026-08-22 00:34:49 +01:00
popertots d0f233ae70 test: add tests for staged default hours change handlers
Add tests for ScheduleDefaultHoursChange, GetScheduledDefaultHoursChange, CancelScheduledDefaultHoursChange, GetDefaultHoursConflictingBookings, and GetWorkingHours/GetDefaultHours integration with staged changes.
2026-08-22 00:34:49 +01:00
popertots 2a840bb7e6 feat: add staged default hours change handlers with conflict detection
Add ScheduleDefaultHoursChange, GetScheduledDefaultHoursChange, CancelScheduledDefaultHoursChange, and GetDefaultHoursConflictingBookings handlers. Updates GetDefaultHours to return { current, scheduled_change }. Updates GetWorkingHours and computeAvailableHours to apply staged hours for dates on/after the effective_date.
2026-08-22 00:34:48 +01:00
popertots 8f99b8b5c3 feat: check staged default hours in all booking creation paths
Integrate getClosingTimeForDate into AdminReserveSlotHandler, CreateBookingHandler, AdminRescheduleBookingHandler, and AdminCreateBookingForUserHandler. Rejects bookings when the staged schedule marks a day as closed (00:00).
2026-08-22 00:34:48 +01:00
popertots 52caf1b7b5 feat: add getClosingTimeForDate to check staged default hours for bookings
Add getClosingTimeForDate that queries default_hours_scheduled_changes for a pending staged change whose effective_date <= the booking date. Falls back to current working_hours if no staged change applies. Also checks the staged schedule to see if a weekday is closed (returns 00:00).
2026-08-22 00:34:48 +01:00
popertots bc37283009 feat: add default_hours_scheduled_changes table and admin_notifications enum value
Add new table for staging future default hours changes with an upsert guard (at most one pending change). Extend admin_notification_reason enum with 'default_hours_changed'.
2026-08-22 00:34:48 +01:00
popertots 3eec71a56c fix: sanitize API error text display and add time_blockers tests
Add extractErrorMessage helper for JSON error body parsing and apply sanitizeText across all toast displays. Add time_blockers test coverage for new holiday placeholder cleanup and overlapping scenarios.
2026-08-22 00:34:48 +01:00
popertots 388ac5948a docs: add holiday hours conflict resolution plan 2026-08-22 00:34:48 +01:00
popertots 5deefa1205 fix: prevent empty login form submission
Fix isFormComplete derived always returning true for login mode. Now requires email and password to be non-empty before enabling Sign In button. Add early-return guard in handleSubmit to prevent sending empty credentials.
2026-08-22 00:34:48 +01:00
popertots 9170990340 feat: add conflict resolution UI to holiday hours modal
Add conflict detection to the Create Exception Schedule modal with auto-checking, amber warning display, and View Booking/View Client buttons. Wire openUserModal and openBookingModal props from admin page. Fix TimeBlockers placeholder duration from hardcoded 60 to booking.duration_minutes. Remove dead placeholder creation code (isFormValid prevents save while conflicts exist). Fix formatTime overwriting raw hour data with display strings.
2026-08-22 00:34:48 +01:00
popertots 6567ff4904 fix: harden login validation with proper JSON error responses
Change LoginHandler validation error from http.Error (plain text, mismatched Content-Type) to mw.RespondError (proper JSON {error:...} response). Add TestLogin_EmptyFields and TestLogin_MissingEmail tests verifying JSON error format.
2026-08-22 00:34:48 +01:00
popertots 5ed24f263a fix: prevent internal error details leaking in HTTP responses
Replace err.Error() concatenation in JSON decode error responses with fixed 'invalid request body' message across 5 locations in custom_services.go, discount_campaigns.go, and services.go.
2026-08-22 00:34:48 +01:00
popertots 291868f11a test: add conflict detection and preview available hours tests
Add 12 new tests for GetConflictingBookingsForExceptionHandler (closed day, within hours, before-opening, after-closing, multiple weeks, excluded statuses, invalid payload, wrong method) and GetPreviewAvailableHours (no proposed, proposed override, invalid JSON, missing params). Fix pre-existing test with FK violation (non-existent admin_id) by using fixture-created admin user.
2026-08-22 00:34:48 +01:00
popertots e27db9202e feat: add holiday hours conflict detection with shared scheduling core
Extract computeAvailableHours as shared core between GetAvailableHours and GetPreviewAvailableHours, eliminating ~320 lines of duplication. Add GetConflictingBookingsForExceptionHandler (POST) for holiday hours conflict detection with batch service loading, int-based time comparison, and ActiveBookingStatuses constant. Add RESERVATION:placeholder cleanup (24h TTL). Fix scan error propagation in all scheduling row iterations. Add rows.Err() checks.
2026-08-22 00:34:48 +01:00
popertots b5f215aaa4 fix: move preview-available-hours to admin route group
Move GET /api/scheduling/preview-available-hours from public OptionalAuth group into the admin-only group (RequireAuth + RequireAdmin) since it's an admin simulation tool.
2026-08-22 00:34:48 +01:00
popertots 04d5c21f8c feat: show live availability status on ContactCard 2026-08-22 00:34:48 +01:00
popertots bea1582088 feat: add BusinessHours component and update contact page 2026-08-22 00:34:48 +01:00
popertots 117c37eaff feat: add contact-availability handler and route 2026-08-22 00:34:48 +01:00
popertots 24af3a1fca fix: enable eslint-plugin-svelte a11y rules and fix violations
CI / Env docs check (push) Successful in 30s
CI / Nginx config check (push) Successful in 37s
CI / Docker compose check (push) Successful in 38s
CI / Frontend deps check (push) Successful in 46s
CI / Frontend major deps (push) Successful in 51s
CI / Secrets scan (push) Successful in 52s
CI / Go build (push) Successful in 56s
CI / Frontend build (push) Successful in 1m9s
CI / Knip (push) Successful in 46s
CI / Go vet (prod) (push) Successful in 1m59s
CI / Frontend a11y check (push) Successful in 2m7s
CI / Go vet (dev) (push) Successful in 2m4s
CI / go mod tidy (push) Successful in 25s
CI / Staticcheck (prod) (push) Successful in 2m43s
CI / Frontend QC (audit) (push) Successful in 1m39s
CI / Staticcheck (dev) (push) Successful in 3m47s
CI / Go vulnerabilities (push) Successful in 1m48s
CI / golangci-lint (push) Successful in 3m57s
CI / Frontend QC (typecheck) (push) Successful in 1m49s
CI / Security scan (prod) (push) Successful in 4m1s
CI / Security scan (dev) (push) Successful in 4m30s
CI / Frontend QC (lint) (push) Successful in 2m5s
CI / Svelte strict check (push) Failing after 988h42m2s
CI / Race (dev) (push) Failing after 988h42m18s
CI / Race (prod) (push) Failing after 988h42m19s
CI / Tests (dev) (push) Failing after 988h42m19s
CI / Tests (prod) (push) Failing after 988h42m20s
2026-07-11 18:17:49 +01:00
popertots 6777fb9b97 fix: remove heavy linters from pre-commit (golangci-lint, staticcheck, gosec) — CI-only
CI / Env docs check (push) Successful in 39s
CI / Go build (push) Has been cancelled
CI / Go vet (dev) (push) Has been cancelled
CI / Go vet (prod) (push) Has been cancelled
CI / golangci-lint (push) Has been cancelled
CI / Staticcheck (dev) (push) Has been cancelled
CI / Secrets scan (push) Has been cancelled
CI / Staticcheck (prod) (push) Has been cancelled
CI / Security scan (dev) (push) Has been cancelled
CI / Security scan (prod) (push) Has been cancelled
CI / go mod tidy (push) Has been cancelled
CI / Tests (prod) (push) Has been cancelled
CI / Tests (dev) (push) Has been cancelled
CI / Race (prod) (push) Has been cancelled
CI / Race (dev) (push) Has been cancelled
CI / Go vulnerabilities (push) Has been cancelled
CI / Frontend deps check (push) Has been cancelled
CI / Knip (push) Has been cancelled
CI / Frontend major deps (push) Has been cancelled
CI / Frontend a11y check (push) Has been cancelled
CI / Svelte strict check (push) Has been cancelled
CI / Frontend build (push) Has been cancelled
CI / Frontend QC (audit) (push) Has been cancelled
CI / Frontend QC (typecheck) (push) Has been cancelled
CI / Frontend QC (lint) (push) Has been cancelled
CI / Docker compose check (push) Has been cancelled
CI / Nginx config check (push) Has been cancelled
2026-07-11 18:07:52 +01:00
popertots bbbffce20d fix: gocritic linter issues (appendAssign, ifElseChain, regexpMust)
CI / Docker compose check (push) Successful in 51s
CI / Env docs check (push) Successful in 52s
CI / Frontend deps check (push) Successful in 54s
CI / Frontend major deps (push) Successful in 53s
CI / Secrets scan (push) Successful in 55s
CI / Nginx config check (push) Successful in 57s
CI / Go build (push) Successful in 1m0s
CI / Frontend build (push) Successful in 1m4s
CI / Knip (push) Successful in 58s
CI / Go vet (dev) (push) Successful in 1m45s
CI / Frontend a11y check (push) Successful in 2m8s
CI / Go vet (prod) (push) Successful in 2m17s
CI / go mod tidy (push) Successful in 36s
CI / Frontend QC (audit) (push) Successful in 47s
CI / Staticcheck (prod) (push) Successful in 3m15s
CI / Go vulnerabilities (push) Successful in 1m22s
CI / golangci-lint (push) Has been cancelled
CI / Staticcheck (dev) (push) Has been cancelled
CI / Security scan (dev) (push) Has been cancelled
CI / Security scan (prod) (push) Has been cancelled
CI / Tests (prod) (push) Has been cancelled
CI / Tests (dev) (push) Has been cancelled
CI / Race (prod) (push) Has been cancelled
CI / Race (dev) (push) Has been cancelled
CI / Svelte strict check (push) Has been cancelled
CI / Frontend QC (typecheck) (push) Has been cancelled
CI / Frontend QC (lint) (push) Has been cancelled
2026-07-11 18:03:05 +01:00
popertotsandSisyphus 35bc021857 fix: replace err.Error() string match with errors.Is(err, pgx.ErrTxClosed)
CI / Env docs check (push) Successful in 25s
CI / Docker compose check (push) Successful in 24s
CI / Frontend deps check (push) Successful in 30s
CI / Frontend major deps (push) Successful in 33s
CI / Nginx config check (push) Successful in 59s
CI / Go build (push) Successful in 1m15s
CI / Secrets scan (push) Successful in 1m16s
CI / Knip (push) Successful in 56s
CI / Frontend a11y check (push) Successful in 55s
CI / Frontend build (push) Successful in 1m27s
CI / go mod tidy (push) Successful in 17s
CI / Go vulnerabilities (push) Successful in 2m17s
CI / Go vet (prod) (push) Successful in 2m46s
CI / Go vet (dev) (push) Successful in 2m50s
CI / Staticcheck (prod) (push) Successful in 2m55s
CI / Staticcheck (dev) (push) Successful in 3m13s
CI / Frontend QC (audit) (push) Successful in 41s
CI / golangci-lint (push) Failing after 3m37s
CI / Frontend QC (typecheck) (push) Successful in 1m30s
CI / Frontend QC (lint) (push) Successful in 2m4s
CI / Security scan (prod) (push) Successful in 4m43s
CI / Security scan (dev) (push) Successful in 4m44s
CI / Tests (prod) (push) Has been skipped
CI / Tests (dev) (push) Has been skipped
CI / Race (prod) (push) Has been skipped
CI / Race (dev) (push) Has been skipped
CI / Svelte strict check (push) Successful in 33s
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-07-11 17:53:29 +01:00
popertots 5d9fa1178b fix: replace silent json.Encode with error-logging pattern across all handlers 2026-07-11 17:50:07 +01:00
popertots 0bef0f7973 fix: remove redundant rollback, document asymmetry in cancellation notifications
CI / Go build (push) Successful in 1m42s
CI / Secrets scan (push) Successful in 1m56s
CI / Env docs check (push) Successful in 1m55s
CI / Frontend major deps (push) Successful in 2m6s
CI / Frontend deps check (push) Successful in 1m30s
CI / Nginx config check (push) Successful in 2m48s
CI / Docker compose check (push) Successful in 2m50s
CI / Frontend build (push) Successful in 3m7s
CI / Go vet (dev) (push) Successful in 1m14s
CI / go mod tidy (push) Successful in 33s
CI / Knip (push) Successful in 1m15s
CI / Go vulnerabilities (push) Successful in 1m46s
CI / Frontend QC (audit) (push) Successful in 46s
CI / Staticcheck (prod) (push) Successful in 3m36s
CI / Frontend a11y check (push) Successful in 2m17s
CI / Staticcheck (dev) (push) Successful in 3m51s
CI / golangci-lint (push) Failing after 4m8s
CI / Frontend QC (typecheck) (push) Successful in 1m25s
CI / Go vet (prod) (push) Has been cancelled
CI / Security scan (dev) (push) Has been cancelled
CI / Security scan (prod) (push) Has been cancelled
CI / Tests (prod) (push) Has been cancelled
CI / Tests (dev) (push) Has been cancelled
CI / Race (prod) (push) Has been cancelled
CI / Race (dev) (push) Has been cancelled
CI / Svelte strict check (push) Has been cancelled
CI / Frontend QC (lint) (push) Has been cancelled
2026-07-11 17:45:24 +01:00
popertots 0edc111bfe fix: correct global milestone discount indentation (C1)
CI / Env docs check (push) Successful in 20s
CI / Docker compose check (push) Successful in 23s
CI / Nginx config check (push) Successful in 24s
CI / Frontend major deps (push) Successful in 35s
CI / Frontend deps check (push) Successful in 36s
CI / Secrets scan (push) Successful in 48s
CI / Go build (push) Successful in 45s
CI / Frontend build (push) Successful in 47s
CI / Knip (push) Successful in 55s
CI / Go vet (prod) (push) Successful in 1m39s
CI / Frontend a11y check (push) Successful in 2m7s
CI / Go vet (dev) (push) Successful in 2m6s
CI / go mod tidy (push) Successful in 32s
CI / golangci-lint (push) Has been cancelled
CI / Staticcheck (dev) (push) Has been cancelled
CI / Staticcheck (prod) (push) Has been cancelled
CI / Security scan (dev) (push) Has been cancelled
CI / Security scan (prod) (push) Has been cancelled
CI / Tests (prod) (push) Has been cancelled
CI / Tests (dev) (push) Has been cancelled
CI / Race (prod) (push) Has been cancelled
CI / Race (dev) (push) Has been cancelled
CI / Go vulnerabilities (push) Has been cancelled
CI / Svelte strict check (push) Has been cancelled
CI / Frontend QC (audit) (push) Has been cancelled
CI / Frontend QC (typecheck) (push) Has been cancelled
CI / Frontend QC (lint) (push) Has been cancelled
2026-07-11 17:42:17 +01:00
popertots 8ae592d0c5 fix: add golangci config, restore CI timeouts, svelte-check warnings, RespondError helper
CI / Env docs check (push) Successful in 13s
CI / Nginx config check (push) Successful in 36s
CI / Frontend major deps (push) Successful in 37s
CI / Docker compose check (push) Successful in 38s
CI / Frontend deps check (push) Successful in 41s
CI / Secrets scan (push) Successful in 42s
CI / Go build (push) Successful in 42s
CI / Frontend build (push) Successful in 49s
CI / go mod tidy (push) Successful in 26s
CI / Go vet (dev) (push) Has been cancelled
CI / Go vet (prod) (push) Has been cancelled
CI / golangci-lint (push) Has been cancelled
CI / Staticcheck (dev) (push) Has been cancelled
CI / Staticcheck (prod) (push) Has been cancelled
CI / Security scan (dev) (push) Has been cancelled
CI / Security scan (prod) (push) Has been cancelled
CI / Tests (prod) (push) Has been cancelled
CI / Tests (dev) (push) Has been cancelled
CI / Race (prod) (push) Has been cancelled
CI / Race (dev) (push) Has been cancelled
CI / Go vulnerabilities (push) Has been cancelled
CI / Knip (push) Has been cancelled
CI / Frontend a11y check (push) Has been cancelled
CI / Svelte strict check (push) Has been cancelled
CI / Frontend QC (audit) (push) Has been cancelled
CI / Frontend QC (typecheck) (push) Has been cancelled
CI / Frontend QC (lint) (push) Has been cancelled
2026-07-11 17:38:50 +01:00
popertots b864873310 fix: include SquarePaymentID in commit-failure log for manual reconciliation 2026-07-11 17:35:10 +01:00
popertots 11fbf869e1 fix: add 30s timeouts to account.go goroutines using context.Background()
CI / Env docs check (push) Successful in 13s
CI / Nginx config check (push) Successful in 20s
CI / Docker compose check (push) Successful in 20s
CI / Frontend major deps (push) Successful in 22s
CI / Frontend deps check (push) Successful in 28s
CI / Secrets scan (push) Successful in 41s
CI / Go build (push) Successful in 40s
CI / Frontend build (push) Successful in 43s
CI / Knip (push) Successful in 46s
CI / Go vet (prod) (push) Successful in 1m45s
CI / Frontend a11y check (push) Successful in 2m7s
CI / Go vet (dev) (push) Successful in 1m58s
CI / go mod tidy (push) Successful in 35s
CI / Frontend QC (audit) (push) Successful in 39s
CI / Staticcheck (prod) (push) Successful in 2m44s
CI / Go vulnerabilities (push) Successful in 1m46s
CI / Staticcheck (dev) (push) Successful in 3m45s
CI / golangci-lint (push) Successful in 3m47s
CI / Frontend QC (typecheck) (push) Successful in 1m43s
CI / Security scan (dev) (push) Successful in 4m8s
CI / Security scan (prod) (push) Successful in 3m51s
CI / Frontend QC (lint) (push) Successful in 1m53s
CI / Svelte strict check (push) Successful in 58s
CI / Tests (prod) (push) Successful in 3m15s
CI / Tests (dev) (push) Successful in 3m39s
CI / Race (prod) (push) Successful in 6m50s
CI / Race (dev) (push) Successful in 7m6s
2026-07-11 17:10:11 +01:00
popertots 0afa642a10 fix: add 60% coverage minimum to CI, scope prettier to staged frontend files 2026-07-11 17:09:37 +01:00
popertots 7d6cb0c375 fix: prettier formatting on EditRequestModal.svelte
CI / Docker compose check (push) Successful in 14s
CI / Env docs check (push) Successful in 14s
CI / Nginx config check (push) Successful in 16s
CI / Frontend deps check (push) Successful in 52s
CI / Frontend major deps (push) Successful in 51s
CI / Frontend build (push) Successful in 1m8s
CI / Secrets scan (push) Successful in 1m8s
CI / Go build (push) Successful in 1m8s
CI / Knip (push) Successful in 45s
CI / Go vet (prod) (push) Successful in 1m19s
CI / Go vet (dev) (push) Successful in 1m37s
CI / Frontend a11y check (push) Successful in 2m21s
CI / go mod tidy (push) Successful in 51s
CI / Frontend QC (audit) (push) Successful in 37s
CI / Staticcheck (prod) (push) Successful in 3m34s
CI / Staticcheck (dev) (push) Successful in 3m35s
CI / golangci-lint (push) Successful in 3m37s
CI / Frontend QC (typecheck) (push) Successful in 1m52s
CI / Go vulnerabilities (push) Successful in 2m26s
CI / Security scan (prod) (push) Successful in 4m9s
CI / Security scan (dev) (push) Successful in 4m43s
CI / Frontend QC (lint) (push) Successful in 2m12s
CI / Svelte strict check (push) Successful in 1m23s
CI / Tests (prod) (push) Successful in 3m25s
CI / Tests (dev) (push) Successful in 3m24s
CI / Race (prod) (push) Successful in 7m7s
CI / Race (dev) (push) Successful in 7m32s
2026-07-11 16:37:33 +01:00
popertotsandSisyphus d6a3e30503 fix: compare notification IDs instead of timestamps in upsert test
The PoolProxy.Begin routes to the outer test transaction, so PG NOW() returns the same value for both handler invocations. Comparing notification IDs correctly verifies the notification was deleted and recreated. Also removes unused testify/assert import.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-07-11 16:25:33 +01:00
popertots c8051a76d6 fix: replace time.Sleep with poll loops in tests, fix a11y target=_blank violations
CI / Env docs check (push) Successful in 16s
CI / Nginx config check (push) Successful in 22s
CI / Docker compose check (push) Successful in 23s
CI / Frontend major deps (push) Successful in 23s
CI / Frontend deps check (push) Successful in 28s
CI / Secrets scan (push) Successful in 36s
CI / Go build (push) Successful in 37s
CI / Frontend build (push) Successful in 43s
CI / Knip (push) Successful in 52s
CI / Frontend a11y check (push) Successful in 1m48s
CI / Go vet (prod) (push) Successful in 1m36s
CI / Go vet (dev) (push) Successful in 2m11s
CI / go mod tidy (push) Successful in 1m0s
CI / Frontend QC (audit) (push) Successful in 35s
CI / Staticcheck (prod) (push) Successful in 2m47s
CI / Staticcheck (dev) (push) Successful in 3m4s
CI / golangci-lint (push) Successful in 3m24s
CI / Go vulnerabilities (push) Successful in 1m52s
CI / Frontend QC (lint) (push) Failing after 1m2s
CI / Frontend QC (typecheck) (push) Successful in 1m23s
CI / Svelte strict check (push) Has been skipped
CI / Security scan (prod) (push) Successful in 4m15s
CI / Security scan (dev) (push) Successful in 4m54s
CI / Tests (prod) (push) Successful in 3m48s
CI / Tests (dev) (push) Failing after 4m2s
CI / Race (prod) (push) Failing after 7m15s
CI / Race (dev) (push) Failing after 7m20s
2026-07-11 16:16:23 +01:00
popertots 0c1fc2b819 fix: log internal errors server-side, add timeout to GDPR goroutine 2026-07-11 16:09:11 +01:00
popertots 05c5d73d30 fix: add ShouldFail to Square MockClient for testing payment error paths 2026-07-11 16:07:05 +01:00
popertots ce0bb43ebf fix: auth and ratelimit middleware return JSON errors instead of text/plain 2026-07-11 16:05:56 +01:00
popertots e4a56ab04d fix: add defer tx.Rollback to CreateTipPayment to prevent transaction leak 2026-07-11 16:04:48 +01:00
popertots 8b911d788c ci: trigger fresh pipeline after Docker prune setup
CI / Env docs check (push) Successful in 23s
CI / Frontend deps check (push) Successful in 25s
CI / Frontend major deps (push) Successful in 26s
CI / Nginx config check (push) Successful in 32s
CI / Docker compose check (push) Successful in 32s
CI / Go build (push) Successful in 34s
CI / Frontend build (push) Successful in 46s
CI / Secrets scan (push) Successful in 49s
CI / Knip (push) Successful in 46s
CI / Go vet (dev) (push) Successful in 1m23s
CI / go mod tidy (push) Successful in 36s
CI / Frontend a11y check (push) Successful in 2m21s
CI / Go vet (prod) (push) Successful in 2m31s
CI / Frontend QC (audit) (push) Successful in 41s
CI / Staticcheck (prod) (push) Successful in 3m18s
CI / Go vulnerabilities (push) Successful in 1m41s
CI / Frontend QC (typecheck) (push) Successful in 1m51s
CI / Staticcheck (dev) (push) Successful in 4m23s
CI / golangci-lint (push) Successful in 4m28s
CI / Frontend QC (lint) (push) Successful in 2m17s
CI / Security scan (prod) (push) Successful in 4m37s
CI / Security scan (dev) (push) Successful in 5m11s
CI / Svelte strict check (push) Successful in 50s
CI / Tests (prod) (push) Successful in 3m48s
CI / Tests (dev) (push) Successful in 4m6s
CI / Race (prod) (push) Successful in 7m15s
CI / Race (dev) (push) Successful in 7m31s
2026-07-11 15:38:43 +01:00
popertots b3729c8a5a docs: add DAV_SKIP_INIT to .env.example
CI / Nginx config check (push) Failing after 1s
CI / Docker compose check (push) Successful in 34s
CI / Env docs check (push) Successful in 35s
CI / Frontend deps check (push) Successful in 38s
CI / Frontend major deps (push) Successful in 40s
CI / Go build (push) Successful in 41s
CI / Staticcheck (dev) (push) Failing after 1s
CI / Frontend build (push) Successful in 46s
CI / Secrets scan (push) Successful in 47s
CI / Security scan (prod) (push) Failing after 1s
CI / go mod tidy (push) Failing after 0s
CI / Go vulnerabilities (push) Failing after 1s
CI / Knip (push) Successful in 45s
CI / Frontend QC (typecheck) (push) Failing after 0s
CI / Frontend QC (lint) (push) Failing after 0s
CI / Frontend QC (audit) (push) Successful in 41s
CI / Svelte strict check (push) Has been skipped
CI / Go vet (prod) (push) Successful in 1m29s
CI / Frontend a11y check (push) Successful in 1m52s
CI / Go vet (dev) (push) Successful in 1m51s
CI / Staticcheck (prod) (push) Successful in 2m1s
CI / golangci-lint (push) Successful in 2m30s
CI / Security scan (dev) (push) Successful in 2m54s
CI / Tests (prod) (push) Has been skipped
CI / Tests (dev) (push) Has been skipped
CI / Race (prod) (push) Has been skipped
CI / Race (dev) (push) Has been skipped
2026-07-11 15:25:44 +01:00
popertotsandSisyphus a3243fab27 fix: auto-set DAV_SKIP_INIT=1 in test init to match local GO_TESTING behavior
The DAV_SKIP_INIT env var was only set in CI, not locally. db_test_init.go always auto-sets GO_TESTING=1 for local runs — now does the same for DAV_SKIP_INIT, so tests don't panic on DAV init failure.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-07-11 15:13:51 +01:00