Skip to content

v2.7.0

Choose a tag to compare

@github-actions github-actions released this 06 Jun 23:32

💥 BREAKING CHANGES

  • due to 41f3e45 - enforce strict RESTful route conventions (commit by @saltbo):

    all listed API endpoints have changed paths or methods

  • due to 88e65b0 - replace /dl/:token with /r/:token unified redirect (v2.4.0 T3) (PR #318 by @saltbo):

    replace /dl/:token with /r/:token unified redirect (v2.4.0 T3) (#318)

✨ New Features

  • 6de9bbe - add ulink api for the feature editor save (commit by @saltbo)
  • dd7d28a - returns the matter for the create api (commit by @saltbo)
  • 98357f0 - user demo not allowed change password (commit by @saltbo)
  • 0a30c6a - add s3 path-style switch for the storage (commit by @saltbo)
  • 6e4eadc - add event worker for the vfs (commit by @saltbo)
  • 0e24e91 - add authz support by the opa (commit by @saltbo)
  • 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)
  • 3b80eff - migrate from CF Pages to Workers with one-click deploy button (commit by @saltbo)
  • a8f1154 - ci: run E2E tests on both Node and CF Workers runtimes (commit by @saltbo)
  • abba373 - deploy: auto-select staging env for non-production branch builds (commit by @saltbo)
  • c376f2e - ci: add Codecov coverage reporting and badge (commit by @saltbo)
  • bd26e54 - ui: add responsive layout for desktop, tablet, and mobile (commit by @saltbo)
  • 6352a8c - ui: adaptive mobile preview with bottom drawer per file type (commit by @saltbo)
  • e3b257e - e2e: add file preview tests with route mocking for S3 (commit by @saltbo)
  • da08b01 - auth: add better-auth username plugin (PR #279 by @saltbo)
  • 4b20e6b - add email service abstraction with SMTP and HTTP API drivers (PR #280 by @saltbo)
  • 97e30a5 - add invite code system for registration gating (PR #281 by @saltbo)
  • 4a5fbb7 - auth: add dynamic OAuth provider system (PR #282 by @saltbo)
  • 364cbc2 - auth: add registration mode control and email verification (PR #283 by @saltbo)
  • bd30514 - auth: sign-in/sign-up UI overhaul (PR #286 by @saltbo)
  • 8973453 - admin: add auth settings page for OAuth, invites, email, and registration mode (PR #287 by @saltbo)
  • e40ba07 - remove Name field from registration form (PR #291 by @saltbo)
  • 98059b2 - add organizationClient plugin to auth-client (PR #292 by @saltbo)
  • a22448c - add team RBAC middleware for org-level role enforcement (PR #293 by @saltbo)
  • f1604c7 - user public share homepage (/u/:username) (PR #294 by @saltbo)
  • 4f2364b - add team creation and management pages (PR #295 by @saltbo)
  • 7003b27 - add team members management page (PR #297 by @saltbo)
  • bfba5fa - add org switcher to sidebar header for workspace switching (PR #296 by @saltbo)
  • d503315 - add activity feed for team workspaces (PR #298 by @saltbo)
  • 878cdeb - team invitation via email and invite link (PR #302 by @saltbo)
  • cb7df2f - auto-generate username for OAuth sign-up users (commit by @saltbo)
  • e989e03 - show username field in settings profile (read-only) (commit by @saltbo)
  • 6e92204 - move OAuth buttons above email form, collapse form when >3 providers (commit by @saltbo)
  • 6c8f042 - auto-configure GitHub OAuth in db-reset seed script (commit by @saltbo)
  • b143b5e - 团队详情页 — 共享布局 + Tab 导航 + 索引路由 (PR #304 by @saltbo)
  • b277bb3 - ui: Google color palette + sidebar redesign (commit by @saltbo)
  • a842acd - brand: add cloud-cluster logo + favicon (commit by @saltbo)
  • de4938e - add shares schema, service layer, and lifecycle integration (PR #308 by @saltbo)
  • 2affe21 - shares: add save-to-drive — cross-workspace copy with quota and name conflict handling (PR #310 by @saltbo)
  • 2c8e2cc - v2.3.0 T1 — 站内信系统 (in-app notifications) (PR #307 by @saltbo)
  • 5bea716 - public share endpoints /s/:token, /dl/:token, folder browsing (v2.3.0 T4) (PR #309 by @saltbo)
  • d974ced - shares: authenticated CRUD API + notification dispatch (v2.3.0 T3) (PR #311 by @saltbo)
  • 72c08bd - add /shares dashboard with sidebar entry (PR #313 by @saltbo)
  • ecd87d4 - Share creation dialog (Landing/Direct) with file context menu (PR #314 by @saltbo)
  • 66b3ee3 - public share landing page /s/:token + Workers SSR OG meta (PR #312 by @saltbo)
  • 289fd2f - share: simplify password field to auto-generate switch (commit by @saltbo)
  • 733a693 - nav: move Shares above Trash and rename from Shared to Shares (commit by @saltbo)
  • 5625cf0 - share: redesign public share page (commit by @saltbo)
  • 3765a97 - layout: move notification bell to top-right header (commit by @saltbo)
  • 8a04824 - shares: refine share modes and dialog UX (commit by @saltbo)
  • acdfc02 - ui: unify page layout across Files/Shares/Trash/Teams/Settings (commit by @saltbo)
  • 2dca9d9 - db: image hosting schema, apiKey plugin, migration 0011 (v2.4.0 T1) (PR #315 by @saltbo)
  • 88e65b0 - ihost: replace /dl/:token with /r/:token unified redirect (v2.4.0 T3) (PR #318 by @saltbo)
  • 3e6d3ee - v2.4.0 T5 — /api/ihost/config + Cloudflare for SaaS integration (PR #316 by @saltbo)
  • b8f45f9 - ui: v2.4.0 T6 — Image Host sidebar entry + /image-host route + i18n (PR #319 by @saltbo)
  • 71fe485 - ihost: add host-based custom-domain middleware + path URL resolver (v2.4.0 T4) (PR #320 by @saltbo)
  • fcfb3ab - add Image Hosting settings page (T8) (PR #321 by @saltbo)
  • cb893eb - tool integration config generators — PicGo / uPic / ShareX / Flameshot (v2.4.0 T9) (PR #322 by @saltbo)
  • 28c16eb - Images API /api/ihost/images — two-stage + stream-proxy upload + CRUD (PR #317 by @saltbo)
  • 0137f00 - docker: add deploy variants and auto-generate auth secret (commit by @saltbo)
  • 9dbece4 - v2.4.0 T7 — Image Host gallery page (PR #324 by @saltbo)
  • 964d7dd - ihost: remove Flameshot tool integration (commit by @saltbo)
  • a61bb73 - ihost: support JSON base64 upload for uPic compatibility (commit by @saltbo)
  • 8005def - v2.5.0 T1 — libSQL (Turso) platform adapter + Docker Turso opt-in (PR #326 by @saltbo)
  • f3295d1 - avatar upload for Settings -> Profile (v2.5.0 T7) (PR #327 by @saltbo)
  • 5593eec - v2.5.0 T3 — Vercel deployment (entry + vercel.json + workflow + docs) (PR #328 by @saltbo)
  • b5be4c5 - v2.5.0 T2 — AWS Lambda deployment (entry + SAM + workflow + docs) (PR #331 by @saltbo)
  • 0f403f8 - v2.5.0 T4 — Netlify deployment target (PR #329 by @saltbo)
  • 8b72a7d - v2.5.0 T6 — Google Cloud Run deployment (service.yaml + workflow + docs) (PR #332 by @saltbo)
  • d33800f - Azure Functions deployment target (v4, Node 22) (PR #330 by @saltbo)
  • bcb0b67 - platform: add getBinding() for platform-native resources (commit by @saltbo)
  • 4f47a81 - image-upload: prefer R2 binding on Cloudflare, fall back to S3 (commit by @saltbo)
  • 8555451 - add licenseBinding table, migration 0013_licensing, and shared licensing types (PR #339 by @saltbo)
  • b9cea3e - licensing: v2.6 Z2 — Ed25519 verify + PUBLIC_KEYS + entitlement cache (PR #341 by @saltbo)
  • 86fab77 - licensing: cloud client + binding API (pair, poll, refresh, disconnect) (PR #343 by @saltbo)
  • c05bfc7 - v2.6 Z3 — ProBadge, UpgradeHint, useEntitlement frontend primitives (PR #342 by @saltbo)
  • d24c388 - add Settings → Billing page with pairing modal and bound/unbound states (PR #344 by @saltbo)
  • 29102e6 - v2.6 Z6 — 6h background entitlement refresh (PR #345 by @saltbo)
  • 1cbe926 - gate open registration behind Pro feature (Z8) (PR #347 by @saltbo)
  • c86c773 - v2.6 Z7 white-label branding (logo, favicon, wordmark, hide footer) (PR #346 by @saltbo)
  • de5ff92 - gate team creation at 3 orgs for community plan (teams_unlimited required for 4th) (PR #348 by @saltbo)
  • 3f2890c - retroactive gate — per-team storage quota Pro-only (Z10) (PR #349 by @saltbo)
  • 04f9d93 - v2.6 Z11 — production public key, Docker cron docs, release notes (PR #350 by @saltbo)
  • fa943ca - replace license_binding table with system_options keys (commit by @saltbo)
  • 79adf45 - add QR code and countdown timer to pairing modal (commit by @saltbo)
  • b179db9 - centralize Pro feature definitions into a single registry (commit by @saltbo)
  • fb3b15a - admin: redesign settings and rename auth to oauth (commit by @saltbo)
  • 736d7c8 - admin: refine pro-gated settings UI (commit by @saltbo)
  • c4fc8c9 - admin: add site invitation signup flow (commit by @saltbo)
  • d7f1ceb - licensing: adjust free plan limits (commit by @saltbo)
  • bf83be3 - admin: add audit logs placeholder (commit by @saltbo)
  • ec9cc0b - admin: add announcement placeholder (commit by @saltbo)
  • d75d7e5 - email: add cloudflare worker mail service toggle (commit by @saltbo)
  • f0e7af2 - licensing: redesign Pro license binding (commit by @saltbo)
  • 57cc834 - share: redesign access page preview (commit by @saltbo)
  • 4537bfa - preview: add microsoft office viewer (commit by @saltbo)
  • c532f28 - preview: improve file preview controls (commit by @saltbo)
  • 8b67eec - upload: add multi-file upload progress queue (commit by @saltbo)
  • 3321ac9 - music: add music player component and integration (commit by @saltbo)
  • 6314717 - announcements: add site announcement management (commit by @saltbo)
  • 8f4d55d - show oauth provider icons (commit by @saltbo)
  • 7d81ef2 - implement admin audit logs (PR #355 by @saltbo)
  • 1b734c0 - expand audit event coverage across all state-changing operations (PR #357 by @saltbo)
  • cce398a - admin: streamline overview dashboard (commit by @saltbo)
  • 41877d3 - add quota store backend (PR #361 by @saltbo)
  • 8a185c4 - add quota store UI (PR #363 by @saltbo)
  • 5eac0f4 - branding: add pro theme settings (PR #362 by @saltbo)
  • 2363ca1 - manage quota store redemption codes (commit by @saltbo)
  • ec832b0 - storage: refine storage plan experience (commit by @saltbo)
  • 3a88c17 - add monthly traffic quotas (commit by @saltbo)
  • df2e2a8 - manage Cloud storage packages (commit by @saltbo)
  • bf0bf99 - separate storage code revoke and delete (commit by @saltbo)
  • be58015 - quota-store: support store reversal delivery (commit by @saltbo)
  • 9cabe3c - align Storage Plans with combined package model (commit by @saltbo)
  • bf8a4f5 - add quota entitlements (PR #383 by @saltbo)
  • 52a8dc4 - clarify storage plans and traffic metering UI (PR #385 by @saltbo)
  • 25416a5 - quota: support plan and extra entitlement quotas (commit by @saltbo)
  • 58d94c3 - cloud-store: accept opaque store deliveries (commit by @saltbo)
  • 0b2e7d4 - store: support subscription and fixed quota packages (commit by @saltbo)
  • 1ebc46f - store: manage workspace subscription plans (commit by @saltbo)
  • 25c4a3c - billing: configure traffic overage price on plans (commit by @saltbo)
  • ae3f368 - billing: configure per-currency metered plan pricing (commit by @saltbo)
  • 46cacc0 - storage: redesign plan catalog (commit by @saltbo)
  • 0f0ea65 - storage: allow metered traffic overage (commit by @saltbo)
  • 73a592c - pro: tighten gates and unify upgrade prompts (commit by @saltbo)
  • a31ee34 - admin: add cloud order details drawer (commit by @saltbo)
  • 2053b84 - add background job foundation (PR #388 by @saltbo)
  • efb9239 - add WebDAV API-key protocol routes (PR #390 by @saltbo)
  • 0694d55 - add local archive background jobs (commit by @saltbo)
  • ddbda7c - add background tasks page (commit by @saltbo)
  • 85cd399 - add user-bound WebDAV app passwords (commit by @saltbo)
  • 9557f4d - harden WebDAV client compatibility (commit by @saltbo)
  • e41ea3f - webdav: add RFC 4918 Class 2 support (PR #398 by @saltbo)
  • fdb61c2 - add captcha protection for authentication (PR #400 by @saltbo)
  • 2438275 - archive: queue streaming archive jobs (commit by @saltbo)
  • f5e142c - files: support folder uploads (commit by @saltbo)
  • f45e873 - integrate cloud credits store flow (commit by @saltbo)
  • dd1d237 - store: add credits package management (commit by @saltbo)
  • 7f85da2 - quota: consolidate storage entitlements (commit by @saltbo)
  • 1ff6d13 - billing: meter storage egress with credits (commit by @saltbo)
  • 53076d7 - downloads: add remote download workers (commit by @saltbo)
  • f698e5a - downloads: show normalized task details (commit by @saltbo)
  • 948fc0b - downloads: redesign task inspector (commit by @saltbo)
  • cf3324b - downloads: preserve directory uploads (commit by @saltbo)
  • c9e0a9b - downloads: retain bt seeds after upload (commit by @saltbo)
  • 1b4f149 - downloads: stream normalized task details (commit by @saltbo)
  • 6276530 - auth: unify api key management (commit by @saltbo)
  • 9f9d895 - downloads: improve task panel layout (commit by @saltbo)
  • 94dada7 - downloads: add task actions and classification (commit by @saltbo)
  • 4dcbab5 - downloads: improve task controls and metadata (commit by @saltbo)
  • f5c247f - downloader: persist retained seed policy (commit by @saltbo)
  • c19cbbf - downloader: auto bootstrap device login (commit by @saltbo)
  • 9486360 - cli: promote downloader to zpan command (commit by @saltbo)
  • dd66ed4 - cli: allow config init server url (commit by @saltbo)
  • b27f7f8 - downloads: improve download table controls (commit by @saltbo)
  • 1260452 - downloads: report peer geo regions (commit by @saltbo)

🐛 Bug Fixes

  • 2958950 - update the jwt package (commit by @saltbo)
  • 9211e04 - none content-type for somefile (commit by @saltbo)
  • 65ccdb6 - lose region for the minio #127 (commit by @saltbo)
  • 72db8df - error for the unit test (commit by @saltbo)
  • 02302cc - storage update error (PR #140 by @2hxst)
  • 5771c78 - update the $RAW_EXT builder #174 (PR #185 by @saltbo)
  • 3cad047 - add share matter api (commit by @saltbo)
  • 4adf165 - update the condition of matter expire (commit by @saltbo)
  • ee13d64 - error list for the matter (commit by @saltbo)
  • b05f992 - error for the unit test (commit by @saltbo)
  • 1546faa - embed the file authz.rego (PR #193 by @saltbo)
  • 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)
  • 41d103d - deploy: separate vars from secrets in deploy button form (commit by @saltbo)
  • 5d7f358 - deploy: remove vars from top-level wrangler config to avoid local dev conflict (commit by @saltbo)
  • 5464522 - deploy: remove placeholder secret value from .dev.vars.example (commit by @saltbo)
  • 575c10c - ci: provide fallback BETTER_AUTH_SECRET in bootstrap cf-test (commit by @saltbo)
  • ad69c38 - auth: infer baseURL and trustedOrigins from request when not configured (commit by @saltbo)
  • fa50adf - ci: add .node-version for Workers Builds (commit by @saltbo)
  • 0e30c47 - workers: upgrade to nodejs_compat_v2 for full Node API support (commit by @saltbo)
  • 9b1cde6 - e2e: use --mode node for Vite in Playwright to skip cloudflare plugin (commit by @saltbo)
  • a8b8f57 - ci: apply D1 migrations before CF Workers E2E tests (commit by @saltbo)
  • 388b200 - deploy: use preview_database_id for preview D1 binding (commit by @saltbo)
  • 4768c13 - deploy: add assets directory and restore [env.staging] for preview D1 (commit by @saltbo)
  • 3ec4cdd - deploy: use CLOUDFLARE_ENV for staging builds instead of --env flag (commit by @saltbo)
  • 2ed2a67 - dev: use staging D1 for local CF Workers development (commit by @saltbo)
  • de57120 - deploy: remove name override from staging env (commit by @saltbo)
  • c25dece - docs: use reviewer account for public staging credentials (commit by @saltbo)
  • 7d5d0a5 - ui: add tw-animate-css for shadcn animation support and tune sheet speed (commit by @saltbo)
  • 33ca372 - dev: fix D1 local database name and add db:migrate:d1 script (commit by @saltbo)
  • c70b684 - ci: enable coverage generation and fix Codecov upload path (commit by @saltbo)
  • 727ddeb - ui: clean up pointer-events on sidebar unmount (commit by @saltbo)
  • 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)
  • 0d4cdda - move Teams entry from sidebar nav to avatar dropdown menu (PR #299 by @saltbo)
  • 977c7a1 - 团队列表过滤、成员数、创建后切换 (PR #300 by @saltbo)
  • 027667f - rename duplicate migration 0007 to 0008 (commit by @saltbo)
  • d5517f3 - ci: align username signup test with generated usernames (commit by @saltbo)
  • 960eab3 - teams breadcrumb + settings password tab split (PR #306 by @saltbo)
  • 50c92d6 - files: enforce unique names + Finder-style conflict resolver (commit by @saltbo)
  • b310145 - migrations: correct 0010/0011 timestamps; add CLAUDE.md rules (commit by @saltbo)
  • f215439 - v2.3.0: save-to-drive crash, media preview, share dialog polish (commit by @saltbo)
  • 6bf8ecc - share: return 403 instead of 401 on wrong share password (commit by @saltbo)
  • 630e8c9 - config: add path aliases to root tsconfig.json for shadcn CLI (commit by @saltbo)
  • 4a92aed - share: dedupe public view counting (commit by @saltbo)
  • f0f3769 - e2e: stabilize responsive playwright coverage (commit by @saltbo)
  • 8e079ab - auth: create personal org during sign-up and set activeOrganizationId (commit by @saltbo)
  • 6e14fd6 - multipart upload 500, presign 413, API key permissions, and org slug check (commit by @saltbo)
  • 9188953 - test: add missing action field in CF objects PATCH test (commit by @saltbo)
  • 31fc067 - ihost: add getPreviewFile to image host data source (commit by @saltbo)
  • 2c36c2c - ihost: filter draft images from listing and bypass referer check for same-origin (commit by @saltbo)
  • 6580eaa - ihost: include origin in copied image URLs (commit by @saltbo)
  • a21f850 - ihost: fix broken tool integration configs for PicGo, uPic, ShareX (commit by @saltbo)
  • 8edd9dd - ihost: redesign PicGo and uPic tool configs for GUI field entry (commit by @saltbo)
  • 34a2e83 - ihost: handle uPic validate and infer MIME from file extension (commit by @saltbo)
  • d4be0d0 - ihost: allow empty referer, add JSON path field, set rate limits (commit by @saltbo)
  • 01b4a22 - ihost: update CF test for JSON upload support (commit by @saltbo)
  • c41dd20 - ihost: move enable button from image-host page to settings (commit by @saltbo)
  • 2aa6ab4 - ci: use --json flag for wrangler d1/secret list commands (commit by @saltbo)
  • ed1bebe - ci: add build step before wrangler deploy (commit by @saltbo)
  • 93c5e77 - ci: use --format json for wrangler secret list (commit by @saltbo)
  • 14069fa - use Docker Hub image for RustFS (rustfs/rustfs) (commit by @saltbo)
  • a575e05 - docker: resolve 404 on port 8222 and simplify build (commit by @saltbo)
  • 0883051 - ci: drop unsupported --json from wrangler d1 create (commit by @saltbo)
  • 2656970 - ci: deploy from vite-plugin output instead of repo root (commit by @saltbo)
  • 05e5e17 - settings: add missing avatar i18n keys + unify visual design across tabs (PR #334 by @saltbo)
  • 95a6872 - cf-deploy: use R2 REST API for bucket ensure (wrangler lacks --json) (commit by @saltbo)
  • 0adaac8 - cf-deploy: run wrangler from repo root, not dist/zpan (commit by @saltbo)
  • 76645d4 - align licensing client with zpan-cloud API contract (commit by @saltbo)
  • 134d325 - update cloud public key for production keypair (commit by @saltbo)
  • 784b54a - move billing page from user settings to admin panel (commit by @saltbo)
  • 7cb8560 - remove QR code, keep countdown timer in pairing modal (commit by @saltbo)
  • 45b623e - reject invalid cloud refresh certificates (commit by @saltbo)
  • 4872f97 - align licensing pairing with cloud certificates (commit by @saltbo)
  • 8fcd677 - admin: reorder users page actions (commit by @saltbo)
  • 2657724 - e2e: stabilize admin and site invitation flows (commit by @saltbo)
  • 115aa4a - test: correct teams upgrade hint scenario (commit by @saltbo)
  • 7b9206f - test: stabilize cloudflare storages coverage (commit by @saltbo)
  • 69bc492 - cf: remove email sender allowlist (commit by @saltbo)
  • d28dbe7 - email: require explicit provider selection (commit by @saltbo)
  • 7c7ab03 - files: improve grid file icons (commit by @saltbo)
  • 54d9d6a - e2e: prevent music popover from blocking CI (commit by @saltbo)
  • ad4bff0 - announcements: describe announcement dialogs (commit by @saltbo)
  • fecff6d - announcements: use full markdown editor (commit by @saltbo)
  • 65b0c50 - announcements: simplify publishing controls (commit by @saltbo)
  • 95254c1 - announcements: align pinned form field (commit by @saltbo)
  • ff5ef9b - announcements: highlight pinned items (commit by @saltbo)
  • 4518507 - admin: align settings actions and user pagination (commit by @saltbo)
  • db166f3 - admin: support quota units (commit by @saltbo)
  • e15334e - admin: show user quota and avatars (commit by @saltbo)
  • 13ff831 - admin: prevent user table overflow (commit by @saltbo)
  • 5632cbb - use pro binding auth for quota store (PR #367 by @saltbo)
  • da62c9e - enforce monthly traffic on download URL issuance (commit by @saltbo)
  • 9908953 - drop local quota store package table (commit by @saltbo)
  • 88f6e22 - traffic: sync cloud usage in background (commit by @saltbo)
  • 3363c4e - storage: distinguish product cards (commit by @saltbo)
  • 7cfe929 - store: use unified delivery webhook route (commit by @saltbo)
  • 0c36b73 - store: avoid d1 transaction for cloud webhooks (commit by @saltbo)
  • 5830da0 - store: detect d1 webhook conflicts (commit by @saltbo)
  • 4a22044 - store: use d1 batch for webhook transaction (commit by @saltbo)
  • b6c20d7 - db: wrap multi-write flows in transactions (commit by @saltbo)
  • 14a0723 - cloud: keep staging e2e licenses isolated (commit by @saltbo)
  • b9386e1 - cloud: unbind license through cloud first (commit by @saltbo)
  • d9d17e7 - billing: avoid premature pairing expiry (commit by @saltbo)
  • d8139b1 - cloud: use billing store endpoints (commit by @saltbo)
  • 07caccd - admin: keep pro badges and theme colors in sync (commit by @saltbo)
  • cc60d2f - cloud-store: send consumer id to cloud (commit by @saltbo)
  • 0de620d - cloud-store: align customer fields with cloud (commit by @saltbo)
  • 8c9dcfd - cloud-store: use wallet balances endpoint (commit by @saltbo)
  • 42a676f - ui: show total storage in sidebar quota panel (commit by @saltbo)
  • d2f4e1b - storage: route checkout through redirect page (commit by @saltbo)
  • 1b852a3 - storage: render checkout redirect route (commit by @saltbo)
  • 284101e - storage: move checkout redirect outside app layout (commit by @saltbo)
  • 7029ef4 - admin: adjust storage plan table layout (commit by @saltbo)
  • a0022a3 - cloud-store: accept paged gift card create responses (commit by @saltbo)
  • 736fd00 - cloud-store: use paged gift card create response (commit by @saltbo)
  • 0c070d8 - cloud-store: align gift cards with cloud model (commit by @saltbo)
  • 95b4872 - admin: mask gift card codes in table (commit by @saltbo)
  • 0795867 - cloud-store: read order item deliverables (commit by @saltbo)
  • e82f868 - cloud-store: read order deliverable quotas (commit by @saltbo)
  • d143fc6 - storage: constrain order history dialog height (commit by @saltbo)
  • c218f90 - webdav: make preview auth and locks D1-safe (PR #399 by @saltbo)
  • ba0f27e - webdav: stream file transfers (commit by @saltbo)
  • 81a1aef - webdav: align range and proppatch semantics (commit by @saltbo)
  • c3596a6 - webdav: honor date conditions and overwrite status (commit by @saltbo)
  • dc5a812 - webdav: add access logs for transfer debugging (commit by @saltbo)
  • ea27161 - webdav: unblock worker streaming transfers (commit by @saltbo)
  • bdd2d52 - webdav: read ahead for mounted media ranges (commit by @saltbo)
  • d5b56b2 - webdav: bypass cache hits for mounted media (commit by @saltbo)
  • 8560b1b - webdav: support unknown length streaming PUT (commit by @saltbo)
  • 4079fae - webdav: avoid mounted media cache validators (commit by @saltbo)
  • 46080f3 - webdav: serve media ranges exactly (commit by @saltbo)
  • 2042419 - webdav: preserve stream content length (commit by @saltbo)
  • dfeca7c - webdav: wrap ranged streams by length (commit by @saltbo)
  • b4401e1 - webdav: normalize mount root slashes (commit by @saltbo)
  • c16523d - webdav: redirect bare mount path (commit by @saltbo)
  • ccf13ea - webdav: route bare dav path to worker (commit by @saltbo)
  • cecc610 - webdav: handle fixed stream cancellation (commit by @saltbo)
  • 78500bc - webdav: tolerate stream cancellation cleanup (commit by @saltbo)
  • c444d21 - webdav: stream multipart byte ranges (commit by @saltbo)
  • 2b69a02 - webdav: speed up small fixed-length uploads (commit by @saltbo)
  • 8b45c62 - use better auth captcha providers (PR #401 by @saltbo)
  • ef4a105 - archive: persist streaming task progress (commit by @saltbo)
  • f869eeb - s3: apply customHost to presigned upload, download, and inline URLs (commit by @saltbo)
  • f3972c2 - s3: handle missing customHost scheme and remove bucket name from path (commit by @saltbo)
  • a68075f - preview: prevent layout jitter by hiding overflow for audio and video (commit by @saltbo)
  • 8d4e51e - preview: support MKV playback by letting browser sniff mime type natively (commit by @saltbo)
  • bfa7de5 - preview: display friendly error fallback on media playback failure (commit by @saltbo)
  • 60b4dbf - preview: proactively detect unsupported video extensions to show error UI immediately (commit by @saltbo)
  • 399f932 - s3: conform to RFC 6266 for ResponseContentDisposition filename encoding (commit by @saltbo)
  • f65139f - s3: set Content-Disposition metadata on objects during S3 direct upload for custom domains (commit by @saltbo)
  • c0c6a27 - s3: bypass customHost in presignUpload to support S3 PUT uploads on R2 custom domains (commit by @saltbo)
  • 9087868 - align store pricing with USD contract (commit by @saltbo)
  • a28040c - use browser AWS runtime in worker build (commit by @saltbo)
  • c3864c1 - store: use updated cloud sdk pricing contract (commit by @saltbo)
  • 38adeb4 - store: align storage credits storefront (commit by @saltbo)
  • e88b52b - store: accept zero credit gift cards (commit by @saltbo)
  • 4a54f2d - e2e: stabilize cloud pairing slots (commit by @saltbo)
  • cf12806 - e2e: clean cloud license slots (commit by @saltbo)
  • 9e2ae06 - downloader: finish aria2 bt downloads after seeding (commit by @saltbo)
  • 41d097d - downloader: normalize login heartbeat engine (commit by @saltbo)
  • 0744b47 - downloader: send fixed length uploads (commit by @saltbo)
  • 8762eb0 - downloader: send signed upload headers (commit by @saltbo)
  • 912042e - downloader: reconnect aria2 rpc (commit by @saltbo)
  • 7612d58 - downloads: compact task inspector layout (commit by @saltbo)
  • 0305d73 - downloads: simplify compact task list (commit by @saltbo)
  • cd3a3a7 - downloader: report aria2 peer samples (commit by @saltbo)
  • 754d1aa - downloads: separate storage and peer upload metrics (commit by @saltbo)
  • 81c0627 - constrain credits dialog height (commit by @saltbo)
  • aef07c1 - decouple cloud store page loading (commit by @saltbo)
  • dbd4755 - downloads: prevent table sorting lockup (commit by @saltbo)
  • 44632c4 - downloads: refine task table layout (commit by @saltbo)
  • b604271 - downloader: report aria2 eta (commit by @saltbo)
  • e1fd510 - downloader: rename conflicting uploads (commit by @saltbo)
  • a8622d6 - downloader: normalize torrent upload results (commit by @saltbo)
  • 52dc621 - objects: avoid LIKE patterns for folder descendants (commit by @saltbo)
  • 655b58d - downloader: acknowledge stopped cancel controls (commit by @saltbo)
  • d6a368c - downloader: multipart upload large results (commit by @saltbo)
  • 4ec2072 - storage: avoid sdk xml parser for multipart (commit by @saltbo)
  • 83d26e9 - storage: surface multipart complete failures (commit by @saltbo)
  • b5154e7 - storage: presign multipart complete without body (commit by @saltbo)
  • b05bf4f - downloads: normalize target folder paths (commit by @saltbo)
  • 121d447 - files: move folder upload into upload menu (commit by @saltbo)
  • 3c9e1bf - webdav: stabilize propfind directory listings (commit by @saltbo)
  • 0b3bc2d - api-keys: return 429 for rate-limited keys (commit by @saltbo)
  • 08a3d5c - downloader: stabilize aria2 live downloads (commit by @saltbo)
  • 780d487 - downloader: reuse aria2 magnet tasks by infohash (commit by @saltbo)
  • 1d5926d - downloader: recover completed downloads before rerun (commit by @saltbo)
  • 2bf5ce6 - downloader: report aria2 file paths relative to task (commit by @saltbo)
  • 6ba1f16 - downloader: preserve retry recovery checkpoints (commit by @saltbo)
  • 2ed46ea - downloader: exit cleanly on shutdown (commit by @saltbo)
  • 6fbad55 - downloader: report resumable state on shutdown (commit by @saltbo)
  • 4864896 - downloader: isolate managed engine signals (commit by @saltbo)
  • 86c9e79 - downloader: mark shutdown tasks paused (commit by @saltbo)
  • 9dd3ca0 - downloader: separate interrupted task recovery (commit by @saltbo)
  • 031c568 - downloader: keep task upload tokens stable (commit by @saltbo)
  • e113c6c - downloader: clean recovered torrent runtime (commit by @saltbo)
  • 09a1f25 - downloader: trim torrent root from reported files (commit by @saltbo)
  • e025313 - downloader: persist completed aria2 seeds (commit by @saltbo)
  • 647fcb6 - downloads: normalize migrated task runtime (commit by @saltbo)
  • d8daba2 - downloader: restore aria2 seeds after restart (commit by @saltbo)
  • 65eb5d9 - downloader: reset runtime on task restart (commit by @saltbo)
  • a5c5cee - cli: avoid probing unmanaged runtimes in auto mode (commit by @saltbo)
  • ce170cb - cli: keep auth token in global config (commit by @saltbo)
  • ebe0e42 - downloader: stabilize docker runtime validation (commit by @saltbo)
  • bc3ef9f - downloads: use standard geoip data paths (commit by @saltbo)
  • c1fa89e - downloads: align docker geoip path (commit by @saltbo)
  • 155dcd8 - downloads: refine detail panel presentation (commit by @saltbo)
  • 978e89d - downloads: refine peer geo and log timeline (commit by @saltbo)
  • 219b620 - downloads: show active transfer progress (commit by @saltbo)
  • eae0cad - downloads: reorder log timeline header (commit by @saltbo)
  • 4f15956 - quota: reconcile storage usage after purge (commit by @saltbo)
  • 76f9e01 - traffic: meter webdav downloads (commit by @saltbo)
  • 1bd9053 - trash: list nested trashed roots (commit by @saltbo)
  • be8e029 - ui: truncate long page breadcrumbs (commit by @saltbo)
  • 24e88e1 - files: show batch progress in dialogs (commit by @saltbo)
  • 976590a - files: show batch operation failure details (commit by @saltbo)
  • 9fe0bb3 - downloader: make aria2 reset idempotent (commit by @saltbo)
  • 619d5dc - downloader: merge task runtime patch updates (commit by @saltbo)
  • 00f42e7 - downloader: ignore stale seed progress after restart (commit by @saltbo)
  • 4579efd - downloader: clear eta after transfer completion (commit by @saltbo)
  • 71af982 - downloader: store runtime updates as snapshots (commit by @saltbo)
  • 47c0af9 - downloader: clear seeding phase on shutdown (commit by @saltbo)

♻️ Refactors

  • 057ad8e - add GET into the cors allowMethods (commit by @saltbo)
  • 76fca8a - update the codes by the clean arch (PR #184 by @saltbo)
  • f817177 - auto append a suffix if matter exist (commit by @saltbo)
  • c06eed7 - remove the dependency between dao and repo (commit by @saltbo)
  • 78e0178 - reimplement the user storage quota calc (commit by @saltbo)
  • 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)
  • 4f9483b - deploy: flatten wrangler config and rename preview to staging (commit by @saltbo)
  • 877ef9d - deploy: inline staging env detection into npm build script (commit by @saltbo)
  • 689d9cc - remove custom filePath, enforce tenant-isolated storage path (PR #278 by @saltbo)
  • 6c1d7dc - e2e: replace test.skip with grep tags for device filtering (commit by @saltbo)
  • df32f35 - test: separate unit and integration tests (commit by @saltbo)
  • 060a8fd - remove isPublic from matters, simplify user share homepage (PR #301 by @saltbo)
  • a428c1e - split /settings into sub-pages with Tab navigation (PR #305 by @saltbo)
  • 0c20475 - shares: unify share API under /api/shares with RESTful paths (commit by @saltbo)
  • a08ebca - config: consolidate tsconfig path aliases and remove redundancy (commit by @saltbo)
  • 9e56e92 - share: remove unused folder browser (commit by @saltbo)
  • 257a6be - ui: address review feedback on layout unification (commit by @saltbo)
  • 41f3e45 - api: enforce strict RESTful route conventions (commit by @saltbo)
  • 78f741c - replace presign+commit image flow with RESTful PUT/DELETE (PR #336 by @saltbo)
  • faed8cb - admin: streamline admin navigation and licensing management (commit by @saltbo)
  • bf7c338 - site: centralize default site metadata (commit by @saltbo)
  • a4f9e3f - proxy quota store through cloud (commit by @saltbo)
  • 11ab430 - quota-store: unify orders and gift cards (commit by @saltbo)
  • 0365e50 - store: centralize database write transactions (commit by @saltbo)
  • bfc6978 - admin: redesign branding settings card (commit by @saltbo)
  • acc2e81 - cloud-store: rename end user fields to consumer (commit by @saltbo)
  • 9efdcbb - cloud-store: use cloud sdk contracts (commit by @saltbo)
  • 3f7a859 - downloader: consolidate api contract generation (commit by @saltbo)
  • 8f272b8 - downloader: clarify task states and restart action (commit by @saltbo)
  • f4acfc1 - downloader: inspect runtime task state (commit by @saltbo)
  • 6aa711b - downloads: reshape download task status model (commit by @saltbo)
  • f31278b - cli: move zpan command module to cmd (commit by @saltbo)
  • 25ab672 - quota: centralize storage usage reservations (commit by @saltbo)
  • d1c83cc - objects: run file operations sequentially (commit by @saltbo)

👷 Build System

🔧 Chores

Docker

docker pull ghcr.io/saltbo/zpan:v2.7.0
docker pull ghcr.io/saltbo/zpan:v2.7.0-cli