Commit graph

611 commits

Author SHA1 Message Date
ashim-hq
15a63e57c3 chore: remove docs/superpowers from tracking (local-only) 2026-04-18 12:19:31 +08:00
ashim-hq
204fd14ad5 docs: update plan for recent Dockerfile, bridge, and Python changes
Remove unnecessary lazy import steps (base packages are always
installed). Update Dockerfile task for cuDNN base, node-bins stage,
pip cache mounts. Add parallel model downloads and NCCL conflict
handling to install script requirements.
2026-04-18 02:15:32 +08:00
ashim-hq
ae411f2d72 chore(release): 1.15.9 [skip ci] 2026-04-17 23:26:26 +08:00
ashim-hq
31424d4356 docs: add crash recovery and robustness to spec and plan
Atomic model downloads (.downloading suffix + rename), file-based
install lock (survives container restart), atomic JSON writes,
startup recovery sequence, frontend double-click prevention,
SSE fallback polling, disk space pre-checks.
2026-04-17 23:08:35 +08:00
Ashim
08a7ffe403 Enhance logging and error handling across tools; add full tool audit and Playwright tests
- Added model mismatch warnings in colorize, enhance-faces, and upscale routes.
- Improved error handling in colorize, enhance_faces, remove_bg, restore, and upscale scripts with detailed logging.
- Updated Dockerfile to align NCCL versions for compatibility.
- Introduced a new full tool audit script to test all tools for functionality and GPU usage.
- Created Playwright E2E tests for GPU-dependent tools to ensure proper functionality and performance.
2026-04-17 23:06:31 +08:00
ashim-hq
51f60a8269 Refactor code structure for improved readability and maintainability
Some checks failed
CI / Typecheck (push) Has been cancelled
CI / Lint (push) Has been cancelled
CI / Test (push) Has been cancelled
CI / Build (push) Has been cancelled
CI / Docker Build Test (push) Has been cancelled
Deploy Docs to GitHub Pages / build (push) Has been cancelled
Deploy Docs to GitHub Pages / deploy (push) Has been cancelled
2026-04-17 17:07:31 +08:00
semantic-release-bot
95af281584 chore(release): 1.15.8 [skip ci]
## [1.15.8](https://github.com/ashim-hq/ashim/compare/v1.15.7...v1.15.8) (2026-04-17)

### Bug Fixes

* copy Node.js from official image instead of apt-get install ([536125e](536125ec9f))
2026-04-17 07:36:40 +00:00
ashim-hq
536125ec9f fix: copy Node.js from official image instead of apt-get install
Ubuntu mirrors (security.ubuntu.com) are frequently unreachable from
GitHub Actions runners, causing all amd64 Docker builds to fail.

Instead of installing Node.js via NodeSource apt repo (which requires
working Ubuntu mirrors for the initial apt-get update), copy the Node
binary and modules directly from the official node:22-bookworm image.

Also add retry with backoff to the system deps apt-get update.
2026-04-17 15:36:05 +08:00
semantic-release-bot
caa2160ef8 chore(release): 1.15.7 [skip ci]
## [1.15.7](https://github.com/ashim-hq/ashim/compare/v1.15.6...v1.15.7) (2026-04-17)

### Bug Fixes

* add retry with backoff for apt-get update on CUDA base image ([3d6db5a](3d6db5a32d))
2026-04-17 07:04:40 +00:00
ashim-hq
3d6db5a32d fix: add retry with backoff for apt-get update on CUDA base image
Ubuntu security mirrors can be unreachable from GitHub Actions runners.
Add a retry loop with exponential backoff (15s, 30s, 45s) around
apt-get update in the Node.js install step for the CUDA base image.
2026-04-17 15:04:03 +08:00
semantic-release-bot
23dae8d152 chore(release): 1.15.6 [skip ci]
## [1.15.6](https://github.com/ashim-hq/ashim/compare/v1.15.5...v1.15.6) (2026-04-17)

### Performance Improvements

* parallelize model downloads and switch to registry cache ([79c4ed6](79c4ed6a35))
2026-04-17 06:55:08 +00:00
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
semantic-release-bot
2fd0c00564 chore(release): 1.15.5 [skip ci]
## [1.15.5](https://github.com/ashim-hq/ashim/compare/v1.15.4...v1.15.5) (2026-04-17)

### Bug Fixes

* exclude e2e-docker tests from Vitest runner ([8df18c5](8df18c56a6))
2026-04-17 06:41:05 +00: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
semantic-release-bot
3dc98374e2 chore(release): 1.15.4 [skip ci]
## [1.15.4](https://github.com/ashim-hq/ashim/compare/v1.15.3...v1.15.4) (2026-04-17)

### Bug Fixes

* verbose error handling, batch processing, and multi-file support ([3223960](32239600ae))
* verbose errors, batch processing, multi-file support ([#1](https://github.com/ashim-hq/ashim/issues/1)) ([8b87cf8](8b87cf888c))
2026-04-17 06:21:10 +00: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
semantic-release-bot
b76b9a1878 chore(release): 1.15.3 [skip ci]
## [1.15.3](https://github.com/ashim-hq/ashim/compare/v1.15.2...v1.15.3) (2026-04-16)

### Bug Fixes

* retry apt-get update on transient mirror sync errors (Acquire::Retries=3) ([cec7163](cec71632d0))
2026-04-16 19:46:27 +00: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
semantic-release-bot
59e6f2f28c chore(release): 1.15.2 [skip ci]
## [1.15.2](https://github.com/ashim-hq/ashim/compare/v1.15.1...v1.15.2) (2026-04-16)

### Bug Fixes

* use GHCR_TOKEN with write:packages scope for GHCR login ([e14414f](e14414f306))
2026-04-16 18:13:08 +00: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
Some checks are pending
CI / Lint (push) Waiting to run
CI / Typecheck (push) Waiting to run
CI / Test (push) Waiting to run
CI / Build (push) Blocked by required conditions
CI / Docker Build Test (push) Waiting to run
Deploy Docs to GitHub Pages / deploy (push) Blocked by required conditions
Deploy Docs to GitHub Pages / build (push) Waiting to run
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
semantic-release-bot
fd1eb9c781 chore(release): 1.15.1 [skip ci]
## [1.15.1](https://github.com/ashim-hq/ashim/compare/v1.15.0...v1.15.1) (2026-04-16)

### Bug Fixes

* **docker:** create /opt/models unconditionally so chown works in CI ([93ce289](93ce2891cc))
* **docker:** run frontend builder on BUILDPLATFORM to fix esbuild crash under QEMU ([6a3ad0d](6a3ad0d496))
* resolve runtime model path mismatch for non-root Docker user ([f28792a](f28792a5ed))
2026-04-16 15:46:06 +00: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
Some checks are pending
CI / Lint (push) Waiting to run
CI / Typecheck (push) Waiting to run
CI / Test (push) Waiting to run
CI / Build (push) Blocked by required conditions
CI / Docker Build Test (push) Waiting to run
Deploy Docs to GitHub Pages / build (push) Waiting to run
Deploy Docs to GitHub Pages / deploy (push) Blocked by required conditions
- 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