Commit Graph
249 Commits
Author SHA1 Message Date
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
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](https://github.com/siddharthksah/Stirling-Image/commit/b08e006512744f13b893e92e9ac20ee6299ab41c))
v0.14.2
2026-03-28 04:49:54 +00:00
Siddharth Kumar Sah b08e006512 fix(tests): remove temp DB cleanup that races with other test files
The integration test cleanup was deleting the shared temp directory
(rmSync on dirname(DB_PATH)), which causes SQLITE_IOERR_FSTAT in
other test files that still reference the same database. The temp
directory uses a random UUID under /tmp and is cleaned up by the OS.
2026-03-28 12:49:23 +08:00
Siddharth Kumar Sah 28c44bef5f updated the dashboard image 2026-03-28 12:29:39 +08:00
Siddharth Kumar Sah f17c114246 docs: improve README with clearer positioning and scannable feature list 2026-03-28 12:26:31 +08:00
Siddharth Kumar Sah 9f68960eda docs: rewrite README, add CONTRIBUTING.md, developer and translation guides
Rewrite README to remove AI writing patterns (em dashes, promotional
language, vague claims). Make Quick Start section explicit about default
credentials and forced password change. Add Contributing section linking
to CONTRIBUTING.md, developer guide, and translation guide.

Create CONTRIBUTING.md with issue guidelines, PR workflow, commit
conventions, and development setup. Add developer guide (dev setup,
project structure, how to add a tool) and translation guide (how the
i18n system works, step-by-step for adding a language) to VitePress
docs. Register both new pages in the docs sidebar.
2026-03-28 12:14:24 +08: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](https://github.com/siddharthksah/Stirling-Image/commit/ce5106524333b9bc7ee214b699d76e4b52371519))
v0.14.1
2026-03-28 03:46:26 +00:00
Siddharth Kumar Sah ce51065243 fix: handle migration race condition in concurrent test workers
Drizzle's migrate() throws when multiple vitest workers race to apply
migrations on the same temp database. The DrizzleError wraps a
SqliteError ("table already exists") in its cause chain. Add a
same-process guard and a catch that checks both the outer message and
cause for "already exists" so the second worker continues safely.
2026-03-28 11:45:54 +08: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](https://github.com/siddharthksah/Stirling-Image/commit/6cfa3b0c38d81a19b230e1bdbad750dce2783afb))
v0.14.0
2026-03-28 03:19:36 +00:00
Siddharth Kumar Sah 6cfa3b0c38 feat: multi-arch Docker support, security hardening, and test improvements
Remove hardcoded --platform=linux/amd64 from Dockerfile so buildx produces
native arm64 images for Apple Silicon and Raspberry Pi. Add audit logging
for auth events, harden file storage with extension whitelists and
double-extension attack prevention, reject null-byte buffers in validation,
add data-testid attributes to all tool settings components, update
deployment docs with architecture notes and correct CI workflow references,
and fix unit test mock to match throwWithMessage error extraction.
2026-03-28 11:19:09 +08: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](https://github.com/siddharthksah/Stirling-Image/commit/d3f6bac62b7e01e3a39371a1a52d865909412117))
v0.13.1
2026-03-27 12:55:10 +00:00
Siddharth Kumar Sah d3f6bac62b fix(docs): remove hero logo from home page 2026-03-27 20:54:46 +08: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](https://github.com/siddharthksah/Stirling-Image/commit/98478e271934c8b3deb1b3003d88fe1a165e75a0))
v0.13.0
2026-03-27 12:52:29 +00:00
Siddharth Kumar Sah 98478e2719 feat(docs): add gem logo to GitHub Pages nav bar and home hero 2026-03-27 20:52:06 +08:00
Siddharth Kumar Sah 8ae1d8cec3 docs: slim down REST API page to quick-start guide
The full API reference now lives at /api/docs (Scalar). This page
becomes a getting-started guide covering auth, tool pattern, tool IDs,
batch, pipelines, and errors — pointing to the interactive docs for
per-endpoint details.
2026-03-27 17:36:58 +08:00
Siddharth Kumar Sah 0e938c9b7e docs: add llms.txt info box to REST API page and fix Swagger reference 2026-03-27 17:32:11 +08: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](https://github.com/siddharthksah/Stirling-Image/commit/a4d4d368286a80decf73563ca6d7e7cae119099a))
v0.12.1
2026-03-27 09:11:21 +00:00
Siddharth Kumar Sah a4d4d36828 fix(docs): clean up footer llms.txt links 2026-03-27 17:10:58 +08: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](https://github.com/siddharthksah/Stirling-Image/commit/620b8ad038506a03633ab9baf738c6c316fa4336))

### Features

* **docs:** add llms.txt links to GitHub Pages footer ([c59e4a0](https://github.com/siddharthksah/Stirling-Image/commit/c59e4a06686db62ad8ec134ec1c97080673fbcb3))
v0.12.0
2026-03-27 08:42:16 +00:00
Siddharth Kumar Sah c59e4a0668 feat(docs): add llms.txt links to GitHub Pages footer
Add llms.txt and llms-full.txt links in the footer with
"AI-friendly docs" label. Also add link rel="llms-txt" head tag
for automatic discovery by AI tools.
2026-03-27 16:41:44 +08:00
Siddharth Kumar Sah 620b8ad038 fix(api): resolve team name lookup and show server error messages
- Backend: look up teams by name first (frontend sends name, not ID)
- Frontend: parse response body on API errors instead of showing
  generic "API error: 400" — now shows the actual server message
  (e.g. "Password must be at least 8 characters...")
2026-03-27 16:41:44 +08: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](https://github.com/siddharthksah/Stirling-Image/commit/5c4b2a59d3a9f1fa2dd428fd626f2bbbb9e3fea6))
v0.11.1
2026-03-27 05:54:02 +00:00
Siddharth Kumar Sah 5c4b2a59d3 fix(docs): ignore localhost dead links in VitePress build
The /api/docs tip box links to localhost which fails the dead link
check in CI.
2026-03-27 13:53:34 +08: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](https://github.com/siddharthksah/Stirling-Image/commit/d47548a1d7d2de995c881465b79a463de20354df))
* **api:** allow Scalar docs through auth and CSP ([a46d500](https://github.com/siddharthksah/Stirling-Image/commit/a46d500012e1f0724038c695a17e7dafd9be0c40))
* **api:** use content instead of spec.content for Scalar v1.49 API ([05854fd](https://github.com/siddharthksah/Stirling-Image/commit/05854fd61f90a1096e1682ad021d744d178d9b9b))
* **ui:** clean up settings, automate page, fullscreen logo, and README ([e3a8558](https://github.com/siddharthksah/Stirling-Image/commit/e3a85581349b6a992939b08ede932705613d915f))

### Features

* **api:** add all remaining endpoints to OpenAPI spec ([9ed1090](https://github.com/siddharthksah/Stirling-Image/commit/9ed109065189f20545eb24893c2c0b9332e40249))
* **api:** add all tool endpoints to OpenAPI spec ([2bf8689](https://github.com/siddharthksah/Stirling-Image/commit/2bf86894d0005ff4c273334699c30de1fcb38ee6))
* **api:** add llms.txt and llms-full.txt endpoints ([cff1930](https://github.com/siddharthksah/Stirling-Image/commit/cff1930920c488fc853eab5aa36128fac19b3bf5))
* **api:** add OpenAPI 3.1 spec skeleton with common schemas ([9488201](https://github.com/siddharthksah/Stirling-Image/commit/948820180663783d463a07f966dd4336c1a7c503))
* **api:** add Scalar docs route and install dependency ([abb2916](https://github.com/siddharthksah/Stirling-Image/commit/abb2916233de85e62675e609b9d497dcc0a01882))
* **api:** register docs route in server and test helper ([849878e](https://github.com/siddharthksah/Stirling-Image/commit/849878e72fc0e5cb3e775afeea802dac933c4e13))
* **branding:** add faceted gem SVG logo assets ([0214ac1](https://github.com/siddharthksah/Stirling-Image/commit/0214ac11b1ba4142349c09fd2465a425b4e8dd6b))
* **branding:** add favicon and meta tags to index.html ([0364927](https://github.com/siddharthksah/Stirling-Image/commit/036492725eea6cb6b4c0aff307edeee8516ec280))
* **branding:** add OG social preview image ([dcd926c](https://github.com/siddharthksah/Stirling-Image/commit/dcd926c57e9877c2b47e70c494b679f0c00d93d6))
* **branding:** add PWA manifest and PNG logo assets ([26cc183](https://github.com/siddharthksah/Stirling-Image/commit/26cc18342fb6d4027f2130b198090469e27ef797))
* **branding:** show gem icon in app header as default logo ([39dfb93](https://github.com/siddharthksah/Stirling-Image/commit/39dfb93679765366253115240adcbc573e83b8e7))
* **docs:** add gem favicon to VitePress site ([42ec0f2](https://github.com/siddharthksah/Stirling-Image/commit/42ec0f2490267f2e3730764539bdd2920b7b3793))
* **docs:** add llms.txt and llms-full.txt to GitHub Pages ([e6dc7b0](https://github.com/siddharthksah/Stirling-Image/commit/e6dc7b0a18d3d022de4e2f0b971bf25678042b3a))
v0.11.0
2026-03-27 05:51:30 +00:00
Siddharth Kumar Sah e3a8558134 fix(ui): clean up settings, automate page, fullscreen logo, and README
- README: simplify to match Stirling-PDF style, add dashboard screenshot
- Settings: remove unsupported languages from dropdown, remove unused
  experimental tools toggle
- Automate: remove hardcoded template pipelines from sidebar
- Fullscreen: add GemLogo icon to header
2026-03-27 13:50:04 +08:00
Siddharth Kumar Sah e6dc7b0a18 feat(docs): add llms.txt and llms-full.txt to GitHub Pages
Serve LLM-friendly documentation at the docs site root.
llms.txt is the index, llms-full.txt has all docs in one file.
2026-03-27 13:50:04 +08: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 655398e184 test(api): add integration tests for API docs endpoint
Also update GitHub Pages REST API doc to link to /api/docs.
2026-03-27 13:50:03 +08:00
Siddharth Kumar Sah 9ed1090651 feat(api): add all remaining endpoints to OpenAPI spec
Add batch, pipeline, file, auth, API key, settings, teams, branding, and
system endpoints — bringing the total from 38 to 67 documented paths.
2026-03-27 13:50:03 +08:00
Siddharth Kumar Sah 2bf86894d0 feat(api): add all tool endpoints to OpenAPI spec 2026-03-27 13:50:03 +08:00