mirror of
https://github.com/snapotter-hq/SnapOtter.git
synced 2026-08-03 07:46:42 +02:00
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:
@@ -69,7 +69,7 @@ export function Dropzone({ onFiles, accept, multiple = true, currentFiles = [] }
|
||||
>
|
||||
<div className="flex flex-col items-center gap-4 p-8">
|
||||
<div className="text-3xl font-bold text-muted-foreground/30">
|
||||
Stirling <span className="text-primary/30">Image</span>
|
||||
<span className="text-primary/30">ashim</span>
|
||||
</div>
|
||||
<button
|
||||
type="button"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { TOOLS } from "@stirling-image/shared";
|
||||
import { TOOLS } from "@ashim/shared";
|
||||
import * as icons from "lucide-react";
|
||||
import { ArrowRight, ChevronDown, ChevronRight, Download, Undo2 } from "lucide-react";
|
||||
import { useMemo, useState } from "react";
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import type { Tool } from "@stirling-image/shared";
|
||||
import type { Tool } from "@ashim/shared";
|
||||
import * as icons from "lucide-react";
|
||||
import { FileImage, Star } from "lucide-react";
|
||||
import { Link } from "react-router-dom";
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { TOOLS } from "@stirling-image/shared";
|
||||
import { TOOLS } from "@ashim/shared";
|
||||
import { FileImage } from "lucide-react";
|
||||
import { useEffect, useState } from "react";
|
||||
import { useNavigate } from "react-router-dom";
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { TOOLS } from "@stirling-image/shared";
|
||||
import { TOOLS } from "@ashim/shared";
|
||||
import type { UserFile } from "@/lib/api";
|
||||
import { cn } from "@/lib/utils";
|
||||
import { useFilesPageStore } from "@/stores/files-page-store";
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { APP_VERSION } from "@stirling-image/shared";
|
||||
import { APP_VERSION } from "@ashim/shared";
|
||||
import { BookOpen, ExternalLink, Github, Keyboard, X } from "lucide-react";
|
||||
import { useEffect } from "react";
|
||||
import { formatShortcut } from "@/hooks/use-keyboard-shortcuts";
|
||||
@@ -99,7 +99,7 @@ export function HelpDialog({ open, onClose }: HelpDialogProps) {
|
||||
</div>
|
||||
<div className="flex flex-col gap-1.5">
|
||||
<a
|
||||
href="https://github.com/stirling-image/stirling-image"
|
||||
href="https://github.com/ashim-hq/ashim"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
className="flex items-center gap-1.5 text-sm text-primary hover:underline"
|
||||
@@ -108,7 +108,7 @@ export function HelpDialog({ open, onClose }: HelpDialogProps) {
|
||||
<ExternalLink className="h-3 w-3" />
|
||||
</a>
|
||||
<a
|
||||
href="https://github.com/stirling-image/stirling-image/issues"
|
||||
href="https://github.com/ashim-hq/ashim/issues"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
className="flex items-center gap-1.5 text-sm text-primary hover:underline"
|
||||
@@ -117,7 +117,7 @@ export function HelpDialog({ open, onClose }: HelpDialogProps) {
|
||||
<ExternalLink className="h-3 w-3" />
|
||||
</a>
|
||||
<a
|
||||
href="https://stirling-image.github.io/stirling-image/"
|
||||
href="https://ashim-hq.github.io/ashim/"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
className="flex items-center gap-1.5 text-sm text-primary hover:underline"
|
||||
@@ -139,7 +139,7 @@ export function HelpDialog({ open, onClose }: HelpDialogProps) {
|
||||
|
||||
{/* Version */}
|
||||
<div className="text-xs text-muted-foreground pt-2 border-t border-border">
|
||||
Stirling Image v{APP_VERSION}
|
||||
ashim v{APP_VERSION}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -61,7 +61,7 @@ export function AppLayout({ children, showToolPanel = true, onFiles }: AppLayout
|
||||
<div className="flex items-center gap-2">
|
||||
<GemLogo className="h-5 w-5 text-primary" />
|
||||
<span className="text-sm font-bold text-foreground">
|
||||
Stirling <span className="text-primary">Image</span>
|
||||
<span className="text-primary">ashim</span>
|
||||
</span>
|
||||
</div>
|
||||
)}
|
||||
@@ -109,7 +109,7 @@ export function AppLayout({ children, showToolPanel = true, onFiles }: AppLayout
|
||||
<div className="flex items-center gap-2">
|
||||
<GemLogo className="h-5 w-5 text-primary" />
|
||||
<span className="text-sm font-bold text-foreground">
|
||||
Stirling <span className="text-primary">Image</span>
|
||||
<span className="text-primary">ashim</span>
|
||||
</span>
|
||||
</div>
|
||||
)}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { CATEGORIES, TOOLS } from "@stirling-image/shared";
|
||||
import { CATEGORIES, TOOLS } from "@ashim/shared";
|
||||
import { useEffect, useMemo, useState } from "react";
|
||||
import { useSettingsStore } from "@/stores/settings-store";
|
||||
import { SearchBar } from "../common/search-bar";
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { APP_VERSION, CATEGORIES, TOOLS } from "@stirling-image/shared";
|
||||
import { APP_VERSION, CATEGORIES, TOOLS } from "@ashim/shared";
|
||||
import {
|
||||
Check,
|
||||
Copy,
|
||||
@@ -182,7 +182,7 @@ function GeneralSection() {
|
||||
// Fallback to localStorage if session endpoint fails
|
||||
setUser({
|
||||
id: 0,
|
||||
username: localStorage.getItem("stirling-username") || "",
|
||||
username: localStorage.getItem("ashim-username") || "",
|
||||
role: "unknown",
|
||||
});
|
||||
})
|
||||
@@ -191,7 +191,7 @@ function GeneralSection() {
|
||||
|
||||
const handleLogout = () => {
|
||||
clearToken();
|
||||
localStorage.removeItem("stirling-username");
|
||||
localStorage.removeItem("ashim-username");
|
||||
window.location.href = "/login";
|
||||
};
|
||||
|
||||
@@ -239,7 +239,7 @@ function GeneralSection() {
|
||||
</SettingRow>
|
||||
|
||||
{/* Version */}
|
||||
<SettingRow label="App Version" description="Current version of Stirling Image">
|
||||
<SettingRow label="App Version" description="Current version of ashim">
|
||||
<span className="text-sm font-mono text-muted-foreground">{APP_VERSION}</span>
|
||||
</SettingRow>
|
||||
</div>
|
||||
@@ -260,7 +260,7 @@ function SystemSection() {
|
||||
.catch(() => {
|
||||
// Fallback defaults if endpoint not ready
|
||||
setSettings({
|
||||
appName: "Stirling Image",
|
||||
appName: "ashim",
|
||||
fileUploadLimitMb: "100",
|
||||
defaultTheme: "system",
|
||||
defaultLocale: "en",
|
||||
@@ -1184,7 +1184,7 @@ function ApiKeysSection() {
|
||||
<div>
|
||||
<h3 className="text-lg font-semibold text-foreground">API Keys</h3>
|
||||
<p className="text-sm text-muted-foreground mt-1">
|
||||
Manage API keys for programmatic access to Stirling Image.
|
||||
Manage API keys for programmatic access to ashim.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
@@ -1708,7 +1708,7 @@ function AboutSection() {
|
||||
<div className="flex items-center gap-3">
|
||||
<GemLogo className="h-8 w-8 text-primary" />
|
||||
<div className="text-2xl font-bold text-foreground">
|
||||
Stirling <span className="text-primary">Image</span>
|
||||
<span className="text-primary">ashim</span>
|
||||
</div>
|
||||
</div>
|
||||
<p className="text-sm text-muted-foreground">
|
||||
@@ -1725,7 +1725,7 @@ function AboutSection() {
|
||||
<h4 className="text-sm font-medium text-foreground">Links</h4>
|
||||
<div className="flex flex-col gap-1.5">
|
||||
<a
|
||||
href="https://github.com/stirling-image/stirling-image"
|
||||
href="https://github.com/ashim-hq/ashim"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
className="text-sm text-primary hover:underline"
|
||||
@@ -1733,7 +1733,7 @@ function AboutSection() {
|
||||
GitHub Repository
|
||||
</a>
|
||||
<a
|
||||
href="https://stirling-image.github.io/stirling-image/"
|
||||
href="https://ashim-hq.github.io/ashim/"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
className="text-sm text-primary hover:underline"
|
||||
|
||||
@@ -106,7 +106,7 @@ function UploadArea() {
|
||||
>
|
||||
<div className="flex flex-col items-center gap-4 p-8">
|
||||
<div className="text-3xl font-bold text-muted-foreground/30">
|
||||
Stirling <span className="text-primary/30">Image</span>
|
||||
<span className="text-primary/30">ashim</span>
|
||||
</div>
|
||||
<button
|
||||
type="button"
|
||||
|
||||
@@ -105,9 +105,9 @@ export function ColorControls({
|
||||
if (exposure !== 0) parts.push(`brightness(${1 + exposure / 200})`);
|
||||
if (saturation !== 0) parts.push(`saturate(${1 + saturation / 100})`);
|
||||
if (hue !== 0) parts.push(`hue-rotate(${hue}deg)`);
|
||||
if (hasTempTint) parts.push("url(#stirling-temp-tint-filter)");
|
||||
if (hasChannelChanges) parts.push("url(#stirling-channel-filter)");
|
||||
if (sharpness > 0) parts.push("url(#stirling-sharpen-filter)");
|
||||
if (hasTempTint) parts.push("url(#ashim-temp-tint-filter)");
|
||||
if (hasChannelChanges) parts.push("url(#ashim-channel-filter)");
|
||||
if (sharpness > 0) parts.push("url(#ashim-sharpen-filter)");
|
||||
if (effect === "grayscale") parts.push("grayscale(1)");
|
||||
if (effect === "sepia") parts.push("sepia(1)");
|
||||
if (effect === "invert") parts.push("invert(1)");
|
||||
@@ -150,7 +150,7 @@ export function ColorControls({
|
||||
{/* Hidden SVG filters for live preview */}
|
||||
{hasTempTint && (
|
||||
<svg width="0" height="0" style={{ position: "absolute" }}>
|
||||
<filter id="stirling-temp-tint-filter" colorInterpolationFilters="sRGB">
|
||||
<filter id="ashim-temp-tint-filter" colorInterpolationFilters="sRGB">
|
||||
<feColorMatrix
|
||||
type="matrix"
|
||||
values={`${1 + tempT * 0.15 + tintN * 0.1} 0 0 0 0 0 ${1 + tempT * 0.05 - tintN * 0.15} 0 0 0 0 0 ${1 - tempT * 0.15 + tintN * 0.1} 0 0 0 0 0 1 0`}
|
||||
@@ -160,7 +160,7 @@ export function ColorControls({
|
||||
)}
|
||||
{hasChannelChanges && (
|
||||
<svg width="0" height="0" style={{ position: "absolute" }}>
|
||||
<filter id="stirling-channel-filter" colorInterpolationFilters="sRGB">
|
||||
<filter id="ashim-channel-filter" colorInterpolationFilters="sRGB">
|
||||
<feColorMatrix
|
||||
type="matrix"
|
||||
values={`${red / 100} 0 0 0 0 0 ${green / 100} 0 0 0 0 0 ${blue / 100} 0 0 0 0 0 1 0`}
|
||||
@@ -170,7 +170,7 @@ export function ColorControls({
|
||||
)}
|
||||
{sharpness > 0 && (
|
||||
<svg width="0" height="0" style={{ position: "absolute" }}>
|
||||
<filter id="stirling-sharpen-filter" colorInterpolationFilters="sRGB">
|
||||
<filter id="ashim-sharpen-filter" colorInterpolationFilters="sRGB">
|
||||
<feConvolveMatrix
|
||||
order="3"
|
||||
preserveAlpha="true"
|
||||
|
||||
@@ -216,10 +216,10 @@ export function ImageEnhancementControls({
|
||||
parts.push(`saturate(${1 + adj / 100})`);
|
||||
}
|
||||
if (toggles.whiteBalance && Math.abs(c.temperature) > 2) {
|
||||
parts.push("url(#stirling-enhance-temp-filter)");
|
||||
parts.push("url(#ashim-enhance-temp-filter)");
|
||||
}
|
||||
if (toggles.sharpness && c.sharpness > 2) {
|
||||
parts.push("url(#stirling-enhance-sharpen-filter)");
|
||||
parts.push("url(#ashim-enhance-sharpen-filter)");
|
||||
}
|
||||
|
||||
onPreviewFilter(parts.join(" "));
|
||||
@@ -245,7 +245,7 @@ export function ImageEnhancementControls({
|
||||
{/* Hidden SVG filters for preview */}
|
||||
{toggles.whiteBalance && Math.abs(tempAdj) > 0.02 && (
|
||||
<svg width="0" height="0" style={{ position: "absolute" }}>
|
||||
<filter id="stirling-enhance-temp-filter" colorInterpolationFilters="sRGB">
|
||||
<filter id="ashim-enhance-temp-filter" colorInterpolationFilters="sRGB">
|
||||
<feColorMatrix
|
||||
type="matrix"
|
||||
values={`${1 + tempAdj * 0.15} 0 0 0 0 0 ${1 + tempAdj * 0.05} 0 0 0 0 0 ${1 - tempAdj * 0.15} 0 0 0 0 0 1 0`}
|
||||
@@ -255,7 +255,7 @@ export function ImageEnhancementControls({
|
||||
)}
|
||||
{toggles.sharpness && sharpAdj > 0.02 && (
|
||||
<svg width="0" height="0" style={{ position: "absolute" }}>
|
||||
<filter id="stirling-enhance-sharpen-filter" colorInterpolationFilters="sRGB">
|
||||
<filter id="ashim-enhance-sharpen-filter" colorInterpolationFilters="sRGB">
|
||||
<feConvolveMatrix
|
||||
order="3"
|
||||
preserveAlpha="true"
|
||||
|
||||
@@ -3,7 +3,7 @@ import {
|
||||
type PassportDocumentSpec,
|
||||
type PassportRegion,
|
||||
type PassportSpec,
|
||||
} from "@stirling-image/shared";
|
||||
} from "@ashim/shared";
|
||||
import {
|
||||
Check,
|
||||
ChevronDown,
|
||||
|
||||
@@ -14,7 +14,7 @@ import {
|
||||
verticalListSortingStrategy,
|
||||
} from "@dnd-kit/sortable";
|
||||
import { CSS } from "@dnd-kit/utilities";
|
||||
import { TOOLS } from "@stirling-image/shared";
|
||||
import { TOOLS } from "@ashim/shared";
|
||||
import * as icons from "lucide-react";
|
||||
import { GripVertical, Plus, X } from "lucide-react";
|
||||
import { useEffect, useMemo, useState } from "react";
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { SOCIAL_MEDIA_PRESETS } from "@stirling-image/shared";
|
||||
import { SOCIAL_MEDIA_PRESETS } from "@ashim/shared";
|
||||
import { Download, Info, Link, Unlink } from "lucide-react";
|
||||
import { useCallback, useEffect, useRef, useState } from "react";
|
||||
import { ProgressCard } from "@/components/common/progress-card";
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { SMART_CROP_FACE_PRESETS, SOCIAL_MEDIA_PRESETS } from "@stirling-image/shared";
|
||||
import { SMART_CROP_FACE_PRESETS, SOCIAL_MEDIA_PRESETS } from "@ashim/shared";
|
||||
import { ArrowLeftRight, Info } from "lucide-react";
|
||||
import { useEffect, useRef, useState } from "react";
|
||||
import { ProgressCard } from "@/components/common/progress-card";
|
||||
|
||||
Reference in New Issue
Block a user