Commit Graph
96 Commits
Author SHA1 Message Date
a8c7b92ca5 feat: SOTA image enhancement with one-click auto-improve (#55)
* feat(image-enhancement): add analysis and correction types

* feat(image-enhancement): implement auto-enhance analysis and correction engine

* test(image-enhancement): add unit tests for auto-enhance engine

* feat(image-enhancement): add API route with analyze endpoint and register in constants/i18n

* feat(image-enhancement): add UI component with mode selector, intensity slider, and analysis badges

* test(image-enhancement): add integration and e2e tests

* fix(image-enhancement): use modulate instead of gamma for exposure correction

Sharp's gamma() only accepts values between 1.0 and 3.0, but brightening
underexposed images computed gamma < 1.0. Switch to modulate({ brightness })
which handles both brightening and darkening correctly.

---------

Co-authored-by: stirling-image <stirling-image@users.noreply.github.com>
2026-04-13 17:48:53 +08:00
a1e11dff74 feat(gif-tools): SOTA upgrade with 6 processing modes (#52)
* feat(find-duplicates): upgrade to 128-bit dHash with metadata and thumbnails

* feat(find-duplicates): add custom-results display mode and duplicate store

* feat(find-duplicates): add results overview grid and detail comparison view

* feat(find-duplicates): overhaul settings with sensitivity presets and download actions

* feat(find-duplicates): update i18n description

* chore: replace jsqr with zxing-wasm for barcode reading

* feat(barcode-read): rewrite backend with zxing-wasm for all barcode types

* feat(barcode-read): rewrite frontend with multi-file, results table, progress, export

- Multi-file sequential processing with per-file progress
- Structured results table with type badges and copy per-result
- Copy All and Export CSV functionality
- Thorough scan toggle (maps to tryHarder in zxing-wasm)
- Before/after view shows annotated image with bounding boxes
- Updated tool description in constants and i18n

* feat(stitch): update tool name and description for redesign

* feat(stitch): add grid layout, alignment, border, radius, quality, and new resize modes

* feat(stitch): redesign settings UI with grid, alignment, border, radius, quality

* test(stitch): add stitch to e2e tool navigation suite

* feat(vectorize): redesign with dual-engine backend and preset-driven UI

- Backend: potrace for B&W, VTracer (@neplex/vectorizer) for full-color vectorization
- Frontend: 5 presets (logo, illustration, photo, sketch, custom)
- Settings: color precision, gradient step, detail, smoothing, corner threshold, invert
- Updated OpenAPI spec and i18n description

* feat(border): redesign with presets, shadow, padding color, swatches

- Add 8 one-click presets (Clean White, Gallery Black, Shadow, Rounded, Polaroid, Vintage, Minimal, Cinematic)
- Implement proper shadow rendering with blur, offset X/Y, color, opacity
- Add padding color control (was hardcoded white)
- Add color swatches for quick color selection
- Wrap in form for Enter key submission
- Add smart validation (requires at least one effect active)
- Align frontend/backend slider ranges
- Organize UI with sections and collapsible shadow toggle

* feat(split): overhaul image splitting with live grid overlay and tile preview

- Add interactive-split display mode with SplitCanvas component
- Live SVG grid overlay on uploaded image showing split boundaries
- Two split modes: Grid (NxM) and Tile Size (px dimensions)
- 9 grid presets (2x1, 1x2, 2x2, 3x1, 1x3, 3x3, 2x3, 3x2, 4x4)
- Output format selection (original/PNG/JPG/WebP) with quality slider
- Post-split tile preview thumbnails with individual download
- Download All as ZIP button
- HEIC/HEIF preview with loading spinner
- Backend: tile-size mode, output format conversion, quality control
- Zustand store for split state management

* feat(split): rewrite backend and frontend settings

Backend: tile-size mode, output format conversion, quality control.
Frontend: split modes, presets, format selector, tile preview grid.

* feat(border): add live CSS preview and remove before/after slider

- Add imageWrapperStyle prop to ImageViewer for live border preview
- Add onImageStyle callback through tool-page to settings components
- Change border displayMode to no-comparison (no slider)
- BorderControls sends live CSS styles (border, padding, radius, shadow)
- Preview updates instantly as user adjusts sliders or clicks presets

* fix: repair i18n file corrupted by formatter during merge conflict resolution

* feat(border): enable live CSS preview in right pane as settings change

* fix(border): keep CSS preview visible after processing for WYSIWYG consistency

* chore(gif-tools): scaffold for SOTA upgrade

- Add animated GIF test fixture (3 frames, 100x100)
- Update tool description to reflect new capabilities
- Add fflate dependency to API for ZIP creation

* feat(gif-tools): rewrite backend with 6 processing modes

Modes: resize (with percentage), optimize (colors/dither/effort),
speed (delay manipulation), reverse (frame reorder), extract
(single/range/all with ZIP), rotate (90/180/270 + flip).

Adds /api/v1/tools/gif-tools/info metadata endpoint.

* test(gif-tools): add integration tests for all 6 modes

Tests metadata endpoint, resize (pixel + percentage), optimize,
speed, reverse, extract (single/range/all), and rotate (angle + flip).

Fix animated.gif fixture to be a real 3-frame animation (was a single
100x300 frame). Fix reverse and rotate modes to process frames
individually and reassemble via GIF binary concatenation, since
Sharp 0.33.x loses page-height metadata when reconstructing from raw
pixel data.

* feat(gif-tools): rewrite frontend with tabbed 6-mode UI

- useGifInfo hook for metadata (frame count, dimensions, duration)
- Info bar showing GIF properties
- 3x2 mode grid: Resize, Optimize, Speed, Reverse, Extract, Rotate
- Animation modes disabled for static images
- Loop control (infinite/once/custom)
- Batch processing support

* test(gif-tools): add to representative tools in e2e suite

---------

Co-authored-by: Siddharth Kumar Sah <siddharth123sk@gmail.com>
2026-04-13 16:23:07 +08:00
Siddharth Kumar Sah 4618f9b866 docs(svg-to-raster): update tool description for new format and DPI support 2026-04-13 12:52:33 +08:00
Siddharth Kumar Sah 4a3883e5dd feat(qr-generate): register preview panel, update descriptions, update e2e test 2026-04-13 09:59:12 +08:00
Siddharth Kumar Sah 92d4d2d9c6 feat(smart-crop): overhaul with face detection, social presets, and 3 modes
Replace the confusing 2-mode smart crop with a clear 3-mode system:
- Subject Focus: Sharp attention/entropy saliency crop with social media presets
- Face Focus: MediaPipe face detection with headshot framing presets
- Auto Trim: Border removal with optional pad-to-square

Adds detectFaces() to AI package, face preset constants, backward
compatibility for old mode names, and comprehensive integration tests.
2026-04-13 00:47:53 +08:00
Siddharth Kumar Sah df94d7674d feat(ocr): update i18n description 2026-04-12 18:39:12 +08:00
Siddharth Kumar Sah 6c58f12262 feat: overhaul remove-background with effects pipeline, consolidate color tools
Remove Background:
- Two-phase flow: AI removes bg once, then effects adjust instantly
- Blur background effect with real-time CSS preview (portrait mode)
- Drop shadow effect with opacity control
- Gradient backgrounds with presets, custom colors, and angle
- Custom background image upload (including HEIC/HEIF)
- Solid color backgrounds moved from Python to Node.js/Sharp
- Effects-only API endpoint for instant re-renders without AI re-run
- HEIC/HEIF input support (decoded before passing to Python/rembg)
- Passport/ID photo checkbox defaults ON for People subject
- Before/after slider preserved when no effects active
- 15 comprehensive Playwright e2e tests

Color Tools:
- Consolidated 4 tools (brightness-contrast, saturation, color-channels,
  color-effects) into single "Adjust Colors" tool
- Added exposure, temperature, tint, hue, sharpness controls
- SVG filter-based live preview for all adjustments
- Backward-compatible URL redirects from old tool paths

Other fixes:
- Favicon tool: download button instead of auto-download
- Batch processing: HEIC filename extension fix
- File store: processedFilename field for proper batch downloads
2026-04-12 17:53:16 +08:00
Siddharth Kumar Sah dde70f70ad feat: comprehensive HEIC/HEIF support and edit-metadata ExifTool overhaul
- Add ensureSharpCompat() helper for automatic HEIC detection and decode
- Fix HEIC support in all 14 custom-route tools (image-to-pdf, split,
  barcode-read, compose, collage, stitch, compare, find-duplicates,
  color-palette, watermark-image, vectorize, favicon, info, branding)
- Fix PdfPagePreview using store's decoded blobUrl instead of raw File
- Add onError fallback in ImageViewer for unrenderable formats
- Fix image-to-pdf progress bar with flushSync for reliable rendering
- Add ExifTool backend for edit-metadata (GPS, keywords, IPTC, dates)
- Rename Strip Metadata to Remove Metadata with interactive Leaflet map
- Fix user-files thumbnail generation for stored HEIC files
- Fix info tool stats() histogram for HEIC via decoded buffer
- Skip HEIC preprocessing in batch route for metadata tools
2026-04-12 08:50:19 +08:00
Siddharth Kumar Sah 1707521f3a feat: replace Python seam carving with caire Go binary
Replace the Python seam-carving library with caire (esimov/caire v1.5.0),
a Go-based content-aware resize engine that is faster and supports both
shrinking and enlarging via seam insertion.

- Add Go builder stage in Dockerfile to compile caire from source
- Rewrite seam-carving.ts to call caire via execFile (no Python sidecar)
- Remove content-aware-resize from PYTHON_SIDECAR_TOOLS (60s timeout)
- Add new options: blur radius, edge sensitivity, square mode, face detection
- Move content-aware toggle below standard resize in UI (subtler placement)
- Rename "Don't enlarge" to "Limit to original size" with hover tooltip
- Add smooth progress bar for medium-duration tools
- Delete seam_carve.py and remove seam-carving pip dependency
- Update integration tests and visual regression screenshots
2026-04-11 17:49:28 +08:00
Siddharth Kumar Sah f2696443dc Merge branch 'main' of https://github.com/stirling-image/stirling-image 2026-04-10 23:02:47 +08:00
Siddharth Kumar Sah bbae319333 Merge branch 'refactor/remove-lite-variant' 2026-04-10 22:36:39 +08:00
semantic-release-bot 2ac7b6875b chore(release): 1.14.0 [skip ci]
# [1.14.0](https://github.com/stirling-image/stirling-image/compare/v1.13.0...v1.14.0) (2026-04-10)

### Bug Fixes

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

### Features

* expand model pre-download with verification and smoke test ([a9e3b96](https://github.com/stirling-image/stirling-image/commit/a9e3b9688776a51efd2f42cae810de425cf1d9cf))
* simplify CI to single unified Docker build ([b385a2e](https://github.com/stirling-image/stirling-image/commit/b385a2eabb255f7a8fe2d3720a358ff5bf254310))
* simplify compose to single file, add log rotation ([84f7057](https://github.com/stirling-image/stirling-image/commit/84f7057a49850b7a47440099ec2caad8d3b87efe))
* unified Docker image with GPU auto-detection ([6c3eb3b](https://github.com/stirling-image/stirling-image/commit/6c3eb3b876cee0301d5fb3ed8324a3c8e92b1307))
2026-04-10 14:13:37 +00:00
semantic-release-bot aa4e5cac8d chore(release): 1.13.0 [skip ci]
# [1.13.0](https://github.com/stirling-image/stirling-image/compare/v1.12.0...v1.13.0) (2026-04-10)

### Bug Fixes

* complete RBAC implementation lost during merge ([cc8a272](https://github.com/stirling-image/stirling-image/commit/cc8a27239b02a63ca88abc3e363c8a46f89674e8))

### Features

* add backend permission map and requirePermission middleware ([1a99571](https://github.com/stirling-image/stirling-image/commit/1a995711535a1525e709cdd7bff75361f457e942))
* add permission checks and admin override to API key routes ([d776680](https://github.com/stirling-image/stirling-image/commit/d776680f2d2342e35b84821792d6c24ae7e0ffbc))
* add permission checks and admin override to pipeline routes ([59f40db](https://github.com/stirling-image/stirling-image/commit/59f40dbfd4a97f8691b5fbbf6d338063c389987b))
* add permission checks and ownership scoping to user-files routes ([86ba698](https://github.com/stirling-image/stirling-image/commit/86ba69825a1dd87c9f868d79cd806b7d594cce1b))
* add shared Permission and Role types ([2f594e9](https://github.com/stirling-image/stirling-image/commit/2f594e96057c72bf107f3012426e87af5f97eb94))
* add tools:use permission check to tool, batch, pipeline, and upload routes ([885ace5](https://github.com/stirling-image/stirling-image/commit/885ace54f09b3301989f8aa404c15f60e19c054d))
* extend useAuth hook with role and permissions from session ([e0ba8be](https://github.com/stirling-image/stirling-image/commit/e0ba8be7b3211299c8cde90b2d22e7796eee2206))
* filter settings tabs by user permissions, remove admin fallback ([bcbd24a](https://github.com/stirling-image/stirling-image/commit/bcbd24a2395b93b64dbbf638ba0138f9ec9ba9da))
* include permissions and teamName in login/session responses ([4943177](https://github.com/stirling-image/stirling-image/commit/49431772ec6a02eae8aced48da92ef87a6c89afb))
* replace requireAdmin with requirePermission on all routes ([af7f57d](https://github.com/stirling-image/stirling-image/commit/af7f57d52f49c8f8412876639076084c96eba284))
2026-04-10 13:26:01 +00:00
Siddharth Kumar Sah 2f594e9605 feat: add shared Permission and Role types 2026-04-10 21:25:29 +08:00
Siddharth Kumar Sah 43324c1f23 feat: register pdf-to-image tool in shared constants and i18n 2026-04-10 20:56:13 +08:00
Siddharth Kumar Sah 958b10cb45 refactor: remove lite variant, fix release workflow
- Remove all lite/full variant logic from frontend, API, shared constants,
  docs, and tests (single unified Docker image only)
- Replace single QEMU multi-arch Docker build with per-architecture native
  builds (amd64 + arm64) and manifest merge to fix disk space exhaustion
- Add disk cleanup step and per-platform build cache scopes
- Switch release trigger from push to workflow_dispatch
- Add GitHub issue templates and PR template
2026-04-10 17:38:54 +08:00
semantic-release-bot b20039eddf chore(release): 1.12.0 [skip ci]
# [1.12.0](https://github.com/stirling-image/stirling-image/compare/v1.11.0...v1.12.0) (2026-04-10)

### Features

* unified Docker image with GPU auto-detection ([#37](https://github.com/stirling-image/stirling-image/issues/37)) ([b0083e2](https://github.com/stirling-image/stirling-image/commit/b0083e2b083d0bf52b6a576f7ef67fbff0cc8cbe))
2026-04-10 05:45:42 +00:00
semantic-release-bot 7bc979f677 chore(release): 1.11.0 [skip ci]
# [1.11.0](https://github.com/stirling-image/stirling-image/compare/v1.10.0...v1.11.0) (2026-04-07)

### Features

* **docs:** auto-generate llms.txt via vitepress-plugin-llms ([6a362d6](https://github.com/stirling-image/stirling-image/commit/6a362d6443cd85ac58a46f5b5cf29f9b6ff3020c))
2026-04-07 16:53:54 +00:00
semantic-release-bot d4d421d3ff chore(release): 1.10.0 [skip ci]
# [1.10.0](https://github.com/stirling-image/stirling-image/compare/v1.9.0...v1.10.0) (2026-04-07)

### Features

* add content-aware resize API route and registration ([d464942](https://github.com/stirling-image/stirling-image/commit/d464942cd9a7c1fecc837a14211e3fc5030d5cee))
* add content-aware resize toggle to resize settings UI ([aace4ca](https://github.com/stirling-image/stirling-image/commit/aace4caf0c5b10059a31e9dff5476d11b34b4323))
* add seam carving AI bridge module ([d3b6462](https://github.com/stirling-image/stirling-image/commit/d3b646207d3312aea9e12cc9435649b039bc4ac8))
* add seam carving Python script with face protection ([1460ab7](https://github.com/stirling-image/stirling-image/commit/1460ab7a4ad8235714ebd72ab1f8092baa456032))
2026-04-07 16:11:15 +00:00
stirling-imageandGitHub 28d0dfb45d Merge pull request #28 from stirling-image/feat/content-aware-resize
feat: add content-aware resize (seam carving) to resize tool
2026-04-08 00:10:50 +08:00
Siddharth Kumar Sah d464942cd9 feat: add content-aware resize API route and registration 2026-04-07 23:29:21 +08:00
semantic-release-bot 14deda12b8 chore(release): 1.9.0 [skip ci]
# [1.9.0](https://github.com/stirling-image/stirling-image/compare/v1.8.1...v1.9.0) (2026-04-07)

### Features

* add stitch API route handler ([1716468](https://github.com/stirling-image/stirling-image/commit/171646886f678b0f98140d378e675443bc7c737f))
* add stitch settings UI component ([330bfcf](https://github.com/stirling-image/stirling-image/commit/330bfcf162deeb30fb573702b554d304500eebde))
* register stitch component in web tool registry ([7ec5d86](https://github.com/stirling-image/stirling-image/commit/7ec5d86d9123696e84ebeae603ec09ce4c1477d3))
* register stitch route in API tool registry ([66520cd](https://github.com/stirling-image/stirling-image/commit/66520cdd0ee49bbecffdb3e248c03d2763aa5d08))
* register stitch tool in shared constants and i18n ([fbbbe70](https://github.com/stirling-image/stirling-image/commit/fbbbe70a35a6cd3cbc389503cff3333b85392871))
2026-04-07 14:21:16 +00:00
Siddharth Kumar Sah fbbbe70a35 feat: register stitch tool in shared constants and i18n 2026-04-07 21:49:46 +08:00
semantic-release-bot c598230331 chore(release): 1.8.1 [skip ci]
## [1.8.1](https://github.com/stirling-image/stirling-image/compare/v1.8.0...v1.8.1) (2026-04-07)

### Bug Fixes

* add variant diagnostics to health endpoint and lite mode banner ([3be388e](https://github.com/stirling-image/stirling-image/commit/3be388e12f8bc6a35d30b1b94e2772f9e005bccd))
2026-04-07 10:35:05 +00:00
semantic-release-bot cd2db4afdd chore(release): 1.8.0 [skip ci]
# [1.8.0](https://github.com/stirling-image/stirling-image/compare/v1.7.7...v1.8.0) (2026-04-06)

### Bug Fixes

* filter unsafe round-trip keys server-side in editMetadata ([a430e91](https://github.com/stirling-image/stirling-image/commit/a430e913245f6c83194cc1e47c34a327d80840d5))

### Features

* add edit-metadata API route with inspect and edit endpoints ([5284d5e](https://github.com/stirling-image/stirling-image/commit/5284d5ece5dd393bf346f29d4d95b506f0c87c94))
* add edit-metadata UI component with granular strip support ([492eeb0](https://github.com/stirling-image/stirling-image/commit/492eeb0f962b50db598b5ac50cc9c2ceea9ce605))
* add EditMetadataOptions type and exif-reader dep to image-engine ([723c794](https://github.com/stirling-image/stirling-image/commit/723c79491ecbfc9795ba6bbdacc8e47caa903719))
* extract shared metadata parsing utilities into image-engine ([7fba05e](https://github.com/stirling-image/stirling-image/commit/7fba05e1dccb4fd370848bf6b20276a9edffbd86))
* implement editMetadata operation in image-engine ([939bb04](https://github.com/stirling-image/stirling-image/commit/939bb049413202a4df37d1affa3765cd9a41e9e2))
* register edit-metadata in shared constants and i18n ([6ac366b](https://github.com/stirling-image/stirling-image/commit/6ac366b1556b285c6764927267fcb3b885b90fe9))
2026-04-06 14:09:07 +00:00
stirling-imageandGitHub b748b8e3b5 Merge pull request #22 from stirling-image/feat/edit-metadata
feat: add Edit Metadata tool
2026-04-06 22:08:43 +08:00
semantic-release-bot b387d2d17a chore(release): 1.7.7 [skip ci]
## [1.7.7](https://github.com/stirling-image/stirling-image/compare/v1.7.6...v1.7.7) (2026-04-06)

### Bug Fixes

* improve AI tool reliability for face detection and background removal ([#25](https://github.com/stirling-image/stirling-image/issues/25)) ([2eb77fe](https://github.com/stirling-image/stirling-image/commit/2eb77fe0f2a2340e69cb927ef7abd32eaa0400be))
2026-04-06 14:01:20 +00:00
semantic-release-bot 3c4562c9ce chore(release): 1.7.6 [skip ci]
## [1.7.6](https://github.com/stirling-image/stirling-image/compare/v1.7.5...v1.7.6) (2026-04-06)

### Bug Fixes

* batch SSE progress and non-AI processing UX ([#24](https://github.com/stirling-image/stirling-image/issues/24)) ([dc70cdb](https://github.com/stirling-image/stirling-image/commit/dc70cdbdd589601446c2794fe85019c5e8252714))
2026-04-06 13:25:24 +00:00
semantic-release-bot 3018137548 chore(release): 1.7.5 [skip ci]
## [1.7.5](https://github.com/stirling-image/stirling-image/compare/v1.7.4...v1.7.5) (2026-04-06)

### Bug Fixes

* add server-side logging to AI tool routes ([#23](https://github.com/stirling-image/stirling-image/issues/23)) ([75c7f13](https://github.com/stirling-image/stirling-image/commit/75c7f135feda6af190f1dd1f92dcf27d17229c31))
2026-04-06 13:00:53 +00:00
Siddharth Kumar Sah 6ac366b155 feat: register edit-metadata in shared constants and i18n 2026-04-06 19:23:18 +08:00
semantic-release-bot 48c803acfa chore(release): 1.7.4 [skip ci]
## [1.7.4](https://github.com/stirling-image/stirling-image/compare/v1.7.3...v1.7.4) (2026-04-06)

### Bug Fixes

* batch file ordering and format preservation for image tools ([#20](https://github.com/stirling-image/stirling-image/issues/20)) ([5d85562](https://github.com/stirling-image/stirling-image/commit/5d8556254f0684de7c3a1a177a28f8d1e0818cd3)), closes [#13](https://github.com/stirling-image/stirling-image/issues/13) [#14](https://github.com/stirling-image/stirling-image/issues/14)
2026-04-06 04:54:19 +00:00
semantic-release-bot 2eb74f242e chore(release): 1.7.3 [skip ci]
## [1.7.3](https://github.com/stirling-image/stirling-image/compare/v1.7.2...v1.7.3) (2026-04-06)

### Bug Fixes

* **docs:** correct broken llms.txt links on REST API page ([b46d250](https://github.com/stirling-image/stirling-image/commit/b46d2504e17d06b075964e063de19529a42bc363))
2026-04-06 03:30:11 +00:00
semantic-release-bot 42525db6dc chore(release): 1.7.2 [skip ci]
## [1.7.2](https://github.com/stirling-image/stirling-image/compare/v1.7.1...v1.7.2) (2026-04-05)

### Bug Fixes

* use torch.cuda for GPU detection instead of onnxruntime providers ([8d2f401](https://github.com/stirling-image/stirling-image/commit/8d2f40151277c1e00a9ca20a6956e37d2c204d48))
2026-04-05 14:24:35 +00:00
semantic-release-bot e8572358e9 chore(release): 1.7.1 [skip ci]
## [1.7.1](https://github.com/stirling-image/stirling-image/compare/v1.7.0...v1.7.1) (2026-04-05)

### Bug Fixes

* prevent false GPU detection when CUDA image runs without GPU ([a291d1f](https://github.com/stirling-image/stirling-image/commit/a291d1fe0ba6100f717441f346a6df77df7e8fdd))
2026-04-05 14:04:25 +00:00
semantic-release-bot 609fd57de8 chore(release): 1.7.0 [skip ci]
# [1.7.0](https://github.com/stirling-image/stirling-image/compare/v1.6.0...v1.7.0) (2026-04-05)

### Bug Fixes

* **web:** skip empty Authorization header for forward-auth proxy compatibility ([d0c69d6](https://github.com/stirling-image/stirling-image/commit/d0c69d6a4670ce6ffa397d8b4432687ed9b4d395)), closes [#6](https://github.com/stirling-image/stirling-image/issues/6)

### Features

* add GPU/CUDA acceleration support (:cuda Docker tag) ([29a382e](https://github.com/stirling-image/stirling-image/commit/29a382e9e0eb1ce8a7d08e68c41443495a52d3f8))
2026-04-05 12:36:40 +00:00
semantic-release-bot 30f36e6a5c chore(release): 1.6.0 [skip ci]
# [1.6.0](https://github.com/stirling-image/stirling-image/compare/v1.5.3...v1.6.0) (2026-04-04)

### Features

* lightweight Docker image without AI/ML tools (:lite tag) ([449a2fc](https://github.com/stirling-image/stirling-image/commit/449a2fc319e97cddfa71c29556e2d433dde78d6d)), closes [#1](https://github.com/stirling-image/stirling-image/issues/1)
2026-04-04 16:23:46 +00:00
stirling-imageandGitHub 449a2fc319 feat: lightweight Docker image without AI/ML tools (:lite tag)
Closes #1
2026-04-05 00:23:21 +08:00
semantic-release-bot 51f10abb35 chore(release): 1.5.3 [skip ci]
## [1.5.3](https://github.com/stirling-image/stirling-image/compare/v1.5.2...v1.5.3) (2026-04-04)

### Bug Fixes

* use heif-convert for HEIC decoding on Linux ([98553ed](https://github.com/stirling-image/stirling-image/commit/98553ed6743e11ff9af8e6fc718ce550d33a7f54))
2026-04-04 13:55:46 +00:00
semantic-release-bot d2381af9cd chore(release): 1.5.2 [skip ci]
## [1.5.2](https://github.com/stirling-image/stirling-image/compare/v1.5.1...v1.5.2) (2026-04-04)

### Bug Fixes

* install HEVC codec plugins for CI HEIC tests ([8991cde](https://github.com/stirling-image/stirling-image/commit/8991cde0aba91ee50383eaf14ca0a80fcf45da55))
2026-04-04 13:51:05 +00:00
semantic-release-bot 169fb41d57 chore(release): 1.5.1 [skip ci]
## [1.5.1](https://github.com/stirling-image/stirling-image/compare/v1.5.0...v1.5.1) (2026-04-04)

### Bug Fixes

* install libheif-examples in CI for HEIC tests ([f07454d](https://github.com/stirling-image/stirling-image/commit/f07454d349cc5029636aa95bac7d67f505133424))
2026-04-04 13:41:45 +00:00
semantic-release-bot cafe52d55d chore(release): 1.5.0 [skip ci]
# [1.5.0](https://github.com/stirling-image/stirling-image/compare/v1.4.0...v1.5.0) (2026-04-04)

### Features

* add HEIC/HEIF format support for input and output ([6717c17](https://github.com/stirling-image/stirling-image/commit/6717c17a26262f1e45037b4cb454df9400c5930e))
2026-04-04 13:34:28 +00:00
semantic-release-bot 84283c16bd chore(release): 1.4.0 [skip ci]
# [1.4.0](https://github.com/stirling-image/stirling-image/compare/v1.3.1...v1.4.0) (2026-04-04)

### Features

* add "Crop to Content" mode to smart crop tool ([93ad7cd](https://github.com/stirling-image/stirling-image/commit/93ad7cdfc170717a980ba12a2d90e8e3a9109989)), closes [#7](https://github.com/stirling-image/stirling-image/issues/7)
2026-04-04 11:50:22 +00:00
semantic-release-bot dba3f65d8c chore(release): 1.3.1 [skip ci]
## [1.3.1](https://github.com/stirling-image/stirling-image/compare/v1.3.0...v1.3.1) (2026-04-04)

### Bug Fixes

* default theme to light instead of following system preference ([30908ed](https://github.com/stirling-image/stirling-image/commit/30908ed058439f0cc8cc70976091083c260d6b05))
2026-04-04 11:42:34 +00:00
semantic-release-bot bc2d9bcea1 chore(release): 1.3.0 [skip ci]
# [1.3.0](https://github.com/stirling-image/stirling-image/compare/v1.2.1...v1.3.0) (2026-04-04)

### Bug Fixes

* add XHR timeout to prevent UI spinning forever ([dae27f4](https://github.com/stirling-image/stirling-image/commit/dae27f4d559d873af13b683a7b64e273d752e057))
* disable worker pool to prevent Docker processing hang ([5cd2b86](https://github.com/stirling-image/stirling-image/commit/5cd2b864bd878c80990d7ce47050b8e777f333a3))
* log volume permission errors instead of swallowing them ([3642b7d](https://github.com/stirling-image/stirling-image/commit/3642b7d3b23649a2c65e8580cf760714fa725ff3))
* replace crypto.randomUUID with generateId in AI tool settings ([659081c](https://github.com/stirling-image/stirling-image/commit/659081c5686bfdee8f3155714fcdba712ad154ab))
* replace crypto.randomUUID with generateId in pipeline/automation ([b650dcd](https://github.com/stirling-image/stirling-image/commit/b650dcd79128d95e66f2f1f172805e22ffa97f0d))
* replace crypto.randomUUID with generateId in use-tool-processor ([7a5a753](https://github.com/stirling-image/stirling-image/commit/7a5a753a2d4e74a65b4852fdd2d8e96331706559))
* replace navigator.clipboard with copyToClipboard utility ([9f03543](https://github.com/stirling-image/stirling-image/commit/9f0354388f22a57e4562a76b9140d1dd604089f1))
* resolve multiple API and e2e test bugs ([9d62173](https://github.com/stirling-image/stirling-image/commit/9d621734c3a34d846a65210f43a7037c4fa4628a))
* restore navigator.clipboard and execCommand mocks in tests ([6b03a8b](https://github.com/stirling-image/stirling-image/commit/6b03a8b8bde9b36b2de2fe377703e45d40645868))

### Features

* add copyToClipboard() utility with execCommand fallback ([19ce303](https://github.com/stirling-image/stirling-image/commit/19ce303123a917595d670247afcfa0df2b64117a))
* add generateId() utility for non-secure context compatibility ([f61ab9f](https://github.com/stirling-image/stirling-image/commit/f61ab9f85cd5893742fe11cdd749f9c4330b13b3))
2026-04-04 09:58:22 +00:00
semantic-release-bot 9f2dc00ec8 chore(release): 1.2.1 [skip ci]
## [1.2.1](https://github.com/stirling-image/stirling-image/compare/v1.2.0...v1.2.1) (2026-04-03)

### Bug Fixes

* handle volume permission issues for bind-mounted /data directory ([39afb2a](https://github.com/stirling-image/stirling-image/commit/39afb2a4032f64d49ef897da9b2616fe87668e0c))
2026-04-03 16:17:11 +00:00
semantic-release-bot 7827a374b2 chore(release): 1.2.0 [skip ci]
# [1.2.0](https://github.com/stirling-image/stirling-image/compare/v1.1.0...v1.2.0) (2026-04-03)

### Features

* move theme toggle and GitHub button to top-right navbar ([47e53dc](https://github.com/stirling-image/stirling-image/commit/47e53dc6cd173e5f8731e5bfa38dc12f586a16be))
2026-04-03 15:20:53 +00:00
semantic-release-bot c9f7cf27ec chore(release): 1.1.0 [skip ci]
# [1.1.0](https://github.com/stirling-image/stirling-image/compare/v1.0.1...v1.1.0) (2026-04-03)

### Features

* add GitHub stars button to docs navbar and fix footer license ([47adfde](https://github.com/stirling-image/stirling-image/commit/47adfde5cb450b00a5058354f70dcd633a60d219))
2026-04-03 15:15:03 +00:00
semantic-release-bot acbe15def5 chore(release): 1.0.1 [skip ci]
## [1.0.1](https://github.com/stirling-image/stirling-image/compare/v1.0.0...v1.0.1) (2026-03-30)

### Bug Fixes

* allow SVG files in the convert tool ([4fa8dd0](https://github.com/stirling-image/stirling-image/commit/4fa8dd07804504d56aefb96856f47638dabffefb))
2026-03-30 03:37:53 +00:00
semantic-release-bot 8d875fe6dc chore(release): 1.0.0 [skip ci]
# 1.0.0 (2026-03-30)

### Bug Fixes

* **a11y:** add aria-hidden to decorative GemLogo SVG ([d47548a](https://github.com/stirling-image/stirling-image/commit/d47548a1d7d2de995c881465b79a463de20354df))
* add remove-background settings to pipeline step configurator ([017a715](https://github.com/stirling-image/stirling-image/commit/017a71562ad7b15d7d1abec6cee9f8ab73db2b34))
* add SSE progress endpoint to public paths ([b3f590c](https://github.com/stirling-image/stirling-image/commit/b3f590c8b35fb396cf298187f241e45827ea1db8))
* **api:** allow Scalar docs through auth and CSP ([a46d500](https://github.com/stirling-image/stirling-image/commit/a46d500012e1f0724038c695a17e7dafd9be0c40))
* **api:** resolve team name lookup and show server error messages ([620b8ad](https://github.com/stirling-image/stirling-image/commit/620b8ad038506a03633ab9baf738c6c316fa4336))
* **api:** use content instead of spec.content for Scalar v1.49 API ([05854fd](https://github.com/stirling-image/stirling-image/commit/05854fd61f90a1096e1682ad021d744d178d9b9b))
* apply continuous progress bar to erase-object and OCR ([8db84a7](https://github.com/stirling-image/stirling-image/commit/8db84a753cd8dbd522146aa25e85bb454b032490))
* **blur-faces:** switch from MediaPipe to OpenCV and auto-orient images ([f15102c](https://github.com/stirling-image/stirling-image/commit/f15102c632d3fcbc5d33b33fd9cfdea5e4689eb6))
* bridge.ts ENOENT check for Python venv fallback ([977b5f5](https://github.com/stirling-image/stirling-image/commit/977b5f5ec0fdc6600e88b57734d8616a89b7c446))
* clear search when adding a step from the tool picker ([7b1b019](https://github.com/stirling-image/stirling-image/commit/7b1b019b772a9e36d51e2d696cd5e15312ddc704))
* continuous progress bar (no 100%→0% reset) ([28cd950](https://github.com/stirling-image/stirling-image/commit/28cd950ede6d0fc03e0d7cca0a013d883ea00238))
* **crop:** use percentCrop from onChange to fix inflated pixel values ([fbdbe09](https://github.com/stirling-image/stirling-image/commit/fbdbe0949a64d072e4e86d08c7b39372592eaf04))
* deduplicate react in Vite to prevent zustand hook errors in monorepo ([e8dfd2e](https://github.com/stirling-image/stirling-image/commit/e8dfd2e628e80734a613b56c46830071e9dbeeac))
* **docker:** add build layer caching for faster Docker rebuilds ([14c630f](https://github.com/stirling-image/stirling-image/commit/14c630ff23d973aa9d512ed87ede049ebd4b600f))
* **docker:** skip husky prepare script in production install ([200e7d1](https://github.com/stirling-image/stirling-image/commit/200e7d10c1cbffeeeae95434b4ae8f2d6b69b8a0))
* **docs:** clean up footer llms.txt links ([a4d4d36](https://github.com/stirling-image/stirling-image/commit/a4d4d368286a80decf73563ca6d7e7cae119099a))
* **docs:** ignore localhost dead links in VitePress build ([5c4b2a5](https://github.com/stirling-image/stirling-image/commit/5c4b2a59d3a9f1fa2dd428fd626f2bbbb9e3fea6))
* **docs:** remove hero logo from home page ([d3f6bac](https://github.com/stirling-image/stirling-image/commit/d3f6bac62b7e01e3a39371a1a52d865909412117))
* handle migration race condition in concurrent test workers ([ce51065](https://github.com/stirling-image/stirling-image/commit/ce5106524333b9bc7ee214b699d76e4b52371519))
* make port 1349 the UI port in all modes ([80bb0e2](https://github.com/stirling-image/stirling-image/commit/80bb0e29a064ad8b4787eb83b11333f67ffbdc8a))
* move health diagnostics behind admin auth ([818e587](https://github.com/stirling-image/stirling-image/commit/818e5877a773e6af48f9530199c6fa52e207bd50))
* **ocr:** update PaddleOCR for v3 API and add Tesseract fallback ([f71c3c8](https://github.com/stirling-image/stirling-image/commit/f71c3c8c05bc7203d37a46743bebb62b79c8ac51))
* pipeline only shows compatible tools and displays errors ([0410bf3](https://github.com/stirling-image/stirling-image/commit/0410bf34610aa56391615ab3a95ea77a12668743))
* prevent pipeline step settings from resetting on collapse ([9acbedf](https://github.com/stirling-image/stirling-image/commit/9acbedf4b75c6314f659e94f9d0721a40595201d))
* prevent stale closure in pipeline step callbacks ([8b20fef](https://github.com/stirling-image/stirling-image/commit/8b20fef2d8123411faa2c2379693136af6b0f9ba))
* prevent useAuth infinite loop causing rate limit storms ([3b4f522](https://github.com/stirling-image/stirling-image/commit/3b4f522bf4d63109254edc22baca568fdfd7dd98))
* Python bridge fallback only on missing venv, not script errors ([818d2ac](https://github.com/stirling-image/stirling-image/commit/818d2acd9471295408198a37b6d40bd63795fe17))
* reject HTML tags in settings API to prevent stored XSS ([8a62093](https://github.com/stirling-image/stirling-image/commit/8a6209313052371c123c5996cb41b9e431251874))
* remove explicit pnpm version from CI to avoid conflict with packageManager ([8aa4c35](https://github.com/stirling-image/stirling-image/commit/8aa4c35db0d8fc5900acd496116e72b768c2e568))
* remove Google Drive coming soon placeholder from files nav ([658954e](https://github.com/stirling-image/stirling-image/commit/658954ea19e17d1af83d45229ec40397de376042))
* resolve 3 critical UX bugs - home upload, auth, and form submit ([de82900](https://github.com/stirling-image/stirling-image/commit/de829003add3758024962ca3cc9b7a111688ca1b))
* resolve pipeline step race condition and infinite re-render loop ([aa1f87f](https://github.com/stirling-image/stirling-image/commit/aa1f87fc91e0b5edd93c6720fcc54a839e51893a))
* resolve test failures from shared DB race conditions ([b474480](https://github.com/stirling-image/stirling-image/commit/b474480698695cda2eaf2c9ae642ac3ffd15d007))
* resolve tsx not found in AI docs updater workflow ([b803b0e](https://github.com/stirling-image/stirling-image/commit/b803b0e443b54bbca33cf88fe1ab38eeddd38baf))
* resolve TypeScript Uint8Array type error with fflate ([1d35db9](https://github.com/stirling-image/stirling-image/commit/1d35db98bf359c07779522c30b00d8c7a9d3cb89))
* restore APP_VERSION import used by health endpoint ([7dfa7a2](https://github.com/stirling-image/stirling-image/commit/7dfa7a295de407f45832b68a2ef64acf2f21205f))
* setError(null) was overriding setProcessing(true) ([b5cc452](https://github.com/stirling-image/stirling-image/commit/b5cc45207758c25867833fad961744a37df36fda))
* show checkerboard behind transparent images in before/after slider ([2e29501](https://github.com/stirling-image/stirling-image/commit/2e29501ae6f1652cc3d0e9193863aeddb18513af))
* simplify public health to static response, add 403 test ([4577d5c](https://github.com/stirling-image/stirling-image/commit/4577d5c30ea53c72b02490b78b6765295e55213a))
* streamline CI/CD — remove broken AI docs updater, fix Docker publish ([4f984c8](https://github.com/stirling-image/stirling-image/commit/4f984c83acc4bfaa5b9479d80e2bdda05f4a2ccc))
* surface hidden errors and add batch rejection tests ([4a50428](https://github.com/stirling-image/stirling-image/commit/4a504281a34561b47b60d00edaf8914f5a8e0197))
* switch README Docker references from GHCR to Docker Hub ([fb84f5c](https://github.com/stirling-image/stirling-image/commit/fb84f5ce8d175e568cce20caddcf79832d0bb973))
* sync stepsRef during render, not useEffect ([748ac60](https://github.com/stirling-image/stirling-image/commit/748ac607bc71892c588e6a1795d258d4fc7f3413))
* **test:** add missing PNG fixture files to repo ([8474b0e](https://github.com/stirling-image/stirling-image/commit/8474b0ee52fe803c55247a082becc4334e83186f))
* **test:** exclude e2e tests from vitest and fix CI test suite ([91acab9](https://github.com/stirling-image/stirling-image/commit/91acab9967e2b5dd7dbc7a98e667f785f3e7364e))
* **tests:** remove temp DB cleanup that races with other test files ([b08e006](https://github.com/stirling-image/stirling-image/commit/b08e006512744f13b893e92e9ac20ee6299ab41c))
* trigger browser password save prompt on password change ([565b480](https://github.com/stirling-image/stirling-image/commit/565b4805c7b32af66bb07543c6d3bae2865dbbdd))
* **ui:** clean up settings, automate page, fullscreen logo, and README ([e3a8558](https://github.com/stirling-image/stirling-image/commit/e3a85581349b6a992939b08ede932705613d915f))
* unify project on port 1349, improve strip-metadata and UI components ([0e7348a](https://github.com/stirling-image/stirling-image/commit/0e7348a0bedb6c47a8025c47b377849169aa7472))
* **upscale:** auto-orient images before upscaling and improve UI ([8ee4d7b](https://github.com/stirling-image/stirling-image/commit/8ee4d7b2fb3f88b2869ada8d6a6c5fb0df432e3b))
* use BiRefNet-Lite as default model and fix JSON parsing ([2bdc367](https://github.com/stirling-image/stirling-image/commit/2bdc367767300e414c69636e8fef3013c9096c28))
* use two-pass validation in settings PUT to prevent partial writes ([813fa6b](https://github.com/stirling-image/stirling-image/commit/813fa6b7e8d8e371959cff4d4a2a85ece4a636bb))
* use U2-Net as default model (fast, 2s) with BiRefNet as opt-in ([fb1d366](https://github.com/stirling-image/stirling-image/commit/fb1d366d5fa5cb9c054deceb597a2e4a30229c8c))
* white screen crash when uploading photos with null GPS EXIF data ([70c73d8](https://github.com/stirling-image/stirling-image/commit/70c73d85c992bc724c6b18a2d43789871b318e78))

### Features

* accept clientJobId in batch endpoint for SSE progress correlation ([2514078](https://github.com/stirling-image/stirling-image/commit/2514078ea1feb8e44296e226e37e8e379a20473a))
* add authentication with default admin user ([3cb7123](https://github.com/stirling-image/stirling-image/commit/3cb712307011f0992783d421c5ffc8b4957bd6f5))
* add automatic workspace file cleanup cron ([8bda220](https://github.com/stirling-image/stirling-image/commit/8bda22033f511cef7304725e8887e10faf5e0e9d))
* add CSS transform props to ImageViewer for live rotate/flip preview ([113bb75](https://github.com/stirling-image/stirling-image/commit/113bb757333e9ad809a401000f3b6b34fa1ef415))
* add CSS transform props to ImageViewer for live rotate/flip preview ([267da78](https://github.com/stirling-image/stirling-image/commit/267da7857743898e612ba5bb80e24985664bd311))
* add Fastify API server with health check and env config ([1e7fb11](https://github.com/stirling-image/stirling-image/commit/1e7fb11da0fac730ccd1dc6f8a1a99a3abeaf945))
* add forced password change page on first login ([01cd1d9](https://github.com/stirling-image/stirling-image/commit/01cd1d9f71427319284579b438ad08ede56517a6))
* add format tools (SVG-to-raster, vectorize, GIF) and optimization (rename, favicon, image-to-PDF) ([b88d0d0](https://github.com/stirling-image/stirling-image/commit/b88d0d0af8285ce6e802713897de7d262bcd8a8b))
* add generic tool page template with settings panel and dropzone ([de3d544](https://github.com/stirling-image/stirling-image/commit/de3d544ab6e199b3452fb24ba9a987dc9abc3648))
* add image-engine and ai stub packages ([19e4820](https://github.com/stirling-image/stirling-image/commit/19e48203bb14e4061a677fc9e760a15b01ac366f))
* add layout tools (collage, splitting, border/frame) ([b8aba17](https://github.com/stirling-image/stirling-image/commit/b8aba1719c4ca99fe4a26065dae796c1a4233155))
* add live preview callback to RotateSettings, rename button to Apply ([31a9439](https://github.com/stirling-image/stirling-image/commit/31a943962d46fab1eb1efd9f605fc5a0144ddd87))
* add live preview callback to RotateSettings, rename button to Apply ([ec192e3](https://github.com/stirling-image/stirling-image/commit/ec192e3d96d864e3ce47e991ba1c72d6a4ee7cea))
* add login page with split layout matching Stirling-PDF style ([b7900ed](https://github.com/stirling-image/stirling-image/commit/b7900ed4efb467a34dd3b71dc578416120f7746c))
* add multi-stage Docker build with Python ML dependencies ([5c7d1e1](https://github.com/stirling-image/stirling-image/commit/5c7d1e1f3d7e32642c9ba3053610138d73cb22d7))
* add MultiImageViewer with arrow navigation and filmstrip ([815a8ed](https://github.com/stirling-image/stirling-image/commit/815a8ed419b82aadec4e07ef4456e9e96b84b65f))
* add password generator and browser save prompt on change-password page ([7c76c2a](https://github.com/stirling-image/stirling-image/commit/7c76c2a2a0116de8418b0438a3859fc1add419e3))
* add Phase 4 AI tools with Python bridge and 6 new tools ([5524939](https://github.com/stirling-image/stirling-image/commit/5524939b6fae9471a615c2f689b2f3fa68190700))
* add privacy policy page and fix CSP blocking API docs ([7f17cb9](https://github.com/stirling-image/stirling-image/commit/7f17cb98ce4b6979f18c34e3a3a94b79fc462e82))
* add processAllFiles batch method to tool processor hook ([846a51a](https://github.com/stirling-image/stirling-image/commit/846a51a9fdf4e8fc4c1b9673f13acde646ae0ca9))
* add replace-color tool and update tool page routing ([9c55dd3](https://github.com/stirling-image/stirling-image/commit/9c55dd32c42e0f8f2f129a2ceccc9b7f6e823de8))
* add semantic-release for automated versioning and help dialog ([4807bd2](https://github.com/stirling-image/stirling-image/commit/4807bd27260aab512d8c71d1b635b71d644b6221))
* add shared package with types, tool definitions, and constants ([f210de1](https://github.com/stirling-image/stirling-image/commit/f210de1a130a6307ff3639c8ccf573950ce0e460))
* add SideBySideComparison component for resize results ([28a8b10](https://github.com/stirling-image/stirling-image/commit/28a8b10fa15fa216d7f53256bea9461650358fb1))
* add SideBySideComparison component for resize results ([271cab6](https://github.com/stirling-image/stirling-image/commit/271cab647bb41872c5e205d6236e35eb7fad0810))
* add SQLite database with Drizzle ORM schema and migrations ([a24c6dd](https://github.com/stirling-image/stirling-image/commit/a24c6dd014ebec2af1cf5d8f17c2b7a8a4e6715c))
* add Stirling-PDF-style layout with sidebar, tool panel, dropzone, and theme toggle ([e920021](https://github.com/stirling-image/stirling-image/commit/e920021da1cc6e5fdb4e479205fe0861567621c7))
* add Swagger/OpenAPI documentation at /api/docs ([4069f4d](https://github.com/stirling-image/stirling-image/commit/4069f4db42e6ed8700b705ff4da32c6dab8f0197))
* add theme system with dark/light/system support and persistence ([541e495](https://github.com/stirling-image/stirling-image/commit/541e49576ced03c8eafe5a8c2d6994da21606094))
* add ThumbnailStrip filmstrip component ([6521d70](https://github.com/stirling-image/stirling-image/commit/6521d702385f23a7cb9312c1661541943bfe2e03))
* add utility tools (image info, compare, duplicates, color palette, QR, barcode) ([0c3c64e](https://github.com/stirling-image/stirling-image/commit/0c3c64eeace536684345e1c9822481e282577796))
* add Vite + React SPA with Tailwind CSS and routing ([5fa012e](https://github.com/stirling-image/stirling-image/commit/5fa012e44b32984e9c163cafed04eb89d3dc6436))
* add watermark, text overlay, and image composition tools ([aeaf783](https://github.com/stirling-image/stirling-image/commit/aeaf783ee412acaa38c81b090445570769f4cec8))
* add worker threads, persistent Python sidecar, graceful shutdown, and architectural improvements ([1cbdfa1](https://github.com/stirling-image/stirling-image/commit/1cbdfa15900a58a5db23361167d3ed71d59bf189))
* **adjustments:** add real-time live preview for all color tools ([f357b18](https://github.com/stirling-image/stirling-image/commit/f357b18ced8757da0a6c34f18541bb8875c2199a))
* **ai:** add emit_progress() calls to all Python AI scripts ([7238429](https://github.com/stirling-image/stirling-image/commit/723842988b39a8d9ea4f5b0cdd97569ff0c65f68))
* **ai:** add onProgress callback to all AI wrapper functions ([acb230c](https://github.com/stirling-image/stirling-image/commit/acb230cc98193766fc978098c12dfedf08a0a339))
* **ai:** rewrite bridge.ts to stream stderr progress via spawn ([7d74ddd](https://github.com/stirling-image/stirling-image/commit/7d74ddd3a6a466f1863412b36501c663fd642194))
* **api,web:** add batch processing with ZIP download and SSE progress ([ce64116](https://github.com/stirling-image/stirling-image/commit/ce641168c1db26b184480d588184205373a3e397))
* **api:** add all remaining endpoints to OpenAPI spec ([9ed1090](https://github.com/stirling-image/stirling-image/commit/9ed109065189f20545eb24893c2c0b9332e40249))
* **api:** add all tool endpoints to OpenAPI spec ([2bf8689](https://github.com/stirling-image/stirling-image/commit/2bf86894d0005ff4c273334699c30de1fcb38ee6))
* **api:** add generic tool route factory for all image tools ([d53f673](https://github.com/stirling-image/stirling-image/commit/d53f6733b8b5d44754c9525eae57aaba928590b7))
* **api:** add llms.txt and llms-full.txt endpoints ([cff1930](https://github.com/stirling-image/stirling-image/commit/cff1930920c488fc853eab5aa36128fac19b3bf5))
* **api:** add logo upload/serve/delete routes with tests ([6a13065](https://github.com/stirling-image/stirling-image/commit/6a1306570660d4962f89e741dfb684d2ed0e7f6c))
* **api:** add multipart file upload, workspace management, and download routes ([ece341e](https://github.com/stirling-image/stirling-image/commit/ece341e8c49be8d1def42834c01b5a7725b55d9c))
* **api:** add OpenAPI 3.1 spec skeleton with common schemas ([9488201](https://github.com/stirling-image/stirling-image/commit/948820180663783d463a07f966dd4336c1a7c503))
* **api:** add persistent file management helpers to frontend api module ([8a3a731](https://github.com/stirling-image/stirling-image/commit/8a3a731267f4e3cd84a01a78d89975197ce2ebad))
* **api:** add pipeline execution, save, and list endpoints ([263447a](https://github.com/stirling-image/stirling-image/commit/263447a81e9db7ef3bc840e69b5c9b9ad0d88c86))
* **api:** add resize, crop, rotate, convert, compress, metadata, and color tool routes ([37112af](https://github.com/stirling-image/stirling-image/commit/37112af779d491e8f8d585d6ade9e5a8d4fafba0))
* **api:** add Scalar docs route and install dependency ([abb2916](https://github.com/stirling-image/stirling-image/commit/abb2916233de85e62675e609b9d497dcc0a01882))
* **api:** add SingleFileProgress type and SSE update function ([7eddac5](https://github.com/stirling-image/stirling-image/commit/7eddac5119d1db3cbf831c735c5b78f0c92728ef))
* **api:** add teams CRUD routes and update auth team references ([ab370a7](https://github.com/stirling-image/stirling-image/commit/ab370a74fefebc8735e337f9b42e48ab6625c5b4))
* **api:** add tool filtering and DB-backed cleanup settings ([acfff75](https://github.com/stirling-image/stirling-image/commit/acfff754b54b5f9be474c6db6eb39b3cbf91fc21))
* **api:** add user files CRUD routes at /api/v1/files/* ([4e2aa58](https://github.com/stirling-image/stirling-image/commit/4e2aa5876701ef56514957a30fe63c27c615cf05))
* **api:** register docs route in server and test helper ([849878e](https://github.com/stirling-image/stirling-image/commit/849878e72fc0e5cb3e775afeea802dac933c4e13))
* **api:** wire AI route handlers to SSE progress via clientJobId ([27600a4](https://github.com/stirling-image/stirling-image/commit/27600a431805d54b32875dbe5a58f05cfcdbe2a1))
* **branding:** add faceted gem SVG logo assets ([0214ac1](https://github.com/stirling-image/stirling-image/commit/0214ac11b1ba4142349c09fd2465a425b4e8dd6b))
* **branding:** add favicon and meta tags to index.html ([0364927](https://github.com/stirling-image/stirling-image/commit/036492725eea6cb6b4c0aff307edeee8516ec280))
* **branding:** add OG social preview image ([dcd926c](https://github.com/stirling-image/stirling-image/commit/dcd926c57e9877c2b47e70c494b679f0c00d93d6))
* **branding:** add PWA manifest and PNG logo assets ([26cc183](https://github.com/stirling-image/stirling-image/commit/26cc18342fb6d4027f2130b198090469e27ef797))
* **branding:** show gem icon in app header as default logo ([39dfb93](https://github.com/stirling-image/stirling-image/commit/39dfb93679765366253115240adcbc573e83b8e7))
* conditional result views — side-by-side for resize, live preview for rotate ([989e8dc](https://github.com/stirling-image/stirling-image/commit/989e8dc6e47fe123d6333dddf4431a01623e0437))
* conditional result views — side-by-side for resize, live preview for rotate ([59a57f3](https://github.com/stirling-image/stirling-image/commit/59a57f3a00bbd0c6331d1165594ad4266ce3b536))
* **crop:** add CropCanvas component with visual overlay, grid, and keyboard controls ([1a076be](https://github.com/stirling-image/stirling-image/commit/1a076be9b2cc5f434296f2739a395321368c2177))
* **crop:** add react-image-crop dependency ([31d426f](https://github.com/stirling-image/stirling-image/commit/31d426ff6f02965d20e75e85ff15a8cbc1d1df0b))
* **crop:** redesign CropSettings with aspect presets, pixel inputs, and grid toggle ([c2c256a](https://github.com/stirling-image/stirling-image/commit/c2c256a180640cf046bd1bc46b05065171a4c2dc))
* **crop:** wire CropCanvas and CropSettings into tool-page with bidirectional state ([786a671](https://github.com/stirling-image/stirling-image/commit/786a671c39859ae0bf1f8732c2ff4efe210d2466))
* **db:** add teams table and migration ([926b52d](https://github.com/stirling-image/stirling-image/commit/926b52d33045dc1f15192bb65d4f005f6c82ce00))
* **db:** add userFiles table and migration ([dda37e9](https://github.com/stirling-image/stirling-image/commit/dda37e90cc294140c236332563befae0a3b02852))
* **docs:** add gem favicon to VitePress site ([42ec0f2](https://github.com/stirling-image/stirling-image/commit/42ec0f2490267f2e3730764539bdd2920b7b3793))
* **docs:** add gem logo to GitHub Pages nav bar and home hero ([98478e2](https://github.com/stirling-image/stirling-image/commit/98478e271934c8b3deb1b3003d88fe1a165e75a0))
* **docs:** add llms.txt and llms-full.txt to GitHub Pages ([e6dc7b0](https://github.com/stirling-image/stirling-image/commit/e6dc7b0a18d3d022de4e2f0b971bf25678042b3a))
* **docs:** add llms.txt links to GitHub Pages footer ([c59e4a0](https://github.com/stirling-image/stirling-image/commit/c59e4a06686db62ad8ec134ec1c97080673fbcb3))
* **env:** add FILES_STORAGE_PATH config variable ([4927f57](https://github.com/stirling-image/stirling-image/commit/4927f574badda883ad72ba05c30a8d9fae973ee6))
* **erase-object:** replace mask upload with in-browser brush painting ([40656a0](https://github.com/stirling-image/stirling-image/commit/40656a0452109c1d6ea2441b2735b0ffaf4f3867))
* extract auto-orient utility and expand test coverage ([e5086ad](https://github.com/stirling-image/stirling-image/commit/e5086ada6e2f4402973f203b726578dd42da4a32))
* **files:** add Files page with nav, list, details, upload, and routing ([788b8c8](https://github.com/stirling-image/stirling-image/commit/788b8c8bad8cf6800137f4764f5a50ac80845f2f))
* **files:** add mobile layout for Files page ([c99f43f](https://github.com/stirling-image/stirling-image/commit/c99f43fe60aac2a7babeb7cea39e140281936009))
* **files:** wire serverFileId for version tracking ([20f153d](https://github.com/stirling-image/stirling-image/commit/20f153d611c9dec478ab89cd050c6c65b0e41287))
* harden auth, security headers, SVG sanitization, and pipeline ownership ([432cc92](https://github.com/stirling-image/stirling-image/commit/432cc92471b73b73ab9d1be4a82a71d3ed3a88ad))
* **i18n:** add translation keys for settings phase 1 ([ffb676d](https://github.com/stirling-image/stirling-image/commit/ffb676d648027804e653b868139f349b5a3c6c96))
* **image-engine:** add Sharp wrapper with 14 image operations ([ccac5b8](https://github.com/stirling-image/stirling-image/commit/ccac5b885c327656eb76241a74be7e510ca32903))
* **image-to-pdf:** add live PDF page preview with margin visualization ([ddde152](https://github.com/stirling-image/stirling-image/commit/ddde152545456770ec4a97418968c2ad309a88e0))
* implement Files page with persistent storage and version tracking ([62fbb54](https://github.com/stirling-image/stirling-image/commit/62fbb5484c669b74132b4ecd23576bf0ba5b50b2))
* initialize Turborepo monorepo with pnpm workspaces ([58fbb38](https://github.com/stirling-image/stirling-image/commit/58fbb38fd88973522ac894dc6237aeabd7849b64))
* integrate MultiImageViewer and multi-file UX into tool page ([3796533](https://github.com/stirling-image/stirling-image/commit/37965338228a2fca3623718a7db2f8757a464651))
* make AI tools pipeline-compatible and add search to tool picker ([c48bfba](https://github.com/stirling-image/stirling-image/commit/c48bfba879f55591e03a0918d9b8de9618cc8dc0))
* merge multi-image UX — batch processing, filmstrip navigation, resize/rotate redesign ([80756d1](https://github.com/stirling-image/stirling-image/commit/80756d15917a877b21a900d282bb6522ae76c2e2))
* multi-arch Docker support, security hardening, and test improvements ([6cfa3b0](https://github.com/stirling-image/stirling-image/commit/6cfa3b0c38d81a19b230e1bdbad750dce2783afb))
* multi-file metadata display with per-file caching ([474b4a9](https://github.com/stirling-image/stirling-image/commit/474b4a941e1be43887beac8d2ec57eb703cba260))
* **pipeline:** add inline settings configuration for automation steps ([adc7e1c](https://github.com/stirling-image/stirling-image/commit/adc7e1c0370df1687b0660bdff279c90ac9d0871))
* production Docker, Playwright tests, settings API, and bug fixes ([ce03aad](https://github.com/stirling-image/stirling-image/commit/ce03aad10f00f173a3b82a478288626ee8f00e32))
* replace model dropdown with intuitive subject/quality selector in remove-bg ([9aa0371](https://github.com/stirling-image/stirling-image/commit/9aa0371a1452540557aca9f2195032c5c16ce3fb))
* rewrite file-store with FileEntry model for multi-image support ([8844b44](https://github.com/stirling-image/stirling-image/commit/8844b44fff2abfbe3262a113dfc35d83367add05))
* rewrite resize settings with tab-based UI (presets, custom, scale) ([02ef3e6](https://github.com/stirling-image/stirling-image/commit/02ef3e6468b36303dfdbc61e18c14dc5eb68d957))
* rewrite resize settings with tab-based UI (presets, custom, scale) ([bc105fd](https://github.com/stirling-image/stirling-image/commit/bc105fd261de3c11b279557dba98aaad65214f42))
* **rotate:** add editable angle input and fine-tune +/- buttons ([bf62820](https://github.com/stirling-image/stirling-image/commit/bf6282006489a4cadcd849b476e97239e3624673))
* serve React SPA from Fastify in production mode ([1d8761a](https://github.com/stirling-image/stirling-image/commit/1d8761a976f2e1006526496e2fd67c27be757991))
* **storage:** add file storage helpers module ([fbca20d](https://github.com/stirling-image/stirling-image/commit/fbca20d78c213e0b7f00f6c59eae4af32123a587))
* **stores:** add Zustand store for Files page state management ([24644c1](https://github.com/stirling-image/stirling-image/commit/24644c1c1052146a2b581ffc3a791a9276fab6a1))
* **tool-factory:** auto-save results to persistent file store when fileId provided ([bf6c30c](https://github.com/stirling-image/stirling-image/commit/bf6c30c3c0d9beeaa24a7b7b998de9354ec7e353))
* **ui:** add teams, tools, feature flags, temp files, logo to settings dialog ([4b2621d](https://github.com/stirling-image/stirling-image/commit/4b2621d9f2c5fcc930baf9ed1a6b555de77f0b93))
* upgrade to BiRefNet SOTA background removal model ([77ee846](https://github.com/stirling-image/stirling-image/commit/77ee8469d89fa29f29fbba1360e139b2a502d70f))
* **web:** add before/after image comparison slider component ([1a22522](https://github.com/stirling-image/stirling-image/commit/1a22522349619b726630467b751f08775f16bd07))
* **web:** add fullscreen tool grid view ([6d67b10](https://github.com/stirling-image/stirling-image/commit/6d67b106ca5fd5a475c3d2cac4b6aecd23fc06cd))
* **web:** add i18n architecture with English translations ([cd020c2](https://github.com/stirling-image/stirling-image/commit/cd020c2342d430480a43a7f6469034ca6f9ef1ed))
* **web:** add keyboard shortcuts for tool navigation ([939bc2e](https://github.com/stirling-image/stirling-image/commit/939bc2e001a509044f96f9557434c255abb47adc))
* **web:** add mobile responsive layout with bottom navigation ([580208d](https://github.com/stirling-image/stirling-image/commit/580208de83349362b27b3a8a6db3370fc2770d0e))
* **web:** add pipeline builder UI with saved automations and templates ([60541c1](https://github.com/stirling-image/stirling-image/commit/60541c1765b3c31679d345dbde3c00a7085e8712))
* **web:** add ProgressCard component ([01d5d66](https://github.com/stirling-image/stirling-image/commit/01d5d66466a7bcf4a0c0f454f7b4d58f7e1e7801))
* **web:** add ProgressCard to non-AI tool settings (Group A) ([5c64b30](https://github.com/stirling-image/stirling-image/commit/5c64b306ead8b6214dee6d51e8dae25fb47ff7e8))
* **web:** add settings dialog with general, security, API keys, and about sections ([0cd3d71](https://github.com/stirling-image/stirling-image/commit/0cd3d71a631b3573cda24f4b0db5ff9d77b85abd))
* **web:** add Stirling-PDF-style file preview, review panel, and tool chaining UX ([ab0b034](https://github.com/stirling-image/stirling-image/commit/ab0b0344b964eb7481af0d2df0420db99aea6428))
* **web:** add tool settings UI for all core image tools ([8964bc5](https://github.com/stirling-image/stirling-image/commit/8964bc5cd89d6e08ed6ba408b1c64b7bed9fb3cb))
* **web:** migrate AI tool settings to ProgressCard ([dbd3bf7](https://github.com/stirling-image/stirling-image/commit/dbd3bf737e4692279ba5b7c3d860779193a21b5f))
* **web:** redesign home page upload flow and add auth guard ([06c5ee5](https://github.com/stirling-image/stirling-image/commit/06c5ee59962fb6a2e520b72f487061f8d58e8648))
* **web:** rewrite useToolProcessor with XHR upload progress and SSE ([60945fd](https://github.com/stirling-image/stirling-image/commit/60945fd3b3674d2026f3f717cd3d123951126933))
* wire up batch processing across tool settings components ([9e2c28f](https://github.com/stirling-image/stirling-image/commit/9e2c28f19124fca4bc4f55c0997e2314170ae478))
2026-03-30 00:28:23 +00:00
semantic-release-bot 8f98b745ff chore(release): 0.19.0 [skip ci]
# [0.19.0](https://github.com/siddharthksah/Stirling-Image/compare/v0.18.0...v0.19.0) (2026-03-29)

### Features

* add privacy policy page and fix CSP blocking API docs ([7f17cb9](https://github.com/siddharthksah/Stirling-Image/commit/7f17cb98ce4b6979f18c34e3a3a94b79fc462e82))
2026-03-29 15:57:41 +00:00