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)