Skip to content

Release history

SnapOtter releases

Image manipulator and converter

All releases

43 shown

No immediate action
v1.17.1 Breaking risk

Live demo

Config change
v1.17.0 New feature
Auth

OIDC / SSO authentication

v1.16.0 Maintenance

Routine maintenance release for SnapOtter.

Changelog

Full Changelog: https://github.com/snapotter-hq/SnapOtter/compare/v1.15.11...v1.16.0

v1.15.11 Maintenance

Routine maintenance release for SnapOtter.

Changelog

Full Changelog: https://github.com/snapotter-hq/SnapOtter/compare/v1.15.10...v1.15.11

v1.15.10 Breaking risk
Breaking changes
  • Removed all artificial limits; the tool operates unlimited by default.
Security fixes
  • Prevent admin escalation when AUTH_ENABLED=false (duplicate entry removed)
Notable features
  • Extended image format support (JXL, RAW, ICO, TGA, PSD, EXR, HDR)
  • AVIF output format added across all tools
  • Multi‑file selection for automation pipeline
Full changelog

What's Changed

  • fix: state bleed on tool switch, AVIF compress, OCR segfault, long filenames by @ashim-hq in https://github.com/snapotter-hq/SnapOtter/pull/79
  • feat: Unlimited by Default — remove all artificial limits by @ashim-hq in https://github.com/snapotter-hq/SnapOtter/pull/80
  • feat: redesign Automate page — tool palette + pipeline canvas by @ashim-hq in https://github.com/snapotter-hq/SnapOtter/pull/81
  • fix: Docker hardening, security, and V1 deployment readiness by @ashim-hq in https://github.com/snapotter-hq/SnapOtter/pull/82
  • feat: extended image format support (JXL, RAW, ICO, TGA, PSD, EXR, HDR) by @ashim-hq in https://github.com/snapotter-hq/SnapOtter/pull/83
  • fix: wire up Default Tool View save in General settings by @ashim-hq in https://github.com/snapotter-hq/SnapOtter/pull/84
  • feat: add AVIF output format support across all tools by @ashim-hq in https://github.com/snapotter-hq/SnapOtter/pull/85
  • fix: prevent admin escalation when AUTH_ENABLED=false by @ashim-hq in https://github.com/snapotter-hq/SnapOtter/pull/86
  • fix: auto-fallback from CodeFormer to GFPGAN in face enhancement by @ashim-hq in https://github.com/snapotter-hq/SnapOtter/pull/87
  • feat: allow multi-file selection for automation pipeline by @ashim-hq in https://github.com/snapotter-hq/SnapOtter/pull/88
  • feat: production-grade RBAC with editor role, custom roles, API key scoping, and audit log by @ashim-hq in https://github.com/snapotter-hq/SnapOtter/pull/89
  • feat: production-grade opt-in product analytics with PostHog and Sentry by @ashim-hq in https://github.com/snapotter-hq/SnapOtter/pull/91
  • fix: prevent admin escalation when AUTH_ENABLED=false by @ashim-hq in https://github.com/snapotter-hq/SnapOtter/pull/92
  • test: comprehensive test coverage expansion (+965 tests, 48/48 tools) by @ashim-hq in https://github.com/snapotter-hq/SnapOtter/pull/93
  • feat: API sync and documentation audit by @ashim-hq in https://github.com/snapotter-hq/SnapOtter/pull/94

New Contributors

  • @ashim-hq made their first contribution in https://github.com/snapotter-hq/SnapOtter/pull/79

Full Changelog: https://github.com/snapotter-hq/SnapOtter/compare/v1.15.9...v1.15.10

v1.15.9 Maintenance

Routine maintenance release for SnapOtter.

Changelog

Full Changelog: https://github.com/snapotter-hq/SnapOtter/compare/v1.15.8...v1.15.9

v1.15.8 Maintenance

Minor fixes and improvements.

Full changelog

1.15.8 (2026-04-17)

Bug Fixes

  • copy Node.js from official image instead of apt-get install (536125e)
v1.15.7 Bug fix

Added retry with exponential backoff for `apt-get update` failures on the CUDA base image.

Full changelog

1.15.7 (2026-04-17)

Bug Fixes

  • add retry with backoff for apt-get update on CUDA base image (3d6db5a)
v1.15.6 Maintenance

Minor fixes and improvements.

Full changelog

1.15.6 (2026-04-17)

Performance Improvements

  • parallelize model downloads and switch to registry cache (79c4ed6)
v1.15.5 Bug fix

Fixed exclusion of e2e-docker tests from the Vitest runner.

Full changelog

1.15.5 (2026-04-17)

Bug Fixes

  • exclude e2e-docker tests from Vitest runner (8df18c5)
v1.15.4 Maintenance

Minor fixes and improvements.

Full changelog

1.15.4 (2026-04-17)

Bug Fixes

  • verbose error handling, batch processing, and multi-file support (3223960)
  • verbose errors, batch processing, multi-file support (#1) (8b87cf8)
v1.15.3 Bug fix

Fixed file uploads above 100MB silently dropping.

Full changelog

1.15.3 (2026-04-16)

Bug Fixes

  • retry apt-get update on transient mirror sync errors (Acquire::Retries=3) (cec7163)
v1.15.2 Bug fix

Fixed GHCR login by requiring GHCR_TOKEN with write:packages scope.

Full changelog

1.15.2 (2026-04-16)

Bug Fixes

  • use GHCR_TOKEN with write:packages scope for GHCR login (e14414f)
v1.15.1 Bug fix

Fixed Docker container build failures and model path mismatches for non‑root users.

Full changelog

1.15.1 (2026-04-16)

Bug Fixes

  • docker: create /opt/models unconditionally so chown works in CI (93ce289)
  • docker: run frontend builder on BUILDPLATFORM to fix esbuild crash under QEMU (6a3ad0d)
  • resolve runtime model path mismatch for non-root Docker user (f28792a)
v1.14.0 New feature
Notable features
  • Unified Docker image with GPU auto‑detection
  • Simplified CI to a single unified Docker build
  • Compose consolidated to one file with log rotation
Full changelog

1.14.0 (2026-04-10)

Bug Fixes

  • add FILES_STORAGE_PATH to Dockerfile ENV to prevent data loss (b575243)
  • add shutdown timeout and improve health endpoint (986ad37)
  • address code review findings before merge (caf65bc)
  • correct PaddleOCR language codes for model download and OCR (e1ee571)
  • force CPU mode in download_models.py for build-time compatibility (b4b59a7)
  • handle paddlepaddle-gpu CUDA import at build time gracefully (0083a74)
  • install cuda-compat stubs for build-time PaddlePaddle import (d31d665)
  • load RealESRGAN pretrained weights for actual AI upscaling (fa9569c)
  • revert to npx tsx in CMD for pnpm compatibility (e55253d)
  • simplify smoke test to CPU-only imports for build-time compat (3481663)
  • skip RealESRGAN import check on arm64 in smoke test (1e2ef52)
  • split paddlepaddle-gpu and paddleocr installs, use --extra-index-url (74183e8)
  • suppress ML library stdout noise in ocr.py and upscale.py (c0b419d)
  • use PaddlePaddle GPU package index for CUDA wheels (dd9528f)
  • use platform-specific mediapipe version for arm64 compatibility (7face19)

Features

  • expand model pre-download with verification and smoke test (a9e3b96)
  • simplify CI to single unified Docker build (b385a2e)
  • simplify compose to single file, add log rotation (84f7057)
  • unified Docker image with GPU auto-detection (6c3eb3b)
v1.13.0 Breaking risk
Breaking changes
  • Removed `requireAdmin` guard; all routes now use `requirePermission` middleware.
Notable features
  • Backend permission map and requirePermission middleware
  • Permission checks with admin override on API key, pipeline, and user-files routes
  • Shared Permission and Role types across the codebase
Full changelog

1.13.0 (2026-04-10)

Bug Fixes

  • complete RBAC implementation lost during merge (cc8a272)

Features

  • add backend permission map and requirePermission middleware (1a99571)
  • add permission checks and admin override to API key routes (d776680)
  • add permission checks and admin override to pipeline routes (59f40db)
  • add permission checks and ownership scoping to user-files routes (86ba698)
  • add shared Permission and Role types (2f594e9)
  • add tools:use permission check to tool, batch, pipeline, and upload routes (885ace5)
  • extend useAuth hook with role and permissions from session (e0ba8be)
  • filter settings tabs by user permissions, remove admin fallback (bcbd24a)
  • include permissions and teamName in login/session responses (4943177)
  • replace requireAdmin with requirePermission on all routes (af7f57d)
v1.12.0 New feature
Notable features
  • Added PDF‑to‑image backend route with info and processing endpoints
  • Added PDF‑to‑image frontend settings component
  • Registered PDF‑to‑image tool in frontend registry, shared constants, and i18n
Full changelog

1.12.0 (2026-04-10)

Bug Fixes

  • a11y: add keyboard support to pdf-to-image upload dropzone (1778f72)
  • use specific selector in pdf-to-image e2e test (b2a2c89)

Features

  • add pdf-to-image backend route with info and processing endpoints (30155c1)
  • add pdf-to-image frontend settings component (44bbfba)
  • register pdf-to-image in frontend tool registry (5fd294c)
  • register pdf-to-image tool in shared constants and i18n (43324c1)
  • unified Docker image with GPU auto-detection (#37) (b0083e2)
v1.11.0 New feature
Notable features
  • Auto-generate llms.txt using vitepress-plugin-llms
Full changelog

1.11.0 (2026-04-07)

Features

  • docs: auto-generate llms.txt via vitepress-plugin-llms (ee28ec6)
v1.10.0 New feature
Notable features
  • Added content‑aware resize API route and registration
  • Added content‑aware resize toggle to resize settings UI
  • Added seam carving AI bridge module
Full changelog

1.10.0 (2026-04-07)

Features

  • add content-aware resize API route and registration (aa3cc5c)
  • add content-aware resize toggle to resize settings UI (4b4464f)
  • add seam carving AI bridge module (3c0f5b6)
  • add seam carving Python script with face protection (fb833e4)
v1.9.0 New feature
Notable features
  • Added stitch API route handler and settings UI component.
  • Registered stitch component in web tool registry, stitch route in API tool registry, and stitch tool in shared constants and i18n.
Full changelog

1.9.0 (2026-04-07)

Features

  • add stitch API route handler (63ea0ba)
  • add stitch settings UI component (6abe893)
  • register stitch component in web tool registry (612f7d9)
  • register stitch route in API tool registry (a37d54f)
  • register stitch tool in shared constants and i18n (b881416)
v1.8.1 Bug fix

Fixed file uploads above 100MB silently dropping.

Full changelog

1.8.1 (2026-04-07)

Bug Fixes

  • add variant diagnostics to health endpoint and lite mode banner (2c6e499)
v1.8.0 New feature
Notable features
  • Added edit-metadata API route with inspect and edit endpoints
  • Added edit-metadata UI component with granular strip support
Full changelog

1.8.0 (2026-04-06)

Bug Fixes

  • filter unsafe round-trip keys server-side in editMetadata (32bde85)

Features

  • add edit-metadata API route with inspect and edit endpoints (ff07b83)
  • add edit-metadata UI component with granular strip support (dcd600d)
  • add EditMetadataOptions type and exif-reader dep to image-engine (39bc5bc)
  • extract shared metadata parsing utilities into image-engine (c075849)
  • implement editMetadata operation in image-engine (f3be1ef)
  • register edit-metadata in shared constants and i18n (4a424d7)
v1.7.7 Bug fix

Improved AI tool reliability for face detection and background removal.

Full changelog

1.7.7 (2026-04-06)

Bug Fixes

  • improve AI tool reliability for face detection and background removal (#25) (1963a80)
v1.7.5 Bug fix

Fixed missing server‑side logging for AI tool routes.

Full changelog

1.7.5 (2026-04-06)

Bug Fixes

  • add server-side logging to AI tool routes (#23) (3645de8)
v1.7.4 Bug fix

Fixed batch file ordering and format preservation issues in image tools.

Full changelog

1.7.4 (2026-04-06)

Bug Fixes

  • batch file ordering and format preservation for image tools (#20) (822a078), closes #13 #14
v1.7.3 Maintenance

Minor fixes and improvements.

Full changelog

1.7.3 (2026-04-06)

Bug Fixes

  • docs: correct broken llms.txt links on REST API page (5e3a8b3)
v1.7.2 Bug fix

Fixed GPU detection by using torch.cuda instead of ONNX Runtime providers.

Full changelog

1.7.2 (2026-04-05)

Bug Fixes

  • use torch.cuda for GPU detection instead of onnxruntime providers (7185bd5)
v1.7.1 Bug fix

Fixed false GPU detection in CUDA images running without a GPU.

Full changelog

1.7.1 (2026-04-05)

Bug Fixes

  • prevent false GPU detection when CUDA image runs without GPU (1efb163)
v1.7.0 New feature
Notable features
  • Added GPU/CUDA acceleration support (new :cuda Docker tag)
Full changelog

1.7.0 (2026-04-05)

Bug Fixes

  • web: skip empty Authorization header for forward-auth proxy compatibility (636153f), closes #6

Features

  • add GPU/CUDA acceleration support (:cuda Docker tag) (a5f62f0)
v1.6.0 New feature
Notable features
  • lightweight Docker image (:lite tag) without AI/ML tools
Full changelog

1.6.0 (2026-04-04)

Features

  • lightweight Docker image without AI/ML tools (:lite tag) (3a0b988), closes #1
v1.5.3 Bug fix

Fixed HEIC decoding on Linux by using heif-convert.

Full changelog

1.5.3 (2026-04-04)

Bug Fixes

  • use heif-convert for HEIC decoding on Linux (da15a1e)
v1.5.1 Maintenance

Minor fixes and improvements.

Full changelog

1.5.1 (2026-04-04)

Bug Fixes

  • install libheif-examples in CI for HEIC tests (d06092c)
v1.5.0 New feature
Notable features
  • Support for HEIC and HEIF formats in both input and output
Full changelog

1.5.0 (2026-04-04)

Features

  • add HEIC/HEIF format support for input and output (df1dc02)
v1.4.0 New feature
Notable features
  • "Crop to Content" mode in the smart crop tool
Full changelog

1.4.0 (2026-04-04)

Features

  • add "Crop to Content" mode to smart crop tool (df479d3), closes #7
v1.3.1 Bug fix

Default theme now set to light, overriding system preference.

Full changelog

1.3.1 (2026-04-04)

Bug Fixes

  • default theme to light instead of following system preference (018fcce)
v1.3.0 Breaking risk
Breaking changes
  • Replaced crypto.randomUUID with generateId in AI tool settings
  • Replaced crypto.randomUUID with generateId in pipeline/automation
  • Replaced crypto.randomUUID with generateId in use-tool-processor
Notable features
  • Added copyToClipboard() utility with execCommand fallback for clipboard operations
  • Added generateId() utility to provide UUID generation compatible with non‑secure contexts
Full changelog

1.3.0 (2026-04-04)

Bug Fixes

  • add XHR timeout to prevent UI spinning forever (0abacb2)
  • disable worker pool to prevent Docker processing hang (e36cd0c)
  • log volume permission errors instead of swallowing them (a3e6927)
  • replace crypto.randomUUID with generateId in AI tool settings (ed91861)
  • replace crypto.randomUUID with generateId in pipeline/automation (bcbf86c)
  • replace crypto.randomUUID with generateId in use-tool-processor (07cc2d0)
  • replace navigator.clipboard with copyToClipboard utility (1857aeb)
  • resolve multiple API and e2e test bugs (00deafb)
  • restore navigator.clipboard and execCommand mocks in tests (57e71b7)

Features

  • add copyToClipboard() utility with execCommand fallback (8686131)
  • add generateId() utility for non-secure context compatibility (ee7741b)
v1.2.1 Bug fix

Fixed handling of volume permission issues for the bind‑mounted /data directory.

Full changelog

1.2.1 (2026-04-03)

Bug Fixes

  • handle volume permission issues for bind-mounted /data directory (863a51c)
v1.2.0 New feature
Notable features
  • Theme toggle and GitHub button relocated to the top‑right navbar
Full changelog

1.2.0 (2026-04-03)

Features

  • move theme toggle and GitHub button to top-right navbar (0ba9fa5)
v1.1.0 New feature
Notable features
  • GitHub stars button added to docs navbar
  • Fixed footer license in documentation
Full changelog

1.1.0 (2026-04-03)

Features

  • add GitHub stars button to docs navbar and fix footer license (90030fc)
v1.0.1 Bug fix

Fixed allowing SVG files in the convert tool.

Full changelog

1.0.1 (2026-03-30)

Bug Fixes

  • allow SVG files in the convert tool (034281b)
v1.0.0 New feature
Security fixes
  • Reject HTML tags in settings API to prevent stored XSS
Notable features
  • Authentication with default admin user (add authentication with default admin user)
  • Forced password change on first login (add forced password change page on first login)
  • Privacy policy page and CSP fixes (add privacy policy page and fix CSP blocking API docs)
Full changelog

1.0.0 (2026-03-30)

Bug Fixes

  • a11y: add aria-hidden to decorative GemLogo SVG (ae185ce)
  • add remove-background settings to pipeline step configurator (ae5ac81)
  • add SSE progress endpoint to public paths (18c3da0)
  • api: allow Scalar docs through auth and CSP (6023109)
  • api: resolve team name lookup and show server error messages (609fc8b)
  • api: use content instead of spec.content for Scalar v1.49 API (dfcb4d5)
  • apply continuous progress bar to erase-object and OCR (196c553)
  • blur-faces: switch from MediaPipe to OpenCV and auto-orient images (dc10f90)
  • bridge.ts ENOENT check for Python venv fallback (92442cd)
  • clear search when adding a step from the tool picker (ae2e63f)
  • continuous progress bar (no 100%→0% reset) (b4abefe)
  • crop: use percentCrop from onChange to fix inflated pixel values (f238820)
  • deduplicate react in Vite to prevent zustand hook errors in monorepo (b3d6947)
  • docker: add build layer caching for faster Docker rebuilds (03ba30d)
  • docker: skip husky prepare script in production install (fdfb0a0)
  • docs: clean up footer llms.txt links (e842cde)
  • docs: ignore localhost dead links in VitePress build (78269d4)
  • docs: remove hero logo from home page (64c0ec8)
  • handle migration race condition in concurrent test workers (d576ab1)
  • make port 1349 the UI port in all modes (20a2637)
  • move health diagnostics behind admin auth (ee9a20f)
  • ocr: update PaddleOCR for v3 API and add Tesseract fallback (e260a93)
  • pipeline only shows compatible tools and displays errors (fe021c1)
  • prevent pipeline step settings from resetting on collapse (d899ef1)
  • prevent stale closure in pipeline step callbacks (c67f002)
  • prevent useAuth infinite loop causing rate limit storms (9624dae)
  • Python bridge fallback only on missing venv, not script errors (79e4116)
  • reject HTML tags in settings API to prevent stored XSS (d5bd011)
  • remove explicit pnpm version from CI to avoid conflict with packageManager (c0f5dad)
  • remove Google Drive coming soon placeholder from files nav (e487fe0)
  • resolve 3 critical UX bugs - home upload, auth, and form submit (97267c7)
  • resolve pipeline step race condition and infinite re-render loop (e0177d4)
  • resolve test failures from shared DB race conditions (1a7116d)
  • resolve tsx not found in AI docs updater workflow (dfbef8d)
  • resolve TypeScript Uint8Array type error with fflate (c1b06b3)
  • restore APP_VERSION import used by health endpoint (2a74b60)
  • setError(null) was overriding setProcessing(true) (2be94b7)
  • show checkerboard behind transparent images in before/after slider (73741e6)
  • simplify public health to static response, add 403 test (9c05da6)
  • streamline CI/CD — remove broken AI docs updater, fix Docker publish (ad2c96d)
  • surface hidden errors and add batch rejection tests (2f8e2ce)
  • switch README Docker references from GHCR to Docker Hub (9e15679)
  • sync stepsRef during render, not useEffect (0c86744)
  • test: add missing PNG fixture files to repo (45c6b9d)
  • test: exclude e2e tests from vitest and fix CI test suite (9d28485)
  • tests: remove temp DB cleanup that races with other test files (498bfb3)
  • trigger browser password save prompt on password change (6b279ad)
  • ui: clean up settings, automate page, fullscreen logo, and README (b3c8ad4)
  • unify project on port 1349, improve strip-metadata and UI components (4912ee3)
  • upscale: auto-orient images before upscaling and improve UI (8a6e665)
  • use BiRefNet-Lite as default model and fix JSON parsing (c8159d3)
  • use two-pass validation in settings PUT to prevent partial writes (2dc39d3)
  • use U2-Net as default model (fast, 2s) with BiRefNet as opt-in (7ebed9a)
  • white screen crash when uploading photos with null GPS EXIF data (c913df9)

Features

  • accept clientJobId in batch endpoint for SSE progress correlation (8ed57f4)
  • add authentication with default admin user (2189628)
  • add automatic workspace file cleanup cron (5af7437)
  • add CSS transform props to ImageViewer for live rotate/flip preview (de3340f)
  • add CSS transform props to ImageViewer for live rotate/flip preview (7627853)
  • add Fastify API server with health check and env config (be73ce9)
  • add forced password change page on first login (e0900a8)
  • add format tools (SVG-to-raster, vectorize, GIF) and optimization (rename, favicon, image-to-PDF) (7b29b04)
  • add generic tool page template with settings panel and dropzone (0f32ba1)
  • add image-engine and ai stub packages (17ac7b8)
  • add layout tools (collage, splitting, border/frame) (e46dbf6)
  • add live preview callback to RotateSettings, rename button to Apply (17be50b)
  • add live preview callback to RotateSettings, rename button to Apply (06844ec)
  • add login page with split layout matching Stirling-PDF style (2b82f93)
  • add multi-stage Docker build with Python ML dependencies (8d70123)
  • add MultiImageViewer with arrow navigation and filmstrip (1fa8747)
  • add password generator and browser save prompt on change-password page (d56c644)
  • add Phase 4 AI tools with Python bridge and 6 new tools (21df50e)
  • add privacy policy page and fix CSP blocking API docs (3e314f0)
  • add processAllFiles batch method to tool processor hook (cd1e180)
  • add replace-color tool and update tool page routing (d5d09e4)
  • add semantic-release for automated versioning and help dialog (83a0272)
  • add shared package with types, tool definitions, and constants (96ed415)
  • add SideBySideComparison component for resize results (d037305)
  • add SideBySideComparison component for resize results (2d0ba5a)
  • add SQLite database with Drizzle ORM schema and migrations (88c41cf)
  • add Stirling-PDF-style layout with sidebar, tool panel, dropzone, and theme toggle (90f10f4)
  • add Swagger/OpenAPI documentation at /api/docs (0ef1a5a)
  • add theme system with dark/light/system support and persistence (e35d249)
  • add ThumbnailStrip filmstrip component (9caa613)
  • add utility tools (image info, compare, duplicates, color palette, QR, barcode) (e17992e)
  • add Vite + React SPA with Tailwind CSS and routing (9483ad7)
  • add watermark, text overlay, and image composition tools (b2543d9)
  • add worker threads, persistent Python sidecar, graceful shutdown, and architectural improvements (1274cc1)
  • adjustments: add real-time live preview for all color tools (b5c924e)
  • ai: add emit_progress() calls to all Python AI scripts (eb6f57d)
  • ai: add onProgress callback to all AI wrapper functions (021c9f1)
  • ai: rewrite bridge.ts to stream stderr progress via spawn (9d9c45a)
  • api,web: add batch processing with ZIP download and SSE progress (f8aa5f7)
  • api: add all remaining endpoints to OpenAPI spec (e7b38ba)
  • api: add all tool endpoints to OpenAPI spec (753ba3e)
  • api: add generic tool route factory for all image tools (43555c9)
  • api: add llms.txt and llms-full.txt endpoints (12ba52a)
  • api: add logo upload/serve/delete routes with tests (6063f4d)
  • api: add multipart file upload, workspace management, and download routes (415de2a)
  • api: add OpenAPI 3.1 spec skeleton with common schemas (b2189f5)
  • api: add persistent file management helpers to frontend api module (ecbfcce)
  • api: add pipeline execution, save, and list endpoints (d4f1148)
  • api: add resize, crop, rotate, convert, compress, metadata, and color tool routes (4874701)
  • api: add Scalar docs route and install dependency (6f2c319)
  • api: add SingleFileProgress type and SSE update function (12b85d4)
  • api: add teams CRUD routes and update auth team references (ec22e53)
  • api: add tool filtering and DB-backed cleanup settings (07e7e8d)
  • api: add user files CRUD routes at /api/v1/files/* (6a07007)
  • api: register docs route in server and test helper (bc6b389)
  • api: wire AI route handlers to SSE progress via clientJobId (a3f85da)
  • branding: add faceted gem SVG logo assets (4bc9335)
  • branding: add favicon and meta tags to index.html (2508fd0)
  • branding: add OG social preview image (c6c5b92)
  • branding: add PWA manifest and PNG logo assets (298567d)
  • branding: show gem icon in app header as default logo (dd857fb)
  • conditional result views — side-by-side for resize, live preview for rotate (f0d18be)
  • conditional result views — side-by-side for resize, live preview for rotate (6682649)
  • crop: add CropCanvas component with visual overlay, grid, and keyboard controls (018bbf4)
  • crop: add react-image-crop dependency (b7ecd41)
  • crop: redesign CropSettings with aspect presets, pixel inputs, and grid toggle (d75f458)
  • crop: wire CropCanvas and CropSettings into tool-page with bidirectional state (ea7fb46)
  • db: add teams table and migration (365783b)
  • db: add userFiles table and migration (a2fdbd5)
  • docs: add gem favicon to VitePress site (0918f93)
  • docs: add gem logo to GitHub Pages nav bar and home hero (f0b8162)
  • docs: add llms.txt and llms-full.txt to GitHub Pages (5f6959a)
  • docs: add llms.txt links to GitHub Pages footer (b874445)
  • env: add FILES_STORAGE_PATH config variable (3c737a6)
  • erase-object: replace mask upload with in-browser brush painting (40e3081)
  • extract auto-orient utility and expand test coverage (8622c4a)
  • files: add Files page with nav, list, details, upload, and routing (3f127a4)
  • files: add mobile layout for Files page (e864d1e)
  • files: wire serverFileId for version tracking (8868d3e)
  • harden auth, security headers, SVG sanitization, and pipeline ownership (beaad1d)
  • i18n: add translation keys for settings phase 1 (c5ff80a)
  • image-engine: add Sharp wrapper with 14 image operations (3e7f71c)
  • image-to-pdf: add live PDF page preview with margin visualization (cd666ea)
  • implement Files page with persistent storage and version tracking (f6183d2)
  • initialize Turborepo monorepo with pnpm workspaces (db31cf6)
  • integrate MultiImageViewer and multi-file UX into tool page (52aab1e)
  • make AI tools pipeline-compatible and add search to tool picker (2d46b09)
  • merge multi-image UX — batch processing, filmstrip navigation, resize/rotate redesign (9bfdb75)
  • multi-arch Docker support, security hardening, and test improvements (748d2b7)
  • multi-file metadata display with per-file caching (42b59f3)
  • pipeline: add inline settings configuration for automation steps (827eae8)
  • production Docker, Playwright tests, settings API, and bug fixes (027c515)
  • replace model dropdown with intuitive subject/quality selector in remove-bg (bc26d60)
  • rewrite file-store with FileEntry model for multi-image support (abbb3e4)
  • rewrite resize settings with tab-based UI (presets, custom, scale) (b9f3ac0)
  • rewrite resize settings with tab-based UI (presets, custom, scale) (3b39a8c)
  • rotate: add editable angle input and fine-tune +/- buttons (e1f04c2)
  • serve React SPA from Fastify in production mode (d4ae4d5)
  • storage: add file storage helpers module (7c37213)
  • stores: add Zustand store for Files page state management (fb487be)
  • tool-factory: auto-save results to persistent file store when fileId provided (27d8629)
  • ui: add teams, tools, feature flags, temp files, logo to settings dialog (fbce0dd)
  • upgrade to BiRefNet SOTA background removal model (f53937b)
  • web: add before/after image comparison slider component (64c8f90)
  • web: add fullscreen tool grid view (86b716b)
  • web: add i18n architecture with English translations (994cba7)
  • web: add keyboard shortcuts for tool navigation (e06e44c)
  • web: add mobile responsive layout with bottom navigation (ade6469)
  • web: add pipeline builder UI with saved automations and templates (39a7bf2)
  • web: add ProgressCard component (ed69488)
  • web: add ProgressCard to non-AI tool settings (Group A) (17035e9)
  • web: add settings dialog with general, security, API keys, and about sections (bca8e81)
  • web: add Stirling-PDF-style file preview, review panel, and tool chaining UX (e12fc57)
  • web: add tool settings UI for all core image tools (f9be6d6)
  • web: migrate AI tool settings to ProgressCard (eed4fc2)
  • web: redesign home page upload flow and add auth guard (915a8cc)
  • web: rewrite useToolProcessor with XHR upload progress and SSE (305f50b)
  • wire up batch processing across tool settings components (1d87091)

Beta — feedback welcome: [email protected]