Siddharth Kumar Sah
05fc844410
chore: use first-person voice in license and CLA text
2026-04-03 23:11:19 +08: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
Siddharth Kumar Sah
c2709d60f0
chore: remove sponsorship badges until Ko-fi and GitHub Sponsors are set up
2026-03-31 20:15:57 +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 ))
v1.0.1
2026-03-30 03:37:53 +00:00
Siddharth Kumar Sah
4fa8dd0780
fix: allow SVG files in the convert tool
...
SVG files were rejected by the convert endpoint because
validateImageBuffer only recognized raster magic bytes. This adds
text-based SVG detection, sanitization in the tool factory, and
proper Sharp density handling so SVG-to-raster conversion works
through the standard convert route.
2026-03-30 11:37:09 +08:00
Siddharth Kumar Sah
b1bfcbef9c
chore: remove internal superpowers docs from tracking
...
These files are already gitignored but were tracked from before
the ignore rule was added. Files remain local.
2026-03-30 08:48:06 +08: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 ))
v1.0.0
2026-03-30 00:28:23 +00:00
Siddharth Kumar Sah
50a52b43c1
chore: rebrand repo from siddharthksah to stirling-image org
...
Update all references across docs, workflows, UI components, and config
to point to the new GitHub org (stirling-image/stirling-image) and Docker
Hub account (stirlingimage/stirling-image) ahead of repo transfer.
2026-03-30 08:17:54 +08: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 ))
v0.19.0
2026-03-29 15:57:41 +00:00
Siddharth Kumar Sah
7f17cb98ce
feat: add privacy policy page and fix CSP blocking API docs
...
Add a privacy policy page accessible at /privacy (public, no auth required).
Relax Content-Security-Policy for /api/docs route to allow Scalar's inline
script initialization, fixing blank docs page in production.
2026-03-29 23:57:08 +08:00
semantic-release-bot
d7a917b995
chore(release): 0.18.0 [skip ci]
...
# [0.18.0](https://github.com/siddharthksah/Stirling-Image/compare/v0.17.7...v0.18.0 ) (2026-03-29)
### Features
* add worker threads, persistent Python sidecar, graceful shutdown, and architectural improvements ([1cbdfa1 ](https://github.com/siddharthksah/Stirling-Image/commit/1cbdfa15900a58a5db23361167d3ed71d59bf189 ))
v0.18.0
2026-03-29 09:24:13 +00:00
Siddharth Kumar Sah
1cbdfa1590
feat: add worker threads, persistent Python sidecar, graceful shutdown, and architectural improvements
...
- Graceful shutdown: SIGTERM/SIGINT handlers drain HTTP, stop workers, close DB
- Thumbnail caching: disk-cached thumbnails with immutable Cache-Control headers
- Worker thread pool: Piscina offloads Sharp processing off the main event loop
- Persistent Python dispatcher: pre-imports ML libraries, eliminates cold-start latency
- Tool page registry: declarative tool-to-component mapping replaces 750-line switch
- File store cleanup: remove dead derived fields, stable files array reference
- Job persistence: progress written to SQLite jobs table, stale jobs recovered on startup
2026-03-29 17:23:41 +08:00
Siddharth Kumar Sah
88729e255d
update bg removal png image for demo
2026-03-28 19:25:39 +08:00
semantic-release-bot
7c71c7c483
chore(release): 0.17.7 [skip ci]
...
## [0.17.7](https://github.com/siddharthksah/Stirling-Image/compare/v0.17.6...v0.17.7 ) (2026-03-28)
### Bug Fixes
* move health diagnostics behind admin auth ([818e587 ](https://github.com/siddharthksah/Stirling-Image/commit/818e5877a773e6af48f9530199c6fa52e207bd50 ))
* reject HTML tags in settings API to prevent stored XSS ([8a62093 ](https://github.com/siddharthksah/Stirling-Image/commit/8a6209313052371c123c5996cb41b9e431251874 ))
* simplify public health to static response, add 403 test ([4577d5c ](https://github.com/siddharthksah/Stirling-Image/commit/4577d5c30ea53c72b02490b78b6765295e55213a ))
* switch README Docker references from GHCR to Docker Hub ([fb84f5c ](https://github.com/siddharthksah/Stirling-Image/commit/fb84f5ce8d175e568cce20caddcf79832d0bb973 ))
* use two-pass validation in settings PUT to prevent partial writes ([813fa6b ](https://github.com/siddharthksah/Stirling-Image/commit/813fa6b7e8d8e371959cff4d4a2a85ece4a636bb ))
v0.17.7
2026-03-28 11:08:45 +00:00
Siddharth Kumar Sah
4577d5c30e
fix: simplify public health to static response, add 403 test
...
Remove DB probe from public health endpoint - it only needs to confirm
the process is alive. Add test for non-admin user getting 403 on admin
health endpoint.
2026-03-28 19:08:17 +08:00
Siddharth Kumar Sah
818e5877a7
fix: move health diagnostics behind admin auth
...
Public GET /api/v1/health now returns only status and version.
Full diagnostics (uptime, storage, database, queue) moved to
GET /api/v1/admin/health which requires admin authentication.
2026-03-28 19:08:17 +08:00
Siddharth Kumar Sah
813fa6b7e8
fix: use two-pass validation in settings PUT to prevent partial writes
...
Validation now runs on all entries before any database writes.
Previously, clean entries could be written before a later malicious
entry triggered a 400 response.
2026-03-28 19:08:17 +08:00
Siddharth Kumar Sah
8a62093130
fix: reject HTML tags in settings API to prevent stored XSS
...
PUT /api/v1/settings now returns 400 if any key or value contains HTML
tags. Settings are configuration values - there is no legitimate use
case for HTML in them.
2026-03-28 19:08:17 +08:00
Siddharth Kumar Sah
fb84f5ce8d
fix: switch README Docker references from GHCR to Docker Hub
...
GHCR image requires authentication for pulls. Docker Hub image is
publicly accessible and works for anonymous users.
2026-03-28 19:08:17 +08:00
semantic-release-bot
daf942ba89
chore(release): 0.17.6 [skip ci]
...
## [0.17.6](https://github.com/siddharthksah/Stirling-Image/compare/v0.17.5...v0.17.6 ) (2026-03-28)
### Bug Fixes
* resolve pipeline step race condition and infinite re-render loop ([aa1f87f ](https://github.com/siddharthksah/Stirling-Image/commit/aa1f87fc91e0b5edd93c6720fcc54a839e51893a ))
* show checkerboard behind transparent images in before/after slider ([2e29501 ](https://github.com/siddharthksah/Stirling-Image/commit/2e29501ae6f1652cc3d0e9193863aeddb18513af ))
v0.17.6
2026-03-28 10:35:02 +00:00
Siddharth Kumar Sah
2e29501ae6
fix: show checkerboard behind transparent images in before/after slider
...
The processed image in the BeforeAfterSlider was layered on top of the
original with a semi-transparent background. When the processed result
had transparency (e.g. after remove-background), the original image
showed through, making it look like the background was not removed.
Added an opaque checkerboard background behind the processed image so
transparent areas are clearly visible instead of showing the original.
2026-03-28 18:34:22 +08:00
Siddharth Kumar Sah
aa1f87fc91
fix: resolve pipeline step race condition and infinite re-render loop
...
Two issues caused intermittent step addition failures in the automation
pipeline:
1. RemoveBgControls had onChange in its useEffect deps. Since onChange is
a new function reference on every parent render, this created an
infinite re-render loop (effect -> setState -> render -> effect).
Fixed by using the onChangeRef pattern matching other settings
components.
2. All step mutation callbacks read from stepsRef.current and passed
values to setSteps. Concurrent callbacks (e.g. addStep + a settings
effect) would overwrite each other. Fixed by switching to functional
state updates (setSteps(prev => ...)) and removing stepsRef.
Also rewrites automate e2e tests to use manual step addition instead of
referencing templates that no longer exist in the UI.
2026-03-28 18:34:05 +08:00
semantic-release-bot
b4f0fed679
chore(release): 0.17.5 [skip ci]
...
## [0.17.5](https://github.com/siddharthksah/Stirling-Image/compare/v0.17.4...v0.17.5 ) (2026-03-28)
### Bug Fixes
* sync stepsRef during render, not useEffect ([748ac60 ](https://github.com/siddharthksah/Stirling-Image/commit/748ac607bc71892c588e6a1795d258d4fc7f3413 ))
v0.17.5
2026-03-28 09:02:46 +00:00
Siddharth Kumar Sah
748ac607bc
fix: sync stepsRef during render, not useEffect
...
Child component effects (Controls onChange) fire before the parent's
useEffect that synced stepsRef. This caused updateStepSettings to read
stepsRef.current as [] and wipe out newly added steps.
Fix: assign stepsRef.current = steps directly during render so the
ref is always current before any child effects execute.
2026-03-28 17:02:24 +08:00
semantic-release-bot
04d412873d
chore(release): 0.17.4 [skip ci]
...
## [0.17.4](https://github.com/siddharthksah/Stirling-Image/compare/v0.17.3...v0.17.4 ) (2026-03-28)
### Bug Fixes
* prevent stale closure in pipeline step callbacks ([8b20fef ](https://github.com/siddharthksah/Stirling-Image/commit/8b20fef2d8123411faa2c2379693136af6b0f9ba ))
v0.17.4
2026-03-28 08:43:23 +00:00
Siddharth Kumar Sah
8b20fef2d8
fix: prevent stale closure in pipeline step callbacks
...
All step mutation callbacks (addStep, removeStep, moveStep,
updateStepSettings) captured `steps` in their useCallback closures.
When React batched state updates, rapid interactions could use a stale
steps array, causing clicks to silently fail.
Fix: use a stepsRef that always holds the latest value. Callbacks read
from stepsRef.current instead of the captured closure variable, and no
longer need `steps` in their dependency arrays.
2026-03-28 16:42:59 +08:00
semantic-release-bot
6edaaba935
chore(release): 0.17.3 [skip ci]
...
## [0.17.3](https://github.com/siddharthksah/Stirling-Image/compare/v0.17.2...v0.17.3 ) (2026-03-28)
### Bug Fixes
* clear search when adding a step from the tool picker ([7b1b019 ](https://github.com/siddharthksah/Stirling-Image/commit/7b1b019b772a9e36d51e2d696cd5e15312ddc704 ))
v0.17.3
2026-03-28 08:32:54 +00:00
Siddharth Kumar Sah
7b1b019b77
fix: clear search when adding a step from the tool picker
...
When a tool was selected via search, the search text persisted after
the picker closed. Reopening the picker showed a filtered list instead
of all tools, making it look like clicking tools without searching
didn't work.
2026-03-28 16:32:28 +08:00
Siddharth Kumar Sah
33cd575506
chore: standardize tool count to 30+ across all docs and UI
2026-03-28 16:32:28 +08:00
semantic-release-bot
aea0974600
chore(release): 0.17.2 [skip ci]
...
## [0.17.2](https://github.com/siddharthksah/Stirling-Image/compare/v0.17.1...v0.17.2 ) (2026-03-28)
### Bug Fixes
* prevent pipeline step settings from resetting on collapse ([9acbedf ](https://github.com/siddharthksah/Stirling-Image/commit/9acbedf4b75c6314f659e94f9d0721a40595201d ))
v0.17.2
2026-03-28 08:18:05 +00:00
Siddharth Kumar Sah
9acbedf4b7
fix: prevent pipeline step settings from resetting on collapse
...
The settings panel used conditional rendering ({isExpanded && ...})
which unmounted the Controls component on collapse, losing all state.
Switch to CSS hidden class so the component stays mounted and settings
persist when the panel is collapsed and re-expanded.
2026-03-28 16:17:39 +08:00
Siddharth Kumar Sah
1c05bc76e5
refactor: replace TOOL_FIELDS with shared Controls components (DRY)
...
Extract a *Controls subcomponent from all 16 pipeline-compatible tool
settings components. Each Controls component holds the UI state and
settings controls, accepts an onChange callback, and uses useRef to
prevent infinite re-render loops. The standalone *Settings components
become thin wrappers that add useToolProcessor, useFileStore, and
action buttons.
pipeline-step-settings.tsx is rewritten from ~675 lines to ~55 lines:
the entire TOOL_FIELDS declarative map and generic renderer are deleted
and replaced with direct imports of the Controls components. Pipeline
steps now render the exact same UI as standalone tool pages.
Special cases:
- CropControls: numeric inputs for pipeline (standalone uses canvas)
- RotateControls: resetSignal prop for post-processing reset
- ColorControls: accepts toolId for tab selection
- StripMetadataControls: checkboxes only (no file inspection)
- RemoveBgControls: already extracted, unchanged
2026-03-28 16:04:42 +08:00
Siddharth Kumar Sah
5a50aecd0b
refactor: extract RemoveBgControls for DRY reuse in pipeline steps
...
Extract the settings controls (subject type, quality, background color)
from RemoveBgSettings into a shared RemoveBgControls component that
accepts settings + onChange props. Both the standalone tool page and the
pipeline step configurator now render the same component, so the UI is
identical and changes only need to be made in one place.
2026-03-28 15:40:39 +08:00
semantic-release-bot
e5238f5661
chore(release): 0.17.1 [skip ci]
...
## [0.17.1](https://github.com/siddharthksah/Stirling-Image/compare/v0.17.0...v0.17.1 ) (2026-03-28)
### Bug Fixes
* add remove-background settings to pipeline step configurator ([017a715 ](https://github.com/siddharthksah/Stirling-Image/commit/017a71562ad7b15d7d1abec6cee9f8ab73db2b34 ))
v0.17.1
2026-03-28 07:32:56 +00:00
Siddharth Kumar Sah
017a71562a
fix: add remove-background settings to pipeline step configurator
...
The pipeline step settings had an empty array for remove-background,
showing "No configurable settings" even though the tool supports
model selection and background color. Add AI model selector (u2net,
birefnet-general-lite, birefnet-general, birefnet-portrait, bria-rmbg)
and background color picker matching the standalone tool's options.
2026-03-28 15:32:28 +08:00
semantic-release-bot
d5add549af
chore(release): 0.17.0 [skip ci]
...
# [0.17.0](https://github.com/siddharthksah/Stirling-Image/compare/v0.16.4...v0.17.0 ) (2026-03-28)
### Features
* make AI tools pipeline-compatible and add search to tool picker ([c48bfba ](https://github.com/siddharthksah/Stirling-Image/commit/c48bfba879f55591e03a0918d9b8de9618cc8dc0 ))
v0.17.0
2026-03-28 07:09:46 +00:00
Siddharth Kumar Sah
c48bfba879
feat: make AI tools pipeline-compatible and add search to tool picker
...
Register remove-background, upscale, and blur-faces in the pipeline
tool registry via registerToolProcessFn(). These tools keep their
custom HTTP routes (with progress callbacks) for direct use, but now
also provide a simple process function for pipeline/batch execution.
Add a search bar to the pipeline tool picker so users can quickly
find tools by name or description. Uses the existing SearchBar
component and the same filtering pattern as the main tool panel.
Update tests to reflect that these 3 AI tools are now pipeline-
compatible (moved from excluded to included assertions).
2026-03-28 15:09:23 +08:00
semantic-release-bot
6d14e83dcb
chore(release): 0.16.4 [skip ci]
...
## [0.16.4](https://github.com/siddharthksah/Stirling-Image/compare/v0.16.3...v0.16.4 ) (2026-03-28)
### Bug Fixes
* surface hidden errors and add batch rejection tests ([4a50428 ](https://github.com/siddharthksah/Stirling-Image/commit/4a504281a34561b47b60d00edaf8914f5a8e0197 ))
v0.16.4
2026-03-28 06:45:35 +00:00
Siddharth Kumar Sah
4a504281a3
fix: surface hidden errors and add batch rejection tests
...
Fix empty catch blocks in settings dialog (logo upload/delete) and
automate page (pipeline save) that silently swallowed errors. Users
now see error messages when these operations fail.
Add 5 integration tests verifying batch endpoint returns 404 for
custom-route tools (remove-background, upscale, ocr, blur-faces,
erase-object), matching the pipeline rejection tests.
2026-03-28 14:45:14 +08:00
Siddharth Kumar Sah
fa01388742
test: add pipeline tool compatibility tests
...
Add 8 tests that would have caught the pipeline bug where custom-route
tools (remove-background, upscale, ocr, etc.) were shown in the
pipeline picker but failed silently when executed.
New tests:
- GET /api/v1/pipeline/tools returns factory-registered tool IDs
- Verify resize, crop, convert, compress, rotate are included
- Verify remove-background, upscale, ocr, blur-faces, erase-object,
info, collage, compare are excluded
- Pipeline execution returns 400 for each custom-route tool
2026-03-28 14:42:27 +08:00
semantic-release-bot
2622ae7bdf
chore(release): 0.16.3 [skip ci]
...
## [0.16.3](https://github.com/siddharthksah/Stirling-Image/compare/v0.16.2...v0.16.3 ) (2026-03-28)
### Bug Fixes
* remove Google Drive coming soon placeholder from files nav ([658954e ](https://github.com/siddharthksah/Stirling-Image/commit/658954ea19e17d1af83d45229ec40397de376042 ))
v0.16.3
2026-03-28 06:40:48 +00:00
Siddharth Kumar Sah
658954ea19
fix: remove Google Drive coming soon placeholder from files nav
2026-03-28 14:40:23 +08:00
semantic-release-bot
51684c0cd2
chore(release): 0.16.2 [skip ci]
...
## [0.16.2](https://github.com/siddharthksah/Stirling-Image/compare/v0.16.1...v0.16.2 ) (2026-03-28)
### Bug Fixes
* pipeline only shows compatible tools and displays errors ([0410bf3 ](https://github.com/siddharthksah/Stirling-Image/commit/0410bf34610aa56391615ab3a95ea77a12668743 ))
v0.16.2
2026-03-28 06:39:17 +00:00
Siddharth Kumar Sah
0410bf3461
fix: pipeline only shows compatible tools and displays errors
...
The pipeline tool picker was showing all tools, but only tools
registered via createToolRoute() support pipeline execution. Tools
with custom routes (remove-background, upscale, ocr, etc.) would
silently fail with "Tool not found" and the empty catch block hid
the error from users.
Add GET /api/v1/pipeline/tools endpoint that returns the IDs of
pipeline-compatible tools. The frontend fetches this list and filters
the tool picker accordingly. Also surface pipeline execution errors
in the UI instead of swallowing them.
2026-03-28 14:38:48 +08:00
semantic-release-bot
1703dcbcfe
chore(release): 0.16.1 [skip ci]
...
## [0.16.1](https://github.com/siddharthksah/Stirling-Image/compare/v0.16.0...v0.16.1 ) (2026-03-28)
### Bug Fixes
* trigger browser password save prompt on password change ([565b480 ](https://github.com/siddharthksah/Stirling-Image/commit/565b4805c7b32af66bb07543c6d3bae2865dbbdd ))
v0.16.1
2026-03-28 06:24:41 +00:00
Siddharth Kumar Sah
565b4805c7
fix: trigger browser password save prompt on password change
...
Safari, Chrome, and Firefox only offer to save passwords when they see
a real form submission with page navigation, not fetch() + redirect.
After the change-password API call succeeds, dynamically create a form
with the username and new password (autocomplete=username + new-password),
POST it to "/" causing a real navigation. The browser detects the form
submission with credential fields and prompts to save.
Also make the username field visible (read-only) on the change-password
page since Safari ignores hidden inputs for password detection, and add
autocomplete attributes to the login page fields.
2026-03-28 14:24:13 +08:00
semantic-release-bot
006b7c4509
chore(release): 0.16.0 [skip ci]
...
# [0.16.0](https://github.com/siddharthksah/Stirling-Image/compare/v0.15.0...v0.16.0 ) (2026-03-28)
### Features
* add password generator and browser save prompt on change-password page ([7c76c2a ](https://github.com/siddharthksah/Stirling-Image/commit/7c76c2a2a0116de8418b0438a3859fc1add419e3 ))
v0.16.0
2026-03-28 06:13:13 +00:00
Siddharth Kumar Sah
7c76c2a2a0
feat: add password generator and browser save prompt on change-password page
...
Add a "Generate strong password" button that creates a random 16-char
password meeting all requirements (uppercase, lowercase, digit).
Generated passwords are shown in plain text so users can copy them.
Add autocomplete attributes (current-password, new-password, username)
so browsers prompt to save the new credentials after submission.
2026-03-28 14:12:46 +08:00
semantic-release-bot
21675623e7
chore(release): 0.15.0 [skip ci]
...
# [0.15.0](https://github.com/siddharthksah/Stirling-Image/compare/v0.14.2...v0.15.0 ) (2026-03-28)
### Features
* add forced password change page on first login ([01cd1d9 ](https://github.com/siddharthksah/Stirling-Image/commit/01cd1d9f71427319284579b438ad08ede56517a6 ))
v0.15.0
2026-03-28 06:02:41 +00:00
Siddharth Kumar Sah
01cd1d9f71
feat: add forced password change page on first login
...
The backend sets mustChangePassword=true for all new accounts and
blocks API calls until the password is changed. The frontend was not
handling this flag - it logged the user in and redirected to the
dashboard where every API call silently failed with 403.
Add a /change-password page that is shown when mustChangePassword is
true. The login page now redirects there instead of home, and the
AuthGuard intercepts any direct navigation to force the change first.
2026-03-28 14:02:13 +08:00