Commit Graph
34 Commits
Author SHA1 Message Date
ashim-hq 79c4ed6a35 perf: parallelize model downloads and switch to registry cache
- Parallelize all 14 model downloads using ThreadPoolExecutor (6 workers)
  Downloads were sequential (~30 min), now concurrent (~5-10 min)
- Switch Docker cache from type=gha to type=registry (GHCR)
  GHA cache has 10 GB limit causing blob eviction and corrupted builds
  Registry cache has no size limit and persists across runner instances
- Add pip download cache mounts to all pip install layers
  Prevents re-downloading packages when layers rebuild
2026-04-17 14:54:23 +08:00
ashim-hq d148229d03 chore: remove docs/superpowers from tracking
Already in .gitignore — this removes the file that was committed before
the ignore rule was added.
2026-04-17 14:38:50 +08:00
ashim-hq 94db94cb28 docs: align spec with recent error handling and testing changes
Reference new parseApiError, formatZodErrors, global error handler,
and playwright.docker.config.ts infrastructure. Remove stale
partialTools concept since every tool maps to exactly one bundle.
2026-04-17 14:35:36 +08:00
ashim-hq 8df18c56a6 fix: exclude e2e-docker tests from Vitest runner
The Playwright-based Docker e2e tests use test.describe() which is
incompatible with Vitest. Exclude tests/e2e-docker/ from Vitest's
test discovery, matching the existing tests/e2e/ exclusion.
2026-04-17 14:24:14 +08:00
ashim-hq 8b87cf888c fix: verbose errors, batch processing, multi-file support (#1)
- Eliminate [object Object] errors across all 20+ API routes
- Global Fastify error handler with full stack traces
- Image-to-PDF auth fix (Object.entries → headers.forEach)
- OCR verbose fallbacks with engine reporting
- Split multi-file with per-image subfolders in ZIP
- Batch support for blur-faces, strip-metadata, edit-metadata, vectorize
- Docker LOG_LEVEL=debug, PYTHONWARNINGS=default
- 20 Playwright e2e tests pass against Docker container
2026-04-17 14:19:57 +08:00
ashim-hq 32239600ae fix: verbose error handling, batch processing, and multi-file support
- Replace [object Object] errors with readable messages across all 20+ API
  routes by normalizing Zod validation errors to strings (formatZodErrors)
- Add parseApiError() on frontend to defensively handle any details type
- Add global Fastify error handler with full stack traces in logs
- Fix image-to-pdf auth: Object.entries(headers) → headers.forEach()
- Fix passport-photo: safeParse + formatZodErrors, safe error extraction
- Fix OCR silent fallbacks: log exception type/message when falling back,
  include actual engine used in API response and Docker logs
- Fix split tool: process all uploaded images, combine into ZIP with
  subfolders per image
- Fix batch support for blur-faces, strip-metadata, edit-metadata,
  vectorize: add processAllFiles branch for multi-file uploads
- Docker: LOG_LEVEL=debug, PYTHONWARNINGS=default for visibility
- Add Playwright e2e tests verifying all fixes against Docker container
2026-04-17 14:15:27 +08:00
ashim-hq 2e2dbbb8e0 docs: strict one-bundle-per-tool, lock full tools, docker-only testing
Revised bundles so every tool belongs to exactly one bundle with no
partial functionality. OCR and noise-removal fully locked until
their bundle is installed. passport-photo includes mediapipe in the
Background Removal bundle. restore-photo gets its own bundle.
Development/testing always via Docker container.
2026-04-17 13:01:14 +08:00
ashim-hq 959ece3a35 docs: improve on-demand AI features spec with architectural fixes
Address single-venv strategy (avoid two-venv fragility), shared
package uninstall via reference counting, tool route registration
for uninstalled features (501 instead of 404), multi-bundle tool
graceful degradation, frontend feature status propagation, and
local development compatibility.
2026-04-17 12:13:50 +08:00
ashim-hq b9fbf9db67 docs: add design spec for on-demand AI feature downloads
Reduce Docker image from ~30GB to ~5-6GB by making AI features
downloadable post-install. Users cherry-pick feature bundles
(Background Removal, OCR, etc.) from the UI after pulling.
2026-04-17 11:31:35 +08:00
ashim-hq cec71632d0 fix: retry apt-get update on transient mirror sync errors (Acquire::Retries=3) 2026-04-17 03:45:42 +08:00
ashim-hq e14414f306 fix: use GHCR_TOKEN with write:packages scope for GHCR login 2026-04-17 02:12:32 +08:00
ashim-hq 62f0a2a238 chore: fall back to latest tag when semantic-release finds no new commits
Allows re-triggering the release workflow after a Docker push failure
without needing new commits. If semantic-release produces no new version
the workflow now uses the latest existing git tag for the Docker build.
2026-04-17 00:21:55 +08:00
ashim-hq 1de0dd12bf docs: add --name ashim to all docker run commands
Ensures the container is named ashim in Docker Desktop on all
platforms instead of getting a random name.
2026-04-16 23:45:11 +08:00
ashim-hq 1553a2445d chore: add .gitattributes to enforce LF line endings
Prevents git on Windows (core.autocrlf=true) from checking out shell
scripts and Dockerfiles with CRLF line endings, which causes a
bad interpreter error when Docker runs entrypoint.sh on Windows.
2026-04-16 23:45:07 +08:00
ashim-hq f28792a5ed fix: resolve runtime model path mismatch for non-root Docker user
Set U2NET_HOME=/opt/models/rembg so rembg models pre-downloaded at
build time as root are found at runtime by the non-root ashim user.
Without this every fresh container re-downloaded the 973 MB BiRefNet
models on first background-removal request.

Apply the same fix to PaddleOCR: download to /opt/models/paddlex and
symlink into both /root/.paddlex and /app/.paddlex so PaddleX finds
models regardless of which HOME gosu resolves at runtime.

Fall back to per-request spawning in bridge.ts when the persistent
dispatcher crashes mid-request (e.g. OOM loading a large ONNX model),
so the operation succeeds instead of surfacing "Python dispatcher
exited unexpectedly" to the user.

Improve entrypoint.sh permission warning to mention Windows bind mounts
as the likely cause.
2026-04-16 23:45:02 +08:00
ashim-hq e516cee836 docs: update Docker image references to use GitHub Container Registry 2026-04-16 17:51:14 +08:00
ashim-hq fd823e33f0 docs: update getting started guide to include GitHub Container Registry instructions 2026-04-16 17:38:17 +08:00
ashim-hq bac3febbdb docs: update deployment instructions for GitHub Container Registry usage 2026-04-16 17:29:50 +08:00
ashim-hq 9178d7673d chore: add CI path filters, update README and images
- ci.yml: skip lint/test/docker on docs-only and markdown-only pushes
- deploy-docs.yml: only rebuild GitHub Pages when apps/docs/** changes
- README.md: updated key features and content
- images: updated dashboard screenshots, removed stale images
2026-04-16 16:53:36 +08:00
ashim-hq e529fbb839 docs: add resource footprint section — idle memory, lazy model loading, cold start behavior 2026-04-16 16:51:18 +08:00
ashim-hq 9d84dc262f docs: add Contributing page, no-PR policy, link from sidebar 2026-04-16 16:40:53 +08:00
ashim-hq e52bce555b docs: rewrite translations guide - no PRs, open issues for translation requests 2026-04-16 16:40:43 +08:00
ashim-hq c8dd454f74 docs: replace em dashes with hyphens throughout 2026-04-16 16:40:18 +08:00
ashim-hq de441df32e docs: complete documentation overhaul — 47 tools, AI reference, teams, file library, RBAC 2026-04-16 16:31:23 +08:00
ashim-hq 7d1b9e6dc3 docs: update architecture — 47 tools, user file library, teams, branding, runtime settings 2026-04-16 16:29:04 +08:00
ashim-hq 956b7572ca docs: remove non-existent updatedAt from teams and user_files tables 2026-04-16 16:27:50 +08:00
ashim-hq 697b13de7a docs: add teams + user_files tables, fix jobs.progress type (real 0-1) 2026-04-16 16:26:58 +08:00
ashim-hq a2d41575a2 docs: add MAX_USERS and SKIP_MUST_CHANGE_PASSWORD to configuration reference 2026-04-16 16:26:02 +08:00
ashim-hq 5e8676a33e docs: rewrite AI engine reference — 13 AI tools including colorize, restore, noise-removal, passport-photo 2026-04-16 16:24:47 +08:00
ashim-hq cd72bea975 docs: rewrite REST API reference — 47 tools, user-files, teams, branding, settings, permissions 2026-04-16 16:21:29 +08:00
ashim-hq 205c26023e docs: rewrite getting-started — 45+ tools table, file library, teams, API keys 2026-04-16 16:17:43 +08:00
ashim-hq 26068ad239 docs: fix AI tool count (13 not 14), update llms template to 45+ tools 2026-04-16 16:16:13 +08:00
ashim-hq f4b4890070 docs: update homepage — A Self Hosted Image Manipulator, 45+ tools, 6 feature cards 2026-04-16 16:13:33 +08:00
ashim-hq 365af287f2 chore: remove docs/specs from git tracking
Keep specs local-only; add docs/specs/ to .gitignore.
2026-04-16 15:45:18 +08:00