1111
Some checks failed
Build Multi-Platform Binaries / build-binaries (amd64, darwin, server, false) (push) Has been cancelled
Build Multi-Platform Binaries / build-binaries (amd64, linux, client, true) (push) Has been cancelled
Build Multi-Platform Binaries / build-binaries (amd64, linux, server, true) (push) Has been cancelled
Build Multi-Platform Binaries / build-binaries (amd64, windows, client, true) (push) Has been cancelled
Build Multi-Platform Binaries / build-binaries (amd64, windows, server, true) (push) Has been cancelled
Build Multi-Platform Binaries / build-binaries (arm, 7, linux, client, true) (push) Has been cancelled
Build Multi-Platform Binaries / build-binaries (arm, 7, linux, server, true) (push) Has been cancelled
Build Multi-Platform Binaries / build-binaries (arm64, darwin, server, false) (push) Has been cancelled
Build Multi-Platform Binaries / build-binaries (arm64, linux, client, true) (push) Has been cancelled
Build Multi-Platform Binaries / build-binaries (arm64, linux, server, true) (push) Has been cancelled
Build Multi-Platform Binaries / build-binaries (arm64, windows, server, false) (push) Has been cancelled
Build Multi-Platform Binaries / build-frontend (push) Has been cancelled
Some checks failed
Build Multi-Platform Binaries / build-binaries (amd64, darwin, server, false) (push) Has been cancelled
Build Multi-Platform Binaries / build-binaries (amd64, linux, client, true) (push) Has been cancelled
Build Multi-Platform Binaries / build-binaries (amd64, linux, server, true) (push) Has been cancelled
Build Multi-Platform Binaries / build-binaries (amd64, windows, client, true) (push) Has been cancelled
Build Multi-Platform Binaries / build-binaries (amd64, windows, server, true) (push) Has been cancelled
Build Multi-Platform Binaries / build-binaries (arm, 7, linux, client, true) (push) Has been cancelled
Build Multi-Platform Binaries / build-binaries (arm, 7, linux, server, true) (push) Has been cancelled
Build Multi-Platform Binaries / build-binaries (arm64, darwin, server, false) (push) Has been cancelled
Build Multi-Platform Binaries / build-binaries (arm64, linux, client, true) (push) Has been cancelled
Build Multi-Platform Binaries / build-binaries (arm64, linux, server, true) (push) Has been cancelled
Build Multi-Platform Binaries / build-binaries (arm64, windows, server, false) (push) Has been cancelled
Build Multi-Platform Binaries / build-frontend (push) Has been cancelled
This commit is contained in:
@@ -141,8 +141,8 @@ jobs:
|
|||||||
zip gotunnel-server-${VERSION}-windows-amd64.zip gotunnel-server-windows-amd64.exe
|
zip gotunnel-server-${VERSION}-windows-amd64.zip gotunnel-server-windows-amd64.exe
|
||||||
zip gotunnel-client-${VERSION}-windows-amd64.zip gotunnel-client-windows-amd64.exe
|
zip gotunnel-client-${VERSION}-windows-amd64.zip gotunnel-client-windows-amd64.exe
|
||||||
|
|
||||||
# Clean up raw binaries
|
# Clean up raw binaries, keep only archives and checksums
|
||||||
rm gotunnel-server-* gotunnel-client-* 2>/dev/null || true
|
find . -type f ! -name "*.tar.gz" ! -name "*.zip" ! -name "SHA256SUMS" -delete
|
||||||
|
|
||||||
cd ..
|
cd ..
|
||||||
|
|
||||||
|
|||||||
@@ -4,11 +4,11 @@ import { RouterView, useRouter, useRoute } from 'vue-router'
|
|||||||
import {
|
import {
|
||||||
NLayout, NLayoutHeader, NLayoutContent, NLayoutSider, NMenu,
|
NLayout, NLayoutHeader, NLayoutContent, NLayoutSider, NMenu,
|
||||||
NButton, NIcon, NConfigProvider, NMessageProvider,
|
NButton, NIcon, NConfigProvider, NMessageProvider,
|
||||||
NDialogProvider, NGlobalStyle, type GlobalThemeOverrides
|
NDialogProvider, NGlobalStyle, NDropdown, NAvatar, type GlobalThemeOverrides
|
||||||
} from 'naive-ui'
|
} from 'naive-ui'
|
||||||
import {
|
import {
|
||||||
HomeOutline, ExtensionPuzzleOutline, LogOutOutline,
|
HomeOutline, ExtensionPuzzleOutline, LogOutOutline,
|
||||||
ServerOutline, MenuOutline
|
ServerOutline, MenuOutline, PersonCircleOutline
|
||||||
} from '@vicons/ionicons5'
|
} from '@vicons/ionicons5'
|
||||||
import type { MenuOption } from 'naive-ui'
|
import type { MenuOption } from 'naive-ui'
|
||||||
import { getServerStatus, removeToken, getToken } from './api'
|
import { getServerStatus, removeToken, getToken } from './api'
|
||||||
@@ -69,6 +69,21 @@ const logout = () => {
|
|||||||
router.push('/login')
|
router.push('/login')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// User dropdown menu options
|
||||||
|
const userDropdownOptions = [
|
||||||
|
{
|
||||||
|
label: '退出登录',
|
||||||
|
key: 'logout',
|
||||||
|
icon: () => h(NIcon, null, { default: () => h(LogOutOutline) })
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
const handleUserDropdown = (key: string) => {
|
||||||
|
if (key === 'logout') {
|
||||||
|
logout()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Theme Overrides
|
// Theme Overrides
|
||||||
const themeOverrides: GlobalThemeOverrides = {
|
const themeOverrides: GlobalThemeOverrides = {
|
||||||
common: {
|
common: {
|
||||||
@@ -131,10 +146,13 @@ const themeOverrides: GlobalThemeOverrides = {
|
|||||||
<template #icon><n-icon><MenuOutline /></n-icon></template>
|
<template #icon><n-icon><MenuOutline /></n-icon></template>
|
||||||
</n-button>
|
</n-button>
|
||||||
<div class="header-right">
|
<div class="header-right">
|
||||||
<n-button quaternary @click="logout">
|
<n-dropdown :options="userDropdownOptions" @select="handleUserDropdown">
|
||||||
<template #icon><n-icon><LogOutOutline /></n-icon></template>
|
<n-button quaternary circle size="large">
|
||||||
Logout
|
<template #icon>
|
||||||
|
<n-icon size="24"><PersonCircleOutline /></n-icon>
|
||||||
|
</template>
|
||||||
</n-button>
|
</n-button>
|
||||||
|
</n-dropdown>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</n-layout-header>
|
</n-layout-header>
|
||||||
|
|||||||
@@ -292,8 +292,8 @@ onMounted(() => {
|
|||||||
<div class="plugins-view">
|
<div class="plugins-view">
|
||||||
<n-space justify="space-between" align="center" style="margin-bottom: 24px;">
|
<n-space justify="space-between" align="center" style="margin-bottom: 24px;">
|
||||||
<div>
|
<div>
|
||||||
<h2 style="margin: 0 0 8px 0;">扩展商店</h2>
|
<h2 style="margin: 0 0 8px 0;">插件管理</h2>
|
||||||
<p style="margin: 0; color: #666;">管理已安装扩展和浏览扩展商店</p>
|
<p style="margin: 0; color: #666;">管理已安装插件和浏览插件商店</p>
|
||||||
</div>
|
</div>
|
||||||
<n-button quaternary @click="router.push('/')">
|
<n-button quaternary @click="router.push('/')">
|
||||||
<template #icon><n-icon><ArrowBackOutline /></n-icon></template>
|
<template #icon><n-icon><ArrowBackOutline /></n-icon></template>
|
||||||
@@ -302,8 +302,8 @@ onMounted(() => {
|
|||||||
</n-space>
|
</n-space>
|
||||||
|
|
||||||
<n-tabs v-model:value="activeTab" type="line" @update:value="handleTabChange">
|
<n-tabs v-model:value="activeTab" type="line" @update:value="handleTabChange">
|
||||||
<!-- 已安装扩展 -->
|
<!-- 已安装插件 -->
|
||||||
<n-tab-pane name="installed" tab="已安装">
|
<n-tab-pane name="installed" tab="已安装插件">
|
||||||
<n-spin :show="loading">
|
<n-spin :show="loading">
|
||||||
<n-grid :cols="3" :x-gap="16" :y-gap="16" style="margin-bottom: 24px;">
|
<n-grid :cols="3" :x-gap="16" :y-gap="16" style="margin-bottom: 24px;">
|
||||||
<n-gi>
|
<n-gi>
|
||||||
@@ -323,7 +323,7 @@ onMounted(() => {
|
|||||||
</n-gi>
|
</n-gi>
|
||||||
</n-grid>
|
</n-grid>
|
||||||
|
|
||||||
<n-empty v-if="!loading && plugins.length === 0" description="暂无已安装扩展" />
|
<n-empty v-if="!loading && plugins.length === 0" description="暂无已安装插件" />
|
||||||
|
|
||||||
<n-grid v-else :cols="3" :x-gap="16" :y-gap="16" responsive="screen" cols-s="1" cols-m="2">
|
<n-grid v-else :cols="3" :x-gap="16" :y-gap="16" responsive="screen" cols-s="1" cols-m="2">
|
||||||
<n-gi v-for="plugin in plugins" :key="plugin.name">
|
<n-gi v-for="plugin in plugins" :key="plugin.name">
|
||||||
@@ -356,10 +356,10 @@ onMounted(() => {
|
|||||||
</n-spin>
|
</n-spin>
|
||||||
</n-tab-pane>
|
</n-tab-pane>
|
||||||
|
|
||||||
<!-- 扩展商店 -->
|
<!-- 插件商店 -->
|
||||||
<n-tab-pane name="store" tab="扩展商店">
|
<n-tab-pane name="store" tab="插件商店">
|
||||||
<n-spin :show="storeLoading">
|
<n-spin :show="storeLoading">
|
||||||
<n-empty v-if="!storeLoading && storePlugins.length === 0" description="扩展商店暂无可用扩展" />
|
<n-empty v-if="!storeLoading && storePlugins.length === 0" description="插件商店暂无可用插件" />
|
||||||
|
|
||||||
<n-grid v-else :cols="3" :x-gap="16" :y-gap="16" responsive="screen" cols-s="1" cols-m="2">
|
<n-grid v-else :cols="3" :x-gap="16" :y-gap="16" responsive="screen" cols-s="1" cols-m="2">
|
||||||
<n-gi v-for="plugin in storePlugins" :key="plugin.name">
|
<n-gi v-for="plugin in storePlugins" :key="plugin.name">
|
||||||
|
|||||||
Reference in New Issue
Block a user