From 7b5665c693e2ab2fb04ca77bcd483ed7d98a5398 Mon Sep 17 00:00:00 2001 From: weidu12123 Date: Sat, 23 May 2026 17:32:33 +0800 Subject: [PATCH] Revert "Merge pull request #1 from weidu12123/desktop-v4-release" This reverts commit 3b98a1666bfbac5a40b70d011d50e26514bb1f12, reversing changes made to 7315ddc76f494d7eeec46678f0a7bf52955b31e8. --- .github/workflows/release-macos.yml | 65 - desktop-start.bat | 14 - electron/icon.ico | Bin 122282 -> 0 bytes electron/main.js | 397 -- electron/preload.js | 12 - frontend/src/App.vue | 10 +- frontend/src/components/AppSidebar.vue | 12 +- .../src/components/main/SettingsModal.vue | 125 +- frontend/src/utils/desktop.ts | 78 - package-lock.json | 4575 ++--------------- package.json | 19 +- scripts/build-electron-macos.js | 204 - scripts/build-electron.js | 241 - scripts/package-windows-portable.js | 208 - 14 files changed, 411 insertions(+), 5549 deletions(-) delete mode 100644 .github/workflows/release-macos.yml delete mode 100644 desktop-start.bat delete mode 100644 electron/icon.ico delete mode 100644 electron/main.js delete mode 100644 electron/preload.js delete mode 100644 frontend/src/utils/desktop.ts delete mode 100644 scripts/build-electron-macos.js delete mode 100644 scripts/build-electron.js delete mode 100644 scripts/package-windows-portable.js diff --git a/.github/workflows/release-macos.yml b/.github/workflows/release-macos.yml deleted file mode 100644 index f7edbb2..0000000 --- a/.github/workflows/release-macos.yml +++ /dev/null @@ -1,65 +0,0 @@ -name: Release macOS Desktop - -on: - workflow_dispatch: - inputs: - release_tag: - description: GitHub Release tag to upload assets to - required: true - default: v4.0.0 - upload_assets: - description: Upload generated DMG files to the release - required: true - type: boolean - default: true - -permissions: - contents: write - -jobs: - build-macos: - name: macOS ${{ matrix.arch }} - runs-on: ${{ matrix.os }} - strategy: - fail-fast: false - matrix: - include: - - arch: x64 - os: macos-13 - - arch: arm64 - os: macos-14 - - steps: - - name: Checkout source - uses: actions/checkout@v4 - - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: 20 - cache: npm - - - name: Install root dependencies - run: npm ci - env: - npm_config_arch: ${{ matrix.arch }} - - - name: Build macOS desktop package - run: npm run release:desktop:mac -- --arch=${{ matrix.arch }} - env: - CSC_IDENTITY_AUTO_DISCOVERY: 'false' - npm_config_arch: ${{ matrix.arch }} - - - name: Upload workflow artifact - uses: actions/upload-artifact@v4 - with: - name: 1Shell-mac-${{ matrix.arch }} - path: release/desktop-mac/1Shell-v*-mac-${{ matrix.arch }}.dmg - if-no-files-found: error - - - name: Upload to GitHub Release - if: ${{ inputs.upload_assets }} - env: - GH_TOKEN: ${{ github.token }} - RELEASE_TAG: ${{ inputs.release_tag }} - run: gh release upload "$RELEASE_TAG" release/desktop-mac/1Shell-v*-mac-${{ matrix.arch }}.dmg --repo "$GITHUB_REPOSITORY" --clobber diff --git a/desktop-start.bat b/desktop-start.bat deleted file mode 100644 index 3b09817..0000000 --- a/desktop-start.bat +++ /dev/null @@ -1,14 +0,0 @@ -@echo off -chcp 65001 >nul 2>&1 -setlocal -cd /d "%~dp0" -title 1Shell Desktop - -if exist "%~dp0node\npm.cmd" ( - set "NPM_CMD=%~dp0node\npm.cmd" -) else ( - set "NPM_CMD=npm" -) - -"%NPM_CMD%" run desktop:dev -if errorlevel 1 pause diff --git a/electron/icon.ico b/electron/icon.ico deleted file mode 100644 index d1984164f49c118dbcb93ebe359db27ea7e5cbe8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 122282 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 Q6!>;-i`e>bOWcM319;|-F8}}l diff --git a/electron/main.js b/electron/main.js deleted file mode 100644 index abe5f81..0000000 --- a/electron/main.js +++ /dev/null @@ -1,397 +0,0 @@ -'use strict'; - -const crypto = require('crypto'); -const fs = require('fs'); -const http = require('http'); -const net = require('net'); -const path = require('path'); -const { spawn } = require('child_process'); -const { app, BrowserWindow, Menu, Tray, nativeImage, shell, dialog, ipcMain } = require('electron'); - -app.setName('1Shell'); -Menu.setApplicationMenu(null); - -let mainWindow = null; -let tray = null; -let backendProcess = null; -let backendRoot = null; -let backendPort = 3301; -let isQuitting = false; - -function mainLog(message) { - try { - const logPath = path.join(app.getPath('userData'), 'desktop-main.log'); - fs.mkdirSync(path.dirname(logPath), { recursive: true }); - fs.appendFileSync(logPath, `[${new Date().toISOString()}] ${message}\n`, 'utf8'); - } catch { - // Ignore early logging failures. - } -} - -function randomSecret(bytes = 24) { - return crypto.randomBytes(bytes).toString('base64url'); -} - -function resolveBackendRoot() { - if (app.isPackaged) return path.join(process.resourcesPath, 'backend'); - return path.resolve(__dirname, '..'); -} - -function getLogPath() { - return path.join(backendRoot, 'logs', 'desktop.log'); -} - -function appendLog(line) { - try { - fs.mkdirSync(path.dirname(getLogPath()), { recursive: true }); - fs.appendFileSync(getLogPath(), line, 'utf8'); - } catch { - // Logging must never prevent app startup. - } -} - -function findAvailablePort(startPort) { - return new Promise((resolve) => { - function probe(port) { - const server = net.createServer(); - server.once('error', () => probe(port + 1)); - server.once('listening', () => { - server.close(() => resolve(port)); - }); - server.listen(port, '127.0.0.1'); - } - probe(startPort); - }); -} - -function readEnvValue(name) { - const envPath = path.join(backendRoot, '.env'); - try { - const env = fs.readFileSync(envPath, 'utf8'); - const match = env.match(new RegExp(`^${name}=(.*)$`, 'm')); - return match ? match[1].trim() : ''; - } catch { - return ''; - } -} - -async function ensureEnv() { - const envPath = path.join(backendRoot, '.env'); - if (fs.existsSync(envPath)) { - const configuredPort = Number(readEnvValue('PORT')); - backendPort = Number.isInteger(configuredPort) && configuredPort > 0 ? configuredPort : 3301; - return; - } - - backendPort = await findAvailablePort(3301); - const content = [ - 'OPENAI_API_BASE=https://api.openai.com/v1', - 'OPENAI_API_KEY=', - 'OPENAI_MODEL=gpt-4o', - 'APP_LOGIN_USERNAME=', - 'APP_LOGIN_PASSWORD=', - `APP_SECRET=${randomSecret(32)}`, - 'APP_SESSION_TTL_HOURS=12', - `PORT=${backendPort}`, - `BRIDGE_TOKEN=${randomSecret(32)}`, - '', - ].join('\n'); - - fs.writeFileSync(envPath, content, 'utf8'); -} - -function backendCommand(serverPath) { - const bundledNode = path.join(backendRoot, 'node', 'node.exe'); - if (process.platform === 'win32' && fs.existsSync(bundledNode)) { - return { executable: bundledNode, args: [serverPath], env: {} }; - } - return { - executable: process.execPath, - args: [serverPath], - env: { ELECTRON_RUN_AS_NODE: '1' }, - }; -} - -function startBackend() { - if (backendProcess && !backendProcess.killed) return; - - const serverPath = path.join(backendRoot, 'server.js'); - const command = backendCommand(serverPath); - const env = { - ...process.env, - ...command.env, - NODE_PATH: path.join(backendRoot, 'deps'), - PORT: String(backendPort), - ELECTRON_DESKTOP: '1', - ONESHELL_DESKTOP: '1', - }; - - appendLog(`\n[desktop] starting backend: ${new Date().toISOString()}\n`); - backendProcess = spawn(command.executable, command.args, { - cwd: backendRoot, - env, - windowsHide: true, - }); - - backendProcess.stdout.on('data', chunk => appendLog(chunk.toString())); - backendProcess.stderr.on('data', chunk => appendLog(chunk.toString())); - backendProcess.on('exit', (code, signal) => { - appendLog(`[desktop] backend exited code=${code} signal=${signal}\n`); - backendProcess = null; - if (!isQuitting && mainWindow) showErrorPage('本地服务已停止。', '请从托盘菜单选择“重启服务”,或退出后重新打开 1Shell。'); - }); -} - -function stopBackend() { - if (!backendProcess || backendProcess.killed) return; - const pid = backendProcess.pid; - backendProcess.kill('SIGINT'); - if (process.platform === 'win32' && pid) { - setTimeout(() => { - if (backendProcess) spawn('taskkill', ['/pid', String(pid), '/t', '/f'], { windowsHide: true }); - }, 1500).unref(); - } -} - -function waitForHealth(deadlineMs = 30000) { - const startedAt = Date.now(); - const healthUrl = `http://127.0.0.1:${backendPort}/api/health`; - - return new Promise((resolve, reject) => { - function retry() { - if (Date.now() - startedAt > deadlineMs) { - reject(new Error(`Backend did not become ready at ${healthUrl}`)); - return; - } - setTimeout(probe, 500); - } - - function probe() { - const req = http.get(healthUrl, res => { - res.resume(); - if (res.statusCode && res.statusCode >= 200 && res.statusCode < 500) { - resolve(); - return; - } - retry(); - }); - req.on('error', retry); - req.setTimeout(1000, () => { - req.destroy(); - retry(); - }); - } - - probe(); - }); -} - -function escapeHtml(value) { - return String(value) - .replace(/&/g, '&') - .replace(//g, '>') - .replace(/"/g, '"') - .replace(/'/g, '''); -} - -function loadingHtml(message, detail = '') { - const safeMessage = escapeHtml(message); - const safeDetail = escapeHtml(detail); - return `data:text/html;charset=utf-8,${encodeURIComponent(` -1Shell

${safeDetail ? `
${safeDetail}
` : '
'}
` )}`; -} - -function showErrorPage(message, detail = '') { - if (!mainWindow) return; - mainWindow.loadURL(loadingHtml(message, detail)); -} - -function getDesktopSettingsPath() { - return path.join(backendRoot, 'data', 'desktop-settings.json'); -} - -function readDesktopPreferences() { - try { - return JSON.parse(fs.readFileSync(getDesktopSettingsPath(), 'utf8')); - } catch { - return {}; - } -} - -function writeDesktopPreferences(preferences) { - const settingsPath = getDesktopSettingsPath(); - fs.mkdirSync(path.dirname(settingsPath), { recursive: true }); - fs.writeFileSync(settingsPath, JSON.stringify(preferences, null, 2), 'utf8'); -} - -function getLoginItemOptions() { - return process.platform === 'win32' ? { path: process.execPath } : {}; -} - -function desktopSettings() { - const preferences = readDesktopPreferences(); - const loginItemSettings = app.getLoginItemSettings(getLoginItemOptions()); - return { - isDesktop: true, - runtime: 'electron', - backgroundEnabled: preferences.backgroundEnabled === true, - autostartEnabled: Boolean(loginItemSettings.openAtLogin), - autostartAvailable: process.platform === 'win32' || process.platform === 'darwin', - }; -} - -function setDesktopBackgroundEnabled(enabled) { - writeDesktopPreferences({ - ...readDesktopPreferences(), - backgroundEnabled: enabled, - }); - return desktopSettings(); -} - -function setDesktopAutostartEnabled(enabled) { - if (process.platform !== 'win32' && process.platform !== 'darwin') { - throw new Error('当前系统不支持开机自启'); - } - app.setLoginItemSettings({ - ...getLoginItemOptions(), - openAtLogin: enabled, - openAsHidden: false, - }); - return desktopSettings(); -} - -function registerDesktopIpc() { - ipcMain.handle('desktop:get-settings', () => desktopSettings()); - ipcMain.handle('desktop:set-background-enabled', (_event, enabled) => setDesktopBackgroundEnabled(Boolean(enabled))); - ipcMain.handle('desktop:set-autostart-enabled', (_event, enabled) => setDesktopAutostartEnabled(Boolean(enabled))); -} - -function iconPath() { - const candidates = [ - path.join(backendRoot, 'frontend', 'dist', 'favicon.png'), - path.join(backendRoot, 'public', 'favicon.ico'), - ]; - return candidates.find(candidate => fs.existsSync(candidate)) || ''; -} - -function createWindow() { - const icon = iconPath(); - mainWindow = new BrowserWindow({ - width: 1280, - height: 860, - minWidth: 960, - minHeight: 640, - show: false, - title: '1Shell', - autoHideMenuBar: true, - icon: icon || undefined, - webPreferences: { - preload: path.join(__dirname, 'preload.js'), - contextIsolation: true, - nodeIntegration: false, - sandbox: true, - }, - }); - - mainWindow.once('ready-to-show', () => mainWindow.show()); - mainWindow.on('close', (event) => { - if (isQuitting) return; - if (desktopSettings().backgroundEnabled && tray) { - event.preventDefault(); - mainWindow.hide(); - } - }); - mainWindow.on('closed', () => { - mainWindow = null; - if (!isQuitting) quitApp(); - }); - - mainWindow.loadURL(loadingHtml('正在启动本地服务,请稍候...')); -} - -function createTray() { - const icon = iconPath(); - if (!icon) return; - - const image = nativeImage.createFromPath(icon); - if (image.isEmpty()) return; - - tray = new Tray(image.resize({ width: 16, height: 16 })); - tray.setToolTip('1Shell'); - tray.setContextMenu(Menu.buildFromTemplate([ - { label: '打开 1Shell', click: () => showMainWindow() }, - { label: '重启服务', click: () => restartBackend() }, - { label: '打开日志目录', click: () => shell.openPath(path.dirname(getLogPath())) }, - { type: 'separator' }, - { label: '退出', click: () => quitApp() }, - ])); - tray.on('double-click', () => showMainWindow()); -} - -function showMainWindow() { - if (!mainWindow) createWindow(); - mainWindow.show(); - mainWindow.focus(); -} - -async function loadApp() { - try { - await waitForHealth(); - await mainWindow.loadURL(`http://127.0.0.1:${backendPort}/app/?runtime=desktop`); - } catch (error) { - appendLog(`[desktop] ${error.stack || error.message}\n`); - showErrorPage('本地服务启动失败。', '请打开托盘菜单中的日志目录,查看 desktop.log。'); - } -} - -async function restartBackend() { - stopBackend(); - await new Promise(resolve => setTimeout(resolve, 1200)); - startBackend(); - if (mainWindow) mainWindow.loadURL(loadingHtml('正在重启本地服务...')); - await loadApp(); -} - -function quitApp() { - isQuitting = true; - stopBackend(); - app.quit(); -} - -const gotLock = app.requestSingleInstanceLock(); -if (!gotLock) { - mainLog('single instance lock denied'); - app.quit(); -} else { - mainLog('single instance lock acquired'); - app.on('second-instance', () => showMainWindow()); - - app.whenReady().then(async () => { - mainLog('app ready'); - registerDesktopIpc(); - backendRoot = resolveBackendRoot(); - mainLog(`backendRoot=${backendRoot}`); - await ensureEnv(); - mainLog(`backendPort=${backendPort}`); - createWindow(); - createTray(); - startBackend(); - await loadApp(); - }).catch(error => { - mainLog(`startup failed: ${error.stack || error.message}`); - dialog.showErrorBox('1Shell failed to start', error.stack || error.message); - app.quit(); - }); - - app.on('activate', () => showMainWindow()); - app.on('before-quit', () => { - isQuitting = true; - stopBackend(); - }); - app.on('window-all-closed', () => { - if (!isQuitting) quitApp(); - }); -} diff --git a/electron/preload.js b/electron/preload.js deleted file mode 100644 index 0bb8632..0000000 --- a/electron/preload.js +++ /dev/null @@ -1,12 +0,0 @@ -'use strict'; - -const { contextBridge, ipcRenderer } = require('electron'); - -contextBridge.exposeInMainWorld('__ONESHELL_RUNTIME__', 'desktop'); -contextBridge.exposeInMainWorld('oneShellDesktop', { - runtime: 'desktop', - platform: process.platform, - getSettings: () => ipcRenderer.invoke('desktop:get-settings'), - setAutostartEnabled: enabled => ipcRenderer.invoke('desktop:set-autostart-enabled', Boolean(enabled)), - setBackgroundEnabled: enabled => ipcRenderer.invoke('desktop:set-background-enabled', Boolean(enabled)), -}); diff --git a/frontend/src/App.vue b/frontend/src/App.vue index b2a31bd..c11a2c8 100644 --- a/frontend/src/App.vue +++ b/frontend/src/App.vue @@ -10,8 +10,6 @@ import AppAiFab from './components/AppAiFab.vue'; import ConfirmModal from './components/ConfirmModal.vue'; import AppBackground from './components/AppBackground.vue'; import LoginScreen from './components/main/LoginScreen.vue'; -import SettingsModal from './components/main/SettingsModal.vue'; -import { isDesktopRuntime } from './utils/desktop'; interface AuthStatusResp { enabled?: boolean; @@ -23,14 +21,13 @@ const { requestJson } = useApiClient(); const bootstrapping = ref(true); const bootstrapError = ref(null); -const settingsOpen = ref(false); function prefetchProbeSilently(force = false): void { void prefetchProbePageState(requestJson, force).catch(() => undefined); } -const desktopRuntime = isDesktopRuntime(); -const needLogin = computed(() => !desktopRuntime && auth.enabled && !auth.authenticated); +// 全局登录闸门:auth 启用且未登录 → 必须先登录 +const needLogin = computed(() => auth.enabled && !auth.authenticated); async function bootstrapAuth(): Promise { try { @@ -76,7 +73,7 @@ onMounted(() => {
- +
@@ -87,6 +84,5 @@ onMounted(() => { -
diff --git a/frontend/src/components/AppSidebar.vue b/frontend/src/components/AppSidebar.vue index 9c89f03..2cc8b96 100644 --- a/frontend/src/components/AppSidebar.vue +++ b/frontend/src/components/AppSidebar.vue @@ -13,6 +13,7 @@ interface NavItem { const navItems: NavItem[] = [ { to: '/', label: '主页', icon: 'globe', title: '世界地图主页' }, { to: '/console', label: '主控', icon: 'console', title: '主控台' }, + { to: '/hosts', label: '主机', icon: 'server', title: 'VPS 仓库' }, { to: '/programs', label: '程序', icon: 'cog', title: '长驻程序' }, { to: '/scripts', label: '脚本', icon: 'terminal', title: '脚本库' }, { to: '/skills', label: '仓库', icon: 'package', title: '技能仓库' }, @@ -22,8 +23,6 @@ const navItems: NavItem[] = [ { to: '/audit', label: '审计', icon: 'clipboard', title: '审计日志' }, ]; -const emit = defineEmits<{ 'open-settings': [] }>(); - const isDark = ref(true); const themeIcon = ref<'sun' | 'moon'>('sun'); @@ -81,15 +80,6 @@ onMounted(syncFromDom); 主题 - diff --git a/frontend/src/components/main/SettingsModal.vue b/frontend/src/components/main/SettingsModal.vue index 7511bb4..9ef822b 100644 --- a/frontend/src/components/main/SettingsModal.vue +++ b/frontend/src/components/main/SettingsModal.vue @@ -1,16 +1,9 @@