mirror of
https://github.com/snapotter-hq/SnapOtter.git
synced 2026-08-03 07:46:42 +02:00
aa1f87fc91e0b5edd93c6720fcc54a839e51893a
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.
Stirling Image
Stirling-PDF but for images. 30+ tools and local AI in a single Docker container.
Key Features
- 30+ image tools - Resize, crop, compress, convert, watermark, color adjust, and more
- Local AI - Remove backgrounds, upscale images, erase objects, blur faces, extract text (OCR). All running on your hardware with pre-downloaded models, no internet required
- Pipelines - Chain tools into reusable workflows. Batch process up to 200 images at once
- REST API - Every tool available via API. Interactive docs included at
/api/docs - Single container - One
docker run, no Redis, no Postgres, no external services - Multi-arch - Runs on AMD64 and ARM64 (Intel, Apple Silicon, Raspberry Pi)
- Your data stays yours - No telemetry, no tracking, no external calls. Images never leave your machine
Quick Start
docker run -d -p 1349:1349 -v stirling-data:/data ghcr.io/siddharthksah/stirling-image:latest
Open http://localhost:1349 in your browser.
Default credentials:
| Field | Value |
|---|---|
| Username | admin |
| Password | admin |
You will be asked to change your password on first login. This is enforced for all new accounts and cannot be skipped in production.
For Docker Compose, persistent storage, and other setup options, see the Getting Started Guide.
Documentation
Contributing
Contributions welcome. See CONTRIBUTING.md for guidelines, the Developer Guide for setup, and the Translation Guide for adding languages.
Support
Bug reports and feature requests: GitHub Issues
License
Languages
TypeScript
91%
Python
3.5%
JavaScript
2.4%
Shell
1.6%
Astro
1.1%
Other
0.3%

