Commit graph

39 commits

Author SHA1 Message Date
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](565b4805c7))
2026-03-28 06:24:41 +00: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](7c76c2a2a0))
2026-03-28 06:13:13 +00: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](01cd1d9f71))
2026-03-28 06:02:41 +00:00
semantic-release-bot
1c8a6f10c8 chore(release): 0.14.2 [skip ci]
## [0.14.2](https://github.com/siddharthksah/Stirling-Image/compare/v0.14.1...v0.14.2) (2026-03-28)

### Bug Fixes

* **tests:** remove temp DB cleanup that races with other test files ([b08e006](b08e006512))
2026-03-28 04:49:54 +00:00
semantic-release-bot
a0f68465ac chore(release): 0.14.1 [skip ci]
## [0.14.1](https://github.com/siddharthksah/Stirling-Image/compare/v0.14.0...v0.14.1) (2026-03-28)

### Bug Fixes

* handle migration race condition in concurrent test workers ([ce51065](ce51065243))
2026-03-28 03:46:26 +00:00
semantic-release-bot
fb7077cf16 chore(release): 0.14.0 [skip ci]
# [0.14.0](https://github.com/siddharthksah/Stirling-Image/compare/v0.13.1...v0.14.0) (2026-03-28)

### Features

* multi-arch Docker support, security hardening, and test improvements ([6cfa3b0](6cfa3b0c38))
2026-03-28 03:19:36 +00:00
semantic-release-bot
8f09c0678b chore(release): 0.13.1 [skip ci]
## [0.13.1](https://github.com/siddharthksah/Stirling-Image/compare/v0.13.0...v0.13.1) (2026-03-27)

### Bug Fixes

* **docs:** remove hero logo from home page ([d3f6bac](d3f6bac62b))
2026-03-27 12:55:10 +00:00
semantic-release-bot
55df7dd768 chore(release): 0.13.0 [skip ci]
# [0.13.0](https://github.com/siddharthksah/Stirling-Image/compare/v0.12.1...v0.13.0) (2026-03-27)

### Features

* **docs:** add gem logo to GitHub Pages nav bar and home hero ([98478e2](98478e2719))
2026-03-27 12:52:29 +00:00
semantic-release-bot
10b15bf838 chore(release): 0.12.1 [skip ci]
## [0.12.1](https://github.com/siddharthksah/Stirling-Image/compare/v0.12.0...v0.12.1) (2026-03-27)

### Bug Fixes

* **docs:** clean up footer llms.txt links ([a4d4d36](a4d4d36828))
2026-03-27 09:11:21 +00:00
semantic-release-bot
efc96f98c4 chore(release): 0.12.0 [skip ci]
# [0.12.0](https://github.com/siddharthksah/Stirling-Image/compare/v0.11.1...v0.12.0) (2026-03-27)

### Bug Fixes

* **api:** resolve team name lookup and show server error messages ([620b8ad](620b8ad038))

### Features

* **docs:** add llms.txt links to GitHub Pages footer ([c59e4a0](c59e4a0668))
2026-03-27 08:42:16 +00:00
semantic-release-bot
b5721d9854 chore(release): 0.11.1 [skip ci]
## [0.11.1](https://github.com/siddharthksah/Stirling-Image/compare/v0.11.0...v0.11.1) (2026-03-27)

### Bug Fixes

* **docs:** ignore localhost dead links in VitePress build ([5c4b2a5](5c4b2a59d3))
2026-03-27 05:54:02 +00:00
semantic-release-bot
355022d374 chore(release): 0.11.0 [skip ci]
# [0.11.0](https://github.com/siddharthksah/Stirling-Image/compare/v0.10.0...v0.11.0) (2026-03-27)

### Bug Fixes

* **a11y:** add aria-hidden to decorative GemLogo SVG ([d47548a](d47548a1d7))
* **api:** allow Scalar docs through auth and CSP ([a46d500](a46d500012))
* **api:** use content instead of spec.content for Scalar v1.49 API ([05854fd](05854fd61f))
* **ui:** clean up settings, automate page, fullscreen logo, and README ([e3a8558](e3a8558134))

### Features

* **api:** add all remaining endpoints to OpenAPI spec ([9ed1090](9ed1090651))
* **api:** add all tool endpoints to OpenAPI spec ([2bf8689](2bf86894d0))
* **api:** add llms.txt and llms-full.txt endpoints ([cff1930](cff1930920))
* **api:** add OpenAPI 3.1 spec skeleton with common schemas ([9488201](9488201806))
* **api:** add Scalar docs route and install dependency ([abb2916](abb2916233))
* **api:** register docs route in server and test helper ([849878e](849878e72f))
* **branding:** add faceted gem SVG logo assets ([0214ac1](0214ac11b1))
* **branding:** add favicon and meta tags to index.html ([0364927](036492725e))
* **branding:** add OG social preview image ([dcd926c](dcd926c57e))
* **branding:** add PWA manifest and PNG logo assets ([26cc183](26cc18342f))
* **branding:** show gem icon in app header as default logo ([39dfb93](39dfb93679))
* **docs:** add gem favicon to VitePress site ([42ec0f2](42ec0f2490))
* **docs:** add llms.txt and llms-full.txt to GitHub Pages ([e6dc7b0](e6dc7b0a18))
2026-03-27 05:51:30 +00:00
Siddharth Kumar Sah
cff1930920 feat(api): add llms.txt and llms-full.txt endpoints
Serve LLM-friendly documentation at /llms.txt (index) and
/llms-full.txt (full API docs as markdown). Generated from the
OpenAPI spec at startup.
2026-03-27 13:50:04 +08:00
Siddharth Kumar Sah
abb2916233 feat(api): add Scalar docs route and install dependency 2026-03-27 13:50:03 +08:00
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](f71c3c8c05))

### Features

* **erase-object:** replace mask upload with in-browser brush painting ([40656a0](40656a0452))
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](f15102c632))
* **docker:** add build layer caching for faster Docker rebuilds ([14c630f](14c630ff23))
* **upscale:** auto-orient images before upscaling and improve UI ([8ee4d7b](8ee4d7b2fb))

### Features

* **adjustments:** add real-time live preview for all color tools ([f357b18](f357b18ced))
* **image-to-pdf:** add live PDF page preview with margin visualization ([ddde152](ddde152545))
* **rotate:** add editable angle input and fine-tune +/- buttons ([bf62820](bf62820064))
2026-03-26 08:02:46 +00: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](8474b0ee52))
* **test:** exclude e2e tests from vitest and fix CI test suite ([91acab9](91acab9967))
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](b474480698))
2026-03-25 17:21:05 +00: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](200e7d10c1))
* prevent useAuth infinite loop causing rate limit storms ([3b4f522](3b4f522bf4))

### Features

* **api:** add logo upload/serve/delete routes with tests ([6a13065](6a13065706))
* **api:** add persistent file management helpers to frontend api module ([8a3a731](8a3a731267))
* **api:** add teams CRUD routes and update auth team references ([ab370a7](ab370a74fe))
* **api:** add tool filtering and DB-backed cleanup settings ([acfff75](acfff754b5))
* **api:** add user files CRUD routes at /api/v1/files/* ([4e2aa58](4e2aa58767))
* **db:** add teams table and migration ([926b52d](926b52d330))
* **db:** add userFiles table and migration ([dda37e9](dda37e90cc))
* **env:** add FILES_STORAGE_PATH config variable ([4927f57](4927f574ba))
* **files:** add Files page with nav, list, details, upload, and routing ([788b8c8](788b8c8bad))
* **files:** add mobile layout for Files page ([c99f43f](c99f43fe60))
* **files:** wire serverFileId for version tracking ([20f153d](20f153d611))
* **i18n:** add translation keys for settings phase 1 ([ffb676d](ffb676d648))
* implement Files page with persistent storage and version tracking ([62fbb54](62fbb5484c))
* **storage:** add file storage helpers module ([fbca20d](fbca20d78c))
* **stores:** add Zustand store for Files page state management ([24644c1](24644c1c10))
* **tool-factory:** auto-save results to persistent file store when fileId provided ([bf6c30c](bf6c30c3c0))
* **ui:** add teams, tools, feature flags, temp files, logo to settings dialog ([4b2621d](4b2621d9f2))
2026-03-25 17:12:41 +00:00
Siddharth Kumar Sah
585d66f0c9 refactor: rename Tool.alpha to Tool.experimental 2026-03-26 01:10:51 +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](432cc92471))
* **pipeline:** add inline settings configuration for automation steps ([adc7e1c](adc7e1c037))
2026-03-24 13:38:48 +00: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](e5086ada6e))
2026-03-24 12:37:44 +00: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](7dfa7a295d))
2026-03-23 16:49:00 +00: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](fbdbe0949a))
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](1d35db98bf))
* white screen crash when uploading photos with null GPS EXIF data ([70c73d8](70c73d85c9))

### Features

* accept clientJobId in batch endpoint for SSE progress correlation ([2514078](2514078ea1))
* add CSS transform props to ImageViewer for live rotate/flip preview ([267da78](267da78577))
* add live preview callback to RotateSettings, rename button to Apply ([ec192e3](ec192e3d96))
* add MultiImageViewer with arrow navigation and filmstrip ([815a8ed](815a8ed419))
* add processAllFiles batch method to tool processor hook ([846a51a](846a51a9fd))
* add SideBySideComparison component for resize results ([271cab6](271cab647b))
* add ThumbnailStrip filmstrip component ([6521d70](6521d70238))
* conditional result views — side-by-side for resize, live preview for rotate ([59a57f3](59a57f3a00))
* **crop:** add CropCanvas component with visual overlay, grid, and keyboard controls ([1a076be](1a076be9b2))
* **crop:** add react-image-crop dependency ([31d426f](31d426ff6f))
* **crop:** redesign CropSettings with aspect presets, pixel inputs, and grid toggle ([c2c256a](c2c256a180))
* **crop:** wire CropCanvas and CropSettings into tool-page with bidirectional state ([786a671](786a671c39))
* integrate MultiImageViewer and multi-file UX into tool page ([3796533](3796533822))
* merge multi-image UX — batch processing, filmstrip navigation, resize/rotate redesign ([80756d1](80756d1591))
* multi-file metadata display with per-file caching ([474b4a9](474b4a941e))
* rewrite file-store with FileEntry model for multi-image support ([8844b44](8844b44fff))
* rewrite resize settings with tab-based UI (presets, custom, scale) ([bc105fd](bc105fd261))
* wire up batch processing across tool settings components ([9e2c28f](9e2c28f191))
2026-03-23 11:23:50 +00: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](0e7348a0be))
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](4f984c83ac))

### Features

* add CSS transform props to ImageViewer for live rotate/flip preview ([113bb75](113bb75733))
* add live preview callback to RotateSettings, rename button to Apply ([31a9439](31a943962d))
* add SideBySideComparison component for resize results ([28a8b10](28a8b10fa1))
* conditional result views — side-by-side for resize, live preview for rotate ([989e8dc](989e8dc6e4))
* rewrite resize settings with tab-based UI (presets, custom, scale) ([02ef3e6](02ef3e6468))
2026-03-23 07:15:07 +00: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](b803b0e443))
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](b3f590c8b3))
* apply continuous progress bar to erase-object and OCR ([8db84a7](8db84a753c))
* continuous progress bar (no 100%→0% reset) ([28cd950](28cd950ede))
* setError(null) was overriding setProcessing(true) ([b5cc452](b5cc452077))

### Features

* **ai:** add emit_progress() calls to all Python AI scripts ([7238429](723842988b))
* **ai:** add onProgress callback to all AI wrapper functions ([acb230c](acb230cc98))
* **ai:** rewrite bridge.ts to stream stderr progress via spawn ([7d74ddd](7d74ddd3a6))
* **api:** add SingleFileProgress type and SSE update function ([7eddac5](7eddac5119))
* **api:** wire AI route handlers to SSE progress via clientJobId ([27600a4](27600a4318))
* replace model dropdown with intuitive subject/quality selector in remove-bg ([9aa0371](9aa0371a14))
* **web:** add ProgressCard component ([01d5d66](01d5d66466))
* **web:** add ProgressCard to non-AI tool settings (Group A) ([5c64b30](5c64b306ea))
* **web:** migrate AI tool settings to ProgressCard ([dbd3bf7](dbd3bf737e))
* **web:** rewrite useToolProcessor with XHR upload progress and SSE ([60945fd](60945fd3b3))
2026-03-23 04:03:22 +00: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
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
ce641168c1 feat(api,web): add batch processing with ZIP download and SSE progress
Backend: POST /api/v1/tools/:toolId/batch accepts multiple files +
settings, processes via p-queue with CONCURRENT_JOBS concurrency limit,
streams ZIP response using archiver. Tool registry in tool-factory
enables batch to reuse any registered tool's process function. SSE
endpoint at GET /api/v1/jobs/:jobId/progress provides real-time updates.
Handles partial failures gracefully, preserves filenames, deduplicates
collisions. Frontend: use-batch-processor hook handles upload, SSE
progress tracking, and automatic ZIP download.
2026-03-22 04:03:38 +08:00
Siddharth Kumar Sah
ece341e8c4 feat(api): add multipart file upload, workspace management, and download routes
- Register @fastify/multipart plugin with size limits from env config
- Workspace manager: createWorkspace, getWorkspacePath, cleanupWorkspace
- File validation: magic byte detection, format check, megapixel limit
- POST /api/v1/upload: multipart upload with validation, returns jobId + file metadata
- GET /api/v1/download/:jobId/:filename: serve files with Content-Disposition
- Path traversal guards on all file-serving endpoints
- Add @stirling-image/image-engine and sharp as API dependencies
- Add apiUpload, getDownloadUrl, apiDownloadBlob to web client
2026-03-22 03:47:54 +08:00
Siddharth Kumar Sah
a24c6dd014 feat: add SQLite database with Drizzle ORM schema and migrations 2026-03-22 02:51:57 +08:00
Siddharth Kumar Sah
1e7fb11da0 feat: add Fastify API server with health check and env config 2026-03-22 02:46:34 +08:00