✨ New Features
🐛 Bug Fixes
d3d5015 - ci: fix E2E server startup in CI and increase dialog timeouts (commit by @saltbo)
a1621d6 - e2e: gracefully skip tests when storage is unavailable in CI (commit by @saltbo)
ab2a4c1 - e2e: seed storage in CI instead of skipping tests (commit by @saltbo)
015415b - e2e: use global setup to seed admin and storage before all tests (commit by @saltbo)
130adfe - e2e: add Origin header to global setup API calls (commit by @saltbo)
3f15a6a - e2e: eliminate all skipped tests with setup project and admin login (commit by @saltbo)
783eba8 - auth: read inviteCode from request body instead of additionalFields (commit by @saltbo)
92306ca - auth: store user ID instead of email in invite code usedBy (commit by @saltbo)
c324abd - auth: validate invite code in before hook, redeem in after hook (commit by @saltbo)
72218fe - exclude test files from TanStack Router route tree (commit by @saltbo)
61f4316 - resolve sidebar dark mode by unifying CSS variable system (PR #289 by @saltbo)
♻️ Refactors
6c1d7dc - e2e: replace test.skip with grep tags for device filtering (commit by @saltbo)
df32f35 - test: separate unit and integration tests (commit by @saltbo)
🔧 Chores
7b929fd - raise unit test coverage thresholds to 60% (commit by @saltbo)
a99b136 - add .claude/ and .tanstack/ to gitignore (commit by @saltbo)
b0f1d4f - regenerate routeTree after ignoring test files (commit by @saltbo)
Docker
docker pull ghcr.io/saltbo/zpan:v2.1.0