chore: rename Stirling-Image to ashim across entire codebase

Complete rebrand from Stirling-Image to ashim following the project
move to https://github.com/ashim-hq/ashim.

Changes across 117 files:
- Package scope: @stirling-image/* → @ashim/*
- GitHub URLs: stirling-image/stirling-image → ashim-hq/ashim
- Docker Hub: stirlingimage/stirling-image → ashimhq/ashim
- GitHub Pages: stirling-image.github.io → ashim-hq.github.io
- All branding text: "Stirling Image" → "ashim"
- Docker service/volumes/user: stirling → ashim
- Database: stirling.db → ashim.db
- localStorage keys: stirling-token → ashim-token
- Environment variables: STIRLING_GPU → ASHIM_GPU
- Python cache dirs: .cache/stirling-image → .cache/ashim
- SVG filter IDs, test prefixes, and all other references
This commit is contained in:
Siddharth Kumar Sah
2026-04-14 20:55:42 +08:00
parent da4411330f
commit 85b1cfc10a
117 changed files with 710 additions and 713 deletions
+4 -4
View File
@@ -1,7 +1,7 @@
import cors from "@fastify/cors";
import rateLimit from "@fastify/rate-limit";
import { isGpuAvailable } from "@stirling-image/ai";
import { APP_VERSION } from "@stirling-image/shared";
import { isGpuAvailable } from "@ashim/ai";
import { APP_VERSION } from "@ashim/shared";
import Fastify from "fastify";
import { env } from "./config.js";
import { db, schema } from "./db/index.js";
@@ -165,7 +165,7 @@ const cleanupCron = startCleanupCron();
// Start
try {
await app.listen({ port: env.PORT, host: "0.0.0.0" });
console.log(`Stirling Image API running on port ${env.PORT}`);
console.log(`ashim API running on port ${env.PORT}`);
} catch (err) {
app.log.error(err);
process.exit(1);
@@ -202,7 +202,7 @@ async function shutdown(signal: string) {
}
try {
const { shutdownDispatcher } = await import("@stirling-image/ai");
const { shutdownDispatcher } = await import("@ashim/ai");
shutdownDispatcher();
console.log("Python dispatcher shut down");
} catch {
+2 -2
View File
@@ -20,12 +20,12 @@ const envSchema = z.object({
CONCURRENT_JOBS: z.coerce.number().default(3),
MAX_MEGAPIXELS: z.coerce.number().default(100),
RATE_LIMIT_PER_MIN: z.coerce.number().default(100),
DB_PATH: z.string().default("./data/stirling.db"),
DB_PATH: z.string().default("./data/ashim.db"),
FILES_STORAGE_PATH: z.string().default("./data/files"),
WORKSPACE_PATH: z.string().default("./tmp/workspace"),
DEFAULT_THEME: z.enum(["light", "dark"]).default("light"),
DEFAULT_LOCALE: z.string().default("en"),
APP_NAME: z.string().default("Stirling Image"),
APP_NAME: z.string().default("ashim"),
CORS_ORIGIN: z.string().default(""),
MAX_USERS: z.coerce.number().default(5),
LOG_LEVEL: z.enum(["fatal", "error", "warn", "info", "debug", "trace"]).default("info"),
+3 -3
View File
@@ -1,9 +1,9 @@
openapi: 3.1.0
info:
title: Stirling Image API
title: ashim API
version: 0.9.0
description: |
REST API for Stirling Image, a self-hosted image processing platform with 30+ tools.
REST API for ashim, a self-hosted image processing platform with 30+ tools.
## Authentication
@@ -16,7 +16,7 @@ info:
Endpoints marked with a lock icon require authentication. Admin-only endpoints are noted in their description.
license:
name: AGPL-3.0
url: https://github.com/stirling-image/stirling-image/blob/main/LICENSE
url: https://github.com/ashim-hq/ashim/blob/main/LICENSE
servers:
- url: /
+1 -1
View File
@@ -1,4 +1,4 @@
import type { Permission, Role } from "@stirling-image/shared";
import type { Permission, Role } from "@ashim/shared";
import type { FastifyReply, FastifyRequest } from "fastify";
import { getAuthUser } from "./plugins/auth.js";
+1 -1
View File
@@ -1,7 +1,7 @@
import { randomUUID } from "node:crypto";
import { writeFile } from "node:fs/promises";
import { basename, join } from "node:path";
import { blurFaces } from "@stirling-image/ai";
import { blurFaces } from "@ashim/ai";
import type { FastifyInstance, FastifyReply, FastifyRequest } from "fastify";
import { z } from "zod";
import { autoOrient } from "../../lib/auto-orient.js";
@@ -7,7 +7,7 @@ import {
grayscale,
invert,
sepia,
} from "@stirling-image/image-engine";
} from "@ashim/image-engine";
import type { FastifyInstance } from "fastify";
import sharp from "sharp";
import { z } from "zod";
+1 -1
View File
@@ -1,7 +1,7 @@
import { randomUUID } from "node:crypto";
import { writeFile } from "node:fs/promises";
import { basename, join } from "node:path";
import { colorize } from "@stirling-image/ai";
import { colorize } from "@ashim/ai";
import type { FastifyInstance, FastifyReply, FastifyRequest } from "fastify";
import sharp from "sharp";
import { z } from "zod";
+1 -1
View File
@@ -1,4 +1,4 @@
import { compress } from "@stirling-image/image-engine";
import { compress } from "@ashim/image-engine";
import type { FastifyInstance } from "fastify";
import sharp from "sharp";
import { z } from "zod";
@@ -1,7 +1,7 @@
import { randomUUID } from "node:crypto";
import { writeFile } from "node:fs/promises";
import { basename, join } from "node:path";
import { seamCarve } from "@stirling-image/ai";
import { seamCarve } from "@ashim/ai";
import type { FastifyInstance, FastifyReply, FastifyRequest } from "fastify";
import { z } from "zod";
import { autoOrient } from "../../lib/auto-orient.js";
+1 -1
View File
@@ -1,5 +1,5 @@
import { extname } from "node:path";
import { convert } from "@stirling-image/image-engine";
import { convert } from "@ashim/image-engine";
import type { FastifyInstance } from "fastify";
import sharp from "sharp";
import { z } from "zod";
+1 -1
View File
@@ -1,4 +1,4 @@
import { crop } from "@stirling-image/image-engine";
import { crop } from "@ashim/image-engine";
import type { FastifyInstance } from "fastify";
import sharp from "sharp";
import { z } from "zod";
+1 -1
View File
@@ -1,7 +1,7 @@
import { randomUUID } from "node:crypto";
import { writeFile } from "node:fs/promises";
import { basename, join } from "node:path";
import { enhanceFaces } from "@stirling-image/ai";
import { enhanceFaces } from "@ashim/ai";
import type { FastifyInstance, FastifyReply, FastifyRequest } from "fastify";
import sharp from "sharp";
import { z } from "zod";
+1 -1
View File
@@ -1,7 +1,7 @@
import { randomUUID } from "node:crypto";
import { writeFile } from "node:fs/promises";
import { basename, join } from "node:path";
import { inpaint } from "@stirling-image/ai";
import { inpaint } from "@ashim/ai";
import type { FastifyInstance, FastifyReply, FastifyRequest } from "fastify";
import sharp from "sharp";
import { autoOrient } from "../../lib/auto-orient.js";
@@ -1,4 +1,4 @@
import { analyzeImage, applyCorrections } from "@stirling-image/image-engine";
import { analyzeImage, applyCorrections } from "@ashim/image-engine";
import type { FastifyInstance, FastifyReply, FastifyRequest } from "fastify";
import sharp from "sharp";
import { z } from "zod";
+1 -1
View File
@@ -1,4 +1,4 @@
import { TOOLS } from "@stirling-image/shared";
import { TOOLS } from "@ashim/shared";
import { eq } from "drizzle-orm";
import type { FastifyInstance } from "fastify";
import { db, schema } from "../../db/index.js";
+1 -1
View File
@@ -1,6 +1,6 @@
import { randomUUID } from "node:crypto";
import { join } from "node:path";
import { noiseRemoval } from "@stirling-image/ai";
import { noiseRemoval } from "@ashim/ai";
import type { FastifyInstance, FastifyReply, FastifyRequest } from "fastify";
import { z } from "zod";
import { autoOrient } from "../../lib/auto-orient.js";
+1 -1
View File
@@ -1,6 +1,6 @@
import { randomUUID } from "node:crypto";
import { basename } from "node:path";
import { extractText } from "@stirling-image/ai";
import { extractText } from "@ashim/ai";
import type { FastifyInstance, FastifyReply, FastifyRequest } from "fastify";
import { z } from "zod";
import { validateImageBuffer } from "../../lib/file-validation.js";
@@ -1,5 +1,5 @@
import { extname } from "node:path";
import { optimizeForWeb } from "@stirling-image/image-engine";
import { optimizeForWeb } from "@ashim/image-engine";
import type { FastifyInstance, FastifyReply, FastifyRequest } from "fastify";
import sharp from "sharp";
import { z } from "zod";
+2 -2
View File
@@ -1,8 +1,8 @@
import { randomUUID } from "node:crypto";
import { readFile, writeFile } from "node:fs/promises";
import { basename, join } from "node:path";
import { detectFaceLandmarks, removeBackground } from "@stirling-image/ai";
import { PASSPORT_SPECS, PRINT_LAYOUTS } from "@stirling-image/shared";
import { detectFaceLandmarks, removeBackground } from "@ashim/ai";
import { PASSPORT_SPECS, PRINT_LAYOUTS } from "@ashim/shared";
import type { FastifyInstance, FastifyReply, FastifyRequest } from "fastify";
import sharp from "sharp";
import { z } from "zod";
+1 -1
View File
@@ -1,7 +1,7 @@
import { randomUUID } from "node:crypto";
import { writeFile } from "node:fs/promises";
import { basename, join } from "node:path";
import { removeRedEye } from "@stirling-image/ai";
import { removeRedEye } from "@ashim/ai";
import type { FastifyInstance, FastifyReply, FastifyRequest } from "fastify";
import { z } from "zod";
import { autoOrient } from "../../lib/auto-orient.js";
@@ -1,7 +1,7 @@
import { randomUUID } from "node:crypto";
import { readFile, writeFile } from "node:fs/promises";
import { basename, join } from "node:path";
import { removeBackground } from "@stirling-image/ai";
import { removeBackground } from "@ashim/ai";
import type { FastifyInstance, FastifyReply, FastifyRequest } from "fastify";
import { z } from "zod";
import { autoOrient } from "../../lib/auto-orient.js";
+1 -1
View File
@@ -1,4 +1,4 @@
import { resize } from "@stirling-image/image-engine";
import { resize } from "@ashim/image-engine";
import type { FastifyInstance } from "fastify";
import sharp from "sharp";
import { z } from "zod";
+1 -1
View File
@@ -1,7 +1,7 @@
import { randomUUID } from "node:crypto";
import { writeFile } from "node:fs/promises";
import { basename, join } from "node:path";
import { restorePhoto } from "@stirling-image/ai";
import { restorePhoto } from "@ashim/ai";
import type { FastifyInstance, FastifyReply, FastifyRequest } from "fastify";
import sharp from "sharp";
import { z } from "zod";
+1 -1
View File
@@ -1,4 +1,4 @@
import { flip, rotate } from "@stirling-image/image-engine";
import { flip, rotate } from "@ashim/image-engine";
import type { FastifyInstance } from "fastify";
import sharp from "sharp";
import { z } from "zod";
+1 -1
View File
@@ -1,4 +1,4 @@
import { sharpenAdvanced } from "@stirling-image/image-engine";
import { sharpenAdvanced } from "@ashim/image-engine";
import type { FastifyInstance } from "fastify";
import sharp from "sharp";
import { z } from "zod";
+2 -2
View File
@@ -1,5 +1,5 @@
import { detectFaces } from "@stirling-image/ai";
import { SMART_CROP_FACE_PRESETS } from "@stirling-image/shared";
import { detectFaces } from "@ashim/ai";
import { SMART_CROP_FACE_PRESETS } from "@ashim/shared";
import type { FastifyInstance } from "fastify";
import sharp from "sharp";
import { z } from "zod";
+1 -1
View File
@@ -1,5 +1,5 @@
import { basename } from "node:path";
import { parseExif, parseGps, parseXmp, stripMetadata } from "@stirling-image/image-engine";
import { parseExif, parseGps, parseXmp, stripMetadata } from "@ashim/image-engine";
import type { FastifyInstance, FastifyReply, FastifyRequest } from "fastify";
import sharp from "sharp";
import { z } from "zod";
+1 -1
View File
@@ -1,7 +1,7 @@
import { randomUUID } from "node:crypto";
import { writeFile } from "node:fs/promises";
import { basename, join } from "node:path";
import { upscale } from "@stirling-image/ai";
import { upscale } from "@ashim/ai";
import type { FastifyInstance, FastifyReply, FastifyRequest } from "fastify";
import sharp from "sharp";
import { z } from "zod";