Siddharth Kumar Sah
02ef3e6468
feat: rewrite resize settings with tab-based UI (presets, custom, scale)
2026-03-23 15:14:34 +08:00
Siddharth Kumar Sah
28a8b10fa1
feat: add SideBySideComparison component for resize results
2026-03-23 15:14:34 +08:00
Siddharth Kumar Sah
888b9dd51d
docs: add resize & rotate/flip UX redesign implementation plan
2026-03-23 15:14:34 +08:00
Siddharth Kumar Sah
c8b1639a9e
docs: add multi-image UX redesign spec
...
Design spec for overhauling multi-image upload/preview/processing UX:
- Bottom filmstrip thumbnail strip with left/right navigation arrows
- Hybrid batch processing (apply-to-all with per-file preview)
- Individual + ZIP download options
- Multi-file aware strip-metadata with existing /inspect endpoint
- File store evolution to per-file tracking with FileEntry model
2026-03-23 15:14:34 +08:00
Siddharth Kumar Sah
fc01a2f536
docs: address spec review feedback for resize/rotate redesign
...
Adds: state architecture for rotate preview, dimension data source,
fit mode defaults, mobile layout notes, extensibility guidance.
2026-03-23 15:14:34 +08:00
Siddharth Kumar Sah
308e428a01
docs: add resize & rotate/flip UX redesign spec
2026-03-23 15:14:34 +08:00
Siddharth Kumar Sah
1d35db98bf
fix: resolve TypeScript Uint8Array type error with fflate
2026-03-23 14:14:00 +08:00
Siddharth Kumar Sah
474b4a941e
feat: multi-file metadata display with per-file caching
2026-03-23 14:11:49 +08:00
Siddharth Kumar Sah
9e2c28f191
feat: wire up batch processing across tool settings components
2026-03-23 14:11:08 +08:00
Siddharth Kumar Sah
846a51a9fd
feat: add processAllFiles batch method to tool processor hook
2026-03-23 14:09:09 +08:00
Siddharth Kumar Sah
3796533822
feat: integrate MultiImageViewer and multi-file UX into tool page
2026-03-23 14:07:28 +08:00
Siddharth Kumar Sah
815a8ed419
feat: add MultiImageViewer with arrow navigation and filmstrip
2026-03-23 14:03:59 +08:00
Siddharth Kumar Sah
2514078ea1
feat: accept clientJobId in batch endpoint for SSE progress correlation
2026-03-23 14:03:56 +08:00
Siddharth Kumar Sah
6521d70238
feat: add ThumbnailStrip filmstrip component
2026-03-23 14:03:55 +08:00
Siddharth Kumar Sah
8844b44fff
feat: rewrite file-store with FileEntry model for multi-image support
2026-03-23 14:02:33 +08:00
Siddharth Kumar Sah
890ed21617
chore: add fflate for client-side ZIP extraction
2026-03-23 12:55:10 +08:00
Siddharth Kumar Sah
af23939a71
chore: add .worktrees/ to gitignore
2026-03-23 12:53:34 +08:00
Siddharth Kumar Sah
59a57f3a00
feat: conditional result views — side-by-side for resize, live preview for rotate
2026-03-23 12:53:18 +08:00
Siddharth Kumar Sah
ec192e3d96
feat: add live preview callback to RotateSettings, rename button to Apply
2026-03-23 12:51:29 +08:00
Siddharth Kumar Sah
624c3643cb
docs: add multi-image UX implementation plan
...
12-task plan covering file store rewrite, MultiImageViewer with filmstrip,
batch processing with fflate ZIP extraction, multi-file metadata display,
and Docker build verification.
2026-03-23 12:51:19 +08:00
Siddharth Kumar Sah
267da78577
feat: add CSS transform props to ImageViewer for live rotate/flip preview
2026-03-23 12:50:19 +08:00
Siddharth Kumar Sah
bc105fd261
feat: rewrite resize settings with tab-based UI (presets, custom, scale)
2026-03-23 12:49:20 +08:00
Siddharth Kumar Sah
271cab647b
feat: add SideBySideComparison component for resize results
2026-03-23 12:47:06 +08:00
Siddharth Kumar Sah
97147ece9d
docs: add resize & rotate/flip UX redesign implementation plan
2026-03-23 12:44:47 +08:00
Siddharth Kumar Sah
c31144b628
docs: add multi-image UX redesign spec
...
Design spec for overhauling multi-image upload/preview/processing UX:
- Bottom filmstrip thumbnail strip with left/right navigation arrows
- Hybrid batch processing (apply-to-all with per-file preview)
- Individual + ZIP download options
- Multi-file aware strip-metadata with existing /inspect endpoint
- File store evolution to per-file tracking with FileEntry model
2026-03-23 12:44:34 +08:00
Siddharth Kumar Sah
790a870995
docs: address spec review feedback for resize/rotate redesign
...
Adds: state architecture for rotate preview, dimension data source,
fit mode defaults, mobile layout notes, extensibility guidance.
2026-03-23 12:38:17 +08:00
Siddharth Kumar Sah
88001a8410
docs: add resize & rotate/flip UX redesign spec
2026-03-23 12:35:19 +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 ))
v0.3.1
2026-03-23 04:10:54 +00:00
Siddharth Kumar Sah
b803b0e443
fix: resolve tsx not found in AI docs updater workflow
...
Use pnpm exec from apps/docs workspace where tsx is installed,
update pnpm/action-setup to v4, and align Node version to 22.
2026-03-23 12:10:33 +08: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 ))
v0.3.0
2026-03-23 04:03:22 +00:00
Siddharth Kumar Sah
9aa0371a14
feat: replace model dropdown with intuitive subject/quality selector in remove-bg
...
Replace technical AI model names with user-friendly controls:
- Subject type buttons (People/Products/General) with icons
- Quality selector (Fast/Balanced/Best) with time estimates
- Passport/ID photo checkbox for portrait-optimized processing
- Models selected automatically based on user's choices
2026-03-23 12:02:35 +08: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
8db84a753c
fix: apply continuous progress bar to erase-object and OCR
...
Same fix as the hook: upload=0-15%, server processing=15-100%.
2026-03-23 09:49:20 +08:00
Siddharth Kumar Sah
28cd950ede
fix: continuous progress bar (no 100%→0% reset)
...
Upload occupies 0-15% of the bar, server processing 15-100%.
SSE progress from the server is scaled into the 15-100 range.
The bar now moves smoothly from start to finish.
2026-03-23 09:47:53 +08:00
Siddharth Kumar Sah
b5cc452077
fix: setError(null) was overriding setProcessing(true)
...
The Zustand setError() setter has a side effect: it sets
processing=false. When called after setProcessing(true), it
immediately killed the processing state, so the ProgressCard
never rendered. Fix: call setError(null) before setProcessing(true).
2026-03-23 09:32: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
dbd3bf737e
feat(web): migrate AI tool settings to ProgressCard
...
Replace AIProgressBar and inline progress indicators with the new
ProgressCard component across all 5 AI tool settings. The three
useToolProcessor-based tools (remove-bg, blur-faces, upscale) now
destructure `progress` from the hook. The two custom-fetch tools
(erase-object, ocr) gain inline XHR upload tracking + SSE processing
progress with elapsed timer.
2026-03-23 01:46:05 +08:00
Siddharth Kumar Sah
5c64b306ea
feat(web): add ProgressCard to non-AI tool settings (Group A)
...
Replace Loader2 spinner buttons with ProgressCard in all 13 non-AI tool
settings components that use useToolProcessor. Each now shows upload
progress, elapsed time, and processing phase during operations.
2026-03-23 01:45:58 +08:00
Siddharth Kumar Sah
60945fd3b3
feat(web): rewrite useToolProcessor with XHR upload progress and SSE
2026-03-23 01:42:27 +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
acb230cc98
feat(ai): add onProgress callback to all AI wrapper functions
2026-03-23 01:39:52 +08:00
Siddharth Kumar Sah
01d5d66466
feat(web): add ProgressCard component
2026-03-23 01:39:40 +08:00
Siddharth Kumar Sah
723842988b
feat(ai): add emit_progress() calls to all Python AI scripts
2026-03-23 01:38:19 +08:00
Siddharth Kumar Sah
7d74ddd3a6
feat(ai): rewrite bridge.ts to stream stderr progress via spawn
2026-03-23 01:37:12 +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
77a394869b
docs: add implementation plan for real progress bars
...
11-task plan covering backend SSE progress, Python stderr emission,
bridge.ts spawn rewrite, ProgressCard component, hook rewrite, and
migration of all 33 tool settings components.
2026-03-23 01:35:29 +08:00
Siddharth Kumar Sah
4c6b65a4b1
docs: add design spec for real progress bars
...
Spec covers real upload progress (XHR), server-side progress via SSE
for AI tools (Python stderr → bridge.ts → SSE), and a unified
ProgressCard component replacing the fake time-based AIProgressBar.
2026-03-22 22:28:03 +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
v0.2.1
2026-03-22 21:25:14 +08:00
Siddharth Kumar Sah
fb1d366d5f
fix: use U2-Net as default model (fast, 2s) with BiRefNet as opt-in
...
BiRefNet-Lite times out on first load (~60s+ for 973MB model).
U2-Net works in 2 seconds. Users can still select BiRefNet for
higher quality when they're willing to wait. Added timing hints
in model descriptions and increased timeout for BiRefNet models.
2026-03-22 21:08:37 +08:00
Siddharth Kumar Sah
cf68eaf732
chore: update lockfile for docs workspace
2026-03-22 21:01:36 +08:00