Commit Graph
573 Commits
Author SHA1 Message Date
popertots 6f557257bb ci: fix nginx http.d dir, golangci-lint timeout, frontend major deps parallel
CI / Docker compose check (push) Successful in 37s
CI / Env docs check (push) Successful in 39s
CI / Frontend deps check (push) Failing after 40s
CI / Go build (push) Successful in 40s
CI / Frontend major deps (push) Successful in 41s
CI / Knip (push) Has been skipped
CI / Frontend a11y check (push) Has been skipped
CI / Nginx config check (push) Failing after 46s
CI / Secrets scan (push) Successful in 57s
CI / Frontend build (push) Successful in 55s
CI / Svelte strict check (push) Has been skipped
CI / Frontend QC (audit) (push) Has been skipped
CI / Frontend QC (typecheck) (push) Has been skipped
CI / Frontend QC (lint) (push) Has been skipped
CI / go mod tidy (push) Successful in 37s
CI / Go vet (prod) (push) Successful in 2m20s
CI / Go vulnerabilities (push) Successful in 1m41s
CI / Go vet (dev) (push) Successful in 2m45s
CI / Staticcheck (prod) (push) Failing after 2m50s
CI / Staticcheck (dev) (push) Failing after 3m3s
CI / golangci-lint (push) Successful in 3m10s
CI / Security scan (prod) (push) Failing after 4m23s
CI / Security scan (dev) (push) Failing after 4m29s
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
- nginx-check: Alpine's nginx package includes /etc/nginx/conf.d at
  MAIN level and /etc/nginx/http.d at HTTP level. Use http.d so that
  proxy_cache_path, limit_req_zone, and server blocks are valid.
- golangci-lint: add --timeout 5m to prevent timeout on first run
  when Go module cache is cold and many deps must be downloaded
- frontend-deps-major: remove needs dependency so it runs in parallel
  with frontend-deps (provides visibility even when deps check fails)
2026-07-10 10:53:53 +01:00
popertots e0f072b593 ci: split dev/prod jobs, add non-blocking frontend major deps check
CI / Nginx config check (push) Failing after 12s
CI / Docker compose check (push) Successful in 17s
CI / Env docs check (push) Successful in 17s
CI / Frontend deps check (push) Failing after 23s
CI / Frontend major deps (warn only) (push) Has been skipped
CI / Knip (push) Has been skipped
CI / Frontend a11y check (push) Has been skipped
CI / Secrets scan (push) Successful in 37s
CI / Go build (push) Successful in 37s
CI / Frontend build (push) Successful in 1m10s
CI / Svelte strict check (push) Has been skipped
CI / Frontend QC (audit) (push) Has been skipped
CI / Frontend QC (typecheck) (push) Has been skipped
CI / Frontend QC (lint) (push) Has been skipped
CI / go mod tidy (push) Successful in 45s
CI / Go vet (prod) (push) Successful in 1m50s
CI / Go vet (dev) (push) Successful in 2m28s
CI / Staticcheck (prod) (push) Failing after 2m50s
CI / Go vulnerabilities (push) Successful in 2m40s
CI / Staticcheck (dev) (push) Failing after 3m53s
CI / golangci-lint (push) Failing after 3m58s
CI / Security scan (prod) (push) Failing after 4m21s
CI / Security scan (dev) (push) Failing after 4m21s
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
Split 3 multi-step jobs into separate dev and prod jobs for clearer
parallel execution:
  - go-vet → go-vet-dev + go-vet-prod
  - go-staticcheck → go-staticcheck-dev + go-staticcheck-prod
  - go-gosec → go-gosec-dev + go-gosec-prod

Each split job runs independently with its own setup and cache key.
Updated test/race needs to reference all split job names.

Added frontend-deps-major job (warn-only, exit 0):
  - Detects major/out-of-range npm updates (wanted !== latest)
  - Non-blocking informational check alongside the existing blocking
    frontend-deps job that catches in-range updates
2026-07-10 10:45:29 +01:00
popertots 2a0b81e565 ci: mkdir before cp for nginx config validation
CI / Nginx config check (push) Failing after 34s
CI / Docker compose check (push) Successful in 35s
CI / Env docs check (push) Successful in 36s
CI / Frontend deps check (push) Failing after 37s
CI / Knip (push) Has been skipped
CI / Frontend a11y check (push) Has been skipped
CI / Go build (push) Successful in 45s
CI / Secrets scan (push) Successful in 51s
CI / go mod tidy (push) Successful in 23s
CI / Frontend build (push) Successful in 1m39s
CI / Svelte strict check (push) Has been skipped
CI / Frontend QC (audit) (push) Has been skipped
CI / Frontend QC (typecheck) (push) Has been skipped
CI / Frontend QC (lint) (push) Has been skipped
CI / Go vulnerabilities (push) Successful in 1m12s
CI / Go vet (push) Successful in 1m46s
CI / Staticcheck (push) Failing after 2m2s
CI / golangci-lint (push) Successful in 2m19s
CI / Security scan (gosec) (push) Failing after 2m53s
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-10 10:37:59 +01:00
popertots 9e3c9323c3 ci: fix nginx config check cp path, add R2_ENDPOINT to .env.example
CI / Nginx config check (push) Failing after 11s
CI / Docker compose check (push) Successful in 11s
CI / Env docs check (push) Successful in 12s
CI / Frontend deps check (push) Failing after 24s
CI / Knip (push) Has been skipped
CI / Frontend a11y check (push) Has been skipped
CI / Secrets scan (push) Successful in 38s
CI / Go build (push) Successful in 39s
CI / go mod tidy (push) Successful in 21s
CI / Frontend build (push) Successful in 1m25s
CI / Svelte strict check (push) Has been skipped
CI / Frontend QC (audit) (push) Has been skipped
CI / Frontend QC (typecheck) (push) Has been skipped
CI / Frontend QC (lint) (push) Has been skipped
CI / Go vulnerabilities (push) Successful in 1m38s
CI / Go vet (push) Successful in 1m40s
CI / Staticcheck (push) Failing after 2m19s
CI / golangci-lint (push) Successful in 2m30s
CI / Security scan (gosec) (push) Failing after 2m51s
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
- nginx-check: cp needs trailing filename when copying to a directory
- .env.example: uncomment R2_ENDPOINT as an active variable so the
  env-docs-check script detects it as documented
2026-07-10 10:33:33 +01:00
popertots 3d5b9350bc ci: install git for gitleaks, use nginx default config for validation
CI / Docker compose check (push) Successful in 21s
CI / Frontend deps check (push) Failing after 22s
CI / Knip (push) Has been skipped
CI / Frontend a11y check (push) Has been skipped
CI / Nginx config check (push) Failing after 26s
CI / Env docs check (push) Failing after 26s
CI / Go build (push) Successful in 32s
CI / Secrets scan (push) Successful in 42s
CI / Frontend build (push) Successful in 59s
CI / Svelte strict check (push) Has been skipped
CI / Frontend QC (audit) (push) Has been skipped
CI / Frontend QC (typecheck) (push) Has been skipped
CI / go mod tidy (push) Successful in 22s
CI / Frontend QC (lint) (push) Has been skipped
CI / Go vulnerabilities (push) Successful in 1m29s
CI / Go vet (push) Successful in 1m45s
CI / Staticcheck (push) Failing after 2m1s
CI / golangci-lint (push) Successful in 2m12s
CI / Security scan (gosec) (push) Failing after 2m44s
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
- secrets-scan: install git before gitleaks (gitleaks needs git in PATH
  to scan the repository; the node:22-alpine3.21 container lacks it)
- nginx-check: copy site config into /etc/nginx/conf.d/ and use
  'nginx -t' with default config instead of constructing a custom one
  (avoids fastcgi_params resolution issues with relative includes)
2026-07-10 10:27:48 +01:00
popertots fbb8837981 ci: fix gitleaks module path, compose env file, and nginx limit_req_zone scope
CI / Nginx config check (push) Failing after 17s
CI / Docker compose check (push) Successful in 26s
CI / Env docs check (push) Failing after 26s
CI / Frontend deps check (push) Failing after 32s
CI / Knip (push) Has been skipped
CI / Frontend a11y check (push) Has been skipped
CI / Secrets scan (push) Failing after 40s
CI / Go build (push) Successful in 40s
CI / Frontend build (push) Successful in 1m7s
CI / go mod tidy (push) Successful in 22s
CI / Svelte strict check (push) Has been skipped
CI / Frontend QC (audit) (push) Has been skipped
CI / Frontend QC (typecheck) (push) Has been skipped
CI / Frontend QC (lint) (push) Has been skipped
CI / Go vulnerabilities (push) Successful in 1m16s
CI / Go vet (push) Successful in 2m8s
CI / Staticcheck (push) Failing after 2m12s
CI / golangci-lint (push) Successful in 2m19s
CI / Security scan (gosec) (push) Failing after 2m50s
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
- secrets-scan: gitleaks module path was renamed from
  github.com/gitleaks/gitleaks/v8 to github.com/zricethezav/gitleaks/v8
- docker-compose-check: create backend/.env from .env.example before
  running docker compose config (env file required by compose.yml)
- nginx: move limit_req_zone directives outside server block to http
  level, where nginx requires them
2026-07-10 10:22:32 +01:00
popertots d073172670 ci: fix infra failures — install go/python3/docker/nginx in job containers
CI / Secrets scan (push) Failing after 8s
CI / Nginx config check (push) Failing after 11s
CI / Docker compose check (push) Failing after 12s
CI / Env docs check (push) Failing after 12s
CI / Frontend deps check (push) Failing after 22s
CI / Knip (push) Has been skipped
CI / Frontend a11y check (push) Has been skipped
CI / Go build (push) Successful in 32s
CI / Frontend build (push) Successful in 50s
CI / Svelte strict check (push) Has been skipped
CI / Frontend QC (audit) (push) Has been skipped
CI / Frontend QC (typecheck) (push) Has been skipped
CI / Frontend QC (lint) (push) Has been skipped
CI / go mod tidy (push) Successful in 26s
CI / Go vulnerabilities (push) Successful in 1m2s
CI / Go vet (push) Successful in 1m41s
CI / Staticcheck (push) Failing after 2m2s
CI / golangci-lint (push) Successful in 2m8s
CI / Security scan (gosec) (push) Failing after 2m49s
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
Four CI jobs failed because the runner's node:22-alpine3.21 container
lacked required tooling (Go, Python3, Docker CLI, nginx):

- secrets-scan: add actions/setup-go@v5 before gitleaks install
- env-docs-check: apk add python3 before running check script
- docker-compose-check: apk add docker-cli docker-compose
- nginx-check: install nginx locally, validate with minimal config
2026-07-10 10:16:01 +01:00
popertotsandSisyphus cbede4c267 hooks: add staticcheck, gosec, go mod tidy, and gitleaks to pre-commit
CI / Nginx config check (push) Failing after 5s
CI / Env docs check (push) Failing after 6s
CI / Docker compose check (push) Failing after 6s
CI / Secrets scan (push) Failing after 7s
CI / Frontend deps check (push) Failing after 21s
CI / Knip (push) Has been skipped
CI / Frontend a11y check (push) Has been skipped
CI / Go build (push) Successful in 31s
CI / Frontend build (push) Successful in 53s
CI / go mod tidy (push) Successful in 18s
CI / Svelte strict check (push) Has been skipped
CI / Frontend QC (audit) (push) Has been skipped
CI / Frontend QC (typecheck) (push) Has been skipped
CI / Frontend QC (lint) (push) Has been skipped
CI / Go vulnerabilities (push) Successful in 1m0s
CI / Go vet (push) Successful in 1m40s
CI / Staticcheck (push) Failing after 1m54s
CI / golangci-lint (push) Successful in 2m6s
CI / Security scan (gosec) (push) Failing after 2m45s
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
Pre-commit now runs: prettier, eslint, go vet, staticcheck, gosec, go mod tidy check, and gitleaks (if installed). Matches the expanded CI pipeline. gitleaks is optional locally (skips gracefully if not installed).

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-07-10 09:58:44 +01:00
popertotsandSisyphus 9a96a7a8a1 ci: add prod-tag variants to staticcheck and gosec
CI / Docker compose check (push) Failing after 19s
CI / Env docs check (push) Failing after 20s
CI / Secrets scan (push) Failing after 20s
CI / Nginx config check (push) Failing after 21s
CI / Frontend deps check (push) Failing after 25s
CI / Go build (push) Successful in 26s
CI / Knip (push) Has been skipped
CI / Frontend a11y check (push) Has been skipped
CI / go mod tidy (push) Successful in 19s
CI / Frontend build (push) Successful in 1m24s
CI / Svelte strict check (push) Has been skipped
CI / Frontend QC (audit) (push) Has been skipped
CI / Frontend QC (typecheck) (push) Has been skipped
CI / Frontend QC (lint) (push) Has been skipped
CI / Go vulnerabilities (push) Successful in 1m19s
CI / Go vet (push) Successful in 2m38s
CI / Staticcheck (push) Failing after 2m39s
CI / golangci-lint (push) Successful in 2m40s
CI / Security scan (gosec) (push) Failing after 2m46s
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
Both tools now run under test,dev and test,!dev tags, matching go-vet pattern.

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-07-10 09:50:21 +01:00
popertotsandSisyphus f532b05e72 ci: set coverage threshold to 100%, govulncheck gated behind go-build
CI / Nginx config check (push) Failing after 5s
CI / Secrets scan (push) Failing after 6s
CI / Docker compose check (push) Failing after 6s
CI / Env docs check (push) Failing after 7s
CI / Frontend deps check (push) Failing after 21s
CI / Knip (push) Has been skipped
CI / Frontend a11y check (push) Has been skipped
CI / Go build (push) Successful in 26s
CI / go mod tidy (push) Successful in 17s
CI / Frontend build (push) Successful in 1m5s
CI / Svelte strict check (push) Has been skipped
CI / Frontend QC (audit) (push) Has been skipped
CI / Frontend QC (typecheck) (push) Has been skipped
CI / Frontend QC (lint) (push) Has been skipped
CI / Go vulnerabilities (push) Successful in 1m17s
CI / Go vet (push) Successful in 1m42s
CI / Staticcheck (push) Failing after 1m58s
CI / golangci-lint (push) Successful in 2m15s
CI / Security scan (gosec) (push) Failing after 2m48s
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
Coverage check now requires 100% (fail on any uncovered line).
govulncheck (vulns) now has needs: [go-build], placing it in the gate block alongside vet/lint/staticcheck/gosec.
Test and race already depended on vulns, so the chain is: go-build → gate jobs (incl vulns) → test+race.

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-07-10 09:44:47 +01:00
popertotsandSisyphus 5f95abf804 ci: add secrets scanning, staticcheck, gosec, coverage, env docs, compose/nginx validation, a11y
CI / Nginx config check (push) Failing after 7s
CI / Docker compose check (push) Failing after 7s
CI / Secrets scan (push) Failing after 7s
CI / Env docs check (push) Failing after 8s
CI / Frontend deps check (push) Failing after 23s
CI / Knip (push) Has been skipped
CI / Frontend a11y check (push) Has been skipped
CI / Go build (push) Successful in 37s
CI / Go vulnerabilities (push) Successful in 37s
CI / Frontend build (push) Successful in 1m1s
CI / go mod tidy (push) Successful in 24s
CI / Svelte strict check (push) Has been skipped
CI / Frontend QC (audit) (push) Has been skipped
CI / Frontend QC (typecheck) (push) Has been skipped
CI / Frontend QC (lint) (push) Has been skipped
CI / Go vet (push) Successful in 1m31s
CI / Staticcheck (push) Failing after 1m50s
CI / golangci-lint (push) Successful in 2m26s
CI / Security scan (gosec) (push) Failing after 2m38s
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
New jobs in pipeline:

secrets-scan: gitleaks detection
go-staticcheck: static analysis (complement to golangci-lint)
go-gosec: Go security linter
test: coverage profiling with 50% threshold gate
env-docs-check: verifies all env vars are documented in .env.example
docker-compose-check: validates compose.yml syntax
nginx-check: validates nginx config
frontend-a11y: Svelte a11y accessibility checks

Also: remove orphaned Makefile, update .env.example with 11 missing vars,
create .gitleaks.toml with allowlist, add check-env-docs.py script.

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-07-10 09:38:07 +01:00
popertotsandSisyphus 49ee167d69 chore: add missing env vars to .env.example
Add 11 previously undocumented env vars: TEST_DB_HOST, TEST_DB_DSN, GO_TESTING, SQUARE_WEBHOOK_NOTIFICATION_URL, DAV_BASE_URL, DAV_ADMIN_PASSWORD, NO_COLOR, VITE_BACKEND_URL, RUSTFS_*

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-07-10 09:31:28 +01:00
popertotsandSisyphus 0668438ab0 fix: knip clean — delete remaining dead map files, add knip config, unexport internal types
CI / Frontend deps check (push) Successful in 21s
CI / Go build (push) Successful in 36s
CI / Go vulnerabilities (push) Successful in 36s
CI / Frontend build (push) Successful in 53s
CI / Knip (push) Successful in 29s
CI / go mod tidy (push) Successful in 20s
CI / Frontend QC (audit) (push) Successful in 41s
CI / Go vet (push) Successful in 1m5s
CI / Frontend QC (typecheck) (push) Successful in 1m0s
CI / golangci-lint (push) Successful in 1m21s
CI / Frontend QC (lint) (push) Successful in 1m18s
CI / Tests (prod) (push) Successful in 1m39s
CI / Svelte strict check (push) Successful in 1m29s
CI / Tests (dev) (push) Successful in 1m59s
CI / Race (prod) (push) Successful in 3m26s
CI / Race (dev) (push) Successful in 4m55s
Delete 6 unused map components and use-map.svelte.ts hook.
Create knip.json to handle worker entry points and dynamic imports.
Unexport UserRole/DecodedToken types (only used internally).
Remove resolved ignoreDependencies entries.

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-07-09 19:45:14 +01:00
popertotsandSisyphus 407de74b51 fix: restore test-used functions, silence tx.Rollback closed errors, prune knip dead code
CI / Frontend deps check (push) Successful in 22s
CI / Go vulnerabilities (push) Successful in 32s
CI / Go build (push) Successful in 32s
CI / go mod tidy (push) Successful in 13s
CI / Knip (push) Failing after 33s
CI / Frontend build (push) Successful in 1m12s
CI / Svelte strict check (push) Has been skipped
CI / Frontend QC (audit) (push) Has been skipped
CI / Frontend QC (typecheck) (push) Has been skipped
CI / Frontend QC (lint) (push) Has been skipped
CI / Go vet (push) Successful in 57s
CI / golangci-lint (push) Successful in 1m8s
CI / Tests (prod) (push) Successful in 1m45s
CI / Tests (dev) (push) Successful in 2m5s
CI / Race (prod) (push) Successful in 3m27s
CI / Race (dev) (push) Successful in 4m52s
Restore processImage (images.go) and nonDepositPaymentType (handlers.go) with //nolint:unused — used in test files.
Fix 97 tx.Rollback defers to silently discard expected "tx is closed" error after commit.
Frontend: remove 44 unused shadcn-svelte files, 2 dead components, 9 stale npm deps, prune unused exports.

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-07-09 19:20:25 +01:00
popertotsandSisyphus 9e6c415cc4 fix: run go mod tidy to sync go.sum after golangci-lint changes
CI / Frontend deps check (push) Successful in 27s
CI / Go build (push) Successful in 36s
CI / Go vulnerabilities (push) Successful in 36s
CI / go mod tidy (push) Successful in 15s
CI / Frontend build (push) Successful in 1m10s
CI / Knip (push) Failing after 38s
CI / Svelte strict check (push) Has been skipped
CI / Frontend QC (audit) (push) Has been skipped
CI / Frontend QC (typecheck) (push) Has been skipped
CI / Frontend QC (lint) (push) Has been skipped
CI / Go vet (push) Failing after 51s
CI / golangci-lint (push) Successful in 1m7s
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
2 stale checksum entries removed.

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-07-09 18:54:01 +01:00
popertotsandSisyphus ed9cb1489c fix: resolve golangci-lint violations (errcheck, unused, gosimple, ineffassign)
errcheck: add proper error handling with slog.Error for tx.Rollback, key generation, and s3/dav operations. Add nolint comments for intentionally discarded DB scan errors and HTTP write errors.
unused: remove dead code (svcRow type, processImage, nonDepositPaymentType, generateSecureCode, colorBold, nGreen, nRed)
gosimple S1021: merge var declaration with assignment in manage.go
ineffassign: remove dead assignments in settings.go, till.go, images.go

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-07-09 18:53:51 +01:00
popertotsandSisyphus b26bf14419 ci: svelte strict check runs after typecheck QC, not before
CI / Frontend deps check (push) Successful in 28s
CI / Go build (push) Successful in 36s
CI / Go vulnerabilities (push) Successful in 37s
CI / go mod tidy (push) Failing after 12s
CI / Knip (push) Failing after 35s
CI / Frontend build (push) Successful in 1m15s
CI / Svelte strict check (push) Has been skipped
CI / Frontend QC (audit) (push) Has been skipped
CI / Frontend QC (typecheck) (push) Has been skipped
CI / Frontend QC (lint) (push) Has been skipped
CI / Go vet (push) Successful in 58s
CI / golangci-lint (push) Failing after 1m14s
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
frontend-svelte-strict now needs frontend-qc. QC gates on build+knip. Strict runs after QC completes.

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-07-09 18:05:20 +01:00
popertotsandSisyphus d272eb7cfe ci: restructure Go gate into separate jobs, add knip and svelte strict check
CI / Frontend deps check (push) Successful in 30s
CI / Go build (push) Successful in 34s
CI / Go vulnerabilities (push) Successful in 34s
CI / go mod tidy (push) Failing after 16s
CI / Frontend build (push) Successful in 1m22s
CI / Knip (push) Failing after 48s
CI / Go vet (push) Successful in 1m0s
CI / golangci-lint (push) Failing after 1m13s
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 40s
CI / Frontend QC (audit) (push) Has been skipped
CI / Frontend QC (typecheck) (push) Has been skipped
CI / Frontend QC (lint) (push) Has been skipped
Go: go-build gates three parallel jobs (go-vet, golangci-lint, go-mod-tidy) which gate test+race.
Frontend: add knip (between deps and QC) and svelte-check --fail-on-warnings (after build).
QC now gates on build, knip, and svelte strict.

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-07-09 18:03:04 +01:00
popertotsandSisyphus b11dee1c49 ci: add golangci-lint and go-mod-tidy to Go gate job
CI / Frontend deps check (push) Successful in 1m27s
CI / Frontend build (push) Successful in 1m25s
CI / Go vulnerabilities (push) Successful in 1m33s
CI / Go gate (push) Failing after 1m34s
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 / Frontend QC (audit) (push) Successful in 18s
CI / Frontend QC (typecheck) (push) Successful in 34s
CI / Frontend QC (lint) (push) Successful in 1m0s
Go gate now runs: build, vet(dev+prod), golangci-lint, and go mod tidy check. Test and race jobs depend on this gate + vulns.

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-07-09 17:57:37 +01:00
popertotsandSisyphus 53b0507148 ci: run frontend-deps and frontend-build in parallel, both gate QC
CI / Build & Vet (push) Successful in 1m16s
CI / Go vulnerabilities (push) Successful in 1m17s
CI / Frontend deps check (push) Successful in 1m15s
CI / Frontend build (push) Successful in 1m10s
CI / Frontend QC (audit) (push) Successful in 31s
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 / Frontend QC (typecheck) (push) Has been cancelled
CI / Frontend QC (lint) (push) Has been cancelled
frontend-deps (dep staleness check) and frontend-build now run concurrently. frontend-qc waits for both. Removed (gate) from build job name.

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-07-09 17:54:50 +01:00
popertotsandSisyphus 93883602d9 ci: extract frontend deps checks into separate gating job
CI / Frontend deps check (push) Successful in 39s
CI / Go vulnerabilities (push) Successful in 44s
CI / Build & Vet (push) Successful in 58s
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 / Frontend build (gate) (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
frontend-deps runs npm outdated + stale override checks as its own job. frontend-build waits for frontend-deps before starting, so stale deps stop the pipeline before build resources are consumed.

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-07-09 17:52:53 +01:00
popertotsandSisyphus 2604f9ab0d ci: add stale override detection to frontend build gate
CI / Go vulnerabilities (push) Successful in 47s
CI / Build & Vet (push) Successful in 1m2s
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 / Frontend build (gate) (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
Parses npm explain output for each overridden package. If the parent's required range already satisfies the override target, flags it as stale — dev must remove the override.

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-07-09 17:51:32 +01:00
popertotsandSisyphus 4b5d3640bb ci: add dependency staleness check to frontend build gate
CI / Go vulnerabilities (push) Successful in 1m3s
CI / Build & Vet (push) Successful in 1m36s
CI / Frontend build (gate) (push) Successful in 1m36s
CI / Frontend QC (audit) (push) Successful in 1m19s
CI / Frontend QC (typecheck) (push) Successful in 1m30s
CI / Tests (prod) (push) Successful in 1m59s
CI / Tests (dev) (push) Successful in 2m14s
CI / Race (prod) (push) Has been cancelled
CI / Race (dev) (push) Has been cancelled
CI / Frontend QC (lint) (push) Has been cancelled
After npm ci, runs npm outdated --json and fails if any in-range (current != wanted) updates exist. Developer must run npm update locally and commit the lockfile.

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-07-09 17:46:54 +01:00
popertotsandSisyphus 96410c9f18 chore: remove minimatch override (no longer needed), keep cookie override (SvelteKit pinned dep)
CI / Go vulnerabilities (push) Successful in 57s
CI / Build & Vet (push) Successful in 1m14s
CI / Frontend build (gate) (push) Successful in 1m2s
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 / Frontend QC (audit) (push) Has been cancelled
CI / Frontend QC (typecheck) (push) Has been cancelled
CI / Frontend QC (lint) (push) Has been cancelled
npm update resolved minimatch transitively. cookie still pinned via override because SvelteKit <= 2.69.2 depends on vulnerable cookie < 0.7.0.

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-07-09 17:44:34 +01:00
popertotsandSisyphus 914f9993ec ci: remove test/race timeouts, add concurrency cancel-in-progress, fix npm audit vulns
CI / Go vulnerabilities (push) Successful in 35s
CI / Build & Vet (push) Successful in 49s
CI / Frontend build (gate) (push) Successful in 57s
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 / Frontend QC (audit) (push) Has been cancelled
CI / Frontend QC (typecheck) (push) Has been cancelled
CI / Frontend QC (lint) (push) Has been cancelled
- Remove -timeout 180s/240s from go test and race commands
- Add concurrency group to cancel stale pipelines on new pushes
- Run npm update to bump Vite 7.3.5 -> 7.3.6, fixing nested esbuild vuln
- npm audit now at 0 vulnerabilities

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-07-09 17:43:13 +01:00
popertotsandSisyphus a17d6fd2e6 ci: fail npm audit on any vuln, not just high/critical
CI / Go vulnerabilities (push) Successful in 55s
CI / Build & Vet (push) Successful in 1m15s
CI / Frontend build (gate) (push) Successful in 1m21s
CI / Frontend QC (audit) (push) Failing after 40s
CI / Frontend QC (typecheck) (push) Successful in 1m44s
CI / Tests (prod) (push) Successful in 2m5s
CI / Frontend QC (lint) (push) Successful in 3m10s
CI / Tests (dev) (push) Successful in 3m17s
CI / Race (prod) (push) Successful in 3m55s
CI / Race (dev) (push) Successful in 5m44s
Change audit-level from high to info so low and moderate findings also fail the CI step.

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-07-09 17:35:23 +01:00
popertotsandSisyphus 29958620b6 ci: fix literal ${matrix.task} in step names (Gitea does not resolve them)
CI / Go vulnerabilities (push) Successful in 1m34s
CI / Build & Vet (push) Successful in 2m10s
CI / Frontend build (gate) (push) Successful in 1m59s
CI / Frontend QC (audit) (push) Successful in 55s
CI / Tests (prod) (push) Successful in 1m53s
CI / Frontend QC (typecheck) (push) Successful in 1m51s
CI / Tests (dev) (push) Successful in 2m19s
CI / Frontend QC (lint) (push) Successful in 2m43s
CI / Race (prod) (push) Successful in 3m51s
CI / Race (dev) (push) Failing after 6m44s
Replace with static names. Job names still use matrix templates (those work).

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-07-09 17:29:39 +01:00
popertotsandSisyphus 510828c924 chore: run go fix for Go 1.26 modernization
CI / Go vulnerabilities (push) Successful in 1m10s
CI / Build & Vet (push) Successful in 1m39s
CI / Frontend build (gate) (push) Successful in 1m42s
CI / Frontend QC (audit) (push) Successful in 56s
CI / Frontend QC (typecheck) (push) Successful in 1m36s
CI / Frontend QC (lint) (push) Successful in 1m51s
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
106 files: interface{}→any, strings.Split→SplitSeq, CutPrefix/Cut, strings.Builder, slices.Contains, remove redundant // +build directives, gofmt import ordering and indentation.

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-07-09 17:25:23 +01:00
popertotsandSisyphus ef26bd59e9 ci: fix go-version to 1.26 (no patch) and clean up step names
CI / Go vulnerabilities (push) Successful in 34s
CI / Build & Vet (push) Successful in 43s
CI / Frontend build (gate) (push) Successful in 54s
CI / Frontend QC (audit) (push) Successful in 1m4s
CI / Tests (prod) (push) Successful in 1m56s
CI / Tests (dev) (push) Successful in 1m55s
CI / Frontend QC (typecheck) (push) Successful in 2m38s
CI / Frontend QC (lint) (push) Successful in 2m41s
CI / Race (prod) (push) Successful in 5m8s
CI / Race (dev) (push) Successful in 6m58s
setup-go resolves '1.26' to latest patch (1.26.5). go.mod follows convention with minor version only. All CI steps now have descriptive names.

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-07-09 17:22:23 +01:00
popertotsandSisyphus c344d6c54d chore: upgrade Go from 1.25.7 to 1.26.5
CI / Go vulnerabilities (push) Failing after 54s
CI / Frontend build (gate) (push) Successful in 59s
CI / Build & Vet (push) Successful in 1m40s
CI / Frontend audit (push) Successful in 39s
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 / Frontend typecheck (push) Successful in 1m0s
CI / Frontend lint (push) Successful in 1m23s
Go 1.26.5 released Jul 7, 2026. Includes security fix for GO-2026-5856 (crypto/tls ECH leak). Updates: CI runner (4x setup-go), go.mod, README, obsidian docs.

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-07-09 17:11:49 +01:00
popertotsandSisyphus f59b7df97f ci: revert go-version to 1.25, add npm ci fallback in frontend QC jobs
CI / Go vulnerabilities (push) Successful in 33s
CI / Build & Vet (push) Successful in 43s
CI / Frontend build (gate) (push) Successful in 53s
CI / Frontend audit (push) Successful in 55s
CI / Frontend typecheck (push) Successful in 1m33s
CI / Tests (prod) (push) Successful in 2m9s
CI / Tests (dev) (push) Successful in 2m29s
CI / Frontend lint (push) Successful in 2m22s
CI / Race (prod) (push) Successful in 3m10s
CI / Race (dev) (push) Failing after 5m47s
1.25.12 unavailable in runner toolcache — revert to '1.25' which resolves to latest patch. The GO-2026-5856 vuln requires a Go patch release not yet available. Frontend QC jobs now run npm ci before their command since cache restore alone doesn't guarantee node_modules.

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-07-09 17:07:17 +01:00
popertotsandSisyphus 7fd74dc65e ci: bump Go from 1.25 to 1.25.12 to fix GO-2026-5856
CI / Build & Vet (push) Failing after 25s
CI / Frontend build (gate) (push) Successful in 45s
CI / Go vulnerabilities (push) Successful in 46s
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 / Frontend typecheck (push) Failing after 7s
CI / Frontend lint (push) Failing after 8s
CI / Frontend audit (push) Successful in 9s
govulncheck found crypto/tls vuln fixed in 1.25.12. Bump all 4 setup-go instances.

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-07-09 17:03:45 +01:00
popertotsandSisyphus 0a73c07f09 ci: split frontend into build gate then parallel typecheck/lint/audit
CI / Go vulnerabilities (push) Failing after 39s
CI / Build & Vet (push) Successful in 44s
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 / Frontend build (gate) (push) Successful in 55s
CI / Frontend typecheck (push) Failing after 10s
CI / Frontend lint (push) Failing after 12s
CI / Frontend audit (push) Successful in 13s
npm run build runs first as the gate. On success, typecheck, lint, and npm audit fire in parallel — all restoring node_modules from the build job's cache.

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-07-09 17:02:21 +01:00
popertotsandSisyphus e5f823eecd ci: gate test and race behind both vet and vulns
CI / Go vulnerabilities (push) Failing after 41s
CI / Build & Vet (push) Successful in 46s
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 / Frontend lint & types (push) Successful in 1m20s
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-07-09 16:58:18 +01:00
popertotsandSisyphus 8326b15e72 ci: split dev/prod test and race jobs into parallel matrix
CI / Go vulnerabilities (push) Successful in 36s
CI / Build & Vet (push) Successful in 46s
CI / Frontend lint & types (push) Successful in 2m13s
CI / Tests (prod) (push) Successful in 1m28s
CI / Tests (dev) (push) Successful in 2m2s
CI / Race (prod) (push) Successful in 3m8s
CI / Race (dev) (push) Successful in 4m44s
Extract Build & Vet into a separate gate job. Use matrix strategy for test and race jobs so dev and prod variants run concurrently after vet passes. Cache keys include label to avoid collisions.

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-07-07 00:15:25 +01:00
popertotsandSisyphus f4969645c4 chore: update CI, DB init, and documentation
CI / Go vulnerabilities (push) Successful in 37s
CI / Tests (push) Successful in 1m44s
CI / Frontend lint & types (push) Successful in 1m51s
CI / Race detector (push) Successful in 4m42s
Update CI workflow, PostgreSQL init script, README, and obsidian technical docs.

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-07-07 00:10:18 +01:00
popertotsandSisyphus 27be7cea91 refactor: wire centralized job scheduler and custom request logging in main.go
Replace inline cleanup goroutines and default chi logger with centralized jobs scheduler and custom colored request logger.

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-07-07 00:10:09 +01:00
popertotsandSisyphus e86248b27c refactor: move auth, GDPR, and booking cleanup to centralized scheduler
Convert CleanupRevokedJTIs to return (int, error) and remove StartJTICleanup goroutine. Add CleanupStaleLoginEntries and CleanupGDPRExportCache for centralized scheduler. Add clock.London timezone location.

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-07-07 00:10:00 +01:00
popertotsandSisyphus a4fa75154d refactor: centralize scheduling cleanup with row-count returns
Convert all scheduling cleanup functions to return (int, error). Remove inline cleanup calls from GetAvailableHours. Add scheduled-cleanup.go for centralized job wrappers.

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-07-07 00:09:51 +01:00
popertotsandSisyphus 6064a06b7d refactor: extract shared rate limiter types into ratelimit_shared.go
Move RateLimiter, ProgressiveRateLimiter, and cleanup functions to ratelimit_shared.go. Add dev and prod rate limiter tests. Remove inline cleanup goroutines.

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-07-07 00:09:43 +01:00
popertotsandSisyphus f78489ae00 feat: add logutil and jobs internal packages
Add centralized jobs scheduler and logutil package with ANSI colors and duration formatting.

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-07-07 00:09:34 +01:00
popertotsandSisyphus 72161e8c4f docs(backend): clarify auth fallback rationale in reserve handler
CI / Go vulnerabilities (push) Successful in 37s
CI / Tests (push) Successful in 1m33s
CI / Frontend lint & types (push) Successful in 1m46s
CI / Race detector (push) Successful in 3m38s
Expands inline comments to explain why the Bearer token fallback is deliberately kept — it serves 22+ test invocations that call ReserveSlotHandler directly without middleware, never executes in production, and acts as defense-in-depth.

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-07-06 19:22:08 +01:00
popertotsandSisyphus e303c07f8d refactor(backend): replace inline Bearer parsing with OptionalAuth middleware in services
Removes the inline Bearer token fallback in ServicesHandler — the OptionalAuth middleware (added to the public services route group in main.go) now handles auth context population. This eliminates duplicated token parsing logic and ensures consistent auth behavior across all routes.

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-07-06 19:22:00 +01:00
popertotsandSisyphus 92124158bf feat(frontend): add apiFetch wrapper for automatic auth token injection
Centralizes auth token management into a reusable apiFetch() helper and getAuthHeaders() utility, eliminating inline Bearer token logic across all frontend files.

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-07-06 19:21:34 +01:00
popertots e831953e5b fix(ui): improve reservation lifecycle in BookingFlow
- Release reservation on service change, date change, and step-back navigation
- Add synchronous double-click payment guard (isProcessingPaymentSync)
- Immutable update for confirmedBooking to prevent race-condition overcharge
- Generate fresh idempotency key per submission attempt (was reused across
  component lifetime, causing stale-booking illusion on re-submit)
- Release reservation after successful booking submission
- Extract releaseReservation() helper for DRY reservation cleanup
- Race-condition guard in selectTimeWithValidation: pass clicked time
  explicitly so stale validation can't clobber a newer selection
2026-07-06 17:58:14 +01:00
popertots 98d561e8b6 docs: update API docs and test counts for admin cancel
Update README and obsidian documentation with the new admin reservation
cancel endpoint (DELETE /api/admin/bookings/reserve), updated API route tables,
reservation TTL descriptions, and test count from 1,180 to 1,198.
2026-07-06 17:58:08 +01:00
popertots c2aa0b93cb feat(api): add admin reservation cancel endpoint
Add DELETE /api/admin/bookings/reserve to release admin walk-in/call-in reservations.

New handler AdminCancelReservationHandler targets only RESERVATION:admin:%
entries (partitioned from user RESERVATION:user:% by WHERE clause). Includes
12 tests covering walkin + callin success, isolation, no-op, unauth, empty ctx,
walkin+callin coexistence, anon untouched, response format parity, overlapping
reservations deleted, user reservations untouched, and idempotent double-cancel.

Inverse-isolation tests in cancel_reservation_test.go prove the user-side
DELETE /api/bookings/reserve does not touch admin or anon reservations.
2026-07-06 17:58:03 +01:00
popertotsandSisyphus 1c09e4220b fix: run eslint on every commit and restore gdpr navigation eslint-disable
CI / Go vulnerabilities (push) Successful in 29s
CI / Frontend lint & types (push) Successful in 1m37s
CI / Tests (push) Successful in 1m50s
CI / Race detector (push) Successful in 3m48s
Pre-commit hook now runs eslint on all frontend files regardless of what's staged, catching pre-existing issues. Restore the necessary eslint-disable in gdpr page for the async goto call.

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-07-05 22:43:48 +01:00
popertotsandSisyphus 878624e6f2 fix: resolve eslint warnings and error
CI / Go vulnerabilities (push) Successful in 59s
CI / Tests (push) Has been cancelled
CI / Race detector (push) Has been cancelled
CI / Frontend lint & types (push) Has been cancelled
Remove unused eslint-disable directives in BookingCreateModal and GDPR page. Rename isMobile to _isMobile to match allowed unused vars pattern.

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-07-05 22:39:55 +01:00
popertotsandSisyphus 27f1f6f5cc chore: add pre-commit hook with auto-format and lint checks
CI / Go vulnerabilities (push) Successful in 32s
CI / Tests (push) Successful in 1m34s
CI / Frontend lint & types (push) Failing after 1m46s
CI / Race detector (push) Successful in 4m4s
Pre-commit hook runs prettier --write on staged frontend files, re-stages them, then checks eslint and go vet. Blocks the commit if eslint or vet fails. Stored in .githooks/ (version controlled) — enable with: git config core.hooksPath .githooks

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

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-07-05 22:37:08 +01:00