Skip to content
Draft
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
94 changes: 94 additions & 0 deletions docs/ui/monet-ui-replica.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
# 莫奈极简 UI 复刻基线

## 目标

本阶段将四张参考图和《SingBoxHub 莫奈极简 UI 生图提示词》转化为可在 ShortX Rhino ES5 环境执行的 Android 原生 View 原型。

实现入口:

```text
entry/SingBoxHub.js
```

版本:

```text
entryVersion=2
moduleSetVersion=monet-ui-prototype-20260801.01
```

## 已实现页面

1. 首页运行控制
- 运行状态、水彩桥面背景、Core/平台/引擎信息
- 启动、停止、重载配置三个主操作
- 六个功能卡片和底部运行摘要
2. 节点与订阅
- 订阅/节点/分组分段控件
- 三张横向订阅卡片
- 搜索框、筛选入口、筛选标签
- 六条虚构节点数据、延迟与协议标签、节点选择
3. 运行日志
- 五项运行摘要
- 日志级别、搜索、暂停入口
- INFO/OK/WARN/CLEANUP 低饱和日志样式
- 导出、清空、诊断操作区
4. 自动化与设置
- ShortX JS Task 信息卡片
- 自动化任务 Switch 列表
- 运行时、稳定性和生命周期设置
- Android 14 / SDK 34 / arm64-v8a 环境信息

## 统一视觉系统

- 暖白背景、深海军蓝标题、灰蓝正文
- 睡莲绿、湖蓝、淡紫、暖杏、低饱和珊瑚红状态色
- 18dp 为主的圆角卡片、1dp 淡色描边和轻微 Elevation
- 顶部品牌栏和底部四项导航固定
- 首页与自动化页使用 Canvas 绘制低透明度桥面、远山和水面意象
- 所有内容使用 Android 原生 View,不依赖 WebView

## 已处理的运行边界

- 严格 Rhino ES5:仅使用 `var`,不使用 ES6 语法
- density 动态换算 dp,不绑定单一分辨率
- WindowInsets 处理状态栏、导航栏和刘海区域
- `SOFT_INPUT_ADJUST_RESIZE` 支持节点搜索和日志搜索的 IME 避让
- 系统返回:首页外关闭窗口,其他页面先返回首页
- 新入口执行前通过动态广播关闭旧 UI,避免重复窗口
- UI 关闭不执行任何 Runtime 停止或资源清理操作

## 安全状态

当前为纯 UI 原型,以下按钮只更新原型状态或显示提示:

- 启动
- 停止
- 重载配置
- 订阅更新
- 延迟测试
- 日志导出
- 诊断

原型不会执行 Shell,不会启动或停止 sing-box,不会创建 TUN,不会修改路由、规则、防火墙、DNS 或配置文件。

## 真机测试顺序

1. 在 ShortX ExecuteJS 中运行分支入口 `entry/SingBoxHub.js`。
2. 检查首页是否完整显示,顶部和底部是否避让系统区域。
3. 依次切换首页、节点、日志、设置四个页面。
4. 在节点页搜索框与日志页搜索框中输入文本,检查光标、IME 弹出和收起后的恢复。
5. 在二级页面执行系统侧滑返回,应返回首页;首页再次返回应关闭 UI。
6. 再次执行入口,应先关闭旧窗口,再创建单一新窗口。
7. 点击启动、停止和重载配置,确认仅出现原型反馈,没有真实网络或路由变化。

## 下一阶段

视觉基线通过后再拆分为 UI 模块,并依次接入:

- SQLite 状态与几何信息持久化
- 可逆 IME 避让状态机
- 深色主题与系统动态色
- 订阅、节点、筛选和日志真实数据源
- Runtime Client 只读状态接口
- 经过确认的受控启动、停止和回滚命令
Loading