Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions src/utils/terminal-favicon.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
// botmux 网页终端 favicon —— 暗色终端主题图标(bn 标 + `>_` 提示符)。
// worker 的终端页是 `res.end(getTerminalHtml(...))` 直出的 HTML,不经静态资源服务,
// 故把图标内联为 data URI(64x64 PNG)。如需换图,用同源图重新生成此常量即可。
export const TERMINAL_FAVICON_DATA_URI =
'data:image/png;base64,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';
2 changes: 2 additions & 0 deletions src/worker.ts
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ import { dirname } from 'node:path';
import { createServer as createHttpServer, type IncomingMessage } from 'node:http';
import { WebSocketServer, WebSocket } from 'ws';
import { listenWebTerminalWithFallback } from './utils/web-terminal-listen.js';
import { TERMINAL_FAVICON_DATA_URI } from './utils/terminal-favicon.js';
import type { DaemonToWorker, WorkerToDaemon, DisplayMode, TermActionKey, ScreenStatus } from './types.js';
import { t, setDefaultLocale } from './i18n/index.js';
import { TerminalRenderer } from './utils/terminal-renderer.js';
Expand Down Expand Up @@ -4854,6 +4855,7 @@ function getTerminalHtml(hasWrite: boolean, platformReadonly = false, loginUrl =
<meta charset="utf-8">
<meta id="vp" name="viewport" content="width=device-width,initial-scale=1,viewport-fit=cover">
<title>${cliName()} - ${label}</title>
<link rel="icon" type="image/png" href="${TERMINAL_FAVICON_DATA_URI}">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@xterm/xterm@5/css/xterm.min.css">
<style>
*{margin:0;padding:0;box-sizing:border-box}
Expand Down