Commit Graph
605 Commits
Author SHA1 Message Date
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](https://github.com/ashim-hq/ashim/commit/536125ec9fbc5758bdd3e8f0f4c44253de2231c7))
v1.15.8
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](https://github.com/ashim-hq/ashim/commit/3d6db5a32d3f9292d5476e9bd80c1f06624fa316))
v1.15.7
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](https://github.com/ashim-hq/ashim/commit/79c4ed6a359b008dedeb154a55e2764ee0e3d9fa))
v1.15.6
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](https://github.com/ashim-hq/ashim/commit/8df18c56a6c69e2a188cf0e7c97e692cd4c0e7ec))
v1.15.5
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](https://github.com/ashim-hq/ashim/commit/32239600ae6ce30628e77e61a805ca0a167b5068))
* verbose errors, batch processing, multi-file support ([#1](https://github.com/ashim-hq/ashim/issues/1)) ([8b87cf8](https://github.com/ashim-hq/ashim/commit/8b87cf888c6194e2af427a180607d7c53a1d15b9))
v1.15.4
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](https://github.com/ashim-hq/ashim/commit/cec71632d0c868c3a413b813ff15baccc8fa8cdd))
v1.15.3
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](https://github.com/ashim-hq/ashim/commit/e14414f3061981b1454dc7d4504c64ec01db945e))
v1.15.2
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
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](https://github.com/ashim-hq/ashim/commit/93ce2891cc26afc93f01168d008927d3d356c1a9))
* **docker:** run frontend builder on BUILDPLATFORM to fix esbuild crash under QEMU ([6a3ad0d](https://github.com/ashim-hq/ashim/commit/6a3ad0d496e291b30a3f719ca079c43ce7aab705))
* resolve runtime model path mismatch for non-root Docker user ([f28792a](https://github.com/ashim-hq/ashim/commit/f28792a5ed78221f38cf2f3c80cae9f24cd7f5e3))
v1.15.1
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
- 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
Siddharth Kumar Sah af075f19d3 docs: remove Docker Images section from README 2026-04-16 12:52:40 +08:00
Siddharth Kumar Sah 93ce2891cc fix(docker): create /opt/models unconditionally so chown works in CI
When SKIP_MODEL_DOWNLOADS=true the download script never runs, so
/opt/models was never created and the subsequent chown -R ... /opt/models
failed with exit code 1.  mkdir -p it alongside the other required dirs.
2026-04-16 08:55:39 +08:00
Siddharth Kumar Sah 6a3ad0d496 fix(docker): run frontend builder on BUILDPLATFORM to fix esbuild crash under QEMU
esbuild (used by Vite) crashes under QEMU amd64 emulation on Apple Silicon,
the same way the Go runtime did.  Building the frontend on the native platform
is safe because the output (HTML/CSS/JS) contains no architecture-specific code.
2026-04-15 23:20:40 +08:00
Siddharth Kumar Sah 7b4b2569f2 docs: update README with correct Docker Hub/GHCR pull commands and versioning
- Fix docker run commands (was pointing to old stirlingimage/stirling-image)
- Add Docker Images section with all available tags for both registries
- Add GHCR badge alongside Docker Hub badge
- Remove rename banner (rename is complete)
v1.15.0
2026-04-15 23:18:11 +08:00
Siddharth Kumar Sah 9cd91edee1 chore(release): 1.15.0
Bump all workspace packages from 1.14.0 to 1.15.0.
2026-04-15 23:17:31 +08:00
Siddharth Kumar Sah 26f5bb8092 fix(docker): proper CGO cross-compilation for caire with multi-arch toolchain
Replace CGO_ENABLED=0 (which fails because gioui.org requires CGO on Linux)
with a proper C cross-compiler approach using Debian multi-arch packages.
Running caire-builder with --platform=\$BUILDPLATFORM avoids QEMU crashes on
Apple Silicon; the C cross-compiler bridges the CGO gap for the target arch.

Also adds SKIP_MODEL_DOWNLOADS=true to the CI docker build job to prevent
HuggingFace CDN 504s in CI (image structure is what matters there).
2026-04-15 23:17:17 +08:00