asepharyana and Kilo
e8b92ed157
feat: update PDF tool pages with interactive options, promote split/compress to phase 1
...
- pdf-split: page range input (1-3,5,7-9) with example
- pdf-compress: upload zone with description
- tool-grid: split/compress jadi phase 1 (backend udah implement)
- merge/images-to-pdf tetap phase 2 (butuh multi-file upload)
Co-Authored-By: Kilo <kilo@kilo.ai >
2026-07-24 19:54:26 +07:00
asepharyana and Kilo
1a606d5c64
feat: add interactive resize/convert options (width, height, format, quality)
...
Resize page: width/height number inputs, aspect ratio lock, quality slider
Convert page: target format dropdown (JPEG/PNG/WebP/GIF/BMP), quality slider
Co-Authored-By: Kilo <kilo@kilo.ai >
2026-07-24 19:07:05 +07:00
asepharyana and Kilo
d2bfcb83a0
fix: audit perbaikan NATS subject, worker spawn, frontend options, pipeline PDF output
...
Bug fixes:
1. NATS subject doubled prefix — gateway publish ke tools.tools.scan.*
padahal workers subscribe ke tools.scan.*. Fix: pakai group() method
2. Worker subscriptions pake tokio::select! — cuma satu subscription
yang diproses, sisanya di-cancel. Fix: ganti ke tokio::spawn + loop
3. WebSocket URL hardcoded ke localhost:3001 — gak jalan di prod.
Fix: infer dari window.location atau env var
4. Frontend scan options hardcoded — user gak bisa atur OCR/enhance/format.
Fix: interactive toggles, selects, slider
5. Frontend compress quality hardcoded — user gak bisa atur kualitas.
Fix: quality range slider
6. Pipeline cuma output PNG — gak ada PDF/OCR.
Fix: generate searchable PDF kalo tesseract feature enabled
Enhancements:
- Tool::group() method added — returns 'scan', 'image', 'pdf' dll
- Dockerfile: --features tesseract pas cargo build
- leptess OCR: proper API usage (set_image_from_mem, recognize, etc.)
Co-Authored-By: Kilo <kilo@kilo.ai >
2026-07-24 18:24:22 +07:00
asepharyana and Kilo
f6008b36c3
fix: use useRef instead of useState for AbortController
...
TypeScript error: Property 'abort' does not exist on type
'Dispatch<SetStateAction<AbortController | null>>'. Fixed by using
useRef which properly stores the controller reference.
Co-Authored-By: Kilo <kilo@kilo.ai >
2026-07-24 13:43:21 +07:00
asepharyana and Kilo
084ff4109f
fix: replace missing lucide icons (Github, ImageResize), remove reactCompiler
...
Github icon doesn't exist in lucide-react 1.26.0, replaced with ExternalLink.
ImageResize doesn't exist, replaced with Crop.
reactCompiler requires babel-plugin-react-compiler which isn't installed.
Co-Authored-By: Kilo <kilo@kilo.ai >
2026-07-24 13:40:54 +07:00
asepharyana and Kilo
a00ad62f6c
feat: initial tools service with document scanner, image & PDF tools
...
Self-hosted document scanner and media processing tools.
- Rust Axum gateway + worker pool with NATS JetStream
- Next.js 16 frontend with shadcn/ui
- Scanner pipeline: edge detection, warp, binarization, OCR
- Image tools: compress, resize, convert
- PDF tools: merge, split, compress
- CI/CD with Docker multi-stage build
Co-Authored-By: Kilo <kilo@kilo.ai >
2026-07-24 13:10:59 +07:00