refactor: 项目正式更名为 FrpcPilot,同步更新所有相关标识

本次修改将项目名称从 Frpilot 全面更改为 FrpcPilot,涉及:
- 应用名称、窗口标题、系统托盘提示、GitHub 仓库地址
- 包标识:npm 包名、Rust crate 名称、Tauri identifier
- 本地存储键前缀、数据库文件名、系统托盘 ID
- 文档、国际化文案、配置文件、代码注释等所有关联内容
This commit is contained in:
Yuhang Wu
2026-10-16 15:36:02 +08:00
parent 57b4d7be5a
commit 140c517191
33 changed files with 268 additions and 188 deletions
+1 -1
View File
@@ -2,7 +2,7 @@ import type { Update } from "@tauri-apps/plugin-updater"
import { isTauri } from "@/utils/window"
/** 项目 GitHub 仓库地址(与 tauri.conf.json 中 updater 端点保持一致) */
export const PROJECT_GITHUB_URL = "https://github.com/SparksFly91/Frpilot"
export const PROJECT_GITHUB_URL = "https://github.com/SparksFly91/FrpcPilot"
/**
* 检查是否有可用更新。
+1 -1
View File
@@ -9,7 +9,7 @@
alt=""
draggable="false"
/>
<span class="text-sm font-semibold tracking-wide">Frpilot</span>
<span class="text-sm font-semibold tracking-wide">FrpcPilot</span>
</div>
<!-- 右侧:语言 / 主题 / 设置 / 最小化 / 关闭(macOS 下隐藏最小化与关闭) -->
+2 -2
View File
@@ -6,7 +6,7 @@ import { useWindowStore } from "@/stores/window"
import { isTauri } from "@/utils/window"
/** 托盘图标固定 id(便于热更新 / 重载时清理残留的旧图标) */
const TRAY_ID = "frpilot-tray"
const TRAY_ID = "frpcpilot-tray"
/** 是否已初始化,避免重复创建托盘 */
let initialized = false
@@ -125,7 +125,7 @@ async function createTray() {
await TrayIcon.new({
id: TRAY_ID,
icon: icon ?? undefined,
tooltip: "Frpilot",
tooltip: "FrpcPilot",
menu,
// 左键点击直接显示窗口,右键才弹出菜单
showMenuOnLeftClick: false,
+7 -7
View File
@@ -1,6 +1,6 @@
{
"app": {
"name": "Frpilot",
"name": "FrpcPilot",
"description": "A visual client for frpc"
},
"titlebar": {
@@ -35,11 +35,11 @@
"quit": "Quit"
},
"closeDialog": {
"title": "Close Frpilot",
"title": "Close FrpcPilot",
"tray": "Minimize to system tray",
"trayDesc": "Keep Frpilot running in the background; reopen it from the system tray",
"trayDesc": "Keep FrpcPilot running in the background; reopen it from the system tray",
"exit": "Quit directly",
"exitDesc": "Stop the tunnel and exit Frpilot completely",
"exitDesc": "Stop the tunnel and exit FrpcPilot completely",
"behavior": "Close behavior",
"ask": "Ask every time",
"askDesc": "Show this dialog on every close and let you choose",
@@ -69,7 +69,7 @@
"clear": "Clear",
"mock": "Mock data",
"logEmpty": "No logs yet. Live logs will appear here once Frpc starts.",
"logReady": "Frpilot is ready. Waiting for Frpc to start.",
"logReady": "FrpcPilot is ready. Waiting for Frpc to start.",
"logStarted": "Frpc {version} started",
"logStopped": "Frpc stopped",
"logStartFailed": "Failed to start Frpc: {message}"
@@ -255,10 +255,10 @@
}
},
"about": {
"title": "About Frpilot",
"title": "About FrpcPilot",
"subtitle": "A lightweight, friendly visual client for frp",
"introTitle": "Introduction",
"intro": "Frpilot is a visual client for frp built with Tauri 2 + Vue 3 + TypeScript. Manage frpc versions, servers and tunnels through a friendly GUI — and say goodbye to hand-writing frpc.toml.",
"intro": "FrpcPilot is a visual client for frp built with Tauri 2 + Vue 3 + TypeScript. Manage frpc versions, servers and tunnels through a friendly GUI — and say goodbye to hand-writing frpc.toml.",
"flowTitle": "How to use",
"flow": {
"step1Title": "Download frpc",
+7 -7
View File
@@ -1,6 +1,6 @@
{
"app": {
"name": "Frpilot",
"name": "FrpcPilot",
"description": "Frpc 可视化客户端"
},
"titlebar": {
@@ -35,11 +35,11 @@
"quit": "退出"
},
"closeDialog": {
"title": "关闭 Frpilot",
"title": "关闭 FrpcPilot",
"tray": "最小化到系统托盘",
"trayDesc": "保持 Frpilot 在后台运行,可从系统托盘随时打开",
"trayDesc": "保持 FrpcPilot 在后台运行,可从系统托盘随时打开",
"exit": "直接退出",
"exitDesc": "停止穿透并完全退出 Frpilot",
"exitDesc": "停止穿透并完全退出 FrpcPilot",
"behavior": "关闭行为",
"ask": "每次询问",
"askDesc": "每次关闭都弹出此对话框,由你选择关闭方式",
@@ -69,7 +69,7 @@
"clear": "清空",
"mock": "模拟数据",
"logEmpty": "暂无日志,启动 Frpc 后将在此显示实时日志",
"logReady": "Frpilot 已就绪,等待启动 Frpc",
"logReady": "FrpcPilot 已就绪,等待启动 Frpc",
"logStarted": "已启动 Frpc {version}",
"logStopped": "已停止 Frpc",
"logStartFailed": "启动 Frpc 失败:{message}"
@@ -255,10 +255,10 @@
}
},
"about": {
"title": "关于 Frpilot",
"title": "关于 FrpcPilot",
"subtitle": "轻量、顺手的 frp 可视化桌面客户端",
"introTitle": "项目介绍",
"intro": "Frpilot 是一个基于 Tauri 2 + Vue 3 + TypeScript 打造的 frp 可视化客户端,帮你用图形界面管理 frpc 版本、服务器与隧道,从此告别手写 frpc.toml。",
"intro": "FrpcPilot 是一个基于 Tauri 2 + Vue 3 + TypeScript 打造的 frp 可视化客户端,帮你用图形界面管理 frpc 版本、服务器与隧道,从此告别手写 frpc.toml。",
"flowTitle": "使用流程",
"flow": {
"step1Title": "下载 frpc",
+5 -5
View File
@@ -16,11 +16,11 @@ export type RunStatus = "running" | "error" | "stopped"
*/
export const useAppStore = defineStore("app", () => {
// 语言(持久化到 localStorage)
const language = useStorage<Language>("frpilot:language", "zh-CN")
const language = useStorage<Language>("frpcpilot:language", "zh-CN")
// 明暗主题:useDark 会在 <html> 上切换 .dark 类名
const isDark = useDark({
storageKey: "frpilot:theme",
storageKey: "frpcpilot:theme",
selector: "html",
attribute: "class",
valueDark: "dark",
@@ -29,7 +29,7 @@ export const useAppStore = defineStore("app", () => {
const toggleDark = useToggle(isDark)
// 窗口背景图片(持久化)
const background = useStorage<BackgroundKey>("frpilot:background", DEFAULT_BACKGROUND)
const background = useStorage<BackgroundKey>("frpcpilot:background", DEFAULT_BACKGROUND)
const backgroundUrl = computed(() => getBackgroundUrl(background.value))
// 把背景图同步到 <html>(整窗背景,避免元素高度误差造成的上下留白)
@@ -46,8 +46,8 @@ export const useAppStore = defineStore("app", () => {
})
// 磨砂玻璃透明度(0 - 100,数值越大越透明,持久化)
const cardTransparency = useStorage<number>("frpilot:card-transparency", 55)
const modalTransparency = useStorage<number>("frpilot:modal-transparency", 38)
const cardTransparency = useStorage<number>("frpcpilot:card-transparency", 55)
const modalTransparency = useStorage<number>("frpcpilot:modal-transparency", 38)
/** 透明度百分比 → 背景 alpha(越大越透明,alpha 越小;并做范围兜底) */
function alphaFromTransparency(value: number) {
+1 -1
View File
@@ -20,7 +20,7 @@ export interface UpdateInfo {
*/
export const useUpdateStore = defineStore("update", () => {
/** 用户选择「忽略该版本」后持久化的版本号,静默检查时不再提示 */
const ignoredVersion = useStorage<string>("frpilot:ignored-update", "")
const ignoredVersion = useStorage<string>("frpcpilot:ignored-update", "")
const checking = ref(false)
const installing = ref(false)
+2 -2
View File
@@ -24,9 +24,9 @@ export const useWindowStore = defineStore("window", () => {
/** 关闭确认对话框是否打开 */
const closeConfirmOpen = ref(false)
/** 记住的关闭方式(弹窗默认选中项;「保持以上选择」时直接生效,持久化) */
const closeChoice = useStorage<CloseChoice>("frpilot:close-choice", "tray")
const closeChoice = useStorage<CloseChoice>("frpcpilot:close-choice", "tray")
/** 关闭行为:每次询问 / 保持以上选择(持久化,默认每次询问) */
const closeBehavior = useStorage<CloseBehavior>("frpilot:close-behavior", "ask")
const closeBehavior = useStorage<CloseBehavior>("frpcpilot:close-behavior", "ask")
/** 是否正在退出(停止穿透 + 退出软件) */
const quitting = ref(false)
+2 -2
View File
@@ -72,9 +72,9 @@ const loading = ref(false)
const importing = ref(false)
/** 是否展示所有架构的 Frpc */
const showAllArchFrpc = useStorage("frpilot:frp:allArchFrpc", false)
const showAllArchFrpc = useStorage("frpcpilot:frp:allArchFrpc", false)
/** 是否作为 frp 下载器展示所有架构的 Frps */
const showAllArchFrps = useStorage("frpilot:frp:allArchFrps", false)
const showAllArchFrps = useStorage("frpcpilot:frp:allArchFrps", false)
/** 后端返回的全部发行包(含所有架构) */
const allReleases = ref<FrpRelease[]>([])
+1 -1
View File
@@ -29,7 +29,7 @@
<div class="flex items-center gap-3">
<GithubOutlined class="text-2xl" />
<div class="min-w-0 flex-1">
<div class="truncate text-sm font-medium">SparksFly91 / Frpilot</div>
<div class="truncate text-sm font-medium">SparksFly91 / FrpcPilot</div>
<div class="truncate text-xs opacity-60">{{ PROJECT_GITHUB_URL }}</div>
</div>
<a-button type="primary" size="small" :icon="h(LinkOutlined)" @click="onOpenRepo">