diff --git a/public/i18n/literals/zh-CN.json b/public/i18n/literals/zh-CN.json index 8459ae22..5a53d7a4 100644 --- a/public/i18n/literals/zh-CN.json +++ b/public/i18n/literals/zh-CN.json @@ -402,7 +402,6 @@ "Docs": "文档", "Documentation": "文档", "Domain:": "域名:", - "Donate": "捐赠", "Done": "完成", "Download": "下载", "Download Backup": "下载备份", diff --git a/src/app/(dashboard)/dashboard/profile/page.js b/src/app/(dashboard)/dashboard/profile/page.js index f6fa6df7..02524a35 100644 --- a/src/app/(dashboard)/dashboard/profile/page.js +++ b/src/app/(dashboard)/dashboard/profile/page.js @@ -491,7 +491,7 @@ export default function ProfilePage() { {/* App Info */}
{APP_CONFIG.name} v{APP_CONFIG.version}
+{APP_CONFIG.name}
Local Mode - All data stored on your machine
The unified endpoint for AI generation. Connect, route, and manage your AI providers with ease.
++ Forked from the official 9Router project and remade by Nezumi. +
© 2025 9Router. All rights reserved.
+© 2026 9Router (Remake). Remade by Nezumi.
Forked from the official 9Router project and remade by Nezumi.
{authMode === "oidc" && oidcConfigured ? "Sign in with your OIDC provider to access the dashboard" diff --git a/src/app/manifest.js b/src/app/manifest.js index 6ad46da7..81cd9b03 100644 --- a/src/app/manifest.js +++ b/src/app/manifest.js @@ -1,8 +1,8 @@ export default function manifest() { return { - name: '9Router - AI Infrastructure Management', - short_name: '9Router', - description: 'One endpoint for all your AI providers. Manage keys, monitor usage, and scale effortlessly.', + name: '9Router (Remake) - AI Infrastructure Management', + short_name: '9Router (Remake)', + description: 'A Nezumi remake forked from the official 9Router project. Manage AI providers through one endpoint.', start_url: '/', display: 'standalone', background_color: '#0a0a0a', diff --git a/src/shared/components/DonateModal.js b/src/shared/components/DonateModal.js deleted file mode 100644 index bf1e9af5..00000000 --- a/src/shared/components/DonateModal.js +++ /dev/null @@ -1,136 +0,0 @@ -"use client"; - -import { useEffect, useState, useRef } from "react"; -import { createPortal } from "react-dom"; -import PropTypes from "prop-types"; -import { GITHUB_CONFIG } from "@/shared/constants/config"; - -export default function DonateModal({ isOpen, onClose }) { - const [data, setData] = useState(null); - const [loading, setLoading] = useState(false); - const [error, setError] = useState(""); - const modalRef = useRef(null); - - useEffect(() => { - if (!isOpen || data) return; - setLoading(true); - setError(""); - fetch(GITHUB_CONFIG.donateUrl, { cache: "no-store" }) - .then((res) => { - if (!res.ok) throw new Error(`HTTP ${res.status}`); - return res.json(); - }) - .then((json) => setData(json)) - .catch((err) => setError(err.message || "Failed to load")) - .finally(() => setLoading(false)); - }, [isOpen, data]); - - useEffect(() => { - const handleClickOutside = (e) => { - if (modalRef.current && !modalRef.current.contains(e.target)) onClose(); - }; - if (isOpen) { - document.addEventListener("mousedown", handleClickOutside); - return () => document.removeEventListener("mousedown", handleClickOutside); - } - }, [isOpen, onClose]); - - if (!isOpen || typeof document === "undefined") return null; - - return createPortal( -
{data.message}
- )} -