JoeAllen
|
82f26652a4
|
chore(release): v1.1.0
|
2026-10-12 19:58:55 +08:00 |
|
JoeAllen
|
ac5b6e9862
|
feat: 接入 gpui-kit 全部 38 个官方主题预设 + 按语言拆分 locales + 0.7.3 升级
主题预设("我全都要"):
- gpui-app/themes/ 内嵌官方捆绑 21 个文件 36 变体 + Default Light/Dark
- theme.rs:register_bundled_themes(bootstrap 注册)/ apply_theme_preset
(Theme::update + apply_config 整包应用)/ theme_preset_names
- settings.theme_preset 字段(serde 默认 linear);保存/启动按预设分派,
外观模式与跟随系统监听仅对 Linear 生效(预设自带明暗不被冲掉)
- 设置页「主题预设」下拉(Linear + 38 注册名),切换即时生效
语言包按语言分文件(用户要求):
- locales/ui.yml → locales/en.yml + locales/zh-CN.yml
(rust-i18n 文件名 stem 即 locale,扁平 "ns.key": "value")
- i18n.rs 测试改为双文件键集合一致性 + 占位符强制
修复:设置对话框打开即栈溢出
- gpui-kit 0.7.0→0.7.3 无法解决;根因是 Windows 主线程 8MB 栈对
Dialog 覆盖层内 Select 渲染的深调用链不足,注册多主题后越过阈值
(64MB 试验栈下不复现,证实深调用链而非无限递归)
- .cargo/config.toml:Windows 主线程栈 8MB→64MB
- 注册时机移到 bootstrap(main 的 init_themes,gpui_kit::init 后、
窗口创建前),对齐官方 story 示例的注册姿势
- 误伤修复:gpui-app/Cargo.toml 被批量编辑误删 bin.name 与
build-dependencies 段;examples/flood.rs 误删已恢复
官方 skill 同步:npx skills add 被墙,gh-proxy 镜像克隆后手动覆盖
~/.agents/skills 与 ~/.zcode/skills 的 gpui-kit + gpui-kit-design-guides。
|
2026-10-12 17:07:40 +08:00 |
|
JoeAllen
|
35e2b6fb60
|
refactor(i18n): 迁移到 rust-i18n 语义键体系(ns.key),废弃中文原文作 key
旧实现的问题(按用户反馈):
- 中文原文作 key:文案措辞与代码耦合,一词多义撞 key("主题" Topic/Theme)
- 巨型 match 文案表:重复键靠编译警告暴露;漏翻静默回退,无任何校验
- tf 参数到处 &n.to_string() 噪音
新体系(gpui-kit 官方方案):
- locales/ui.yml 语言包(rust-i18n v2,en/zh-CN 双语并排),key 为
语义标识符(common.save / conn.connect / status.connected…),
与自然语言彻底解耦;改措辞不动代码
- crate 根 i18n! 编译期内嵌;init_i18n() 经 extend! 并入 gpui-kit
组件内置文案(按钮/空态等随语言切换)
- t/tf 薄门面查 _rust_i18n_translate(运行时 key),模型 label()
改返回语义 key;tf 参数只需 Display
- 四个强制单测:语言包 en/zh-CN 完整、占位符 {x} 两侧一致、
全源码 t()/tf() 字面量必须存在词条、模型 label 必须有真实译文
- 语言中性文案("QoS"、"/mqtt" 等)去掉 t() 包裹
- 顺带补翻 30 条漏网文案(资源监控统计行/表单校验/阿里云说明段等)
42 测试全绿;中英双语实机截图验证零裸 key。
|
2026-10-04 12:27:55 +08:00 |
|
JoeAllen
|
b23c0039db
|
chore(release): v1.0.0
|
2026-10-01 15:55:44 +08:00 |
|
JoeAllen
|
94fdb6a507
|
feat: 国际化 / 键盘操作 / 无障碍 / 性能优化
国际化
- 新增 ui/i18n 双语文案表(中文原文为 key,英文集中映射,tf 支持占位符)
- AppSettings 增加 language(跟随系统/中文/English),启动与保存时即时生效
- 全部界面文案(标题栏/侧栏/工作区/发布/订阅/表单/设置/全部对话框/通知)入表
键盘操作
- Ctrl+W 关闭当前标签页;Ctrl+Tab / Ctrl+Shift+Tab 循环切换标签
- Ctrl+F 聚焦当前工作区消息过滤框
无障碍
- 全部纯图标按钮补 accessibility_label(屏幕阅读器 / UIA 自动化可识别)
性能
- 折叠态预览(JSON 美化/压平+截断)改为入环形缓冲时计算一次,
随 MqttRecord 缓存(Arc<str>),渲染热路径对最多数百条可见行
不再逐帧重复 serde_json 解析
|
2026-10-01 15:54:18 +08:00 |
|
JoeAllen
|
1dca18873c
|
chore(release): v1.1.0
|
2026-09-30 16:16:32 +08:00 |
|
JoeAllen
|
7b41e7f13d
|
feat(update): OTA 兜底发现与系统代理支持
- check_latest 加免 API 配额的兜底路径:api.github.com 被限流(60 次/
小时/IP,共享出口 IP 实测已打满)时,跟踪 github.com/releases/latest
的 302 从最终 URL 提取 tag,下载与 .sha256 按命名约定构造;notes 置空、
大小置 0(进度未知、对账跳过),sha256 校验仍强制执行
- ureq 启用 win-system-proxy:Windows 系统代理注册表设置自动生效;
HTTP(S)_PROXY 环境变量代理 ureq 默认就读取,无需配置
- 实测:github.com 直连与代理均可达(302 正常),api.github.com 直连
与代理出口 IP 的未认证配额均耗尽 —— 兜底路径为必需品而非锦上添花
|
2026-09-30 12:54:57 +08:00 |
|
JoeAllen
|
6f09a5729f
|
chore(deps): 全量升级依赖,适配 gpui-kit 0.7 与 ureq 3
- gpui-kit 0.6→0.7:main.rs 改用 gpui_kit::open_window 自动挂载 Root,
移除内容视图手动挂载的 dialog/sheet/notification 层
- ureq 2→3:Agent::config_builder 配置超时(global/connect/recv_response),
响应体改用 read_json / read_to_string / into_body().into_reader()
- hmac 0.13 需显式导入 KeyInit;digest 0.11 的 Output 不再实现 LowerHex,
sha256 转 hex 改为逐字节格式化,并补已知向量测试
- windows 0.62:SetWindowPos 插入位置参数改为 Option<HWND>
- dirs 6→7、base64 0.22→0.23,其余锁内更新(tokio/sentry/rustls 等)
- TLS 栈不变(rustls + webpki-roots),无 openssl/native-tls 混入
已验证:cargo check 零警告;35 测试通过;运行应用截图核验主界面、
新建连接对话框打开与关闭均正常
|
2026-09-30 11:43:40 +08:00 |
|
JoeAllen
|
2089bb7259
|
chore: v1.0.0 —— GPUI 原生重写首个正式版
Release / Meta (push) Canceled after 0s
Release / Test (push) Canceled after 0s
Release / Build (ubuntu-latest) (push) Canceled after 0s
Release / Publish package (push) Canceled after 0s
|
2026-09-29 19:30:36 +08:00 |
|
JoeAllen
|
9b08f36268
|
chore: bump 1.0.5
Release / Meta (push) Canceled after 0s
Release / Test (push) Canceled after 0s
Release / Build (ubuntu-latest) (push) Canceled after 0s
Release / Publish package (push) Canceled after 0s
|
2026-09-29 17:29:55 +08:00 |
|
JoeAllen
|
2e5e1b8143
|
feat: OTA 附件改用 7z 压缩包(体积 -73%),客户端纯 Rust 解压
- 发布脚本:附件打包为 <binary>.7z(-mx=9)+ .7z.sha256 上传;
同时保留裸二进制附件,v1.0.3 及更早客户端(不认识 7z)仍可升级
- update.rs:pick_assets 优先选 7z、无则回退裸二进制;
下载 → 大小对账 + sha256 校验 → sevenz-rust 解压出二进制暂存
(压缩包随即删除);暂存目录清理排除 .7z
- UpdateInfo 增加 asset_name 字段区分压缩包/裸文件
- 实测 21.3MB exe → 5.8MB(7-Zip -mx=9)
|
2026-09-29 17:29:47 +08:00 |
|
JoeAllen
|
1792c17eb2
|
chore: bump 1.0.4
Release / Meta (push) Canceled after 0s
Release / Test (push) Canceled after 0s
Release / Build (ubuntu-latest) (push) Canceled after 0s
Release / Publish package (push) Canceled after 0s
|
2026-09-29 17:03:19 +08:00 |
|
JoeAllen
|
a9c92e0974
|
feat: 任务栏图标嵌入、窗口置顶钉子与进程资源采样
- build.rs + embed-resource 嵌入 icon.ico:gpui 从 exe 资源 ID 1
加载窗口类图标,此前缺失导致任务栏显示系统默认图标
- 标题栏新增钉子按钮:sysmon::set_topmost 经 raw-window-handle
取 HWND 调 SetWindowPos(HWND_TOPMOST),Pin/PinOff 图标随状态切换
- sysmon 模块:CPU 时间差分、工作集/峰值/提交内存、线程/句柄采样
与运行时长基准(Windows 实现,其余平台返回空采样)
|
2026-09-29 17:00:59 +08:00 |
|
JoeAllen
|
878ea7cc76
|
chore: bump 1.0.3;发布脚本零配置化
Release / Meta (push) Canceled after 0s
Release / Test (push) Canceled after 0s
Release / Build (ubuntu-latest) (push) Canceled after 0s
Release / Publish package (push) Canceled after 0s
- 版本升级 1.0.2 → 1.0.3
- 脚本不再要求预置环境变量:GITEA_URL 从 git remote origin 推断,
GITEA_TOKEN 缺失时自动取 Git Credential Manager 中同一主机的凭证
(与 git 推送同源的 OAuth 凭证,无需另行创建 API token)
|
2026-09-29 13:43:30 +08:00 |
|
JoeAllen
|
f1a7c9eb45
|
chore: 补记 Cargo.lock 的 1.0.2 版本号
|
2026-09-29 10:33:28 +08:00 |
|
JoeAllen
|
88a8652d7b
|
feat: 接入自建 Sentry 错误上报
- DSN 指向 rustrak 自建 Sentry(项目 8),release 标记 mqttx@版本
- panic 路径:sentry-panic 链式钩子捕获 + 外层钩子 flush 5s,
确保 panic=abort 终止进程前事件送出
- 存储层 elog! 持久化错误同步 capture_message 上报
- 传输用 reqwest+rustls,避免 openssl 依赖
|
2026-09-29 00:30:23 +08:00 |
|
JoeAllen
|
bf6d165854
|
feat: OTA 自更新(Gitea Release 为更新源)
Release / Meta (push) Canceled after 0s
Release / Test (push) Canceled after 0s
Release / Build (ubuntu-latest) (push) Canceled after 0s
Release / Publish package (push) Canceled after 0s
- update.rs:检查最新 Release(latest 端点+列表回退)、版本比较、
平台产物挑选(含 .sha256 侧车)、下载进度、sha256 校验、
自替换(改名 .old → 换入新 exe → 拉起新进程)、启动清理遗留
- 设置 → 关于:检查更新按钮、发现新版本提示、下载进度条(Progress)、
失败重试;自动检查更新开关真正生效(启动后台检查并弹通知)
- 版本 1.0.0 → 1.0.1(首个带 OTA 的发布版本)
- 顺手修 clippy 遗留警告(is_none_or、合并 if)
|
2026-09-28 23:44:56 +08:00 |
|
JoeAllen
|
c1c4fc011e
|
feat: GPUI 版补齐 MQTTX 基础功能对标(分组/SSL证书/订阅增强/消息流控制/设置与日志)
|
2026-09-28 14:41:15 +08:00 |
|
JoeAllen
|
bf6937b776
|
feat: 重写为 GPUI 原生桌面应用并接入 Gitea 软件包发布
- gpui-kit 0.6 原生 UI:连接管理、消息流/日志、发布预设、全局变量、
设置、阿里云连接预设、原生 Logo
- MQTT 5.0/3.1.1 引擎(rumqttc,TCP/TLS/WS/WSS),独立 tokio runtime
+ 事件泵,真实 broker 端到端测试
- 连接表单:保存前可一键测试连接(宽松校验,自动生成临时 Client ID),
高级属性(认证/MQTT 5 属性/遗嘱)按需折叠显示,WS 路径仅 WS/WSS 显示
- bug 修复:Hex 奇数长度显式报错、测试连接唯一 Client ID、Base64/Hex
发布发送真实字节、v5 发布记录携带 Content-Type/用户属性、预设应用
清除旧 Content-Type、模板时间基准统一;补 8 个单元测试
- Gitea 发布:Generic Package 上传脚本(bash/PowerShell)+ Actions
release 工作流(tag 触发,双平台构建),README 使用说明
|
2026-09-28 11:39:47 +08:00 |
|