Files
SnapOtter/CHANGELOG.md
T
2026-03-29 09:24:13 +00:00

24 KiB

0.18.0 (2026-03-29)

Features

  • add worker threads, persistent Python sidecar, graceful shutdown, and architectural improvements (1274cc1)

0.17.7 (2026-03-28)

Bug Fixes

  • move health diagnostics behind admin auth (ee9a20f)
  • reject HTML tags in settings API to prevent stored XSS (d5bd011)
  • simplify public health to static response, add 403 test (9c05da6)
  • switch README Docker references from GHCR to Docker Hub (9e15679)
  • use two-pass validation in settings PUT to prevent partial writes (2dc39d3)

0.17.6 (2026-03-28)

Bug Fixes

  • resolve pipeline step race condition and infinite re-render loop (e0177d4)
  • show checkerboard behind transparent images in before/after slider (73741e6)

0.17.5 (2026-03-28)

Bug Fixes

  • sync stepsRef during render, not useEffect (0c86744)

0.17.4 (2026-03-28)

Bug Fixes

  • prevent stale closure in pipeline step callbacks (c67f002)

0.17.3 (2026-03-28)

Bug Fixes

  • clear search when adding a step from the tool picker (ae2e63f)

0.17.2 (2026-03-28)

Bug Fixes

  • prevent pipeline step settings from resetting on collapse (d899ef1)

0.17.1 (2026-03-28)

Bug Fixes

  • add remove-background settings to pipeline step configurator (ae5ac81)

0.17.0 (2026-03-28)

Features

  • make AI tools pipeline-compatible and add search to tool picker (2d46b09)

0.16.4 (2026-03-28)

Bug Fixes

  • surface hidden errors and add batch rejection tests (2f8e2ce)

0.16.3 (2026-03-28)

Bug Fixes

  • remove Google Drive coming soon placeholder from files nav (e487fe0)

0.16.2 (2026-03-28)

Bug Fixes

  • pipeline only shows compatible tools and displays errors (fe021c1)

0.16.1 (2026-03-28)

Bug Fixes

  • trigger browser password save prompt on password change (6b279ad)

0.16.0 (2026-03-28)

Features

  • add password generator and browser save prompt on change-password page (d56c644)

0.15.0 (2026-03-28)

Features

  • add forced password change page on first login (e0900a8)

0.14.2 (2026-03-28)

Bug Fixes

  • tests: remove temp DB cleanup that races with other test files (498bfb3)

0.14.1 (2026-03-28)

Bug Fixes

  • handle migration race condition in concurrent test workers (d576ab1)

0.14.0 (2026-03-28)

Features

  • multi-arch Docker support, security hardening, and test improvements (748d2b7)

0.13.1 (2026-03-27)

Bug Fixes

  • docs: remove hero logo from home page (64c0ec8)

0.13.0 (2026-03-27)

Features

  • docs: add gem logo to GitHub Pages nav bar and home hero (f0b8162)

0.12.1 (2026-03-27)

Bug Fixes

  • docs: clean up footer llms.txt links (e842cde)

0.12.0 (2026-03-27)

Bug Fixes

  • api: resolve team name lookup and show server error messages (609fc8b)

Features

  • docs: add llms.txt links to GitHub Pages footer (b874445)

0.11.1 (2026-03-27)

Bug Fixes

  • docs: ignore localhost dead links in VitePress build (78269d4)

0.11.0 (2026-03-27)

Bug Fixes

  • a11y: add aria-hidden to decorative GemLogo SVG (ae185ce)
  • api: allow Scalar docs through auth and CSP (6023109)
  • api: use content instead of spec.content for Scalar v1.49 API (dfcb4d5)
  • ui: clean up settings, automate page, fullscreen logo, and README (b3c8ad4)

Features

  • api: add all remaining endpoints to OpenAPI spec (e7b38ba)
  • api: add all tool endpoints to OpenAPI spec (753ba3e)
  • api: add llms.txt and llms-full.txt endpoints (12ba52a)
  • api: add OpenAPI 3.1 spec skeleton with common schemas (b2189f5)
  • api: add Scalar docs route and install dependency (6f2c319)
  • api: register docs route in server and test helper (bc6b389)
  • 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)
  • docs: add gem favicon to VitePress site (0918f93)
  • docs: add llms.txt and llms-full.txt to GitHub Pages (5f6959a)

0.10.0 (2026-03-26)

Bug Fixes

  • ocr: update PaddleOCR for v3 API and add Tesseract fallback (e260a93)

Features

  • erase-object: replace mask upload with in-browser brush painting (40e3081)

0.9.0 (2026-03-26)

Bug Fixes

  • blur-faces: switch from MediaPipe to OpenCV and auto-orient images (dc10f90)
  • docker: add build layer caching for faster Docker rebuilds (03ba30d)
  • upscale: auto-orient images before upscaling and improve UI (8a6e665)

Features

  • adjustments: add real-time live preview for all color tools (b5c924e)
  • image-to-pdf: add live PDF page preview with margin visualization (cd666ea)
  • rotate: add editable angle input and fine-tune +/- buttons (e1f04c2)

0.8.2 (2026-03-25)

Bug Fixes

  • test: add missing PNG fixture files to repo (45c6b9d)
  • test: exclude e2e tests from vitest and fix CI test suite (9d28485)

0.8.1 (2026-03-25)

Bug Fixes

  • resolve test failures from shared DB race conditions (1a7116d)

0.8.0 (2026-03-25)

Bug Fixes

  • docker: skip husky prepare script in production install (fdfb0a0)
  • prevent useAuth infinite loop causing rate limit storms (9624dae)

Features

  • api: add logo upload/serve/delete routes with tests (6063f4d)
  • api: add persistent file management helpers to frontend api module (ecbfcce)
  • 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)
  • db: add teams table and migration (365783b)
  • db: add userFiles table and migration (a2fdbd5)
  • env: add FILES_STORAGE_PATH config variable (3c737a6)
  • 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)
  • i18n: add translation keys for settings phase 1 (c5ff80a)
  • implement Files page with persistent storage and version tracking (f6183d2)
  • 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)

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Unreleased

Added

  • Files page — persistent server-side storage with version tracking and a mobile layout
  • Teams — full CRUD API, database table, and migration
  • Admin settings panel covering teams, tool visibility, feature flags, temp file cleanup, and logo upload
  • Branding API routes (logo upload, serve, delete)
  • Tool filtering and DB-backed cleanup settings on the API side
  • i18n keys for the new settings screens
  • userFiles table for persistent file management
  • FILES_STORAGE_PATH config variable for controlling where uploaded files live
  • Tool results auto-save to persistent storage when a fileId is provided

Changed

  • Renamed Tool.alpha to Tool.experimental everywhere
  • Tightened TypeScript types in tool-factory registry (removed any casts)
  • Bumped login attempt limit from 5 to 10
  • Switched isNaN to Number.isNaN in cleanup interval parsing
  • Null-safe team lookup in auth registration

Removed

  • Internal planning docs (docs/superpowers/) and Claude Code config (.claude/) from version control — these stay local only

0.7.0 - 2026-03-24

Added

  • Inline settings configuration for pipeline automation steps, allowing per-step parameter overrides

Security

  • Hardened authentication with stricter session validation
  • Added security headers (HSTS, CSP, X-Content-Type-Options)
  • SVG sanitization on upload to prevent XSS via malicious SVGs
  • Pipeline ownership enforcement — users can only execute their own pipelines

0.6.0 - 2026-03-24

Added

  • Extracted reusable auto-orient utility from image processing pipeline
  • Expanded integration test coverage across tool routes

0.5.2 - 2026-03-23

Fixed

  • Restored APP_VERSION import used by the /health endpoint, fixing version reporting in production

0.5.1 - 2026-03-23

Fixed

  • Crop tool now uses percentCrop from onChange callback, fixing inflated pixel values that produced incorrect crop regions

Changed

  • Removed unused Swagger dependencies, reducing bundle size
  • Parallelized CI jobs for faster pipeline execution

0.5.0 - 2026-03-23

Added

  • Interactive crop tool with visual overlay, grid lines, aspect ratio presets, pixel input fields, and keyboard controls
  • Multi-image support — upload and process multiple files with arrow navigation and filmstrip thumbnail strip
  • Batch processing wired across all tool settings with processAllFiles method
  • clientJobId correlation for SSE progress during batch operations
  • Side-by-side comparison view for resize results
  • Live CSS transform preview for rotate/flip operations
  • Redesigned resize settings with tabbed UI (presets, custom dimensions, scale percentage)
  • Client-side ZIP extraction via fflate for batch result downloads
  • Per-file metadata display with caching

Fixed

  • White screen crash when uploading photos with null GPS EXIF data
  • TypeScript Uint8Array type incompatibility with fflate

0.4.1 - 2026-03-23

Fixed

  • Unified all services on port 1349 (was split across multiple ports)
  • Strip-metadata tool now correctly removes all EXIF data
  • Before/after slider and side-by-side comparison component rendering fixes

0.4.0 - 2026-03-23

Added

  • Resize tool redesign with tabbed settings UI — presets, custom dimensions, and scale percentage
  • Rotate/flip live preview using CSS transforms before server round-trip
  • Side-by-side comparison component for visual before/after on resize
  • Conditional result views — side-by-side for resize, live preview for rotate

Fixed

  • CI/CD pipeline — removed broken AI docs updater workflow, fixed Docker publish job

0.3.1 - 2026-03-23

Fixed

  • CI workflow failure: tsx binary not found in AI docs updater action

0.3.0 - 2026-03-23

Added

  • Real progress bars replacing indeterminate spinners across all tools
  • SSE-based progress streaming from Python AI scripts through the API to the frontend
  • ProgressCard component with determinate progress display for all tool types
  • useToolProcessor hook rewritten with XHR upload progress and SSE event streaming
  • onProgress callback support in all AI wrapper functions (rembg, RealESRGAN, PaddleOCR, MediaPipe, LaMa)
  • emit_progress() calls in all Python AI scripts for granular status updates
  • Intuitive subject/quality selector replacing raw model dropdown in background removal tool

Fixed

  • Progress bar no longer resets from 100% to 0% between processing stages
  • setError(null) no longer overrides setProcessing(true) race condition
  • SSE progress endpoint added to public auth paths (was returning 401)

0.2.1 - 2026-03-22

Added

  • Monorepo foundation — Turborepo with pnpm workspaces (apps/api, apps/web, apps/docs, packages/shared, packages/image-engine, packages/ai)
  • Fastify API server with health check, environment config, and SQLite database via Drizzle ORM
  • Authentication system with default admin user, login page, and session management
  • React SPA with Vite, Tailwind CSS, dark/light/system theme, and sidebar layout
  • 14 Sharp-based image operations — resize, crop, rotate, convert, compress, metadata strip, color adjust, and more
  • Generic tool route factory for declarative API endpoint creation
  • Tool settings UI for all core image tools with before/after comparison slider
  • Batch processing with ZIP download and SSE progress tracking
  • 30+ tools including watermark, text overlay, composition, collage, splitting, border/frame, image info, compare, duplicates, color palette, QR code, barcode, replace-color, SVG-to-raster, vectorize, GIF, favicon, and image-to-PDF
  • 6 AI-powered tools via Python sidecar — background removal, upscaling, OCR, face detection/blur, object erasure (LaMa inpainting)
  • Pipeline system — builder UI with templates, execution/save/list API endpoints
  • i18n architecture with English translations
  • Keyboard shortcuts for tool navigation
  • Mobile responsive layout with bottom navigation
  • Fullscreen tool grid view
  • Settings dialog (general, security, API keys, about)
  • API key management routes
  • Home page redesign with upload flow and auth guard
  • Multi-stage Docker build with Python ML dependencies
  • Playwright end-to-end test suite
  • VitePress documentation site with GitHub Pages deployment
  • GitHub Actions CI pipeline and Docker Hub auto-publish workflow
  • Semantic-release for automated versioning
  • Swagger/OpenAPI documentation at /api/docs
  • Automatic workspace file cleanup cron

Fixed

  • Python bridge ENOENT handling for venv fallback — no longer swallows script errors
  • Port configuration unified to 1349 for the UI across all modes
  • Home upload flow, auth redirect, and form submit handling bugs
  • Background removal defaults to U2-Net (fast, ~2s) instead of slow BiRefNet