Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
5b37423
build: 调整 Windows 安装包发布流程
SengokuCola May 20, 2026
4487e3d
fix: 优化插件配置名称和加载状态
SengokuCola May 20, 2026
a0b8728
fix: 移除旧本地聊天账号写入
SengokuCola May 20, 2026
174a871
fix: 稳定终端尺寸同步
SengokuCola May 20, 2026
8b84ba5
feat: 完善启动器代理更新和窗口交互
SengokuCola May 20, 2026
b004a19
docs: 记录 0.3.4 更新内容
SengokuCola May 20, 2026
32177f5
feat: 增加插件蓝图基础能力
SengokuCola May 24, 2026
dfea872
feat: 优化桌面外观和首页体验
SengokuCola May 24, 2026
585b9ef
feat: 增加可视化插件编写器界面
SengokuCola May 24, 2026
51aa385
feat: 完善插件市场互动体验
SengokuCola May 24, 2026
2fb2667
fix: 修正运行时文案和服务状态提示
SengokuCola May 24, 2026
ede1f12
feat: 支持随便聊聊 Live2D 形象
SengokuCola May 24, 2026
227cfa8
build: 更新 0.4.0 发布配置
SengokuCola May 24, 2026
c9f7f3f
feat: 添加启动器更新安装入口
SengokuCola May 24, 2026
6e8e34d
refactor: 整理插件编写器工具栏
SengokuCola May 24, 2026
5b0dae4
fix: 稳定 QQ 适配器配置复用
SengokuCola May 25, 2026
52912c9
feat: 完善桌面编写器和终端体验
SengokuCola May 25, 2026
aa52cde
docs: 更新 0.4.0 变更和打包说明
SengokuCola May 25, 2026
4697516
fix: 支持聊聊富媒体图片显示
SengokuCola May 25, 2026
2580b54
feat: 完善 MaiBot 更新和首页交互
SengokuCola May 25, 2026
d33585d
Update package.json
SengokuCola May 25, 2026
9cdf1a2
Update CHANGELOG.md
SengokuCola May 25, 2026
b36408c
fix: 优化界面部分冗余信息
SengokuCola May 25, 2026
2c78873
feat: 新增未来复古
SengokuCola May 25, 2026
72eb971
chore: 移除旧应用图标选项
SengokuCola May 25, 2026
b441042
feat: 重构外观模式与首页设置体验
SengokuCola May 25, 2026
2863904
docs: 添加外观架构维护说明
SengokuCola May 25, 2026
62006e8
feat: 完善服务更新与插件桥接
SengokuCola May 27, 2026
a7f7853
feat: 优化桌面界面与外观交互
SengokuCola May 27, 2026
ced57cc
docs: 更新插件开发与调试说明
SengokuCola May 27, 2026
4ef2153
build: 准备 0.4.4 发布包
SengokuCola May 27, 2026
05cf911
Create notes.md
SengokuCola May 27, 2026
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
4 changes: 2 additions & 2 deletions .github/workflows/release-windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ on:
workflow_dispatch:
inputs:
payload_url:
description: Zip URL containing runtime/ and modules/. runtime/python and runtime/git are required for the full installer.
description: Zip URL containing runtime/ and modules/.
required: false
type: string
payload_sha256:
Expand Down Expand Up @@ -92,7 +92,7 @@ jobs:
- name: Check release payload
run: bun run release:check

- name: Build installers
- name: Build installer
run: bun run release:win

- name: Upload installer artifacts
Expand Down
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ __pycache__/

# C extensions
*.so

python-overrides
/node_modules/
/out/
/release/
Expand Down
170 changes: 170 additions & 0 deletions APPEARANCE_ARCHITECTURE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,170 @@
# 外观架构维护说明

这个文件记录桌面端三套外观的分层方式,方便以后调整样式时不把三种风格搅在一起。

## 核心原则

外观模式不是三套独立应用,而是:

- 一套外观状态:`src/renderer/src/lib/use-appearance.ts`
- 两类结构分支:现代结构、未来复古结构
- 三套视觉结果:未来复古、现代、未来

`modern` 是默认地基。基础 UI 组件应保持现代风格,不要直接写成复古样式。

`future` 复用现代结构,只额外开启液态玻璃层和透明 token。

`future-retro` 使用复古结构分支,并通过 `.retro-*` 类和根节点 data attribute 追加纸质、硬边框、切角和复古图标表现。

## 架构图

```mermaid
flowchart TD
Settings[设置页:外观选项] --> Appearance[useAppearance]
Appearance --> Storage[localStorage<br/>maibot-appearance]
Appearance --> Apply[applyAppearance]

Apply --> RootAttrs[document.documentElement<br/>data-appearance-mode<br/>data-accent / data-font / data-scale<br/>data-retro-paper-texture]
Apply --> GlassClass{mode === future?}
GlassClass -->|是| LiquidClass[添加 .liquid-glass]
GlassClass -->|否| NoGlass[移除 .liquid-glass]

Appearance --> DesktopShell[DesktopShell]
Appearance --> HomePanel[HomePanel]

DesktopShell --> ChromeBranch{appearance.mode}
ChromeBranch -->|future-retro| RetroChrome[复古顶部栏<br/>retro-tabs / retro-top-action<br/>retro-shell]
ChromeBranch -->|modern| ModernChrome[旧版现代顶部栏<br/>紧凑 Tabs / 启动下拉 / 停止按钮]
ChromeBranch -->|future| FutureChrome[现代顶部栏结构<br/>+ LiquidGlassLayer]

HomePanel --> HomeBranch{appearance.mode}
HomeBranch -->|future-retro| RetroHome[复古首页结构<br/>retro-panel / retro-control<br/>宽仪表盘布局]
HomeBranch -->|modern| ModernHome[旧版现代首页结构<br/>紧凑卡片 / 右侧 320px]
HomeBranch -->|future| FutureHome[现代首页结构<br/>+ 玻璃 token]

RootAttrs --> CSS[globals.css]
LiquidClass --> CSS
NoGlass --> CSS

CSS --> BaseTokens[基础 token<br/>现代默认]
CSS --> RetroScope[:root[data-appearance-mode='future-retro']<br/>复古 token 与 .retro-* 覆盖]
CSS --> GlassScope[:root.liquid-glass<br/>玻璃透明度 / blur / 背景覆盖]

BaseTokens --> UIBase[基础 UI 组件<br/>Button / Tabs / Card / Input / Badge / Dialog]
RetroScope --> RetroChrome
RetroScope --> RetroHome
GlassScope --> FutureChrome
GlassScope --> FutureHome
```

## 状态入口

外观状态在 `use-appearance.ts` 中维护:

```ts
export type AppearanceMode = "future-retro" | "modern" | "future";
```

`applyAppearance` 会把配置同步到 `document.documentElement`:

- `data-appearance-mode`
- `data-retro-paper-texture`
- `data-accent`
- `data-font`
- `data-scale`
- `.liquid-glass`

旧的 `liquidGlass: true` 会迁移为 `mode: "future"`。

## 结构分支

结构差异较大的地方用 React 条件分支,不强行靠 CSS 扭出来。

主要位置:

- `src/renderer/src/components/app/DesktopShell.tsx`
- `useRetroChrome = appearance.mode === "future-retro"`
- 控制顶部 tab、右上操作按钮、外壳 `.retro-shell`
- `src/renderer/src/components/app/HomePanel.tsx`
- `useRetroHome = appearance.mode === "future-retro"`
- 控制首页布局、卡片结构、快捷操作卡片、弹窗内局部控件

现代和未来模式应尽量走 `2c788736c75aee80379efe6a9ac2d253d972177c` 前的现代结构。

## 样式分层

基础组件保持现代默认:

- `src/renderer/src/components/ui/button.tsx`
- `src/renderer/src/components/ui/tabs.tsx`
- `src/renderer/src/components/ui/card.tsx`
- `src/renderer/src/components/ui/input.tsx`
- `src/renderer/src/components/ui/badge.tsx`
- `src/renderer/src/components/ui/dialog.tsx`

复古样式集中在 `src/renderer/src/styles/globals.css`:

- `.retro-shell`
- `.retro-panel`
- `.retro-control`
- `.retro-title`
- `.retro-value`
- `.retro-tabs`
- `.retro-top-action`

复古覆盖尽量写成:

```css
:root[data-appearance-mode="future-retro"] .retro-panel {
/* retro only */
}
```

这样现代模式不会被复古类名的默认样式污染。

## 三种模式的职责

### 未来复古

- 使用 `.retro-shell`
- 首页走复古卡片和更宽的仪表盘布局
- 顶部 tab 使用硬边分割和选中镂空/高对比图标
- 可配置纸张纹理、窗口圆角、界面密度

### 现代

- 使用基础组件默认样式
- 首页走旧版紧凑布局
- 顶部 tab 和右上按钮保持旧版紧凑交互
- 可配置主题色、字体、界面密度、窗口圆角

### 未来

- 结构继承现代
- 开启 `.liquid-glass` 和 `LiquidGlassLayer`
- 可配置玻璃透度、主题色、界面密度、窗口圆角

## 维护规则

- 改基础组件时,先确认现代模式是否仍像旧版。
- 复古专属视觉不要直接写进基础组件,放到 `.retro-*` 或 `data-appearance-mode="future-retro"` 作用域。
- 如果一个差异影响 DOM 结构、尺寸、按钮数量或布局轨道,优先在 React 里用模式分支。
- 如果只是颜色、纹理、边框、字体、图标 stroke,优先用 CSS token 或复古作用域。
- 新增外观配置项时,先扩展 `AppearancePreference`,再在设置页按模式展示对应配置。
- `future` 不要复制复古结构;它应该是现代结构上的玻璃视觉层。

## 验证

涉及外观架构调整后至少运行:

```bash
bun run typecheck
bun run build
```

视觉改动建议手动切换三种模式,重点看:

- 顶部 tab 和右上操作按钮
- 首页主卡片和右侧统计/快捷操作
- 设置弹窗是否正常居中显示
- 未来模式下玻璃层是否仍透明且可读
113 changes: 112 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,116 @@
# Changelog

## 0.4.4 - 2026-05-27

本版本主要继续打磨 0.4.x 的日常使用体验:启动器更新说明更完整,WebUI 与随便聊聊的等待/断线状态更清楚,插件市场交互更顺手,设置中心也更像一个集中管理面板。

### 启动器更新
- 首页的一键包更新入口新增详情弹窗,可查看当前版本、最新版本、安装包名称、大小、来源和发布说明。
- 更新入口继续保留黄点提示,并可直接重新检查、打开发布页面或下载安装包。

### MaiBot WebUI 与随便聊聊
- MaiBot Core 启动后 WebUI 还没就绪时,不再只留下空白页,会显示“等待 WebUI 启动 / 暂不可访问”的状态页,并提供启动入口。
- WebUI 在服务真正就绪后会自动重新加载,减少“进程已经启动但页面没刷出来”的情况。
- WebUI 工具栏会跟踪当前实际地址,刷新或在浏览器打开时使用当前页面地址,而不是固定使用初始地址。
- 随便聊聊在未连接且没有消息时会显示清晰的离线状态,可直接启动 MaiBot Core 或重新连接聊天服务。

### 插件市场与插件编写
- 插件市场卡片现在可以直接点击打开详情;卡片内的安装、启用、评分、评论等按钮不会误触打开详情。
- 插件市场会批量加载当前用户的点赞、点踩、评分和评论状态,列表打开后的状态同步更快。
- 评分和评论可分开提交;只想补一句评论或只改评分时,不必重复填写另一项。
- 插件更新支持处理非 Git 方式安装的插件:会先备份旧目录、克隆新版并保留原有 `config.toml` / `config_back`,失败时自动恢复旧插件。

### 设置、窗口与外观
- 设置中心新增更集中的通用体验:关闭行为、终端模式、终端字号、插件编写器、主题、字体、圆角和 QQ 后端都能在同一处调整。
- 未来复古外观继续打磨:默认保持浅色呈现,滚动条、顶部标签分隔线、徽标和按钮视觉更统一。
- 窗口圆角改为按外观模式分别记忆,未来复古模式支持调到更方正的 0px 圆角。
- 移除未稳定的液态玻璃层,旧的 `future` / 液态玻璃设置会迁移到现代外观,减少透明窗口带来的阅读和兼容问题。
- 无边框窗口的最大化 / 还原逻辑更稳定,最大化会贴合当前屏幕工作区,还原时会回到合理尺寸与位置。
- 悬浮模式拖动和展开收起更稳,和主窗口最大化状态之间的切换更少出现尺寸错乱。

### 初始化、更新与打包
- 首次启动引导中,如果依赖下载卡住或需要重来,可以直接重新发起依赖下载 / 重启 MaiBot Core,不必退出引导重开。
- 重启 MaiBot Core 时会等待正在进行的 Python 依赖安装收尾,减少依赖安装和服务重启互相打架。
- MaiBot 模块更新选择指定分支或 tag 时会明确切到目标版本;远端拉取或子模块更新失败时,会尽量恢复到更新前的分支、提交和远端配置。
- MaiBot WebUI 端口读取更稳,只读取配置中的 `[webui]` 段,降低其他 TOML 内容影响 WebUI 地址识别的概率。
- NapCat WebUI 快捷入口会使用新的登录地址并带上 token,减少打开后还要重新找登录入口的情况。
- Windows 打包进一步清理内置模块内容:用户插件目录整体从主模块复制中排除,NapCat / SnowLuma 适配器作为干净快照单独打包,避免把配置、数据、日志、数据库或缓存带进安装包。

### 终端与细节修复
- 终端页顶部改为更清晰的标签栏,可看到服务终端和手动 Shell 的状态,并可关闭用户打开的 Shell。
- 终端、设置页和未来复古界面的滚动条样式更一致,减少圆角 / 主题混用导致的突兀感。
- 插件市场、更新弹窗等 Markdown 内容支持分隔线,发布说明和 README 阅读更清楚。

## 0.4.3 - 2026-05-27

### 外观与主题
- 重构外观模式与首页设置体验,统一外观设置入口、主题状态和页面呈现。
- 新增未来复古外观风格,并移除旧应用图标选项,减少过时配置入口。
- 补充外观架构维护说明,方便后续扩展主题、透明效果和窗口样式。

### 首页与界面
- 优化首页、设置中心和插件市场中的冗余信息展示,让常用操作更集中。
- 调整首页后端服务控制入口,启动、停止和重启操作更贴近当前服务卡片。
- 优化部分按钮、徽标和页面层次,提升不同外观模式下的可读性。

## 0.4.1 - 2026-05-25

### 随便聊聊
- 支持解析 MaiBot WebUI 富文本消息段,机器人发送的图片、表情、语音和文件不再只显示为占位文本。
- 会读取 MaiBot 配置中的 WebUI port,适配非默认端口启动webui。

### MaiBot 更新
- 首页 MaiBot 更新入口支持选择正式版、测试版,以及自定义分支或 tag。
- 首页更新按钮改为上箭头图标,有可用新版本时会显示黄点提示。

### 首页
- 移除顶部 QQ 后端独立 tab,将启动、停止和重启按钮移动到首页后端卡片。
- 添加首页角落形象介绍彩蛋。

## 0.4.0 - 2026-05-24

### 插件编写器
- 内置了opencode,并提供插件编写指导,你可以直接编写插件

### 插件市场
- 完善插件市场互动体验,强化插件详情、用户状态、评分、点赞/点踩与下载记录等交互入口。

### 桌面外观与首页
- 添加多种图标可选
- 添加不好看的apple液态玻璃样式
- 优化桌面外观、标题栏和首页体验。
- 设置中心扩展外观选项,支持更细的界面风格、透明度和窗口圆角调整。

### 启动器更新
- 新增启动器更新检查和下载安装入口,可在首页发现新版本并触发安装流程。
- MaiBot 更新不再单列“最新旧版”,非预发布 tag 统一归入正式版。

### 运行状态
- 修正运行时文案、依赖安装提示和服务状态显示,让初始化、终端和托管服务反馈更准确。


## 0.3.4 - 2026-05-20

### SnowLuma
- 更新版本到1.9.0,更新适配器版本到1.2.0,支持表情包正确识别,修复at重复识别,支持转发消息部分正确识别

### 插件管理
- 插件配置在 MaiBot Core 未启动时也会尝试读取本地 `config.toml` 和插件配置声明,提前显示中文配置名与字段说明。
- MaiBot Core 仍在加载插件系统时,插件状态显示为“加载中”,不再误判为加载失败。

### 启动器设置
- 设置中心新增简化的本机网络代理开关,可配置 `127.0.0.1:<端口>` 以对接 Clash / Mihomo 等代理软件。
- 网络代理会应用到启动器网络请求、Git / pip 更新,以及之后启动的托管服务环境变量。

### 初始化与终端
- 初始化与修复 MaiBot 配置时不再写入旧的 `onekey-local-chat` 本地聊天平台账号。
- 稳定内嵌 PTY 终端尺寸同步,减少启动和切换时的尺寸错位。

### 窗口
- 修复无边框透明窗口无法拖动边缘缩放的问题。
- 退出悬浮模式时会恢复普通窗口的可缩放状态,避免窗口卡在不可缩放。


## 0.3.3 - 2026-05-19

### 内置模块
Expand Down Expand Up @@ -98,7 +209,7 @@ NSIS patch 脚本增强幂等与旧模板迁移能力。

设置中心新增重置 SnowLuma 组件入口,可在停止服务后清空 SnowLuma 目录及配置,并从一键包内置模板重新复制。
服务启动流程不再自动从内置模板补全 NapCat / SnowLuma 模块,模板复制收敛到首次初始化和“准备基础目录”操作,避免启动时影响用户手动修改的后端目录。
初始化与修复 MaiBot 配置时会固定写入 `onekey-local-chat:onekey-local-bot`,确保一键包本地聊天平台拥有独立机器人账号
初始化与修复 MaiBot 配置时不再写入旧的 `onekey-local-chat` 本地聊天平台账号,本地聊天统一通过 WebUI 通道连接
首页未配置 QQ 账号时,QQ 后端卡片改为“连接到消息软件平台.......”入口,可选择 QQ-NapCat 或 QQ-SnowLuma,自动写入对应适配器与 WebSocket 配置并启动后端。

## 0.3.0 - 2026-05-16
Expand Down
Loading
Loading