mirror of
https://github.com/golutra/golutra.git
synced 2026-08-29 03:45:51 +08:00
75e68e2998
- 重构终端架构,按 platform/engine/runtime/message_service/ui_gateway/orchestration 分层迁移 - 拆分会话与引擎内部模块(session state、semantic worker、resume poller、timestamps、snapshot) - 引入 message pipeline 与 semantic stream,补齐平台状态能力 - 补齐会话与扩展能力(skills、create terminal、create user) - 修复终端关键问题(渲染、attach/resize/webgl 稳定性、屏幕历史、好友删除流程、状态递增与重试、退出覆盖新会话) - 优化稳定性与性能(队列派发、4 分屏逻辑、低开销模式、语义线程按需创建) - 修复输入一致性问题(光标不同步、覆盖行)并收敛 UI 状态异常
82 lines
2.8 KiB
HTML
82 lines
2.8 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en" class="dark" data-theme="dark">
|
|
<head>
|
|
<meta charset="UTF-8" />
|
|
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
<title>golutra</title>
|
|
<script>
|
|
(() => {
|
|
const root = document.documentElement;
|
|
const themeKey = 'golutra-theme';
|
|
const localeKey = 'golutra-locale';
|
|
const isValidTheme = (value) => value === 'light' || value === 'dark' || value === 'system';
|
|
const isValidLocale = (value) => value === 'en-US' || value === 'zh-CN';
|
|
const storedTheme = window.localStorage.getItem(themeKey);
|
|
const storedLocale = window.localStorage.getItem(localeKey);
|
|
const theme = isValidTheme(storedTheme) ? storedTheme : 'dark';
|
|
root.dataset.theme = theme;
|
|
const resolvedTheme = theme === 'system'
|
|
? (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light')
|
|
: theme;
|
|
root.dataset.resolvedTheme = resolvedTheme;
|
|
root.classList.toggle('dark', resolvedTheme === 'dark');
|
|
const locale = isValidLocale(storedLocale) ? storedLocale : (isValidLocale(root.lang) ? root.lang : 'en-US');
|
|
root.lang = locale;
|
|
window.__GOLUTRA_THEME__ = theme;
|
|
window.__GOLUTRA_LOCALE__ = locale;
|
|
})();
|
|
</script>
|
|
<style>
|
|
/* Custom Scrollbar */
|
|
::-webkit-scrollbar {
|
|
width: 6px;
|
|
height: 6px;
|
|
}
|
|
::-webkit-scrollbar-track {
|
|
background: transparent;
|
|
}
|
|
::-webkit-scrollbar-thumb {
|
|
background: rgb(var(--scrollbar-thumb));
|
|
border-radius: 3px;
|
|
}
|
|
::-webkit-scrollbar-thumb:hover {
|
|
background: rgb(var(--scrollbar-thumb-hover));
|
|
}
|
|
|
|
.glass-panel {
|
|
background: rgb(var(--color-panel) / 0.7);
|
|
backdrop-filter: blur(12px);
|
|
-webkit-backdrop-filter: blur(12px);
|
|
border: 1px solid rgb(var(--color-border) / 0.08);
|
|
}
|
|
|
|
.glass-modal {
|
|
background: rgb(var(--color-panel-strong) / 0.95);
|
|
backdrop-filter: blur(24px);
|
|
-webkit-backdrop-filter: blur(24px);
|
|
border: 1px solid rgb(var(--color-border) / 0.1);
|
|
box-shadow: var(--shadow-modal);
|
|
}
|
|
|
|
.bg-glass-header {
|
|
background: rgb(var(--color-panel) / 0.6);
|
|
}
|
|
|
|
.bg-glass-sidebar {
|
|
background: transparent;
|
|
border-color: transparent;
|
|
border-right-color: rgb(var(--color-border) / 0.12);
|
|
}
|
|
|
|
.text-shadow {
|
|
text-shadow: 0 1px 2px rgba(0,0,0,0.5);
|
|
}
|
|
</style>
|
|
</head>
|
|
<body class="text-white h-screen overflow-hidden selection:bg-primary/30 selection:text-white">
|
|
<div id="app"></div>
|
|
<script type="module" src="/src/main.ts"></script>
|
|
</body>
|
|
</html>
|