Commit Graph
23 Commits
Author SHA1 Message Date
Siddharth Kumar Sah 80bb0e29a0 fix: make port 1349 the UI port in all modes
Dev mode: Vite serves UI on 1349, Fastify API on 1350 (proxied)
Production/Docker: Fastify serves both UI and API on 1349
2026-03-22 10:31:11 +08:00
Siddharth Kumar Sah 580208de83 feat(web): add mobile responsive layout with bottom navigation
Add useMobile hook for viewport detection (<768px). Update AppLayout
with hamburger menu, slide-over sidebar overlay, and fixed bottom
navigation bar (Tools, Automate, Files, Settings) for mobile. Update
Sidebar with expanded mode for mobile overlay. Update ToolPage to
stack settings above dropzone on mobile with collapsible panel. Add
new routes for /automate and /fullscreen. Integrate Settings dialog
and keyboard shortcuts at the App root level.
2026-03-22 04:42:31 +08:00
Siddharth Kumar Sah 6d67b106ca feat(web): add fullscreen tool grid view
Create /fullscreen page showing all 37 tools grouped by 9 categories
in a card grid layout. Each category card has a colored header with
icon and tool count badge. Includes search bar, Show/Hide Details
toggle for tool descriptions, and button to switch back to sidebar view.
2026-03-22 04:42:25 +08:00
Siddharth Kumar Sah cd020c2342 feat(web): add i18n architecture with English translations
Create translation key system in packages/shared/src/i18n/ with full
English locale covering common actions, all 37 tools, settings sections,
auth, pipeline, and navigation strings. Add useI18n hook that returns
typed translations. Architecture enables adding new languages by
creating locale files matching the TranslationKeys type.
2026-03-22 04:42:19 +08:00
Siddharth Kumar Sah 939bc2e001 feat(web): add keyboard shortcuts for tool navigation
Register global keyboard shortcuts: Cmd/Ctrl+K to focus search,
Cmd/Ctrl+/ for tools view, Cmd/Ctrl+Shift+D to toggle theme,
Cmd/Ctrl+Alt+1-8 for quick tool navigation. Uses platform-aware
mod key detection (Cmd on Mac, Ctrl on Windows/Linux).
2026-03-22 04:42:14 +08:00
Siddharth Kumar Sah 0cd3d71a63 feat(web): add settings dialog with general, security, API keys, and about sections
Create modal settings dialog matching Stirling-PDF's pattern with sidebar
navigation. Includes General (user info, logout, default view, version),
System Settings (app name, upload limit, theme, locale), Security
(change password form), API Keys (generate, copy, regenerate), and
About (version, description, links) sections.
2026-03-22 04:42:06 +08:00
Siddharth Kumar Sah 60541c1765 feat(web): add pipeline builder UI with saved automations and templates
Create Automate page at /automate with pipeline builder component.
Includes 5 preset templates (Social Media Ready, Privacy Clean, Web
Optimization, Profile Picture, Watermark Batch), saved automation
management, step reordering, and pipeline execution with download.
2026-03-22 04:41: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 b88d0d0af8 feat: add format tools (SVG-to-raster, vectorize, GIF) and optimization (rename, favicon, image-to-PDF)
Add 6 tools for format conversion and optimization extras:
- svg-to-raster: SVG to PNG/JPG/WebP at custom resolution
- vectorize: raster to SVG via potrace (B&W and color modes)
- gif-tools: animated GIF resize, frame extraction, optimization
- bulk-rename: pattern-based file renaming with ZIP output
- favicon: generate all favicon/app icon sizes with manifest.json
- image-to-pdf: combine images into PDF using pdfkit
2026-03-22 04:20:54 +08:00
Siddharth Kumar Sah b8aba1719c feat: add layout tools (collage, splitting, border/frame)
Add 3 layout and composition tools with API routes and frontend settings:
- collage: multi-image grid layout with configurable gap and background
- split: image grid splitting with ZIP output (reuses archiver pattern)
- border: borders, rounded corners via SVG mask, padding, and shadows
2026-03-22 04:20:43 +08:00
Siddharth Kumar Sah 0c3c64eeac feat: add utility tools (image info, compare, duplicates, color palette, QR, barcode)
Add 6 utility tools with API routes and frontend settings:
- info: read-only image metadata inspector with channel histogram
- compare: side-by-side pixel diff with similarity percentage
- find-duplicates: dHash perceptual hashing for duplicate detection
- color-palette: frequency-based dominant color extraction
- qr-generate: QR code generator from text/URL (custom JSON route)
- barcode-read: QR code reader using jsQR
2026-03-22 04:20:35 +08:00
Siddharth Kumar Sah aeaf783ee4 feat: add watermark, text overlay, and image composition tools
Add 4 watermark/overlay tools with API routes and frontend settings:
- watermark-text: SVG text overlay with tiling, position, opacity, rotation
- watermark-image: logo/image watermark with position, opacity, scale
- text-overlay: styled text on images with shadow and background box
- compose: layer images with position, opacity, and blend modes
2026-03-22 04:20:26 +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 1a22522349 feat(web): add before/after image comparison slider component
Draggable split-view slider with clip-path reveals original vs processed
image. Shows file size badges with savings percentage. Supports pointer
events for both mouse and touch. Integrated into tool-page to replace
dropzone after processing completes. Updated file-store with
originalBlobUrl for comparison. Enhanced dropzone with multi-file count
badge and file list display.
2026-03-22 04:03:30 +08:00
Siddharth Kumar Sah 8964bc5cd8 feat(web): add tool settings UI for all core image tools
Adds Zustand file store, useToolProcessor hook for upload/process/download
flow, and 7 settings components: resize (with social media presets), crop
(with aspect ratio presets), rotate/flip, convert, compress (quality +
target size modes), strip-metadata, and color adjustments (brightness,
contrast, saturation, channels, effects). Updates tool-page to render the
appropriate settings panel based on toolId.
2026-03-22 03:56:44 +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 de3d544ab6 feat: add generic tool page template with settings panel and dropzone 2026-03-22 03:05:45 +08:00
Siddharth Kumar Sah b7900ed4ef feat: add login page with split layout matching Stirling-PDF style 2026-03-22 03:05:42 +08:00
Siddharth Kumar Sah e8dfd2e628 fix: deduplicate react in Vite to prevent zustand hook errors in monorepo 2026-03-22 03:03:07 +08:00
Siddharth Kumar Sah e920021da1 feat: add Stirling-PDF-style layout with sidebar, tool panel, dropzone, and theme toggle 2026-03-22 03:01:23 +08:00
Siddharth Kumar Sah 541e49576c feat: add theme system with dark/light/system support and persistence 2026-03-22 03:01:17 +08:00
Siddharth Kumar Sah 5fa012e44b feat: add Vite + React SPA with Tailwind CSS and routing 2026-03-22 02:57:49 +08:00