diff --git a/frontend/index.html b/frontend/index.html
index 3180a5fb..18c64a0e 100644
--- a/frontend/index.html
+++ b/frontend/index.html
@@ -4,7 +4,7 @@
-
Sub2API - AI API Gateway
+ FireflyAPI - AI API Gateway
diff --git a/frontend/src/components/common/VersionBadge.vue b/frontend/src/components/common/VersionBadge.vue
index d4937156..5a56ff46 100644
--- a/frontend/src/components/common/VersionBadge.vue
+++ b/frontend/src/components/common/VersionBadge.vue
@@ -1,555 +1,11 @@
-
-
-
-
-
-
-
-
-
-
- {{
- t('version.currentVersion')
- }}
-
-
-
-
-
-
-
-
-
-
-
-
-
v{{ currentVersion }}
-
--
-
-
-
-
-
-
- {{
- hasUpdate
- ? t('version.latestVersion') + ': v' + latestVersion
- : t('version.upToDate')
- }}
-
-
-
-
-
-
-
-
-
-
-
- {{ t('version.updateFailed') }}
-
-
- {{ updateError }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ t('version.updateComplete') }}
-
-
- {{ t('version.restartRequired') }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ t('version.updateAvailable') }}
-
-
- v{{ latestVersion }}
-
-
-
-
-
-
-
-
-
- {{ t('version.viewChangelog') }}
-
-
-
-
-
-
-
- {{ t('version.viewRelease') }}
-
-
-
-
-
-
-
-
-
- v{{ version }}
-
-
+
+ v{{ version }}
+
-
-
diff --git a/frontend/src/components/layout/AppHeader.vue b/frontend/src/components/layout/AppHeader.vue
index a6b4030f..47ff4e37 100644
--- a/frontend/src/components/layout/AppHeader.vue
+++ b/frontend/src/components/layout/AppHeader.vue
@@ -122,22 +122,6 @@
{{ t('nav.apiKeys') }}
-
-
- {{ t('nav.github') }}
-
diff --git a/frontend/src/components/layout/AuthLayout.vue b/frontend/src/components/layout/AuthLayout.vue
index 3cfc1d4d..e043295d 100644
--- a/frontend/src/components/layout/AuthLayout.vue
+++ b/frontend/src/components/layout/AuthLayout.vue
@@ -65,7 +65,7 @@ import { ref, computed, onMounted } from 'vue'
import { getPublicSettings } from '@/api/auth'
import { sanitizeUrl } from '@/utils/url'
-const siteName = ref('Sub2API')
+const siteName = ref('FireflyAPI')
const siteLogo = ref('')
const siteSubtitle = ref('Subscription to API Conversion Platform')
@@ -74,7 +74,7 @@ const currentYear = computed(() => new Date().getFullYear())
onMounted(async () => {
try {
const settings = await getPublicSettings()
- siteName.value = settings.site_name || 'Sub2API'
+ siteName.value = settings.site_name || 'FireflyAPI'
siteLogo.value = sanitizeUrl(settings.site_logo || '', { allowRelative: true })
siteSubtitle.value = settings.site_subtitle || 'Subscription to API Conversion Platform'
} catch (error) {
diff --git a/frontend/src/i18n/locales/en.ts b/frontend/src/i18n/locales/en.ts
index 34b58458..d6f02de2 100644
--- a/frontend/src/i18n/locales/en.ts
+++ b/frontend/src/i18n/locales/en.ts
@@ -43,8 +43,8 @@ export default {
// Setup Wizard
setup: {
- title: 'Sub2API Setup',
- description: 'Configure your Sub2API instance',
+ title: 'FireflyAPI Setup',
+ description: 'Configure your FireflyAPI instance',
database: {
title: 'Database Configuration',
description: 'Connect to your PostgreSQL database',
@@ -3066,7 +3066,7 @@ export default {
secretKeyConfiguredHint: 'Secret key configured. Leave empty to keep the current value.' },
linuxdo: {
title: 'LinuxDo Connect Login',
- description: 'Configure LinuxDo Connect OAuth for Sub2API end-user login',
+ description: 'Configure LinuxDo Connect OAuth for FireflyAPI end-user login',
enable: 'Enable LinuxDo Login',
enableHint: 'Show LinuxDo login on the login/register pages',
clientId: 'Client ID',
@@ -3096,7 +3096,7 @@ export default {
title: 'Site Settings',
description: 'Customize site branding',
siteName: 'Site Name',
- siteNamePlaceholder: 'Sub2API',
+ siteNamePlaceholder: 'FireflyAPI',
siteNameHint: 'Displayed in emails and page titles',
siteSubtitle: 'Site Subtitle',
siteSubtitlePlaceholder: 'Subscription to API Conversion Platform',
@@ -3155,7 +3155,7 @@ export default {
fromEmail: 'From Email',
fromEmailPlaceholder: "noreply{'@'}example.com",
fromName: 'From Name',
- fromNamePlaceholder: 'Sub2API',
+ fromNamePlaceholder: 'FireflyAPI',
useTls: 'Use TLS',
useTlsHint: 'Enable TLS encryption for SMTP connection'
},
@@ -3434,14 +3434,14 @@ export default {
// Admin tour steps
admin: {
welcome: {
- title: '👋 Welcome to Sub2API',
- description: 'Sub2API is a powerful AI service gateway platform that helps you easily manage and distribute AI services.
🎯 Core Features:
- 📦 Group Management - Create service tiers (VIP, Free Trial, etc.)
- 🔗 Account Pool - Connect multiple upstream AI service accounts
- 🔑 Key Distribution - Generate independent API Keys for users
- 💰 Billing Control - Flexible rate and quota management
Let\'s complete the initial setup in 3 minutes →
',
+ title: '👋 Welcome to FireflyAPI',
+ description: 'FireflyAPI is a powerful AI service gateway platform that helps you easily manage and distribute AI services.
🎯 Core Features:
- 📦 Group Management - Create service tiers (VIP, Free Trial, etc.)
- 🔗 Account Pool - Connect multiple upstream AI service accounts
- 🔑 Key Distribution - Generate independent API Keys for users
- 💰 Billing Control - Flexible rate and quota management
Let\'s complete the initial setup in 3 minutes →
',
nextBtn: 'Start Setup 🚀',
prevBtn: 'Skip'
},
groupManage: {
title: '📦 Step 1: Group Management',
- description: 'What is a Group?
Groups are the core concept of Sub2API, like a "service package":
- 🎯 Each group can contain multiple upstream accounts
- 💰 Each group has independent billing multiplier
- 👥 Can be set as public or exclusive
💡 Example: You can create "VIP Premium" (high rate) and "Free Trial" (low rate) groups
👉 Click "Group Management" on the left sidebar
'
+ description: 'What is a Group?
Groups are the core concept of FireflyAPI, like a "service package":
- 🎯 Each group can contain multiple upstream accounts
- 💰 Each group has independent billing multiplier
- 👥 Can be set as public or exclusive
💡 Example: You can create "VIP Premium" (high rate) and "Free Trial" (low rate) groups
👉 Click "Group Management" on the left sidebar
'
},
createGroup: {
title: '➕ Create New Group',
@@ -3534,8 +3534,8 @@ export default {
// User tour steps
user: {
welcome: {
- title: '👋 Welcome to Sub2API',
- description: 'Hello! Welcome to the Sub2API AI service platform.
🎯 Quick Start:
- 🔑 Create API Key
- 📋 Copy key to your application
- 🚀 Start using AI services
Just 1 minute, let\'s get started →
',
+ title: '👋 Welcome to FireflyAPI',
+ description: 'Hello! Welcome to the FireflyAPI AI service platform.
🎯 Quick Start:
- 🔑 Create API Key
- 📋 Copy key to your application
- 🚀 Start using AI services
Just 1 minute, let\'s get started →
',
nextBtn: 'Start 🚀',
prevBtn: 'Skip'
},
diff --git a/frontend/src/i18n/locales/zh.ts b/frontend/src/i18n/locales/zh.ts
index 85f76b3b..f28d73d2 100644
--- a/frontend/src/i18n/locales/zh.ts
+++ b/frontend/src/i18n/locales/zh.ts
@@ -40,8 +40,8 @@ export default {
// Setup Wizard
setup: {
- title: 'Sub2API 安装向导',
- description: '配置您的 Sub2API 实例',
+ title: 'FireflyAPI 安装向导',
+ description: '配置您的 FireflyAPI 实例',
database: {
title: '数据库配置',
description: '连接到您的 PostgreSQL 数据库',
@@ -3237,7 +3237,7 @@ export default {
},
linuxdo: {
title: 'LinuxDo Connect 登录',
- description: '配置 LinuxDo Connect OAuth,用于 Sub2API 用户登录',
+ description: '配置 LinuxDo Connect OAuth,用于 FireflyAPI 用户登录',
enable: '启用 LinuxDo 登录',
enableHint: '在登录/注册页面显示 LinuxDo 登录入口',
clientId: 'Client ID',
@@ -3267,7 +3267,7 @@ export default {
description: '自定义站点品牌',
siteName: '站点名称',
siteNameHint: '显示在邮件和页面标题中',
- siteNamePlaceholder: 'Sub2API',
+ siteNamePlaceholder: 'FireflyAPI',
siteSubtitle: '站点副标题',
siteSubtitleHint: '显示在登录和注册页面',
siteSubtitlePlaceholder: '订阅转 API 转换平台',
@@ -3327,7 +3327,7 @@ export default {
fromEmail: '发件人邮箱',
fromEmailPlaceholder: "noreply{'@'}example.com",
fromName: '发件人名称',
- fromNamePlaceholder: 'Sub2API',
+ fromNamePlaceholder: 'FireflyAPI',
useTls: '使用 TLS',
useTlsHint: '为 SMTP 连接启用 TLS 加密'
},
@@ -3603,16 +3603,16 @@ export default {
// Admin tour steps
admin: {
welcome: {
- title: '👋 欢迎使用 Sub2API',
+ title: '👋 欢迎使用 FireflyAPI',
description:
- 'Sub2API 是一个强大的 AI 服务中转平台,让您轻松管理和分发 AI 服务。
🎯 核心功能:
- 📦 分组管理 - 创建不同的服务套餐(VIP、免费试用等)
- 🔗 账号池 - 连接多个上游 AI 服务商账号
- 🔑 密钥分发 - 为用户生成独立的 API Key
- 💰 计费管理 - 灵活的费率和配额控制
接下来,我们将用 3 分钟带您完成首次配置 →
',
+ 'FireflyAPI 是一个强大的 AI 服务中转平台,让您轻松管理和分发 AI 服务。
🎯 核心功能:
- 📦 分组管理 - 创建不同的服务套餐(VIP、免费试用等)
- 🔗 账号池 - 连接多个上游 AI 服务商账号
- 🔑 密钥分发 - 为用户生成独立的 API Key
- 💰 计费管理 - 灵活的费率和配额控制
接下来,我们将用 3 分钟带您完成首次配置 →
',
nextBtn: '开始配置 🚀',
prevBtn: '跳过'
},
groupManage: {
title: '📦 第一步:分组管理',
description:
- '什么是分组?
分组是 Sub2API 的核心概念,它就像一个"服务套餐":
- 🎯 每个分组可以包含多个上游账号
- 💰 每个分组有独立的计费倍率
- 👥 可以设置为公开或专属分组
💡 示例:您可以创建"VIP专线"(高倍率)和"免费试用"(低倍率)两个分组
👉 点击左侧的"分组管理"开始
'
+ '什么是分组?
分组是 FireflyAPI 的核心概念,它就像一个"服务套餐":
- 🎯 每个分组可以包含多个上游账号
- 💰 每个分组有独立的计费倍率
- 👥 可以设置为公开或专属分组
💡 示例:您可以创建"VIP专线"(高倍率)和"免费试用"(低倍率)两个分组
👉 点击左侧的"分组管理"开始
'
},
createGroup: {
title: '➕ 创建新分组',
@@ -3724,9 +3724,9 @@ export default {
// User tour steps
user: {
welcome: {
- title: '👋 欢迎使用 Sub2API',
+ title: '👋 欢迎使用 FireflyAPI',
description:
- '您好!欢迎来到 Sub2API AI 服务平台。
🎯 快速开始:
- 🔑 创建 API 密钥
- 📋 复制密钥到您的应用
- 🚀 开始使用 AI 服务
只需 1 分钟,让我们开始吧 →
',
+ '您好!欢迎来到 FireflyAPI AI 服务平台。
🎯 快速开始:
- 🔑 创建 API 密钥
- 📋 复制密钥到您的应用
- 🚀 开始使用 AI 服务
只需 1 分钟,让我们开始吧 →
',
nextBtn: '开始 🚀',
prevBtn: '跳过'
},
diff --git a/frontend/src/main.ts b/frontend/src/main.ts
index 11c0b1e8..83ca6007 100644
--- a/frontend/src/main.ts
+++ b/frontend/src/main.ts
@@ -16,7 +16,7 @@ const appStore = useAppStore()
appStore.initFromInjectedConfig()
// Set document title immediately after config is loaded
-if (appStore.siteName && appStore.siteName !== 'Sub2API') {
+if (appStore.siteName && appStore.siteName !== 'FireflyAPI') {
document.title = `${appStore.siteName} - AI API Gateway`
}
diff --git a/frontend/src/router/index.ts b/frontend/src/router/index.ts
index 4bb46cee..b326fe5a 100644
--- a/frontend/src/router/index.ts
+++ b/frontend/src/router/index.ts
@@ -389,7 +389,7 @@ router.beforeEach((to, _from, next) => {
// Set page title
const appStore = useAppStore()
- const siteName = appStore.siteName || 'Sub2API'
+ const siteName = appStore.siteName || 'FireflyAPI'
if (to.meta.title) {
document.title = `${to.meta.title} - ${siteName}`
} else {
diff --git a/frontend/src/stores/app.ts b/frontend/src/stores/app.ts
index 0abf5a53..52de6aeb 100644
--- a/frontend/src/stores/app.ts
+++ b/frontend/src/stores/app.ts
@@ -24,7 +24,7 @@ export const useAppStore = defineStore('app', () => {
// Public settings cache state
const publicSettingsLoaded = ref(false)
const publicSettingsLoading = ref(false)
- const siteName = ref('Sub2API')
+ const siteName = ref('FireflyAPI')
const siteLogo = ref('')
const siteVersion = ref('')
const contactInfo = ref('')
@@ -284,7 +284,7 @@ export const useAppStore = defineStore('app', () => {
*/
function applySettings(config: PublicSettings): void {
cachedPublicSettings.value = config
- siteName.value = config.site_name || 'Sub2API'
+ siteName.value = config.site_name || 'FireflyAPI'
siteLogo.value = config.site_logo || ''
siteVersion.value = config.version || ''
contactInfo.value = config.contact_info || ''
diff --git a/frontend/src/views/HomeView.vue b/frontend/src/views/HomeView.vue
index 6a3753f1..d5dd1b9e 100644
--- a/frontend/src/views/HomeView.vue
+++ b/frontend/src/views/HomeView.vue
@@ -390,14 +390,6 @@
>
{{ t('home.docs') }}
-
- GitHub
-
@@ -417,7 +409,7 @@ const authStore = useAuthStore()
const appStore = useAppStore()
// Site settings - directly from appStore (already initialized from injected config)
-const siteName = computed(() => appStore.cachedPublicSettings?.site_name || appStore.siteName || 'Sub2API')
+const siteName = computed(() => appStore.cachedPublicSettings?.site_name || appStore.siteName || 'FireflyAPI')
const siteLogo = computed(() => appStore.cachedPublicSettings?.site_logo || appStore.siteLogo || '')
const siteSubtitle = computed(() => appStore.cachedPublicSettings?.site_subtitle || 'AI API Gateway Platform')
const docUrl = computed(() => appStore.cachedPublicSettings?.doc_url || appStore.docUrl || '')
@@ -432,9 +424,6 @@ const isHomeContentUrl = computed(() => {
// Theme
const isDark = ref(document.documentElement.classList.contains('dark'))
-// GitHub URL
-const githubUrl = 'https://github.com/Wei-Shaw/sub2api'
-
// Auth state
const isAuthenticated = computed(() => authStore.isAuthenticated)
const isAdmin = computed(() => authStore.isAdmin)
diff --git a/frontend/src/views/admin/SettingsView.vue b/frontend/src/views/admin/SettingsView.vue
index 373025b9..98a1f679 100644
--- a/frontend/src/views/admin/SettingsView.vue
+++ b/frontend/src/views/admin/SettingsView.vue
@@ -1135,7 +1135,7 @@ const form = reactive({
totp_encryption_key_configured: false,
default_balance: 0,
default_concurrency: 1,
- site_name: 'Sub2API',
+ site_name: 'FireflyAPI',
site_logo: '',
site_subtitle: 'Subscription to API Conversion Platform',
api_base_url: '',
diff --git a/frontend/src/views/auth/EmailVerifyView.vue b/frontend/src/views/auth/EmailVerifyView.vue
index 7f797eb4..00b66a37 100644
--- a/frontend/src/views/auth/EmailVerifyView.vue
+++ b/frontend/src/views/auth/EmailVerifyView.vue
@@ -207,7 +207,7 @@ const hasRegisterData = ref(false)
// Public settings
const turnstileEnabled = ref(false)
const turnstileSiteKey = ref('')
-const siteName = ref('Sub2API')
+const siteName = ref('FireflyAPI')
// Turnstile for resend
const turnstileRef = ref | null>(null)
@@ -243,7 +243,7 @@ onMounted(async () => {
const settings = await getPublicSettings()
turnstileEnabled.value = settings.turnstile_enabled
turnstileSiteKey.value = settings.turnstile_site_key || ''
- siteName.value = settings.site_name || 'Sub2API'
+ siteName.value = settings.site_name || 'FireflyAPI'
} catch (error) {
console.error('Failed to load public settings:', error)
}
diff --git a/frontend/src/views/auth/RegisterView.vue b/frontend/src/views/auth/RegisterView.vue
index 53cfe0d1..69765175 100644
--- a/frontend/src/views/auth/RegisterView.vue
+++ b/frontend/src/views/auth/RegisterView.vue
@@ -317,7 +317,7 @@ const promoCodeEnabled = ref(true)
const invitationCodeEnabled = ref(false)
const turnstileEnabled = ref(false)
const turnstileSiteKey = ref('')
-const siteName = ref('Sub2API')
+const siteName = ref('FireflyAPI')
const linuxdoOAuthEnabled = ref(false)
// Turnstile
@@ -368,7 +368,7 @@ onMounted(async () => {
invitationCodeEnabled.value = settings.invitation_code_enabled
turnstileEnabled.value = settings.turnstile_enabled
turnstileSiteKey.value = settings.turnstile_site_key || ''
- siteName.value = settings.site_name || 'Sub2API'
+ siteName.value = settings.site_name || 'FireflyAPI'
linuxdoOAuthEnabled.value = settings.linuxdo_oauth_enabled
// Read promo code from URL parameter only if promo code is enabled
diff --git a/frontend/src/views/setup/SetupWizardView.vue b/frontend/src/views/setup/SetupWizardView.vue
index fcf5aa72..db701aa7 100644
--- a/frontend/src/views/setup/SetupWizardView.vue
+++ b/frontend/src/views/setup/SetupWizardView.vue
@@ -131,7 +131,7 @@
v-model="formData.database.dbname"
type="text"
class="input"
- placeholder="sub2api"
+ placeholder="fireflyapi"
/>
@@ -535,7 +535,7 @@ const formData = reactive({
port: 5432,
user: 'postgres',
password: '',
- dbname: 'sub2api',
+ dbname: 'fireflyapi',
sslmode: 'disable'
},
redis: {