semantic-release-bot
d4d4321b98
chore(release): 0.10.0 [skip ci]
...
# [0.10.0](https://github.com/siddharthksah/Stirling-Image/compare/v0.9.0...v0.10.0 ) (2026-03-26)
### Bug Fixes
* **ocr:** update PaddleOCR for v3 API and add Tesseract fallback ([f71c3c8 ](https://github.com/siddharthksah/Stirling-Image/commit/f71c3c8c05bc7203d37a46743bebb62b79c8ac51 ))
### Features
* **erase-object:** replace mask upload with in-browser brush painting ([40656a0 ](https://github.com/siddharthksah/Stirling-Image/commit/40656a0452109c1d6ea2441b2735b0ffaf4f3867 ))
2026-03-26 09:34:20 +00:00
semantic-release-bot
563892774d
chore(release): 0.9.0 [skip ci]
...
# [0.9.0](https://github.com/siddharthksah/Stirling-Image/compare/v0.8.2...v0.9.0 ) (2026-03-26)
### Bug Fixes
* **blur-faces:** switch from MediaPipe to OpenCV and auto-orient images ([f15102c ](https://github.com/siddharthksah/Stirling-Image/commit/f15102c632d3fcbc5d33b33fd9cfdea5e4689eb6 ))
* **docker:** add build layer caching for faster Docker rebuilds ([14c630f ](https://github.com/siddharthksah/Stirling-Image/commit/14c630ff23d973aa9d512ed87ede049ebd4b600f ))
* **upscale:** auto-orient images before upscaling and improve UI ([8ee4d7b ](https://github.com/siddharthksah/Stirling-Image/commit/8ee4d7b2fb3f88b2869ada8d6a6c5fb0df432e3b ))
### Features
* **adjustments:** add real-time live preview for all color tools ([f357b18 ](https://github.com/siddharthksah/Stirling-Image/commit/f357b18ced8757da0a6c34f18541bb8875c2199a ))
* **image-to-pdf:** add live PDF page preview with margin visualization ([ddde152 ](https://github.com/siddharthksah/Stirling-Image/commit/ddde152545456770ec4a97418968c2ad309a88e0 ))
* **rotate:** add editable angle input and fine-tune +/- buttons ([bf62820 ](https://github.com/siddharthksah/Stirling-Image/commit/bf6282006489a4cadcd849b476e97239e3624673 ))
2026-03-26 08:02:46 +00:00
Siddharth Kumar Sah
f15102c632
fix(blur-faces): switch from MediaPipe to OpenCV and auto-orient images
...
Fix face detection failure caused by MediaPipe 0.10.33 removing the
mp.solutions API. Replace with OpenCV Haar cascade which works reliably
in headless Docker. Add autoOrient() call before detection to handle
EXIF-rotated phone photos. Remove technical jargon from UI.
2026-03-26 16:01:56 +08:00
Siddharth Kumar Sah
8ee4d7b2fb
fix(upscale): auto-orient images before upscaling and improve UI
...
Fix rotated output by calling autoOrient() before passing images to
the Python upscaler, correcting EXIF orientation metadata. Replace
2x/4x buttons with 2x-8x slider plus quick-select buttons (2x, 3x,
4x, 6x, 8x). Remove technical jargon about Real-ESRGAN/Lanczos from
the UI and progress bar.
2026-03-26 16:01:40 +08:00
semantic-release-bot
21e40f5bbf
chore(release): 0.8.2 [skip ci]
...
## [0.8.2](https://github.com/siddharthksah/Stirling-Image/compare/v0.8.1...v0.8.2 ) (2026-03-25)
### Bug Fixes
* **test:** add missing PNG fixture files to repo ([8474b0e ](https://github.com/siddharthksah/Stirling-Image/commit/8474b0ee52fe803c55247a082becc4334e83186f ))
* **test:** exclude e2e tests from vitest and fix CI test suite ([91acab9 ](https://github.com/siddharthksah/Stirling-Image/commit/91acab9967e2b5dd7dbc7a98e667f785f3e7364e ))
2026-03-25 17:33:09 +00:00
semantic-release-bot
bf23e83ef4
chore(release): 0.8.1 [skip ci]
...
## [0.8.1](https://github.com/siddharthksah/Stirling-Image/compare/v0.8.0...v0.8.1 ) (2026-03-25)
### Bug Fixes
* resolve test failures from shared DB race conditions ([b474480 ](https://github.com/siddharthksah/Stirling-Image/commit/b474480698695cda2eaf2c9ae642ac3ffd15d007 ))
2026-03-25 17:21:05 +00:00
Siddharth Kumar Sah
b474480698
fix: resolve test failures from shared DB race conditions
...
- Make ensureDefaultAdmin idempotent with onConflictDoNothing (fixes
UNIQUE constraint error when parallel test files share a DB)
- Move duplicate-username check before user-limit check so 409 takes
priority over 403
- Bump MAX_USERS from 5 to 50 (tests create ~15 users across files)
2026-03-26 01:20:29 +08:00
semantic-release-bot
170395ae40
chore(release): 0.8.0 [skip ci]
...
# [0.8.0](https://github.com/siddharthksah/Stirling-Image/compare/v0.7.0...v0.8.0 ) (2026-03-25)
### Bug Fixes
* **docker:** skip husky prepare script in production install ([200e7d1 ](https://github.com/siddharthksah/Stirling-Image/commit/200e7d10c1cbffeeeae95434b4ae8f2d6b69b8a0 ))
* prevent useAuth infinite loop causing rate limit storms ([3b4f522 ](https://github.com/siddharthksah/Stirling-Image/commit/3b4f522bf4d63109254edc22baca568fdfd7dd98 ))
### Features
* **api:** add logo upload/serve/delete routes with tests ([6a13065 ](https://github.com/siddharthksah/Stirling-Image/commit/6a1306570660d4962f89e741dfb684d2ed0e7f6c ))
* **api:** add persistent file management helpers to frontend api module ([8a3a731 ](https://github.com/siddharthksah/Stirling-Image/commit/8a3a731267f4e3cd84a01a78d89975197ce2ebad ))
* **api:** add teams CRUD routes and update auth team references ([ab370a7 ](https://github.com/siddharthksah/Stirling-Image/commit/ab370a74fefebc8735e337f9b42e48ab6625c5b4 ))
* **api:** add tool filtering and DB-backed cleanup settings ([acfff75 ](https://github.com/siddharthksah/Stirling-Image/commit/acfff754b54b5f9be474c6db6eb39b3cbf91fc21 ))
* **api:** add user files CRUD routes at /api/v1/files/* ([4e2aa58 ](https://github.com/siddharthksah/Stirling-Image/commit/4e2aa5876701ef56514957a30fe63c27c615cf05 ))
* **db:** add teams table and migration ([926b52d ](https://github.com/siddharthksah/Stirling-Image/commit/926b52d33045dc1f15192bb65d4f005f6c82ce00 ))
* **db:** add userFiles table and migration ([dda37e9 ](https://github.com/siddharthksah/Stirling-Image/commit/dda37e90cc294140c236332563befae0a3b02852 ))
* **env:** add FILES_STORAGE_PATH config variable ([4927f57 ](https://github.com/siddharthksah/Stirling-Image/commit/4927f574badda883ad72ba05c30a8d9fae973ee6 ))
* **files:** add Files page with nav, list, details, upload, and routing ([788b8c8 ](https://github.com/siddharthksah/Stirling-Image/commit/788b8c8bad8cf6800137f4764f5a50ac80845f2f ))
* **files:** add mobile layout for Files page ([c99f43f ](https://github.com/siddharthksah/Stirling-Image/commit/c99f43fe60aac2a7babeb7cea39e140281936009 ))
* **files:** wire serverFileId for version tracking ([20f153d ](https://github.com/siddharthksah/Stirling-Image/commit/20f153d611c9dec478ab89cd050c6c65b0e41287 ))
* **i18n:** add translation keys for settings phase 1 ([ffb676d ](https://github.com/siddharthksah/Stirling-Image/commit/ffb676d648027804e653b868139f349b5a3c6c96 ))
* implement Files page with persistent storage and version tracking ([62fbb54 ](https://github.com/siddharthksah/Stirling-Image/commit/62fbb5484c669b74132b4ecd23576bf0ba5b50b2 ))
* **storage:** add file storage helpers module ([fbca20d ](https://github.com/siddharthksah/Stirling-Image/commit/fbca20d78c213e0b7f00f6c59eae4af32123a587 ))
* **stores:** add Zustand store for Files page state management ([24644c1 ](https://github.com/siddharthksah/Stirling-Image/commit/24644c1c1052146a2b581ffc3a791a9276fab6a1 ))
* **tool-factory:** auto-save results to persistent file store when fileId provided ([bf6c30c ](https://github.com/siddharthksah/Stirling-Image/commit/bf6c30c3c0d9beeaa24a7b7b998de9354ec7e353 ))
* **ui:** add teams, tools, feature flags, temp files, logo to settings dialog ([4b2621d ](https://github.com/siddharthksah/Stirling-Image/commit/4b2621d9f2c5fcc930baf9ed1a6b555de77f0b93 ))
2026-03-25 17:12:41 +00:00
Siddharth Kumar Sah
627ff8a82c
chore: remove internal docs from repo, update public documentation
...
Remove docs/superpowers/, .claude/ config, and PRD.md from version
control (kept locally via .gitignore). Update README, CHANGELOG,
VitePress docs, and .env.example to reflect recent features: Files
page, teams, admin settings, persistent storage, and various API
improvements.
2026-03-26 01:11:40 +08:00
Siddharth Kumar Sah
6a13065706
feat(api): add logo upload/serve/delete routes with tests
...
Add branding API at /api/v1/settings/logo supporting:
- POST: admin uploads PNG/SVG/JPEG (max 500KB), auto-converts to 128x128 PNG
- GET: public endpoint serves custom logo (404 if none)
- DELETE: admin removes custom logo
Includes 13 integration tests covering upload, conversion, size/type
validation, auth enforcement, resize, and idempotent deletion.
2026-03-26 01:10:51 +08:00
Siddharth Kumar Sah
acfff754b5
feat(api): add tool filtering and DB-backed cleanup settings
...
Add feature flag support to skip disabled/experimental tools at startup
by reading disabledTools and enableExperimentalTools from the settings
table. Refactor cleanup.ts to read tempFileMaxAgeHours from DB settings
(with env var fallback) and respect the startupCleanup setting.
2026-03-26 01:10:51 +08:00
Siddharth Kumar Sah
585d66f0c9
refactor: rename Tool.alpha to Tool.experimental
2026-03-26 01:10:51 +08:00
Siddharth Kumar Sah
ab370a74fe
feat(api): add teams CRUD routes and update auth team references
2026-03-26 01:10:51 +08:00
Siddharth Kumar Sah
62fbb5484c
feat: implement Files page with persistent storage and version tracking
...
Three-panel file manager (nav, list, details) modeled after Stirling-PDF.
- Backend: user_files table, /api/v1/files/* CRUD routes, file storage
helpers, thumbnail generation via Sharp, recursive CTE version chains
- Frontend: FilesNav, FileList, FileDetails, FileUploadArea components,
Zustand store, mobile layout with bottom sheet
- Integration: tool-factory auto-saves results as new versions when
fileId is provided, "Open File" loads file into tool processing flow
- Search, bulk select/delete/download, version badges, tool chain tags
2026-03-26 01:10:51 +08:00
Siddharth Kumar Sah
926b52d330
feat(db): add teams table and migration
2026-03-26 01:10:51 +08:00
Siddharth Kumar Sah
bf6c30c3c0
feat(tool-factory): auto-save results to persistent file store when fileId provided
...
Adds optional fileId multipart field; when present, inserts a new versioned
userFiles record after successful processing and returns savedFileId in the
response. Non-fatal — tool processing succeeds even if the save fails.
2026-03-26 01:10:50 +08:00
Siddharth Kumar Sah
4e2aa58767
feat(api): add user files CRUD routes at /api/v1/files/*
...
Implements all 7 routes for the persistent file library:
list with pagination/search, upload (multi-file), details with recursive
version chain CTE, download stream, on-the-fly Sharp thumbnail, bulk delete
of entire version chains, and save-result for tool output versioning.
Registered in index.ts after fileRoutes.
2026-03-26 01:10:50 +08:00
Siddharth Kumar Sah
fbca20d78c
feat(storage): add file storage helpers module
...
Adds ensureStorageDir, saveFile, deleteStoredFile, and getStoredFilePath
utilities that manage the lifecycle of files on the local filesystem
under FILES_STORAGE_PATH.
2026-03-26 01:10:50 +08:00
Siddharth Kumar Sah
4927f574ba
feat(env): add FILES_STORAGE_PATH config variable
...
Adds a FILES_STORAGE_PATH env variable (defaults to ./data/files) to
control where uploaded user files are persisted on disk.
2026-03-26 01:10:50 +08:00
Siddharth Kumar Sah
dda37e90cc
feat(db): add userFiles table and migration
...
Introduces the user_files table to track uploaded files per user,
including metadata fields for dimensions, versioning, and tool chains.
2026-03-26 01:10:50 +08:00
semantic-release-bot
5d261398b1
chore(release): 0.7.0 [skip ci]
...
# [0.7.0](https://github.com/siddharthksah/Stirling-Image/compare/v0.6.0...v0.7.0 ) (2026-03-24)
### Features
* harden auth, security headers, SVG sanitization, and pipeline ownership ([432cc92 ](https://github.com/siddharthksah/Stirling-Image/commit/432cc92471b73b73ab9d1be4a82a71d3ed3a88ad ))
* **pipeline:** add inline settings configuration for automation steps ([adc7e1c ](https://github.com/siddharthksah/Stirling-Image/commit/adc7e1c0370df1687b0660bdff279c90ac9d0871 ))
2026-03-24 13:38:48 +00:00
Siddharth Kumar Sah
432cc92471
feat: harden auth, security headers, SVG sanitization, and pipeline ownership
...
- Add password strength validation (8+ chars, uppercase, lowercase, number)
- Add username validation rules
- Optimize API key lookup with SHA-256 prefix (O(1) vs O(n) scan)
- Require password change on default admin first login
- Revoke API keys on password change
- Add session cleanup cron (hourly expired session purge)
- Add Permissions-Policy, HSTS, and CSP security headers in production
- Strengthen SVG sanitizer: block XInclude, foreignObject, processing
instructions, javascript/data/file URI schemes
- Add userId ownership to pipelines with authorization checks
- Add keyPrefix column to api_keys table
- Update integration tests for new auth behavior
2026-03-24 21:38:06 +08:00
semantic-release-bot
75f38a9fe2
chore(release): 0.6.0 [skip ci]
...
# [0.6.0](https://github.com/siddharthksah/Stirling-Image/compare/v0.5.2...v0.6.0 ) (2026-03-24)
### Features
* extract auto-orient utility and expand test coverage ([e5086ad ](https://github.com/siddharthksah/Stirling-Image/commit/e5086ada6e2f4402973f203b726578dd42da4a32 ))
2026-03-24 12:37:44 +00:00
Siddharth Kumar Sah
e5086ada6e
feat: extract auto-orient utility and expand test coverage
...
Extract EXIF auto-orientation logic into a shared auto-orient module
used by both single-tool and batch routes. This ensures camera photos
display correctly after processing regardless of entry point.
Also expands e2e and integration tests significantly.
2026-03-24 20:37:14 +08:00
semantic-release-bot
06eabdd045
chore(release): 0.5.2 [skip ci]
...
## [0.5.2](https://github.com/siddharthksah/Stirling-Image/compare/v0.5.1...v0.5.2 ) (2026-03-23)
### Bug Fixes
* restore APP_VERSION import used by health endpoint ([7dfa7a2 ](https://github.com/siddharthksah/Stirling-Image/commit/7dfa7a295de407f45832b68a2ef64acf2f21205f ))
2026-03-23 16:49:00 +00:00
Siddharth Kumar Sah
7dfa7a295d
fix: restore APP_VERSION import used by health endpoint
2026-03-24 00:48:36 +08:00
semantic-release-bot
3735a749d6
chore(release): 0.5.1 [skip ci]
...
## [0.5.1](https://github.com/siddharthksah/Stirling-Image/compare/v0.5.0...v0.5.1 ) (2026-03-23)
### Bug Fixes
* **crop:** use percentCrop from onChange to fix inflated pixel values ([fbdbe09 ](https://github.com/siddharthksah/Stirling-Image/commit/fbdbe0949a64d072e4e86d08c7b39372592eaf04 ))
2026-03-23 16:42:37 +00:00
Siddharth Kumar Sah
0aa2a5e5de
chore: remove swagger deps, parallelize CI jobs
...
- Remove @fastify/swagger and @fastify/swagger-ui (API docs live on GitHub Pages)
- Run typecheck, build, and docker CI jobs in parallel instead of sequentially
2026-03-24 00:41:54 +08:00
semantic-release-bot
b4a372be3a
chore(release): 0.5.0 [skip ci]
...
# [0.5.0](https://github.com/siddharthksah/Stirling-Image/compare/v0.4.1...v0.5.0 ) (2026-03-23)
### Bug Fixes
* resolve TypeScript Uint8Array type error with fflate ([1d35db9 ](https://github.com/siddharthksah/Stirling-Image/commit/1d35db98bf359c07779522c30b00d8c7a9d3cb89 ))
* white screen crash when uploading photos with null GPS EXIF data ([70c73d8 ](https://github.com/siddharthksah/Stirling-Image/commit/70c73d85c992bc724c6b18a2d43789871b318e78 ))
### Features
* accept clientJobId in batch endpoint for SSE progress correlation ([2514078 ](https://github.com/siddharthksah/Stirling-Image/commit/2514078ea1feb8e44296e226e37e8e379a20473a ))
* add CSS transform props to ImageViewer for live rotate/flip preview ([267da78 ](https://github.com/siddharthksah/Stirling-Image/commit/267da7857743898e612ba5bb80e24985664bd311 ))
* add live preview callback to RotateSettings, rename button to Apply ([ec192e3 ](https://github.com/siddharthksah/Stirling-Image/commit/ec192e3d96d864e3ce47e991ba1c72d6a4ee7cea ))
* add MultiImageViewer with arrow navigation and filmstrip ([815a8ed ](https://github.com/siddharthksah/Stirling-Image/commit/815a8ed419b82aadec4e07ef4456e9e96b84b65f ))
* add processAllFiles batch method to tool processor hook ([846a51a ](https://github.com/siddharthksah/Stirling-Image/commit/846a51a9fdf4e8fc4c1b9673f13acde646ae0ca9 ))
* add SideBySideComparison component for resize results ([271cab6 ](https://github.com/siddharthksah/Stirling-Image/commit/271cab647bb41872c5e205d6236e35eb7fad0810 ))
* add ThumbnailStrip filmstrip component ([6521d70 ](https://github.com/siddharthksah/Stirling-Image/commit/6521d702385f23a7cb9312c1661541943bfe2e03 ))
* conditional result views — side-by-side for resize, live preview for rotate ([59a57f3 ](https://github.com/siddharthksah/Stirling-Image/commit/59a57f3a00bbd0c6331d1165594ad4266ce3b536 ))
* **crop:** add CropCanvas component with visual overlay, grid, and keyboard controls ([1a076be ](https://github.com/siddharthksah/Stirling-Image/commit/1a076be9b2cc5f434296f2739a395321368c2177 ))
* **crop:** add react-image-crop dependency ([31d426f ](https://github.com/siddharthksah/Stirling-Image/commit/31d426ff6f02965d20e75e85ff15a8cbc1d1df0b ))
* **crop:** redesign CropSettings with aspect presets, pixel inputs, and grid toggle ([c2c256a ](https://github.com/siddharthksah/Stirling-Image/commit/c2c256a180640cf046bd1bc46b05065171a4c2dc ))
* **crop:** wire CropCanvas and CropSettings into tool-page with bidirectional state ([786a671 ](https://github.com/siddharthksah/Stirling-Image/commit/786a671c39859ae0bf1f8732c2ff4efe210d2466 ))
* integrate MultiImageViewer and multi-file UX into tool page ([3796533 ](https://github.com/siddharthksah/Stirling-Image/commit/37965338228a2fca3623718a7db2f8757a464651 ))
* merge multi-image UX — batch processing, filmstrip navigation, resize/rotate redesign ([80756d1 ](https://github.com/siddharthksah/Stirling-Image/commit/80756d15917a877b21a900d282bb6522ae76c2e2 ))
* multi-file metadata display with per-file caching ([474b4a9 ](https://github.com/siddharthksah/Stirling-Image/commit/474b4a941e1be43887beac8d2ec57eb703cba260 ))
* rewrite file-store with FileEntry model for multi-image support ([8844b44 ](https://github.com/siddharthksah/Stirling-Image/commit/8844b44fff2abfbe3262a113dfc35d83367add05 ))
* rewrite resize settings with tab-based UI (presets, custom, scale) ([bc105fd ](https://github.com/siddharthksah/Stirling-Image/commit/bc105fd261de3c11b279557dba98aaad65214f42 ))
* wire up batch processing across tool settings components ([9e2c28f ](https://github.com/siddharthksah/Stirling-Image/commit/9e2c28f19124fca4bc4f55c0997e2314170ae478 ))
2026-03-23 11:23:50 +00:00
Siddharth Kumar Sah
8a89bc1ec9
Merge branch 'main' of https://github.com/siddharthksah/Stirling-Image
2026-03-23 19:23:17 +08:00
Siddharth Kumar Sah
70c73d85c9
fix: white screen crash when uploading photos with null GPS EXIF data
...
Samsung Galaxy phones (and others) can have GPS EXIF tags with null
coordinate values when location is disabled. The server returned
_latitude: null, and the client guard used !== undefined which passed
for null, causing null.toFixed() to crash React with no ErrorBoundary.
- Server: validate GPS array values are actual numbers before computing
- Client: use != null guard (catches both null and undefined)
- App: add ErrorBoundary to prevent white screens from any future crash
2026-03-23 19:22:52 +08:00
Siddharth Kumar Sah
80756d1591
feat: merge multi-image UX — batch processing, filmstrip navigation, resize/rotate redesign
...
Integrates feature/multi-image-ux branch with 20 commits including:
- Multi-image viewer with arrow navigation and filmstrip thumbnails
- Batch processing across all tool settings components
- File store rewrite with FileEntry model for multi-image support
- Resize settings redesigned with tab-based UI (presets, custom, scale)
- Side-by-side comparison for resize results
- Per-file metadata caching in strip-metadata
- Client-side ZIP extraction via fflate
- SSE progress correlation via clientJobId
2026-03-23 17:13:10 +08:00
semantic-release-bot
8815fc883e
chore(release): 0.4.1 [skip ci]
...
## [0.4.1](https://github.com/siddharthksah/Stirling-Image/compare/v0.4.0...v0.4.1 ) (2026-03-23)
### Bug Fixes
* unify project on port 1349, improve strip-metadata and UI components ([0e7348a ](https://github.com/siddharthksah/Stirling-Image/commit/0e7348a0bedb6c47a8025c47b377849169aa7472 ))
2026-03-23 08:38:56 +00:00
Siddharth Kumar Sah
0e7348a0be
fix: unify project on port 1349, improve strip-metadata and UI components
...
Consolidate all access to localhost:1349 — Vite dev server serves on 1349
and proxies API calls to an internal dev port (13490). Production API
defaults to 1349. Also includes strip-metadata improvements, UI component
updates, and compress operation fixes.
2026-03-23 16:38:27 +08:00
semantic-release-bot
8841dbb677
chore(release): 0.4.0 [skip ci]
...
# [0.4.0](https://github.com/siddharthksah/Stirling-Image/compare/v0.3.1...v0.4.0 ) (2026-03-23)
### Bug Fixes
* streamline CI/CD — remove broken AI docs updater, fix Docker publish ([4f984c8 ](https://github.com/siddharthksah/Stirling-Image/commit/4f984c83acc4bfaa5b9479d80e2bdda05f4a2ccc ))
### Features
* add CSS transform props to ImageViewer for live rotate/flip preview ([113bb75 ](https://github.com/siddharthksah/Stirling-Image/commit/113bb757333e9ad809a401000f3b6b34fa1ef415 ))
* add live preview callback to RotateSettings, rename button to Apply ([31a9439 ](https://github.com/siddharthksah/Stirling-Image/commit/31a943962d46fab1eb1efd9f605fc5a0144ddd87 ))
* add SideBySideComparison component for resize results ([28a8b10 ](https://github.com/siddharthksah/Stirling-Image/commit/28a8b10fa15fa216d7f53256bea9461650358fb1 ))
* conditional result views — side-by-side for resize, live preview for rotate ([989e8dc ](https://github.com/siddharthksah/Stirling-Image/commit/989e8dc6e47fe123d6333dddf4431a01623e0437 ))
* rewrite resize settings with tab-based UI (presets, custom, scale) ([02ef3e6 ](https://github.com/siddharthksah/Stirling-Image/commit/02ef3e6468b36303dfdbc61e18c14dc5eb68d957 ))
2026-03-23 07:15:07 +00:00
Siddharth Kumar Sah
2514078ea1
feat: accept clientJobId in batch endpoint for SSE progress correlation
2026-03-23 14:03:56 +08:00
semantic-release-bot
ddd30f77b0
chore(release): 0.3.1 [skip ci]
...
## [0.3.1](https://github.com/siddharthksah/Stirling-Image/compare/v0.3.0...v0.3.1 ) (2026-03-23)
### Bug Fixes
* resolve tsx not found in AI docs updater workflow ([b803b0e ](https://github.com/siddharthksah/Stirling-Image/commit/b803b0e443b54bbca33cf88fe1ab38eeddd38baf ))
2026-03-23 04:10:54 +00:00
semantic-release-bot
acf48432be
chore(release): 0.3.0 [skip ci]
...
# [0.3.0](https://github.com/siddharthksah/Stirling-Image/compare/v0.2.1...v0.3.0 ) (2026-03-23)
### Bug Fixes
* add SSE progress endpoint to public paths ([b3f590c ](https://github.com/siddharthksah/Stirling-Image/commit/b3f590c8b35fb396cf298187f241e45827ea1db8 ))
* apply continuous progress bar to erase-object and OCR ([8db84a7 ](https://github.com/siddharthksah/Stirling-Image/commit/8db84a753cd8dbd522146aa25e85bb454b032490 ))
* continuous progress bar (no 100%→0% reset) ([28cd950 ](https://github.com/siddharthksah/Stirling-Image/commit/28cd950ede6d0fc03e0d7cca0a013d883ea00238 ))
* setError(null) was overriding setProcessing(true) ([b5cc452 ](https://github.com/siddharthksah/Stirling-Image/commit/b5cc45207758c25867833fad961744a37df36fda ))
### Features
* **ai:** add emit_progress() calls to all Python AI scripts ([7238429 ](https://github.com/siddharthksah/Stirling-Image/commit/723842988b39a8d9ea4f5b0cdd97569ff0c65f68 ))
* **ai:** add onProgress callback to all AI wrapper functions ([acb230c ](https://github.com/siddharthksah/Stirling-Image/commit/acb230cc98193766fc978098c12dfedf08a0a339 ))
* **ai:** rewrite bridge.ts to stream stderr progress via spawn ([7d74ddd ](https://github.com/siddharthksah/Stirling-Image/commit/7d74ddd3a6a466f1863412b36501c663fd642194 ))
* **api:** add SingleFileProgress type and SSE update function ([7eddac5 ](https://github.com/siddharthksah/Stirling-Image/commit/7eddac5119d1db3cbf831c735c5b78f0c92728ef ))
* **api:** wire AI route handlers to SSE progress via clientJobId ([27600a4 ](https://github.com/siddharthksah/Stirling-Image/commit/27600a431805d54b32875dbe5a58f05cfcdbe2a1 ))
* replace model dropdown with intuitive subject/quality selector in remove-bg ([9aa0371 ](https://github.com/siddharthksah/Stirling-Image/commit/9aa0371a1452540557aca9f2195032c5c16ce3fb ))
* **web:** add ProgressCard component ([01d5d66 ](https://github.com/siddharthksah/Stirling-Image/commit/01d5d66466a7bcf4a0c0f454f7b4d58f7e1e7801 ))
* **web:** add ProgressCard to non-AI tool settings (Group A) ([5c64b30 ](https://github.com/siddharthksah/Stirling-Image/commit/5c64b306ead8b6214dee6d51e8dae25fb47ff7e8 ))
* **web:** migrate AI tool settings to ProgressCard ([dbd3bf7 ](https://github.com/siddharthksah/Stirling-Image/commit/dbd3bf737e4692279ba5b7c3d860779193a21b5f ))
* **web:** rewrite useToolProcessor with XHR upload progress and SSE ([60945fd ](https://github.com/siddharthksah/Stirling-Image/commit/60945fd3b3674d2026f3f717cd3d123951126933 ))
2026-03-23 04:03:22 +00:00
Siddharth Kumar Sah
80e536bcf8
chore: remove dead code, add test infrastructure, update docs
...
- Delete 3 dead files: use-batch-processor.ts, use-i18n.ts, smart-crop.ts (AI package)
- Remove dead getJobProgress function and unused runPythonScript wrapper
- Remove 6 unused imports across API and web apps
- Remove unused shared types (ImageFormat, AppConfig, ApiError, HealthResponse, JobProgress)
and constants (SUPPORTED_INPUT_FORMATS/OUTPUT_FORMATS, DEFAULT_OUTPUT_FORMAT)
- Remove unused store method (setOriginalBlobUrl) and clean AI package re-exports
- Add test infrastructure: vitest config, unit/integration/e2e tests, fixtures, screenshots
- Add Docker test infrastructure: Dockerfile.test, docker-compose.test.yml
- Add download_models.py for pre-baking AI model weights in Docker
- Add filename sanitization utility (apps/api/src/lib/filename.ts)
- Update .gitignore to exclude coverage/, *.tsbuildinfo, .superpowers/, test artifacts
- Update .dockerignore to exclude test/coverage/IDE artifacts from builds
- Update docs: remove smart crop from AI docs (uses Sharp directly), update bridge docs
2026-03-23 11:46:45 +08:00
Siddharth Kumar Sah
b3f590c8b3
fix: add SSE progress endpoint to public paths
...
The /api/v1/jobs/ endpoint was blocked by auth middleware.
EventSource doesn't support custom headers so auth tokens can't be
sent. The jobId is a random UUID (unguessable capability token), same
security model as the download endpoint.
2026-03-23 09:16:44 +08:00
Siddharth Kumar Sah
27600a4318
feat(api): wire AI route handlers to SSE progress via clientJobId
...
Extract clientJobId from multipart form data in all 5 AI route handlers
(remove-background, upscale, blur-faces, erase-object, ocr) and forward
progress callbacks to the SSE system via updateSingleFileProgress.
2026-03-23 01:41:13 +08:00
Siddharth Kumar Sah
7eddac5119
feat(api): add SingleFileProgress type and SSE update function
2026-03-23 01:36:57 +08:00
Siddharth Kumar Sah
4807bd2726
feat: add semantic-release for automated versioning and help dialog
...
- Set up semantic-release with zero-touch CI pipeline on push to main
- Add version sync script to keep all package.json files and APP_VERSION
constant in sync automatically
- Consolidate Docker publishing into single tag-triggered workflow that
pushes to both Docker Hub and ghcr.io with semver tags
- Add help dialog with keyboard shortcuts, getting started guide, and
resource links
- Sync all versions to 0.2.1 to match Docker Hub latest
2026-03-22 21:25:14 +08:00
Siddharth Kumar Sah
ce03aad10f
feat: production Docker, Playwright tests, settings API, and bug fixes
...
- Add user management endpoints (register, list, delete, change password)
- Add API key management (create, list, delete)
- Add settings persistence endpoints (get, put)
- Wire settings dialog to real backend (People, API Keys, System, Security)
- Fix login auth flow (window.location.href for full reload)
- Fix download URLs returning 401 (make public since UUIDs are unguessable)
- Fix border tool shadowColor validation (accept 6-8 hex digits)
- Fix remove-bg alpha matting fallback (retry without on failure)
- Fix AI tool silent fallbacks (report errors instead of no-ops)
- Add checkerboard background to before/after slider for transparency
- Add progress bars to all AI tool components
- Add Playwright E2E test suite (131 tests across 9 test files)
- Rewrite Dockerfile for production (tsx runtime, pre-baked AI models)
- Add .dockerignore for faster builds
- Add proper accessible labels to login form
2026-03-22 19:28:57 +08:00
Siddharth Kumar Sah
de829003ad
fix: resolve 3 critical UX bugs - home upload, auth, and form submit
...
1. Home page file drop now shows quick-action tool selector
2. Auth disabled by default in dev (Docker still defaults to true)
3. Tool settings wrapped in forms - Enter key triggers processing
2026-03-22 11:04:20 +08:00
Siddharth Kumar Sah
80bb0e29a0
fix: make port 1349 the UI port in all modes
...
Dev mode: Vite serves UI on 1349, Fastify API on 1350 (proxied)
Production/Docker: Fastify serves both UI and API on 1349
2026-03-22 10:31:11 +08:00
Siddharth Kumar Sah
263447a81e
feat(api): add pipeline execution, save, and list endpoints
...
Add pipelines table to SQLite schema with Drizzle migration.
Implement POST /api/v1/pipeline/execute (sequential multi-tool processing),
POST /api/v1/pipeline/save, GET /api/v1/pipeline/list,
DELETE /api/v1/pipeline/:id. Pipeline execution validates all tool IDs
and settings before processing, chains output of each step as input
to the next.
2026-03-22 04:41:51 +08:00
Siddharth Kumar Sah
5524939b6f
feat: add Phase 4 AI tools with Python bridge and 6 new tools
...
Add Python bridge (packages/ai/src/bridge.ts) that calls Python scripts
via child_process with venv-first fallback to system python3. Implements
6 AI-powered tools:
- Remove Background: rembg-based with U2-Net/IS-Net models
- Image Upscaling: Real-ESRGAN with Lanczos fallback
- OCR/Text Extraction: Tesseract + PaddleOCR engines
- Face/PII Blur: MediaPipe face detection with configurable blur
- Object Eraser: LaMa inpainting with mask-based input
- Smart Crop: Sharp attention-based entropy cropping (no Python needed)
Each tool includes: Python script, TypeScript wrapper, API route,
and React settings component. All Python scripts handle ImportError
gracefully with clear installation messages.
2026-03-22 04:31:49 +08:00
Siddharth Kumar Sah
9c55dd32c4
feat: add replace-color tool and update tool page routing
...
- Add replace-color tool with pixel-level color replacement and tolerance
- Register all 19 new Phase 3 tools in routes/tools/index.ts
- Map all new tool IDs to settings components in tool-page.tsx
- Add PDF, ZIP, ICO, JSON content types to download route
- Install qrcode, jsqr, potrace, pdfkit dependencies
2026-03-22 04:21:10 +08:00
Siddharth Kumar Sah
b88d0d0af8
feat: add format tools (SVG-to-raster, vectorize, GIF) and optimization (rename, favicon, image-to-PDF)
...
Add 6 tools for format conversion and optimization extras:
- svg-to-raster: SVG to PNG/JPG/WebP at custom resolution
- vectorize: raster to SVG via potrace (B&W and color modes)
- gif-tools: animated GIF resize, frame extraction, optimization
- bulk-rename: pattern-based file renaming with ZIP output
- favicon: generate all favicon/app icon sizes with manifest.json
- image-to-pdf: combine images into PDF using pdfkit
2026-03-22 04:20:54 +08:00