✨ New Features
b817cab - ZPan v2.0 roadmap, architecture, and repo reset (commit by @saltbo)
c6f94dc - scaffold v2.0 monorepo with working auth flow (commit by @saltbo)
6b93794 - add project infrastructure — testing, CI, linting, logging (commit by @saltbo)
175c52a - fix CF Pages deployment and update project docs (commit by @saltbo)
6b27354 - add i18n infrastructure with react-i18next and en/zh locale files (PR #239 by @saltbo)
a151090 - add Better Auth organization + admin plugins (PR #241 by @saltbo)
b2e813d - add S3 service layer and path template engine (PR #243 by @saltbo)
b5362e1 - add user management API and org quota CRUD (PR #244 by @saltbo)
e5b4493 - implement admin user management UI with quota settings (PR #246 by @saltbo)
892a6fc - implement storage CRUD API with bucket pool selection (PR #249 by @saltbo)
9ec5e45 - add admin layout with storage management UI (PR #248 by @saltbo)
c0daf53 - server: implement system options CRUD API (PR #255 by @saltbo)
6f9260d - server: implement file CRUD API with presigned URLs (PR #260 by @saltbo)
53617e5 - web: implement trash page with restore, delete, and empty trash (PR #264 by @saltbo)
9216ff0 - web: add file preview system for images, PDF, code, audio, and video (PR #265 by @saltbo)
a8046c1 - web: add admin system settings page for site name and description (PR #270 by @saltbo)
f9a36e4 - web: integrate SVAR File Manager with upload flow (PR #266 by @saltbo)
e66c2e5 - web: complete i18n coverage for UI primitives (PR #268 by @saltbo)
efec832 - Dockerfile + docker-compose for Node.js deployment (PR #271 by @saltbo)
1620a2e - server: batch operations API for move, trash, delete (PR #272 by @saltbo)
cd764c0 - server: recycle bin API for matters (PR #273 by @saltbo)
2da0d14 - web: migrate to Hono RPC client, eliminate all raw fetch calls (commit by @saltbo)
67475be - replace SVAR with custom file manager, path-based navigation, sidebar folder tree (commit by @saltbo)
3a3364b - persist sort state in localStorage, add file search filter (commit by @saltbo)
6edad56 - enforce org storage quota on upload and copy (commit by @saltbo)
b73d7a0 - server: auto-migrate schema on Node platform boot (commit by @saltbo)
b059af1 - auth: pin activeOrganizationId on new sessions, tighten personal-org lookup (commit by @saltbo)
bce4da3 - quota: add default org quota with admin settings UI and db:reset script (commit by @saltbo)
3b2fe7f - admin: add storage capacity setting to storage form (PR #275 by @saltbo)
903f12b - admin: convert storage form dialog to right-side drawer (PR #276 by @saltbo)
5c453bc - settings: implement profile and appearance settings page (PR #277 by @saltbo)
🐛 Bug Fixes
0745bd0 - specify packageManager for CI pnpm setup (commit by @saltbo)
29d11e5 - add explicit @cloudflare/workers-types dependency (commit by @saltbo)
941e642 - commit routeTree.gen.ts for CI typecheck (commit by @saltbo)
c682995 - run drizzle-kit push before E2E tests in CI (commit by @saltbo)
729e64e - increase CF test timeout to 15s for CI runners (commit by @saltbo)
906799a - create dist/ before CF tests in CI (commit by @saltbo)
800c1f0 - switch to source-first internal package pattern (commit by @saltbo)
974e602 - web: fix 4 frontend bugs found during acceptance testing (commit by @saltbo)
c11714f - web: fix admin layout double header by skipping user layout on admin routes (commit by @saltbo)
b6bf841 - web: fix file upload, preview, and SVAR upload integration (commit by @saltbo)
3f02e0b - web: fix media preview by replacing vidstack with native HTML5 elements (commit by @saltbo)
97b1e00 - web: adapt preview dialog per file type (commit by @saltbo)
e008cbe - web: upgrade vidstack to 1.x and adapt preview per file type (commit by @saltbo)
e616a01 - web: image preview uses fullscreen lightbox, not dialog (commit by @saltbo)
48eb25a - web: hide SVAR sidebar tree and breadcrumb for cleaner integration (commit by @saltbo)
a990487 - web: keep SVAR breadcrumb for folder navigation (commit by @saltbo)
283b420 - web: update api tests for Hono RPC client headers (commit by @saltbo)
741b4af - change search from client-side to server-side global search (commit by @saltbo)
862e6be - search triggers on Enter key, not on every keystroke (commit by @saltbo)
85f91b4 - update e2e test for renamed sidebar items (My Files, Trash) (commit by @saltbo)
7173e45 - remove unused R2 bucket binding (commit by @saltbo)
ff1ad78 - auth: fail-fast on missing secret, align trustedOrigins across entries (commit by @saltbo)
1071f8a - auth: use native scrypt to bypass Cloudflare Workers CPU limit (commit by @saltbo)
4d0511b - deploy: isolate preview environment from production D1 (commit by @saltbo)
7124289 - auth: promote first user before INSERT so session reflects admin role (commit by @saltbo)
1462a76 - auth: throw on malformed stored password hash instead of returning false (commit by @saltbo)
e2ab579 - s3: replace DeleteObjectsCommand with per-key deletes for CF Workers compat (commit by @saltbo)
fa99b31 - ci: remove drizzle-kit push and add BETTER_AUTH_SECRET for E2E (commit by @saltbo)
e7c732c - docker: skip prepare script in prod deps stage (commit by @saltbo)
9ddcbba - docker: install build tools for better-sqlite3 native compilation (commit by @saltbo)
70d60c6 - docker: use separate prod deps stage with copied native binaries (commit by @saltbo)
a082a51 - ci: pass tag input to changelog action (commit by @saltbo)
♻️ Refactors
a8912c3 - redesign API routes to RESTful /api/objects (commit by @saltbo)
8623a17 - web: move lightbox logic into ImagePreview component (commit by @saltbo)
310e495 - flatten monorepo to single-package CF Pages Functions structure (commit by @saltbo)
d4b7891 - migrate raw SQL to Drizzle query builder in services and routes (commit by @saltbo)
952d6c3 - users: replace metadata-LIKE with slug lookup in listUsers (commit by @saltbo)
👷 Build System
e673fc6 - add release workflow for tag-triggered Docker + GitHub Release (commit by @saltbo)
🔧 Chores
Docker
docker pull ghcr.io/saltbo/zpan:v2.0.0