Skip to content

Changelog

v2.1.0 Latest

Business model: Freemium

  • Free tier available forever; the 6-hour trial is gone: models / data tagging up to 50 MB per file, batches of up to 5; licensed files up to 500 MB
  • License verification upgraded to Ed25519 asymmetric signatures + device fingerprint binding (machine-uid derived) — one key per machine, offline verification
  • Activation state now encrypted with AES-256-GCM
  • New Account page: license tier, expiry date, feature permissions, and License Key activation
  • 3D Viewer, screenshot export, video recording and operation history are free and unlimited forever
  • Licensing service rebuilt: license-server is now the official licensing service (Ed25519 issue/verify + security audit); the legacy AES-256-CBC service was removed

New: Data Tagging

  • Edit userData key-value pairs on model nodes with a three-column layout: node tree + 3D click-to-select viewport + data editor
  • JSON import / export (directly compatible with Three.js userData), global tag preview, orphan and redundant data repair

3D Viewer enhancements

  • New left toolbar: unified entry for Lights, Section and Environment panels
  • Section clipping: single-axis clipping + position slider + direction invert; light guides are clipped away with the model
  • Animation preview: multi-clip selection, play / pause / stop, 0.1x–3x speed
  • Environment panel: floor texture (lines / checkerboard), size and opacity, ambient and sun intensity
  • Default IBL environment lighting (RoomEnvironment) — dark and metallic materials stay readable without extra lights

Platform support

  • New Linux and macOS support (deb / rpm / dmg / app packages; AppImage pending real-machine builds)
  • Web version: SEO optimized with generated icons; primary domain zipoly-web.raychart.cn
  • Sidebar shows the current version and auto-detects new Gitee releases
  • Pinned @tauri-apps dependency versions (removed ^ ranges) for reproducible builds

Other

  • Docs site CSS modular refactor; screenshots archived under public/screenshots/
  • Fixed inconsistent dialogs and thresholds for oversized textures and model import

v2.0.1 Previous

Fix: removed all external CDN dependencies

  • Draco decoder and KTX2 transcoder now load fully locally — no more gstatic.com / jsdelivr.net
  • Web version fonts switched to local @fontsource packages; Google Fonts removed
  • Tauri desktop CSP tightened; external whitelist for googleapis/gstatic/jsdelivr removed
  • Better availability and load speed in offline or network-restricted environments

v2.0.0

Architecture: compression engine abstraction layer

  • Compression module refactored with a unified engine interface (CompressionEngine trait), enabling hot-swappable Draco / Meshopt
  • Engine fallback improved: if Meshopt is unavailable, Zipoly silently switches to Draco and notifies via a toast
  • Unified compression parameter model covering geometry quantization, textures, scene graph and mesh simplification

New: scenario-based presets

  • Four one-click presets for real business scenarios: Web 3D, mobile apps, industrial visualization, e-commerce product showcase
  • Each preset recommends an engine (Meshopt / Draco) and fills in optimal parameters — no manual tuning needed
  • Presets remain fully adjustable

New: smart engine recommendation

  • After import, the model's vertex count, texture count, node count and other features are analyzed automatically
  • An engine recommendation is given based on model characteristics, cutting selection effort

Meshopt engine enhancements

  • Mesh simplification (-si ratio) and aggressive simplification mode (-sa)
  • GPU Instancing automation (-mi) and node merging (-mm)
  • Real-time gltfpack stdout parsing with staged progress: "geometry compression → texture optimization → writing file"

KTX2 texture compression enhancements

  • New UASTC high-quality mode (for e-commerce / product showcase)
  • Finer texture quality control (levels 1–10 mapped to basisu -q)
  • Full texture + geometry pipeline integrated under the Meshopt engine

Other optimizations

  • draco_transcoder binary slimmed from 6 MB to 2.5 MB
  • Fixed batch engine selection not propagating correctly after switching engines
  • Result comparison dialog now shows the engine name used
  • Docs site fully rewritten with dedicated Texture Optimization, License and Changelog pages

v1.0.2 Stable

New: Meshopt compression engine

  • Integrated gltfpack with meshopt geometry compression + vertex cache optimization — overall ratio better than Draco
  • New engine selector to switch between Draco and Meshopt
  • Automatic fallback to Draco with a toast when Meshopt is unavailable
  • Dedicated texture settings dialog for the Meshopt engine (BasisU ETC1S / UASTC)

New: KTX2 texture support

  • KTX2 format added to Draco texture settings (ETC1S mode, encoded via basisu)
  • Mipmap chain toggle — disabling saves ~33% size
  • Max texture edge length switched to quick-select buttons (512 / 1024 / 2048 / 4096)

New: Texture Optimization tab

  • Dedicated texture page: compress, scale and convert single PNG / JPG / WebP images, plus KTX2 conversion
  • The viewer can preview KTX2 and WebP images directly

New: health check panel

  • Automatic health scan on import flags potential issues (duplicate vertices, oversized textures, missing normals, etc.)

Improvements

  • Nav icons renamed to English-named SVGs, fixing Windows Chinese-path issues
  • Sidebar "About" now links to the online docs
  • Fixed batch compression engine selection not being passed correctly

v1.0.1

  • New 3D viewer time-of-day lighting (24-hour sunrise/sunset simulation)
  • New custom lighting panel (point / directional / spotlight)
  • New screenshots (PNG) and video recording (WebM 30fps)
  • New batch compression pause / resume / cancel controls
  • New advanced quantization panel (qp / qn / qt / qa, Draco only)
  • Improved Chinese path handling, fixing Windows special-character paths
  • Fixed error when re-compressing an already compressed file

v1.0.0

  • First release
  • Draco compression for glTF/GLB (levels 1–10)
  • Single-file and batch modes
  • Format conversion (OBJ / FBX / STL / DAE / PLY → GLB / glTF)
  • Texture optimization (auto downsampling + JPEG recompression)
  • Operation history (with parameter reuse)
  • Compression result comparison dialog
  • Built-in Three.js 3D viewer
  • Offline licensing (hardware-ID bound)

Zipoly Server

The server edition (private deployment for enterprises) versions independently from the desktop app. Release history below.

v2.1.0

Conversion engine rebuilt (assimp 5.4.3)

  • assimp replaces the previous implementation; input: glb / gltf / fbx / obj / stl / dae / ply / vrm; output: glb / gltf / obj / stl(stlb) / ply(plyb) / dae
  • Fixed GLB→OBJ white-model issue and GLB degenerate faces

Texture optimization & KTX2

  • New texture optimization (single-image PNG / JPG / WebP processing)
  • KTX2 encoding (basisu 1.16): ETC1S / UASTC modes (both the compression path and single-image texture optimization), encode performance improved 45s → 15s
  • Meshopt UASTC mode supports texture quality levels (1–10 mapped to basisu -q)

Batch tasks deeply optimized

  • Batch ZIP downloads now built in memory with Stored compression, eliminating temp-file races — 25s → 2s
  • Download loading feedback, auto-completed compression params, download button appears when done

SSE real-time push

  • Task / batch status pushed in real time, replacing polling; automatic fallback to polling on disconnect
  • Backend supports direct CORS connections, fixing long-lived connection truncation through the Vite proxy

Configuration system

  • Config page truly reads/writes config.yaml (with BOM compatibility)
  • Data retention extended from 24h to 168h (7 days)
  • Completed system settings / service restart endpoints

Admin UI

  • Dashboard visual redesign, data fixes, hour-aligned chart axes, adaptive card heights
  • Task management adds GLB model preview (Three.js + Draco WASM local decoding)
  • Batch task / task list UI deep optimizations

Licensing

  • Verification switched to Ed25519 asymmetric signatures (same public key as license-server); activation state AES-256-GCM encrypted
  • Server-side license tiers: Free / Pro / Enterprise (reported via capabilities endpoint)

Docker delivery

  • Image tag: zipoly-server:2.1.0 (latest synced); release bundle = image tar + docker-compose.yml + Dockerfile + docker/ (config.yaml, entrypoint.sh, nginx.conf)
  • Dockerfile uses BuildKit build cache (npm / cargo registry / target mounts) for incremental rebuilds
  • Fixed cache mounts dropping binaries from the image layer (artifacts copied across stages via /out)
  • Data directory unified to /app/zipoly-data inside the container (uploads / results / SQLite); compose volume mounts aligned
  • Fixed API Key missing causing the container to keep Restarting (compose injects dev-api-key-123 by default; production must replace it with a strong key)

Fixes

  • Task list query missing owner_key_id field returned empty arrays
  • Task filenames lost after restart; task file residue cleanup
  • SSE global watch duplicate registration, fallback polling false triggers, useEventSource init timing
  • updateLicense request body field aligned with the backend (license_key)

v1.0.0

  • Server edition first release
  • Desktop compression capabilities wrapped as a RESTful HTTP API (Draco / Meshopt compression, format conversion, texture optimization, model repair, health check, batch processing)
  • Single-container Docker deployment (Rust/Axum backend + nginx reverse proxy) with a built-in web admin console
  • API Key auth, rate limiting, input validation and other security measures
  • Trial mode + License Key activation

Built for Web3D developers