Siddharth Kumar Sah
cd886f0f82
fix(pipeline): route content-aware resize correctly and improve error messages
...
- Route resize steps with contentAware=true to the content-aware-resize
tool in both single-file and batch pipeline paths
- Update HEIC filename extension to .png after decoding so downstream
tools don't attempt double-decoding
- Wrap per-step errors with step number and tool name for clarity
(e.g. "Step 1 (resize): Resize requires width, height, or percentage")
- Show first file's step-level error in batch failure messages
2026-04-13 17:04:11 +08:00
fb33a46a64
feat: SOTA overhaul of automate pipeline page ( #53 )
...
* feat(find-duplicates): upgrade to 128-bit dHash with metadata and thumbnails
* feat(find-duplicates): add custom-results display mode and duplicate store
* feat(find-duplicates): add results overview grid and detail comparison view
* feat(find-duplicates): overhaul settings with sensitivity presets and download actions
* feat(find-duplicates): update i18n description
* chore: replace jsqr with zxing-wasm for barcode reading
* feat(barcode-read): rewrite backend with zxing-wasm for all barcode types
* feat(barcode-read): rewrite frontend with multi-file, results table, progress, export
- Multi-file sequential processing with per-file progress
- Structured results table with type badges and copy per-result
- Copy All and Export CSV functionality
- Thorough scan toggle (maps to tryHarder in zxing-wasm)
- Before/after view shows annotated image with bounding boxes
- Updated tool description in constants and i18n
* feat(stitch): update tool name and description for redesign
* feat(stitch): add grid layout, alignment, border, radius, quality, and new resize modes
* feat(stitch): redesign settings UI with grid, alignment, border, radius, quality
* test(stitch): add stitch to e2e tool navigation suite
* feat(vectorize): redesign with dual-engine backend and preset-driven UI
- Backend: potrace for B&W, VTracer (@neplex/vectorizer) for full-color vectorization
- Frontend: 5 presets (logo, illustration, photo, sketch, custom)
- Settings: color precision, gradient step, detail, smoothing, corner threshold, invert
- Updated OpenAPI spec and i18n description
* feat(border): redesign with presets, shadow, padding color, swatches
- Add 8 one-click presets (Clean White, Gallery Black, Shadow, Rounded, Polaroid, Vintage, Minimal, Cinematic)
- Implement proper shadow rendering with blur, offset X/Y, color, opacity
- Add padding color control (was hardcoded white)
- Add color swatches for quick color selection
- Wrap in form for Enter key submission
- Add smart validation (requires at least one effect active)
- Align frontend/backend slider ranges
- Organize UI with sections and collapsible shadow toggle
* feat(split): overhaul image splitting with live grid overlay and tile preview
- Add interactive-split display mode with SplitCanvas component
- Live SVG grid overlay on uploaded image showing split boundaries
- Two split modes: Grid (NxM) and Tile Size (px dimensions)
- 9 grid presets (2x1, 1x2, 2x2, 3x1, 1x3, 3x3, 2x3, 3x2, 4x4)
- Output format selection (original/PNG/JPG/WebP) with quality slider
- Post-split tile preview thumbnails with individual download
- Download All as ZIP button
- HEIC/HEIF preview with loading spinner
- Backend: tile-size mode, output format conversion, quality control
- Zustand store for split state management
* feat(split): rewrite backend and frontend settings
Backend: tile-size mode, output format conversion, quality control.
Frontend: split modes, presets, format selector, tile preview grid.
* feat(border): add live CSS preview and remove before/after slider
- Add imageWrapperStyle prop to ImageViewer for live border preview
- Add onImageStyle callback through tool-page to settings components
- Change border displayMode to no-comparison (no slider)
- BorderControls sends live CSS styles (border, padding, radius, shadow)
- Preview updates instantly as user adjusts sliders or clicks presets
* fix: repair i18n file corrupted by formatter during merge conflict resolution
* feat(border): enable live CSS preview in right pane as settings change
* fix(border): keep CSS preview visible after processing for WYSIWYG consistency
* chore: add @dnd-kit/core and @dnd-kit/sortable for pipeline drag-and-drop
* feat(pipeline): add Zustand store for pipeline step management
* feat(automate): add pipeline step settings summary utility with tests
* feat(automate): add POST /api/v1/pipeline/batch for multi-file pipeline execution
* feat(automate): add usePipelineProcessor hook for single and batch pipeline execution
* fix(automate): pass settings prop to all pipeline step controls for state restoration
* feat(automate): rewrite pipeline builder with dnd-kit drag-and-drop and compact step cards
* feat(automate): rewrite page with two-panel layout, image preview, and batch support
* test(automate): update e2e tests for new two-panel pipeline layout
---------
Co-authored-by: Siddharth Kumar Sah <siddharth123sk@gmail.com >
2026-04-13 16:26:38 +08:00
a1e11dff74
feat(gif-tools): SOTA upgrade with 6 processing modes ( #52 )
...
* feat(find-duplicates): upgrade to 128-bit dHash with metadata and thumbnails
* feat(find-duplicates): add custom-results display mode and duplicate store
* feat(find-duplicates): add results overview grid and detail comparison view
* feat(find-duplicates): overhaul settings with sensitivity presets and download actions
* feat(find-duplicates): update i18n description
* chore: replace jsqr with zxing-wasm for barcode reading
* feat(barcode-read): rewrite backend with zxing-wasm for all barcode types
* feat(barcode-read): rewrite frontend with multi-file, results table, progress, export
- Multi-file sequential processing with per-file progress
- Structured results table with type badges and copy per-result
- Copy All and Export CSV functionality
- Thorough scan toggle (maps to tryHarder in zxing-wasm)
- Before/after view shows annotated image with bounding boxes
- Updated tool description in constants and i18n
* feat(stitch): update tool name and description for redesign
* feat(stitch): add grid layout, alignment, border, radius, quality, and new resize modes
* feat(stitch): redesign settings UI with grid, alignment, border, radius, quality
* test(stitch): add stitch to e2e tool navigation suite
* feat(vectorize): redesign with dual-engine backend and preset-driven UI
- Backend: potrace for B&W, VTracer (@neplex/vectorizer) for full-color vectorization
- Frontend: 5 presets (logo, illustration, photo, sketch, custom)
- Settings: color precision, gradient step, detail, smoothing, corner threshold, invert
- Updated OpenAPI spec and i18n description
* feat(border): redesign with presets, shadow, padding color, swatches
- Add 8 one-click presets (Clean White, Gallery Black, Shadow, Rounded, Polaroid, Vintage, Minimal, Cinematic)
- Implement proper shadow rendering with blur, offset X/Y, color, opacity
- Add padding color control (was hardcoded white)
- Add color swatches for quick color selection
- Wrap in form for Enter key submission
- Add smart validation (requires at least one effect active)
- Align frontend/backend slider ranges
- Organize UI with sections and collapsible shadow toggle
* feat(split): overhaul image splitting with live grid overlay and tile preview
- Add interactive-split display mode with SplitCanvas component
- Live SVG grid overlay on uploaded image showing split boundaries
- Two split modes: Grid (NxM) and Tile Size (px dimensions)
- 9 grid presets (2x1, 1x2, 2x2, 3x1, 1x3, 3x3, 2x3, 3x2, 4x4)
- Output format selection (original/PNG/JPG/WebP) with quality slider
- Post-split tile preview thumbnails with individual download
- Download All as ZIP button
- HEIC/HEIF preview with loading spinner
- Backend: tile-size mode, output format conversion, quality control
- Zustand store for split state management
* feat(split): rewrite backend and frontend settings
Backend: tile-size mode, output format conversion, quality control.
Frontend: split modes, presets, format selector, tile preview grid.
* feat(border): add live CSS preview and remove before/after slider
- Add imageWrapperStyle prop to ImageViewer for live border preview
- Add onImageStyle callback through tool-page to settings components
- Change border displayMode to no-comparison (no slider)
- BorderControls sends live CSS styles (border, padding, radius, shadow)
- Preview updates instantly as user adjusts sliders or clicks presets
* fix: repair i18n file corrupted by formatter during merge conflict resolution
* feat(border): enable live CSS preview in right pane as settings change
* fix(border): keep CSS preview visible after processing for WYSIWYG consistency
* chore(gif-tools): scaffold for SOTA upgrade
- Add animated GIF test fixture (3 frames, 100x100)
- Update tool description to reflect new capabilities
- Add fflate dependency to API for ZIP creation
* feat(gif-tools): rewrite backend with 6 processing modes
Modes: resize (with percentage), optimize (colors/dither/effort),
speed (delay manipulation), reverse (frame reorder), extract
(single/range/all with ZIP), rotate (90/180/270 + flip).
Adds /api/v1/tools/gif-tools/info metadata endpoint.
* test(gif-tools): add integration tests for all 6 modes
Tests metadata endpoint, resize (pixel + percentage), optimize,
speed, reverse, extract (single/range/all), and rotate (angle + flip).
Fix animated.gif fixture to be a real 3-frame animation (was a single
100x300 frame). Fix reverse and rotate modes to process frames
individually and reassemble via GIF binary concatenation, since
Sharp 0.33.x loses page-height metadata when reconstructing from raw
pixel data.
* feat(gif-tools): rewrite frontend with tabbed 6-mode UI
- useGifInfo hook for metadata (frame count, dimensions, duration)
- Info bar showing GIF properties
- 3x2 mode grid: Resize, Optimize, Speed, Reverse, Extract, Rotate
- Animation modes disabled for static images
- Loop control (infinite/once/custom)
- Batch processing support
* test(gif-tools): add to representative tools in e2e suite
---------
Co-authored-by: Siddharth Kumar Sah <siddharth123sk@gmail.com >
2026-04-13 16:23:07 +08:00
Siddharth Kumar Sah
570de25a2f
chore: resolve merge conflicts with main (keep convertSvg helper)
2026-04-13 14:20:46 +08:00
Siddharth Kumar Sah
d9704fda82
feat(pdf-to-image): redesign with thumbnails, page selection, color mode, and expanded formats
...
- Add preview endpoint for page thumbnails with clickable selection
- Add 8 output formats (PNG, JPEG, WebP, AVIF, TIFF, GIF, HEIC, HEIF)
- Add quality slider for lossy formats, color mode (Color/Grayscale/B&W)
- Add custom DPI input (36-1200) alongside preset buttons
- Replace reply.hijack() ZIP streaming with JSON response + server-side ZIP
- Add dedicated Zustand store with bidirectional page range sync
- Add ResultsPanel with per-page download, format/size badges
- Update integration tests (16 cases) and e2e tests (3 cases)
2026-04-13 13:43:07 +08:00
Siddharth Kumar Sah
43c41755cc
feat(svg-to-raster): rewrite settings UI with modern controls and batch support
...
Switch from manual fetch to useToolProcessor hook for consistency and
batch support. Add scale/custom sizing modes, DPI presets, 7-format
button grid, quality slider, transparent/color background toggle with
preset swatches, and ProgressCard during processing.
2026-04-13 12:47:28 +08:00
Siddharth Kumar Sah
018fd943d8
fix(qr-generate): align default size to slider step boundary (1000px)
2026-04-13 10:07:27 +08:00
Siddharth Kumar Sah
73139e4313
feat(qr-generate): add ResultsPanel to ToolRegistryEntry interface
2026-04-13 10:00:33 +08:00
Siddharth Kumar Sah
4a3883e5dd
feat(qr-generate): register preview panel, update descriptions, update e2e test
2026-04-13 09:59:12 +08:00
Siddharth Kumar Sah
0091a5660a
feat(qr-generate): rewrite settings with content types, style pickers, colors, logo
2026-04-13 09:57:32 +08:00
Siddharth Kumar Sah
67ab5e0cab
feat(qr-generate): add live QR preview panel with qr-code-styling
2026-04-13 09:55:51 +08:00
Siddharth Kumar Sah
267e2bce6b
feat(tool-page): render ResultsPanel for no-dropzone tools when available
2026-04-13 02:51:49 +08:00
Siddharth Kumar Sah
02178df8d3
feat(qr-generate): add Zustand store for QR generator state
2026-04-13 02:51:25 +08:00
Siddharth Kumar Sah
15cf7e2f27
feat(qr-generate): add qr-code-styling library for styled QR generation
2026-04-13 02:50:36 +08:00
Siddharth Kumar Sah
0a506efe24
feat(erase-object): overhaul object eraser with LaMa inpainting improvements
...
Update erase-object pipeline, eraser canvas, and inpainting Python script.
Add LaMa model download script and update Dockerfile for model support.
Update multi-file tool routes for consistency.
2026-04-13 00:48:05 +08:00
Siddharth Kumar Sah
92d4d2d9c6
feat(smart-crop): overhaul with face detection, social presets, and 3 modes
...
Replace the confusing 2-mode smart crop with a clear 3-mode system:
- Subject Focus: Sharp attention/entropy saliency crop with social media presets
- Face Focus: MediaPipe face detection with headshot framing presets
- Auto Trim: Border removal with optional pad-to-square
Adds detectFaces() to AI package, face preset constants, backward
compatibility for old mode names, and comprehensive integration tests.
2026-04-13 00:47:53 +08:00
Siddharth Kumar Sah
29fafd0722
fix(ocr): fix PaddleOCR crashes, add multi-image and auto-detect language
...
- Pin PaddlePaddle to 3.0.0 on ARM64 to fix segfault in PIR inference
engine (3.1+ crashes on aarch64 Debian Bookworm)
- Fix text extraction for PaddleOCR 3.4.x result format (rec_texts)
- Add Node.js-level fallback chain (best -> balanced -> fast) when
Python subprocess crashes
- Add multi-image OCR: processes all uploaded files sequentially with
per-file progress and filename headers in combined output
- Convert input images to PNG via Sharp before OCR so HEIC, AVIF, WebP,
TIFF all work transparently
- Implement real auto-detect language using Tesseract multi-lang script
detection (analyzes Unicode ranges for Hangul, CJK, Kana, Latin)
- Default enhance to off (hurts clean digital images)
2026-04-12 23:46:39 +08:00
Siddharth Kumar Sah
f2e17d2d44
fix(upscale): overhaul UI, fix AI pipeline bugs, add format support
...
- Replace Auto/AI/Fast buttons with Fast/Balanced/Best (consistent with other tools)
- Rename "Denoise" to "Noise Reduction" with explanatory subtitle
- Change output format from 3 buttons to dropdown with all formats (PNG, JPG, WebP, AVIF, TIFF, GIF, HEIC, HEIF)
- Add HEIC/HEIF input decoding (was missing unlike other tools)
- Add HEIC/HEIF/AVIF output conversion via Sharp and heif-enc
- Generate browser-compatible WebP preview for non-previewable output formats
- Fix torchvision compatibility shim so Real-ESRGAN actually loads (was silently falling back to Lanczos)
- Fix denoise crash: Image.fromarray() instead of type(img).fromarray()
- Redirect stdout for entire AI pipeline to prevent library messages corrupting JSON output
- Add GFPGAN model download for face enhancement
- Use batch endpoint for multi-file uploads (enables Download All ZIP)
2026-04-12 21:22:55 +08:00
stirling-image and GitHub
ed5f71e2fc
Merge pull request #48 from stirling-image/fix/upscale-bugs-and-features
...
feat: overhaul upscale with bug fixes and advanced features
2026-04-12 19:09:22 +08:00
Siddharth Kumar Sah
fe376aebd2
feat: overhaul upscale with bug fixes and advanced features
...
- Fix multi-image: process selected file, not always first
- Fix progress bar: asymptotic fill prevents visual stalling
- Fix slider: write results to captured index, not current selection
- Add model selection (Auto/AI/Fast), face enhancement, denoise
- Add output format (PNG/JPEG/WebP) with quality control
- Add Upscale All for sequential batch processing with queue
- More granular Python progress stages for smoother UX
2026-04-12 19:04:23 +08:00
Siddharth Kumar Sah
2d9ec4e258
feat(ocr): rewrite UI with quality tiers, enhance toggle, editable results, download
2026-04-12 18:37:09 +08:00
Siddharth Kumar Sah
3345cb266a
feat: add Ultra quality mode with BiRefNet-matting, rename quality tiers
...
Ultra quality (People only):
- BiRefNet-matting ONNX (928MB) for true alpha matting with per-pixel
transparency on hair wisps and fine edges
- Custom rembg session class, zero new Python dependencies
- Model pre-downloaded in Docker build for immediate availability
Quality tier labels: Fast / HD / Max / Ultra (shorter, fits 4-col grid)
2026-04-12 18:23:09 +08:00
Siddharth Kumar Sah
7995d13c81
fix: rename quality tiers to Fast/HD/Max/Ultra, fix linter-broken hook
...
- Renamed quality labels: Balanced->HD, Best->Max (shorter, fits 4-col grid)
- Fixed use-tool-processor.ts references broken by linter reformatting
2026-04-12 18:20:54 +08:00
Siddharth Kumar Sah
93dd37017c
feat: add Ultra quality mode with BiRefNet-matting for people photos
...
Adds a new "Ultra" quality tier for People subject type that uses
BiRefNet-matting (ONNX, 928MB) for true alpha matting instead of
binary segmentation. Produces per-pixel transparency for hair wisps
and fine edges that standard models miss.
- Custom rembg session class loads BiRefNet-matting ONNX from GitHub releases
- Zero new Python dependencies (reuses existing onnxruntime)
- Model pre-downloaded in Docker build alongside existing models
- Ultra option only visible when subject is People
- Falls back to Best when switching to Products/General
2026-04-12 18:09:59 +08:00
Siddharth Kumar Sah
6c58f12262
feat: overhaul remove-background with effects pipeline, consolidate color tools
...
Remove Background:
- Two-phase flow: AI removes bg once, then effects adjust instantly
- Blur background effect with real-time CSS preview (portrait mode)
- Drop shadow effect with opacity control
- Gradient backgrounds with presets, custom colors, and angle
- Custom background image upload (including HEIC/HEIF)
- Solid color backgrounds moved from Python to Node.js/Sharp
- Effects-only API endpoint for instant re-renders without AI re-run
- HEIC/HEIF input support (decoded before passing to Python/rembg)
- Passport/ID photo checkbox defaults ON for People subject
- Before/after slider preserved when no effects active
- 15 comprehensive Playwright e2e tests
Color Tools:
- Consolidated 4 tools (brightness-contrast, saturation, color-channels,
color-effects) into single "Adjust Colors" tool
- Added exposure, temperature, tint, hue, sharpness controls
- SVG filter-based live preview for all adjustments
- Backward-compatible URL redirects from old tool paths
Other fixes:
- Favicon tool: download button instead of auto-download
- Batch processing: HEIC filename extension fix
- File store: processedFilename field for proper batch downloads
2026-04-12 17:53:16 +08:00
Siddharth Kumar Sah
dde70f70ad
feat: comprehensive HEIC/HEIF support and edit-metadata ExifTool overhaul
...
- Add ensureSharpCompat() helper for automatic HEIC detection and decode
- Fix HEIC support in all 14 custom-route tools (image-to-pdf, split,
barcode-read, compose, collage, stitch, compare, find-duplicates,
color-palette, watermark-image, vectorize, favicon, info, branding)
- Fix PdfPagePreview using store's decoded blobUrl instead of raw File
- Add onError fallback in ImageViewer for unrenderable formats
- Fix image-to-pdf progress bar with flushSync for reliable rendering
- Add ExifTool backend for edit-metadata (GPS, keywords, IPTC, dates)
- Rename Strip Metadata to Remove Metadata with interactive Leaflet map
- Fix user-files thumbnail generation for stored HEIC files
- Fix info tool stats() histogram for HEIC via decoded buffer
- Skip HEIC preprocessing in batch route for metadata tools
2026-04-12 08:50:19 +08:00
Siddharth Kumar Sah
6f5283019b
feat: full HEIF/HEIC support, content-aware resize performance fix, UI improvements
...
- Add bidirectional HEIF support: decode (input) and encode (output) via system heif-convert/heif-enc
- Add server-side WebP preview generation for non-browser-previewable formats (HEIC, TIFF)
- Fix content-aware resize failing on HEIF input (decode before passing to caire)
- Fix content-aware resize timeout on large images by downscaling to max 1200px and using JPEG intermediate
- Add HEIF as target format in convert tool
- Add loading spinner for HEIF preview decode in file store
- Fix file picker not accepting HEIF files (explicit .heic,.heif,.hif extensions)
- Extend frontend timeout for medium tools to 180s with 45s progress animation
- Redesign rotate controls with preset buttons and compact flip section
- Remove misleading savings percentage from convert tool
2026-04-11 23:27:44 +08:00
Siddharth Kumar Sah
1707521f3a
feat: replace Python seam carving with caire Go binary
...
Replace the Python seam-carving library with caire (esimov/caire v1.5.0),
a Go-based content-aware resize engine that is faster and supports both
shrinking and enlarging via seam insertion.
- Add Go builder stage in Dockerfile to compile caire from source
- Rewrite seam-carving.ts to call caire via execFile (no Python sidecar)
- Remove content-aware-resize from PYTHON_SIDECAR_TOOLS (60s timeout)
- Add new options: blur radius, edge sensitivity, square mode, face detection
- Move content-aware toggle below standard resize in UI (subtler placement)
- Rename "Don't enlarge" to "Limit to original size" with hover tooltip
- Add smooth progress bar for medium-duration tools
- Delete seam_carve.py and remove seam-carving pip dependency
- Update integration tests and visual regression screenshots
2026-04-11 17:49:28 +08:00
Siddharth Kumar Sah
b8227c45b9
feat(crop): improve UI and fix batch crop for multi-file
...
- Replace Rule of Thirds button with checkbox for clearer toggle
- Show side-by-side comparison after crop instead of overlay slider
- Add custom aspect ratio option with W:H number inputs
- Fix batch crop failing on files with different dimensions by
sending percentage-based coordinates instead of absolute pixels
- Add failed-file error state display in tool page
2026-04-11 14:47:46 +08:00
Siddharth Kumar Sah
6c1a347f1c
feat: add LOG_LEVEL env var and improve error messages
...
Add configurable LOG_LEVEL (fatal/error/warn/info/debug/trace) for
Fastify logger. Always return error details in tool processing
responses and combine error + details in frontend display.
2026-04-11 14:47:30 +08:00
Siddharth Kumar Sah
f2696443dc
Merge branch 'main' of https://github.com/stirling-image/stirling-image
2026-04-10 23:02:47 +08:00
Siddharth Kumar Sah
bbae319333
Merge branch 'refactor/remove-lite-variant'
2026-04-10 22:36:39 +08:00
semantic-release-bot
2ac7b6875b
chore(release): 1.14.0 [skip ci]
...
# [1.14.0](https://github.com/stirling-image/stirling-image/compare/v1.13.0...v1.14.0 ) (2026-04-10)
### Bug Fixes
* add FILES_STORAGE_PATH to Dockerfile ENV to prevent data loss ([b575243 ](https://github.com/stirling-image/stirling-image/commit/b575243e9a0cb2ac4567d785a74e57dea912e9e2 ))
* add shutdown timeout and improve health endpoint ([986ad37 ](https://github.com/stirling-image/stirling-image/commit/986ad37bb5e6644dd93521018a1bcd2d6243f502 ))
* address code review findings before merge ([caf65bc ](https://github.com/stirling-image/stirling-image/commit/caf65bc4697ddfea27674b56fd2e8de847edc734 ))
* correct PaddleOCR language codes for model download and OCR ([e1ee571 ](https://github.com/stirling-image/stirling-image/commit/e1ee57103c201f104b737c2719d0014d4912d4b2 ))
* force CPU mode in download_models.py for build-time compatibility ([b4b59a7 ](https://github.com/stirling-image/stirling-image/commit/b4b59a7500375bc2e65cb0050e5308b07610d2cf ))
* handle paddlepaddle-gpu CUDA import at build time gracefully ([0083a74 ](https://github.com/stirling-image/stirling-image/commit/0083a741a9a3924ccc37c4e622c2980a8a41f1a3 ))
* install cuda-compat stubs for build-time PaddlePaddle import ([d31d665 ](https://github.com/stirling-image/stirling-image/commit/d31d66556ef0aa7c20a73a94f5d95b54b99fbb8a ))
* load RealESRGAN pretrained weights for actual AI upscaling ([fa9569c ](https://github.com/stirling-image/stirling-image/commit/fa9569c920d6bdac094dcd661fc5cf3b4be3f17a ))
* revert to npx tsx in CMD for pnpm compatibility ([e55253d ](https://github.com/stirling-image/stirling-image/commit/e55253dee03f9e93187d50e0ffb66b423a1230c0 ))
* simplify smoke test to CPU-only imports for build-time compat ([3481663 ](https://github.com/stirling-image/stirling-image/commit/34816639609cbccab91a5cad5760fea769c4b565 ))
* skip RealESRGAN import check on arm64 in smoke test ([1e2ef52 ](https://github.com/stirling-image/stirling-image/commit/1e2ef5284686253ae33e05411a515369b7f41a3e ))
* split paddlepaddle-gpu and paddleocr installs, use --extra-index-url ([74183e8 ](https://github.com/stirling-image/stirling-image/commit/74183e8dc1e3d8f90cff4484f5526c3c3dfba9a6 ))
* suppress ML library stdout noise in ocr.py and upscale.py ([c0b419d ](https://github.com/stirling-image/stirling-image/commit/c0b419de21acb92b243ef78191dff6a2153c5961 ))
* use PaddlePaddle GPU package index for CUDA wheels ([dd9528f ](https://github.com/stirling-image/stirling-image/commit/dd9528f53c9bcf148842ab94f14a4ebd5ae223ec ))
* use platform-specific mediapipe version for arm64 compatibility ([7face19 ](https://github.com/stirling-image/stirling-image/commit/7face19238f54cfea02d453b697e34b50ccd9d21 ))
### Features
* expand model pre-download with verification and smoke test ([a9e3b96 ](https://github.com/stirling-image/stirling-image/commit/a9e3b9688776a51efd2f42cae810de425cf1d9cf ))
* simplify CI to single unified Docker build ([b385a2e ](https://github.com/stirling-image/stirling-image/commit/b385a2eabb255f7a8fe2d3720a358ff5bf254310 ))
* simplify compose to single file, add log rotation ([84f7057 ](https://github.com/stirling-image/stirling-image/commit/84f7057a49850b7a47440099ec2caad8d3b87efe ))
* unified Docker image with GPU auto-detection ([6c3eb3b ](https://github.com/stirling-image/stirling-image/commit/6c3eb3b876cee0301d5fb3ed8324a3c8e92b1307 ))
2026-04-10 14:13:37 +00:00
semantic-release-bot
aa4e5cac8d
chore(release): 1.13.0 [skip ci]
...
# [1.13.0](https://github.com/stirling-image/stirling-image/compare/v1.12.0...v1.13.0 ) (2026-04-10)
### Bug Fixes
* complete RBAC implementation lost during merge ([cc8a272 ](https://github.com/stirling-image/stirling-image/commit/cc8a27239b02a63ca88abc3e363c8a46f89674e8 ))
### Features
* add backend permission map and requirePermission middleware ([1a99571 ](https://github.com/stirling-image/stirling-image/commit/1a995711535a1525e709cdd7bff75361f457e942 ))
* add permission checks and admin override to API key routes ([d776680 ](https://github.com/stirling-image/stirling-image/commit/d776680f2d2342e35b84821792d6c24ae7e0ffbc ))
* add permission checks and admin override to pipeline routes ([59f40db ](https://github.com/stirling-image/stirling-image/commit/59f40dbfd4a97f8691b5fbbf6d338063c389987b ))
* add permission checks and ownership scoping to user-files routes ([86ba698 ](https://github.com/stirling-image/stirling-image/commit/86ba69825a1dd87c9f868d79cd806b7d594cce1b ))
* add shared Permission and Role types ([2f594e9 ](https://github.com/stirling-image/stirling-image/commit/2f594e96057c72bf107f3012426e87af5f97eb94 ))
* add tools:use permission check to tool, batch, pipeline, and upload routes ([885ace5 ](https://github.com/stirling-image/stirling-image/commit/885ace54f09b3301989f8aa404c15f60e19c054d ))
* extend useAuth hook with role and permissions from session ([e0ba8be ](https://github.com/stirling-image/stirling-image/commit/e0ba8be7b3211299c8cde90b2d22e7796eee2206 ))
* filter settings tabs by user permissions, remove admin fallback ([bcbd24a ](https://github.com/stirling-image/stirling-image/commit/bcbd24a2395b93b64dbbf638ba0138f9ec9ba9da ))
* include permissions and teamName in login/session responses ([4943177 ](https://github.com/stirling-image/stirling-image/commit/49431772ec6a02eae8aced48da92ef87a6c89afb ))
* replace requireAdmin with requirePermission on all routes ([af7f57d ](https://github.com/stirling-image/stirling-image/commit/af7f57d52f49c8f8412876639076084c96eba284 ))
2026-04-10 13:26:01 +00:00
Siddharth Kumar Sah
cc8a27239b
fix: complete RBAC implementation lost during merge
...
Several RBAC features from feat/rbac-permissions were silently lost
during the merge into main. This restores and completes them:
- Add permissions and teamName to login/session API responses
- Export Permission and Role types from shared package
- Filter settings tabs by user permissions in frontend
- Extend useAuth hook with role, permissions, and hasPermission
- Restrict teams listing to admin only
- Add admin override for API keys, files, and pipelines listing
- Add ownership scoping to file access, download, and delete routes
- Register userFileRoutes in integration test server
- Mock auth import in unit permissions test to avoid SQLite lock
2026-04-10 21:25:30 +08:00
Siddharth Kumar Sah
bcbd24a239
feat: filter settings tabs by user permissions, remove admin fallback
2026-04-10 21:25:30 +08:00
Siddharth Kumar Sah
e0ba8be7b3
feat: extend useAuth hook with role and permissions from session
2026-04-10 21:25:30 +08:00
Siddharth Kumar Sah
1778f7266b
fix(a11y): add keyboard support to pdf-to-image upload dropzone
2026-04-10 20:56:13 +08:00
Siddharth Kumar Sah
5fd294c994
feat: register pdf-to-image in frontend tool registry
2026-04-10 20:56:13 +08:00
Siddharth Kumar Sah
44bbfba80d
feat: add pdf-to-image frontend settings component
2026-04-10 20:56:13 +08:00
Siddharth Kumar Sah
958b10cb45
refactor: remove lite variant, fix release workflow
...
- Remove all lite/full variant logic from frontend, API, shared constants,
docs, and tests (single unified Docker image only)
- Replace single QEMU multi-arch Docker build with per-architecture native
builds (amd64 + arm64) and manifest merge to fix disk space exhaustion
- Add disk cleanup step and per-platform build cache scopes
- Switch release trigger from push to workflow_dispatch
- Add GitHub issue templates and PR template
2026-04-10 17:38:54 +08:00
semantic-release-bot
b20039eddf
chore(release): 1.12.0 [skip ci]
...
# [1.12.0](https://github.com/stirling-image/stirling-image/compare/v1.11.0...v1.12.0 ) (2026-04-10)
### Features
* unified Docker image with GPU auto-detection ([#37 ](https://github.com/stirling-image/stirling-image/issues/37 )) ([b0083e2 ](https://github.com/stirling-image/stirling-image/commit/b0083e2b083d0bf52b6a576f7ef67fbff0cc8cbe ))
2026-04-10 05:45:42 +00:00
semantic-release-bot
7bc979f677
chore(release): 1.11.0 [skip ci]
...
# [1.11.0](https://github.com/stirling-image/stirling-image/compare/v1.10.0...v1.11.0 ) (2026-04-07)
### Features
* **docs:** auto-generate llms.txt via vitepress-plugin-llms ([6a362d6 ](https://github.com/stirling-image/stirling-image/commit/6a362d6443cd85ac58a46f5b5cf29f9b6ff3020c ))
2026-04-07 16:53:54 +00:00
semantic-release-bot
d4d421d3ff
chore(release): 1.10.0 [skip ci]
...
# [1.10.0](https://github.com/stirling-image/stirling-image/compare/v1.9.0...v1.10.0 ) (2026-04-07)
### Features
* add content-aware resize API route and registration ([d464942 ](https://github.com/stirling-image/stirling-image/commit/d464942cd9a7c1fecc837a14211e3fc5030d5cee ))
* add content-aware resize toggle to resize settings UI ([aace4ca ](https://github.com/stirling-image/stirling-image/commit/aace4caf0c5b10059a31e9dff5476d11b34b4323 ))
* add seam carving AI bridge module ([d3b6462 ](https://github.com/stirling-image/stirling-image/commit/d3b646207d3312aea9e12cc9435649b039bc4ac8 ))
* add seam carving Python script with face protection ([1460ab7 ](https://github.com/stirling-image/stirling-image/commit/1460ab7a4ad8235714ebd72ab1f8092baa456032 ))
2026-04-07 16:11:15 +00:00
stirling-image and GitHub
28d0dfb45d
Merge pull request #28 from stirling-image/feat/content-aware-resize
...
feat: add content-aware resize (seam carving) to resize tool
2026-04-08 00:10:50 +08:00
Siddharth Kumar Sah
aace4caf0c
feat: add content-aware resize toggle to resize settings UI
2026-04-07 23:33:34 +08:00
semantic-release-bot
14deda12b8
chore(release): 1.9.0 [skip ci]
...
# [1.9.0](https://github.com/stirling-image/stirling-image/compare/v1.8.1...v1.9.0 ) (2026-04-07)
### Features
* add stitch API route handler ([1716468 ](https://github.com/stirling-image/stirling-image/commit/171646886f678b0f98140d378e675443bc7c737f ))
* add stitch settings UI component ([330bfcf ](https://github.com/stirling-image/stirling-image/commit/330bfcf162deeb30fb573702b554d304500eebde ))
* register stitch component in web tool registry ([7ec5d86 ](https://github.com/stirling-image/stirling-image/commit/7ec5d86d9123696e84ebeae603ec09ce4c1477d3 ))
* register stitch route in API tool registry ([66520cd ](https://github.com/stirling-image/stirling-image/commit/66520cdd0ee49bbecffdb3e248c03d2763aa5d08 ))
* register stitch tool in shared constants and i18n ([fbbbe70 ](https://github.com/stirling-image/stirling-image/commit/fbbbe70a35a6cd3cbc389503cff3333b85392871 ))
2026-04-07 14:21:16 +00:00
Siddharth Kumar Sah
7ec5d86d91
feat: register stitch component in web tool registry
2026-04-07 21:55:49 +08:00
Siddharth Kumar Sah
330bfcf162
feat: add stitch settings UI component
2026-04-07 21:54:55 +08:00
semantic-release-bot
c598230331
chore(release): 1.8.1 [skip ci]
...
## [1.8.1](https://github.com/stirling-image/stirling-image/compare/v1.8.0...v1.8.1 ) (2026-04-07)
### Bug Fixes
* add variant diagnostics to health endpoint and lite mode banner ([3be388e ](https://github.com/stirling-image/stirling-image/commit/3be388e12f8bc6a35d30b1b94e2772f9e005bccd ))
2026-04-07 10:35:05 +00:00