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
+3 -3
View File
@@ -99,7 +99,7 @@ export function ChangePasswordPage() {
}
// Trigger browser password save prompt via real form submission + navigation
const username = localStorage.getItem("stirling-username") || "admin";
const username = localStorage.getItem("ashim-username") || "admin";
triggerBrowserPasswordSave(username, newPassword);
return; // navigation happens inside triggerBrowserPasswordSave
} catch {
@@ -115,7 +115,7 @@ export function ChangePasswordPage() {
<div className="w-full max-w-md space-y-8">
<div>
<h1 className="text-3xl font-bold text-foreground">
Stirling <span className="text-primary">Image</span>
<span className="text-primary">ashim</span>
</h1>
<h2 className="text-2xl font-bold mt-4 text-foreground">Change your password</h2>
<p className="text-sm text-muted-foreground mt-2">
@@ -133,7 +133,7 @@ export function ChangePasswordPage() {
type="text"
name="username"
autoComplete="username"
value={localStorage.getItem("stirling-username") || "admin"}
value={localStorage.getItem("ashim-username") || "admin"}
readOnly
className="w-full px-4 py-3 rounded-lg border border-border bg-muted text-muted-foreground cursor-not-allowed"
/>
+3 -3
View File
@@ -1,5 +1,5 @@
import type { CategoryInfo, Tool } from "@stirling-image/shared";
import { CATEGORIES, TOOLS } from "@stirling-image/shared";
import type { CategoryInfo, Tool } from "@ashim/shared";
import { CATEGORIES, TOOLS } from "@ashim/shared";
import * as icons from "lucide-react";
import { Eye, EyeOff, FileImage, LayoutGrid, List, Search } from "lucide-react";
import { useEffect, useMemo, useState } from "react";
@@ -69,7 +69,7 @@ export function FullscreenGridPage() {
className="flex items-center gap-2 text-lg font-bold text-foreground shrink-0"
>
<GemLogo className="h-6 w-6 text-primary" />
Stirling <span className="text-primary">Image</span>
<span className="text-primary">ashim</span>
</Link>
{/* Search */}
+1 -1
View File
@@ -1,4 +1,4 @@
import { CATEGORIES, TOOLS } from "@stirling-image/shared";
import { CATEGORIES, TOOLS } from "@ashim/shared";
import * as icons from "lucide-react";
import { Loader2 } from "lucide-react";
import { useCallback, useEffect } from "react";
+2 -2
View File
@@ -25,7 +25,7 @@ export function LoginPage() {
const data = await res.json();
setToken(data.token);
// Store username for settings display
localStorage.setItem("stirling-username", data.user?.username || username);
localStorage.setItem("ashim-username", data.user?.username || username);
// Redirect to password change if required, otherwise go home
if (data.user?.mustChangePassword) {
window.location.href = "/change-password";
@@ -45,7 +45,7 @@ export function LoginPage() {
<div className="w-full max-w-md space-y-8">
<div>
<h1 className="text-3xl font-bold text-foreground">
Stirling <span className="text-primary">Image</span>
<span className="text-primary">ashim</span>
</h1>
<h2 className="text-2xl font-bold mt-4 text-foreground">Login</h2>
</div>
+7 -7
View File
@@ -20,7 +20,7 @@ export function PrivacyPolicyPage() {
<section>
<h2 className="text-lg font-semibold text-foreground mb-2">Overview</h2>
<p>
Stirling Image is a self-hosted, open-source image processing application. Your
ashim is a self-hosted, open-source image processing application. Your
instance is operated and controlled entirely by whoever deployed it. This policy
describes how the software itself handles your data.
</p>
@@ -29,7 +29,7 @@ export function PrivacyPolicyPage() {
<section>
<h2 className="text-lg font-semibold text-foreground mb-2">Local Processing</h2>
<p>
All image processing happens entirely on the server where Stirling Image is deployed.
All image processing happens entirely on the server where ashim is deployed.
Your images are never sent to external services or third-party APIs. When you upload
an image for processing, it is handled in memory or in temporary storage on the host
machine and is not retained after the operation completes.
@@ -39,8 +39,8 @@ export function PrivacyPolicyPage() {
<section>
<h2 className="text-lg font-semibold text-foreground mb-2">No Tracking or Analytics</h2>
<p>
Stirling Image does not include any telemetry, analytics, or tracking. No data is
collected about your usage patterns, and no information is sent to Stirling Image
ashim does not include any telemetry, analytics, or tracking. No data is
collected about your usage patterns, and no information is sent to ashim
developers or any third party. There are no cookies used for tracking purposes.
</p>
</section>
@@ -58,7 +58,7 @@ export function PrivacyPolicyPage() {
<section>
<h2 className="text-lg font-semibold text-foreground mb-2">No Third-Party Services</h2>
<p>
Stirling Image does not integrate with or send data to any external services.
ashim does not integrate with or send data to any external services.
AI-powered features (background removal, upscaling, OCR) run locally using bundled
models. No cloud APIs are involved.
</p>
@@ -67,7 +67,7 @@ export function PrivacyPolicyPage() {
<section>
<h2 className="text-lg font-semibold text-foreground mb-2">Open Source</h2>
<p>
Stirling Image is fully open source. You can audit the source code to verify these
ashim is fully open source. You can audit the source code to verify these
claims at any time. Transparency is a core principle of this project.
</p>
</section>
@@ -75,7 +75,7 @@ export function PrivacyPolicyPage() {
<section>
<h2 className="text-lg font-semibold text-foreground mb-2">Your Control</h2>
<p>
Because Stirling Image is self-hosted, the instance operator has full control over all
Because ashim is self-hosted, the instance operator has full control over all
data. You can delete your data at any time by removing files from the server or
deleting the database. No data exists outside of your infrastructure.
</p>
+1 -1
View File
@@ -1,4 +1,4 @@
import { TOOLS } from "@stirling-image/shared";
import { TOOLS } from "@ashim/shared";
import * as icons from "lucide-react";
import { CheckCircle2, ChevronLeft, ChevronRight, Download, Loader2 } from "lucide-react";
import { Suspense, useCallback, useEffect, useMemo, useRef, useState } from "react";