Skip to content

UI polish: 公共组件、高频流程与次级页面打磨 - #22

Merged
gkeyes merged 11 commits into
codex/refactor-lightweight-v2from
codex/ui-polish-emil-20260922
Sep 22, 2026
Merged

gkeyes merged 11 commits into
codex/refactor-lightweight-v2from
codex/ui-polish-emil-20260922

Conversation

@gkeyes

@gkeyes gkeyes commented Sep 22, 2026

Copy link
Copy Markdown
Owner

范围与边界

codex/ui-polish-emil-20260922 上继续开发,目标默认分支 codex/refactor-lightweight-v2。保持草稿,不合并、不修改默认分支、不发布 Release。
参考 emilkowalski/skills 的稳定布局、即时反馈、克制动效和清晰层级,沿用 Jetpack Compose、Miuix / LiquidGlass 与现有公共组件;不新增依赖、不替换导航框架。

第二批:次级页面打磨

基于第一批 a4b65a3ccfc58dbe50b6f9363d969ad33bd9dcfa,保留并整合以下三个提交:

  • 1be52264e3ff05f88ded5c7a2c16cbd478853489:设置、外观、分组、权限摘要、备份与浏览器优化。
  • 347360b66c3d8464efe9268eab374cb9d4e0b6ae:关闭请求被草稿确认或保存状态拦截时,面板拖动位置仍复原。
  • b818122dec51e9b028f049a2fcf40bf6db63cd42:补齐工具加载、退出和长错误展示;基于上一个提交追加,未覆盖已有第二批改动。

相对第一批合计 12 个生产文件、4 个 JVM 单元测试文件。应用包名、版本号、数据库、工具包协议、依赖及构建/签名工作流未变。最后一笔补充仅修改 3 个生产文件和 1 个 JVM 测试文件,导航文件仅增加展示名称传递。

范围 修改前 修改后 保留的保护与行为
分组与收藏整理 草稿保存与即点即存不够明确,查看已选项需浏览全列表 已选数量与“仅看已选”;收藏/加入分组说明自动保存;清除空搜索;名称或成员变化后,关闭/返回确认放弃,继续编辑保留草稿;窄屏/大字体按钮纵向排列 原写入回执、失败提示、成员顺序、删除确认和保存期间防重复操作保留;过滤只影响显示;拦截面板关闭后回到原位
设置与外观 样式信息和外观入口分散,缺少效果预览 合并“外观”入口并显示样式+明暗;样式直接点选;现有主题组件预览颜色和排版;统一“开发者帮助”文案 自动保存、失败重试、系统取色、降低透明度与主题映射保留,不创建第二套主题
工具权限摘要 通用图标和版本号 实际工具图标与已允许 X/Y 项摘要;无声明、读取中、读取失败分别展示 只读已验证清单和授权,复用原默认规则,不请求/修改权限;明确不是 Android 系统授权;每个可见项订阅,清单最多并发 2 个,后台 IO,完整安装身份变化重置摘要
备份与恢复 长说明先于操作,数量不够突出 导出/恢复入口前置;可恢复/覆盖/跳过计数,逐项标记及版本对比;技术说明可展开 账号令牌、ZIP 未加密、覆盖设置、停止会话/任务、授权约束和预览警告直接显示;确认、取消、校验、回滚及文件格式不变
内置浏览器 地址需先打开菜单,标题/域名主次不明显 点击顶部标题/域名直接看完整地址并复制;标题/域名分层,HTTP 提醒保留;菜单标题和关闭入口;错误页可选系统浏览器 URL 校验、证书错误停止、文件/内容访问禁止、网站权限拒绝、无 native bridge、清除数据前确认保持不变;不增加自动外跳
工具加载与退出 通用“正在打开工具”“离开当前小工具” 从已有目录快照传递工具名称;加载显示名称和不定进度反馈,退出提示指出工具 无额外目录订阅/读盘/伪进度;冷恢复时目录中尚无名称则保留通用文案;原动画时序、就绪信号、退出确认及 WebView 生命周期不变
运行错误展示 长诊断与重试一起占满页面 短错误原样显示;长错误先显示真实首行原因与重试,再展开完整可选择文本 原诊断完整保留;宿主启动及恢复警告不折叠;不更改实际异常处理或重试机制

验证与当前构建

最新 Android CI 35707164552,HEAD b818122dec51e9b028f049a2fcf40bf6db63cd42
本说明更新时:接口、内嵌 SDK、安全入口、Wasm 打包和发布证据检查已通过;Build APKs (Android UI tests disabled) 正在运行,JVM 检查和产物上传尚未取得结果。不能将前一提交的构建结果当作当前 HEAD 的结果。

已回读提交和差异,并用非强制 fast-forward 更新原优化分支,保留全部第一批及已有第二批提交。所有 Android 编译只通过 GitHub Actions;未进行本地编译、模拟器或真机操作。

第二批新增 16 个 JVM 回归用例:

  • GroupDraftPresentationTest 3 个:未修改、名称/成员/顺序变化、新建空分组。
  • BackupPresentationTest 3 个:跳过冲突不计覆盖、空清单、全部跳过。
  • ToolPermissionSummaryTest 4 个:显式关闭优先、原默认策略、其他工具/未声明授权不计入、无声明状态。
  • RuntimePresentationTest 6 个:已知/缺失工具名、退出保存提醒、短错误原样、长错误首行与完整详情、多行错误、单行长度边界。
    上述是提交的用例范围;最终执行结果以最新 CI 为准。Android UI 测试继续 NOT RUN,未重新启用,不将跳过作为通过。

第一批高频页面修改(保留)

功能提交 2f6aae3bd6e9c4e1b88cf37ef7b74f190d1306e2,字段修复 a4b65a3ccfc58dbe50b6f9363d969ad33bd9dcfa
收藏前置、空区域压缩、真实工具描述与版本降级、列表排序与数量整合、清除空搜索、导入后打开真实工具、专用导入页结果不被首页计时清除、确认弹窗内容规范,以及权限/后台任务逐项懒加载。
第一批 Android CI 35702544764 的 Debug/Release 编译、JVM、接口与资源检查及 APK 上传已通过。缺失 description 映射的编译错误已修复,未绕过清单验证器。

更早的公共组件优化(保留)

顶部标题避让实际按钮;搜索清空按钮固定槽位与聚焦反馈;玻璃导航视觉内容轻缩至 97%,逐帧值在布局/绘制阶段读取;过滤空说明、纯信息项不显示进入箭头,可反向折叠动效。

模拟器测试与发布边界

仅本仓库 PR #22/本优化分支手动运行跳过 UI 测试 APK 编译和模拟器执行,保留普通 APK 编译、JVM、接口及资源检查,范围为 build_and_unit_only。默认分支、其他 PR 与正式签名任务原规则未改。
此前新增折叠测试时钟问题已修复,随后模拟器桌面 ANR 抢占焦点,用户要求停用本分支模拟器测试;没有声称每个历史失败均已逐一证明为环境问题。

签名与待验收事项

此前提供的原签名 APK 只包含更早的公共组件批次,不包含第一/第二批页面改动。独立签名任务仍绑定旧成功产物,本轮没有修改它;普通 PR Debug/未签名 Release 不能当作原签名覆盖安装包。
真机视觉、键盘与大字体、实际拖动/返回行为及帧时间尚未实测;不宣称全部卡顿或 UI 回归已解决。

Apply Emil-inspired design polish to the existing Compose components:
- Measure toolbar controls before laying out titles, including RTL and large text.
- Keep search geometry stable and expose focused state without hidden controls.
- Defer navigation animation reads to placement and drawing, preserving hit targets.
- Clarify settings rows and make disclosure feedback interruptible.
- Add parameterized Android behavior regressions for six appearance variants.

Preserve public component APIs, existing materials, runtime behavior and dependencies.
Android compilation and behavior verification are delegated to the existing PR CI.
Settle initial content before freezing the clock, advance a frame after each
click before checking semantics, and restore clock state in finally.
Preserve all theme cases and rapid retargeting assertions; additionally
verify that all three click events are delivered and the final state holds.

Fixes the six disclosure test failures in Android CI run 35676762827.
…nagement lists

Prioritize favorites, compact catalog sorting and empty states, display verified manifest descriptions through the existing icon cache, open the actual imported tool, share confirmation content without replacing dialog hosts, and emit management rows as keyed lazy items.

Preserve the branch-only Android UI test waiver, original signing workflows, app identity, permissions, package validation, and runtime behavior. Add JVM import-target state regressions; no emulator tests added.
@gkeyes gkeyes changed the title UI polish: 自适应标题、稳定搜索布局与轻量操作反馈 UI polish: 公共组件与高频页面优化、导入直达及长列表懒加载 Sep 22, 2026
…aries

Clarify group selection and unsaved edits, streamline appearance settings with a live token preview, show per-tool host grant summaries, prioritize backup actions and restore counts, and make browser address actions directly accessible.

Keep original permission defaults and mutation paths, backup consent and rollback, browser security controls, app identity, dependency graph and branch-only emulator waiver. Add JVM regressions for draft changes, restore summaries and permission counts.
@gkeyes gkeyes changed the title UI polish: 公共组件与高频页面优化、导入直达及长列表懒加载 UI polish: 公共组件、高频流程与次级页面打磨 Sep 22, 2026
Preserve existing secondary-page changes and wire the cached tool name into loading and exit feedback without a new catalog subscription. Keep runtime readiness, WebView lifetime, navigation timing and confirmation behavior unchanged.

Use indeterminate feedback rather than a fabricated percentage. Keep short errors and startup warnings visible, while long runtime diagnostics retain their first reason and full selectable details. Preserve old composable signatures and add six JVM presentation regressions.

No changes to dependencies, permissions, database, package identity, version, signing or emulator-test policy.

gkeyes commented Sep 22, 2026

Copy link
Copy Markdown
Owner Author

原签名 Release APK 已交付(包含第一、第二批优化)

更新此前“尚未签名/构建进行中”的状态:

  • 源码:b818122dec51e9b028f049a2fcf40bf6db63cd42,包含全部公共组件、第一批、第二批及工具加载/退出/错误展示补充。
  • 源构建:Android CI 35707164552 已完成,结果 success。APK 来源 artifact 10684679800,PR 实际构建提交 986988fea15ea414bec3a0529004911253679711
  • 签名提交:83b90e0e0633774b3c42b35b93176a6c7e147b44,仅更新 .github/workflows/ui-polish-signed.yml 的固定来源与交付名称,App 源码未改变。
  • 原密钥签名任务 35707918840 已完成,结果 success。下载 签名产物 artifact 10685965289,解压后安装 toolbox-v0.8.5-ui-stage2-release.apk

实际 APK 校验

  • 包名 io.toolbox.host,版本 0.8.5,versionCode 38,不可调试的 Release APK,大小 5,454,746 字节。
  • 使用仓库原密钥;apksigner verify、证书对比、包名/版本核对、zipalign 检查全部通过。
  • 证书 SHA-256:849be1fd8066964d6194faa538fc0b17b4b17e5c116304e1d3be8ff725e4c71d,与已发布 v0.8.5 原签名一致。
  • APK SHA-256:eb052a7d8f3919eb809c853c2633121b89dc87d4912d607e38b2b198aae68bb9
  • 下载 ZIP SHA-256:ff949d530081019045a4d9379beb6143c25a36906c9c53f45fa100649302fed0
  • 下载后再次核对全部交付文件哈希;直接提取新旧 APK 的 v2 签名证书,证书字节一致;新 APK 内 125 个文件与成功构建的未签名 Release 逐项一致。

包含 BUILD_RECEIPT.jsonSIGNATURE.txtREFERENCE_SIGNATURE.txtBADGING.txtSHA256SUMS.txt。同原签名且已安装 versionCode 不高于 38 时具备覆盖安装条件,不需卸载。未在用户手机实际安装。

不在本地编译或签名,不导出私钥,不合并 PR,不修改默认分支,不发布新的 GitHub Release。Android 模拟器 UI 测试仍为 NOT RUN,真机视觉/性能仍未实测;签名和编译成功不等于完成 UI 验收。

@gkeyes
gkeyes merged commit 83b90e0 into codex/refactor-lightweight-v2 Sep 22, 2026
14 checks passed
@github-actions
github-actions Bot deleted the codex/ui-polish-emil-20260922 branch September 22, 2026 11:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant