Siddharth Kumar Sah
caf65bc469
fix: address code review findings before merge
...
- Warn on startup if deprecated STIRLING_VARIANT env var is set
- Broaden upscale.py exception handling to catch RuntimeError/OSError
for Lanczos fallback (not just ImportError)
- Add QEMU + multi-arch (amd64+arm64) to CI Docker build test
- Use .get() instead of .all() for single-row health check query
- Restore container_name in docker-compose.yml for backwards compat
2026-04-10 10:35:13 +08:00
Siddharth Kumar Sah
c0b419de21
fix: suppress ML library stdout noise in ocr.py and upscale.py
...
PaddleOCR prints download/init messages to stdout which corrupts the
JSON result that the bridge expects. Same risk with basicsr/realesrgan.
Applied the same fd-level stdout redirect pattern already used in
remove_bg.py: redirect fd 1 to stderr during ML work, restore for
the JSON result. Also added show_log=False to PaddleOCR constructor.
2026-04-10 01:22:53 +08:00
Siddharth Kumar Sah
e1ee57103c
fix: correct PaddleOCR language codes for model download and OCR
...
PaddleOCR uses its own language codes (ch, japan, korean, latin) not
ISO codes (zh, ja, ko, de, fr, es). The download script and ocr.py
now map API language codes to PaddleOCR codes correctly. German,
French, and Spanish all use the "latin" script model.
2026-04-10 00:40:45 +08:00
Siddharth Kumar Sah
592a9cbf08
chore: remove unused lama-cleaner, add seam-carving to GPU requirements
...
lama-cleaner is pip-installed but never imported in any Python script.
inpaint.py uses OpenCV TELEA. Removing saves ~100+ MB of image size.
Also added seam-carving to requirements-gpu.txt where it was missing.
2026-04-10 00:18:14 +08:00
Siddharth Kumar Sah
fa9569c920
fix: load RealESRGAN pretrained weights for actual AI upscaling
...
model_path was None, so the model had random weights and always fell back
to Lanczos. Now loads RealESRGAN_x4plus.pth from /opt/models/realesrgan/
(configurable via REALESRGAN_MODEL_PATH env var). Only falls back to
Lanczos on ImportError, not blanket Exception.
2026-04-10 00:18:13 +08: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-image and GitHub
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
Siddharth Kumar Sah
d3b646207d
feat: add seam carving AI bridge module
2026-04-07 23:26:47 +08:00
Siddharth Kumar Sah
18119166f0
refactor: align seam_carve.py with sidecar script conventions
2026-04-07 23:25:40 +08:00
Siddharth Kumar Sah
1460ab7a4a
feat: add seam carving Python script with face protection
2026-04-07 23:21:14 +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-image and GitHub
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
2eb77fe0f2
fix: improve AI tool reliability for face detection and background removal ( #25 )
...
- Replace OpenCV Haar Cascades with MediaPipe for face detection, using
short-range model first with full-range fallback for better accuracy
- Add auto-orient to remove-background route for EXIF-rotated photos
- Change default background removal model from u2net to birefnet-general-lite
- Fix flaky test by setting SQLite busy_timeout before journal_mode pragma
Co-authored-by: Siddharth Kumar Sah <siddharth123sk@gmail.com >
2026-04-06 22:00:48 +08: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
a430e91324
fix: filter unsafe round-trip keys server-side in editMetadata
...
Prevent silent data corruption when the API is called directly
(bypassing UI guards). Binary/complex EXIF fields like MakerNote
are now filtered from fieldsToRemove in the image-engine operation.
2026-04-06 19:40:15 +08:00
Siddharth Kumar Sah
6ac366b155
feat: register edit-metadata in shared constants and i18n
2026-04-06 19:23:18 +08:00
Siddharth Kumar Sah
939bb04941
feat: implement editMetadata operation in image-engine
2026-04-06 19:21:15 +08:00
Siddharth Kumar Sah
7fba05e1dc
feat: extract shared metadata parsing utilities into image-engine
...
Move sanitizeValue, parseExif, parseGps, parseXmp into the shared
image-engine package so both strip-metadata and edit-metadata can
reuse them. Includes 13 unit tests covering all four functions.
2026-04-06 19:12:56 +08:00
Siddharth Kumar Sah
723c79491e
feat: add EditMetadataOptions type and exif-reader dep to image-engine
2026-04-06 19:09: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
Siddharth Kumar Sah
8d2f401512
fix: use torch.cuda for GPU detection instead of onnxruntime providers
...
onnxruntime-gpu reports CUDAExecutionProvider as "available" just
because the library was compiled with CUDA support, even on machines
with no GPU. This made gpu_available() return True incorrectly,
causing upscale.py to try torch.device("cuda") and fall back to
Lanczos instead of running Real-ESRGAN on CPU.
torch.cuda.is_available() actually probes the hardware. Use it as
the single source of truth for GPU detection.
Verified: CUDA image on Apple Silicon (no GPU) now correctly reports
gpu: false and all AI tools run on CPU without crashes.
2026-04-05 22:24:16 +08: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
Siddharth Kumar Sah
a291d1fe0b
fix: prevent false GPU detection when CUDA image runs without GPU
...
The STIRLING_GPU=true env var was baked into the :cuda Dockerfile,
which made gpu_available() return True without checking actual
hardware. On machines without a GPU, this would crash upscale.py
(torch.device("cuda") fails) and ocr.py (PaddleOCR use_gpu=True).
Fix: the env var can only disable GPU (set to false/0), never
force-enable it. Hardware detection always runs. Removed the
baked env var from the Dockerfile since it adds no value now.
2026-04-05 22:03:57 +08: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
Siddharth Kumar Sah
29a382e9e0
feat: add GPU/CUDA acceleration support (:cuda Docker tag)
...
Add a :cuda Docker image tag that auto-detects NVIDIA GPU at runtime
and falls back gracefully to CPU. Same pattern as Immich.
- New gpu.py shared utility for cached CUDA detection
- Background removal (rembg): pass CUDAExecutionProvider to ONNX Runtime
- Upscaling (Real-ESRGAN): use CUDA device + FP16 when GPU available
- OCR (PaddleOCR): enable use_gpu when CUDA detected
- Dispatcher reports GPU status at startup via readiness signal
- Admin health endpoint exposes GPU availability
- Dockerfile uses ARG GPU=false with conditional NVIDIA CUDA base image
- docker-compose.gpu.yml override for GPU users
- CI/CD workflows build and publish :cuda tag (amd64 only)
Three tags: :latest (CPU), :lite (no AI), :cuda (GPU with CPU fallback)
2026-04-05 19:12:45 +08: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-image and GitHub
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
Siddharth Kumar Sah
6717c17a26
feat: add HEIC/HEIF format support for input and output
...
Add bidirectional HEIC support using system libheif CLI tools (heif-enc/heif-dec)
for HEVC encoding/decoding, since Sharp's bundled libheif only supports AV1.
- HEIC input: all tools now accept iPhone HEIC photos via heif-dec pre-processing
- HEIC output: convert tool produces true HEIC (HEVC) via heif-enc
- Docker: adds libheif-examples package for heif-enc/heif-dec CLI tools
- Tests: full conversion matrix (7x7), unit tests, and Playwright e2e tests
- Docs: updated OpenAPI spec, image-engine docs, getting-started, llms-full.txt
2026-04-04 21:33:48 +08: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
Siddharth Kumar Sah
70b0ceed1c
chore: switch to AGPLv3 dual-license
...
Replace MIT with AGPLv3 + commercial dual-license. Add copyright header
and dual-license notice to LICENSE, add CLA to CONTRIBUTING.md, update
README license section, and update all package.json license fields.
2026-04-03 23:07:58 +08: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