Commit Graph

2026 Commits

Author SHA1 Message Date
mango
4acf16893f fix(query): preserve selected new query context 2026-08-07 21:58:53 +08:00
mango
0e2a28039e Merge origin/dev into pull request 874 2026-08-07 21:50:01 +08:00
virgosgod-maker
0810fed618 🐛 fix(query-editor): 修复右键菜单无法粘贴内容 (#875)
## 背景

Issue #873 中,Windows 安装包内的 SQL 编辑器通过右键菜单执行“粘贴”时,浏览器剪贴板 API 会受到 WebView
权限限制,导致 Monaco 无法取得剪贴板内容。

## 变更点

- 在 Wails 运行环境中覆盖 Monaco 的粘贴命令,优先读取 Wails 原生剪贴板
- 将原生剪贴板文本交回 Monaco 的 paste handler,保留选区、多光标和撤销行为
- 使用引用计数管理全局命令生命周期,并保留浏览器剪贴板回退
- 增加原生读取、浏览器回退、多编辑器卸载及只读编辑器回归测试

## 影响范围

- 仅影响 Wails 环境下 SQL 编辑器的右键粘贴
- 普通浏览器环境继续使用 Monaco 默认粘贴逻辑
- 不涉及后端接口、配置、依赖或生成文件变更

## 验证

- 定向单元测试:14/14 通过
- TypeScript 类型检查通过
- 前端生产构建通过(7981 modules transformed)
- Wails runtime 实际验证右键粘贴可插入剪贴板文本
- 前端全量测试中 3 个测试文件因并发资源争用超时,隔离重跑 131/131 通过

Closes #873
2026-08-07 21:45:05 +08:00
virgosgod-maker
b085d01ba9 feat(query): 支持拖拽结果字段插入 SQL (#870)
## 变更说明

- 支持将查询结果集字段拖入 SQL 编辑器,并按光标位置、选区和字段上下文生成插入文本
- 复用同一次表头拖拽完成结果集内部列排序,不影响字段拖入查询区
- 使用结果集作用域隔离列排序,避免跨结果集误重排
- 鼠标使用原生 HTML 拖放,触摸和触控笔保留 dnd-kit PointerSensor 排序能力

## 测试

- `npm test -- sqlFieldDrop.test.ts dataGridColumnOrder.test.ts`(19
个测试通过)
- `npm run build`
- Windows Wails 桌面端手动验证:结果集列排序、字段拖入查询区

Closes #848
2026-08-07 21:45:02 +08:00
virgosgod-maker
8af55f35cd 🐛 fix(query-editor): 修复新建查询数据库上下文错误 (#872)
## 背景与问题

选中数据库 A 新建查询后,再从侧边栏选中数据库 B 创建查询,旧查询 Tab 的数据库 A 会错误覆盖当前侧边栏选择。

## 变更点

- 新建查询优先使用侧边栏当前选中的连接和数据库
- 仅选择连接时保持数据库为空,不再在数据库列表加载后自动选库
- 手动切换数据库后同步查询 Tab 上下文并刷新 SQL 补全元数据
- 增加新建查询上下文及多 Tab 补全回归测试

## 影响范围

仅影响 SQL 查询 Tab 的新建上下文、数据库选择和补全元数据切换,不改变查询执行与数据源连接逻辑。

## 验证方式

- 相关测试:325 项通过
- 生产构建:通过

Fixes #865
2026-08-07 21:35:00 +08:00
mango
fc038b73a5 fix(query-editor): scope native clipboard paste 2026-08-07 21:16:00 +08:00
mango
6de2304531 fix(data-grid): handle update clause boundaries 2026-08-07 21:15:59 +08:00
mango
5a0d167a21 fix(query): sync toolbar connection context 2026-08-07 21:15:59 +08:00
mango
6115bae2c3 🐛 fix(data-grid): 点击行号选中并取消行悬浮加深 (#871)
Fixes #871
2026-08-07 20:00:53 +08:00
mango
303cb5cc79 🐛 fix(update): 启动时获取最新开发版更新 (#866)
Fixes #866
2026-08-07 19:48:43 +08:00
Syngnat
d7f1297a48 🌐 i18n: 统一显示隐藏字段列文案(6 语言)
- 将字段显示入口明确为显示/隐藏字段列
- 同步简中、繁中、英语、日语、德语和俄语文案
- 更新 DataGrid 布局与图标按钮断言
2026-08-07 17:59:42 +08:00
AutumnNazi
ebd08de6cf 🐛 fix(query-editor): 修复右键菜单无法粘贴内容
- 在 Wails 环境使用原生剪贴板读取 Monaco 粘贴内容
- 复用 Monaco 粘贴处理器保留选区、多光标和撤销行为
- 增加原生回退、引用计数及只读编辑器回归测试
2026-08-07 17:14:31 +08:00
kunghim
e1bc2839c5 feat(query): 新建查询继承当前表上下文 2026-08-07 16:45:31 +08:00
AutumnNazi
b765b22fce 🐛 fix(query-editor): 修复新建查询数据库上下文错误 2026-08-07 15:47:14 +08:00
kunghim
7cb276cc9f 🐛 fix(data-grid): 兼容表头排序与字段拖入查询区 2026-08-07 15:25:46 +08:00
kunghim
f0ffef2080 feat(query): 支持拖拽结果字段插入 SQL (#848) 2026-08-07 15:25:26 +08:00
Syngnat
fdb73e1f83 🐛 fix(workbench): 最近连接返回资源树
- 点击最近连接改为定位并选中侧栏连接或数据库
- 等待连接数据库加载完成后再恢复目标数据库选择
- 保留 Redis、Nacos 等非查询数据源的最近连接入口
- 外部 SQL 目录仍按原行为创建查询标签页
- 增加最近连接与侧栏定位事件回归测试
2026-08-07 15:22:32 +08:00
mango
c3d3f89561 🐛 fix(oracle): 支持 FOR UPDATE 结果直接编辑 (#857)
Fixes #857
2026-08-07 13:43:59 +08:00
mango
94e972f993 🐛 fix(redis): 支持配置 ACL 用户名 (#859)
Fixes #859
2026-08-07 12:17:49 +08:00
Syngnat
f02df7c87d 🔧 chore(frontend): 同步前端安装校验元数据
- 标记 package-lock 中已有的安装脚本\n- 更新 package.json 的 MD5 校验值\n- 不调整依赖版本或依赖树
2026-08-07 11:44:07 +08:00
Syngnat
6042f13d60 📝 docs(readme): 添加官网入口
- 在英文 README 导航区增加 GoNavi 官网链接\n- 在中文 README 导航区增加官网入口\n- 保持下载与快速开始导航顺序不变
2026-08-07 11:43:11 +08:00
Syngnat
5446269855 feat(query-editor): 支持查询另存为快捷键
- 首次保存弹窗自动聚焦查询名称输入框\n- 已保存查询可另存为独立副本并打开新标签页\n- 新增 Cmd/Ctrl+Shift+S 可配置快捷键和平台提示\n- 补齐多语言目录与保存、持久化回归测试
2026-08-07 11:33:37 +08:00
Syngnat
a3f032b1d9 feat(titlebar): 为新建操作提示平台快捷键
- 新建查询与新建连接悬浮提示展示当前生效快捷键
- 按 macOS 和 Windows 格式化组合键并跟随用户自定义绑定
- 快捷键禁用时回退操作名称并补齐平台与隔离回归测试
2026-08-07 10:06:22 +08:00
Syngnat
2f24c9667c 🐛 fix(workbench): 统一最近连接与资源树图标
- 最近连接复用资源树的数据库图标类型与强调色解析
- 保留自定义图标和颜色并按连接类型回退默认视觉
- 新增渲染回归测试覆盖 MySQL 与自定义 PostgreSQL 图标
2026-08-07 10:05:53 +08:00
Syngnat
79af082908 🐛 fix(sidebar): 修复连接树末项无法完整显示 (#863)
## 背景

V2 左侧连接树内容超过可视区域时,虚拟滚动高度按外层完整高度计算,而实际列表区域还需避开顶部间距和横向滚动条预留,导致最末项无法完整滚入视图。

## 修改内容

- 按 V2 实际可见区域计算连接树虚拟滚动高度
- 保持旧版侧边栏原有高度行为不变
- 补充正常高度、极小高度与高 DPI 小数高度的回归测试

## 影响范围

- 仅 V2 左侧连接树的虚拟滚动边界
- 不修改连接数据、展开状态或旧版 UI 布局

## 验证

- `npm test -- --minWorkers=1 --maxWorkers=1`(前端全量测试)
- `npm run build`(前端生产构建)
- `npm test -- --run src/components/sidebarV2Utils.tree-height.test.ts`
- `npm test -- --run src/components/Sidebar.locate-toolbar.test.tsx`
2026-08-07 08:15:15 +08:00
Syngnat
4d190989df feat(external-sql): 支持 SQL 文件指定执行数据库 (#862)
## 背景

Issue #847 希望外部 SQL 文件能够单独指定执行连接和数据库,并在后续打开时自动恢复该上下文,减少在数据库客户端之间复制 SQL
的操作成本。

## 变更点

- 在外部 SQL 文件右键菜单增加“指定执行数据库”,支持选择连接、数据库及清除单独绑定
- 将文件绑定持久化到外部 SQL 目录配置,并在树节点、最近文件、大文件执行、顶部文件入口和 AI 文件检查中统一解析
- 文件或目录重命名时同步迁移绑定,删除时清理失效绑定
- 最近 SQL 文件按物理路径去重,避免切换指定数据库后重复展示同一文件
- 补充六语言文案及绑定优先级、持久化、生命周期和菜单回归测试

## 影响范围

- 仅影响外部 SQL 文件的上下文选择和最近文件展示
- 未绑定文件仍使用原有目录默认上下文;清除单独绑定后恢复原行为
- 不涉及后端接口、数据库迁移、依赖或构建链路变更

## 验证

- `npx vitest run src/components/TabManager.recent.test.ts
src/components/ai/aiExternalSqlFileInsights.test.ts
src/components/sidebar/sidebarLegacyNodeMenu.external-sql.test.tsx
src/store.test.ts src/utils/externalSqlTree.test.ts`:128 项通过
- `npx tsc --noEmit`:通过
- `npm run build`:通过
- 六份 `shared/i18n/*.json`:解析成功且键集合一致
- `git diff --cached --check`:通过

Closes #847
2026-08-07 08:15:11 +08:00
Syngnat
0439c472a9 🐛 fix(data-grid): 统一待提交单元格视觉与填充模板交互
- 将待提交状态绘制到完整单元格,保持悬停、行选择与固定列视觉一致
- 区分单元格选择、剪贴板复制、填充模板与批量设值操作
- 统一模板目标行解析,排除源行、查找高亮及右键误批量应用
- 完善无障碍提示、多语言文案与回归测试

Refs #856
2026-08-06 23:52:26 +08:00
AutumnNazi
da17b8e53d 🐛 fix(sidebar): 修复连接树末项无法完整显示 2026-08-06 22:42:55 +08:00
AutumnNazi
aeb0b5bc07 feat(external-sql): 支持 SQL 文件指定执行数据库
- 为外部 SQL 文件增加连接与数据库单独绑定,并持久化保存
- 统一侧边栏、最近文件、大文件执行、工具栏和 AI 文件检查上下文
- 在文件与目录重命名、删除时迁移或清理绑定
- 按物理路径去重最近 SQL 文件并补充多语言与回归测试
2026-08-06 21:46:37 +08:00
Syngnat
b3855fa7c8 feat(table-designer): 支持选择默认 Schema (#850) (#861)
## 关联 Issue

Fixes #850

## 问题根因

表设计器只接收数据库名和表名,PostgreSQL/Kingbase 的 Schema
上下文没有从数据库树、数据视图继续传递;建表时也直接使用裸表名。因此同一数据库存在多个 Schema 时,创建和修改 SQL 会落到连接默认
Schema,无法选择目标 Schema。

## 修复方案

- 在数据库树、数据视图和表设计器入口之间传递 Schema 上下文。
- 为 PostgreSQL/Kingbase 表设计器增加 Schema 选择器,通过 Schema 列表和
`current_schema()` 初始化当前选择,并按连接记忆最近一次选择。
- 建表时使用所选 Schema 限定裸表名;改表、索引和注释操作统一解析所选 Schema,同时保留显式 `schema.table`
的优先级。
- 使用请求序号和最新选择引用避免异步元数据响应覆盖用户切换;连接被替换或删除时同步清理失效记忆。
- 增加 Schema 解析、连接记忆和入口上下文传递的回归测试。

## 验证结果

| 验证项 | 命令或步骤 | 结果 |
| --- | --- | --- |
| Schema 与入口定向回归 | `npm --prefix frontend test -- <相关测试文件>` | 通过,327/327
|
| 独立安全复核定向回归 | 3 个相关测试文件 | 通过,209/209 |
| TypeScript 检查 | `tsc --noEmit` | 通过 |
| 前端构建 | `npm --prefix frontend run build` | 通过 |
| 完整前端回归 | `npm --prefix frontend test` | 通过,447 个测试文件、3793/3793 |
| 桌面与窄屏 GUI 验收 | 浏览器操作 PostgreSQL/Kingbase 表设计器 Schema 展示、选择及上下文传递路径 |
通过,无布局重叠或控制台错误 |
| 差异检查 | `git diff --check`、`git diff --cached --check` | 通过 |

## 风险与兼容性

Schema 选择能力仅对 PostgreSQL 和 Kingbase 开启;其他数据库类型继续沿用原有数据库/Schema 解析和 UI
行为。未修改后端 API、持久化数据格式或数据库 `search_path`。当 `current_schema()`
查询失败且没有显式或已记忆 Schema 时保持裸表名,交由数据库连接默认行为处理。

## 回滚方式

回滚提交 `92b103a23ce243650025c1c047167be61394d9ed` 即可恢复原行为;本次改动不迁移或修改用户数据。
2026-08-06 21:00:36 +08:00
Syngnat
ed88831661 feat(tab): 支持标签显示直属分组名称 (#860)
## 背景

Issue #853 希望在“设置 → 工作区 → Tab 标签”中增加连接分组名称展示能力,便于在多个服务器分组之间快速识别当前标签来源。

## 变更点

- 在 Tab 标签显示元素中增加“分组”选项,双行布局启用后默认放在第二行
- 根据连接 ID 解析连接直接所属的分组名称,并在分组重命名、移动连接或删除分组后即时刷新
- 嵌套分组场景仅展示连接的直属分组名称,不继承、不拼接父级分组路径
- 未分组连接的分组值保持为空,不生成多余分隔符
- 为长分组名称增加收缩与省略显示,并补充六种语言文案
- 增加分组展示、未分组回退及嵌套直属分组边界测试

## 影响范围

- 仅影响工作区 Tab 标签的可选显示内容
- “分组”默认不启用,不改变现有用户的 Tab 布局和显示结果
- 不涉及后端接口、连接配置、数据库结构或数据迁移

## 验证

- `npm run test -- src/utils/tabDisplay.test.ts`:27/27 通过
- `npx tsc --noEmit --pretty false`:通过
- `npx vite build`:通过
- 六套 `shared/i18n/*.json`:解析通过
- `git diff --check origin/dev...HEAD`:通过

Closes #853
2026-08-06 20:49:11 +08:00
Syngnat
fd97034d97 feat(data-grid-filter): 优化筛选框显示与性能 (#858)
## 功能
- 优化筛选功能在大数据量时的性能
- 实现值统计结果的升降序排序功能
- 将原有复选框列表替换为带排序功能的Ant Design表格
- 修复筛选弹窗内的事件冒泡问题,避免干扰列表头拖拽

## 验证
- 聚焦测试:18/18 通过。
- tsc --noEmit、Vite 生产构建、git diff --check 均通过。
2026-08-06 20:48:43 +08:00
mango
92b103a23c feat(table-designer): 支持选择默认 Schema (#850) 2026-08-06 20:11:42 +08:00
Syngnat
e406aba664 🐛 fix(mqtt): 修复 Broker 地址端口重复追加
- 前端统一规范化协议、主机与端口,清理历史重复端口配置
- 后端防御性解析 Broker 地址并兼容非默认端口与 IPv6
- 补充保存重开测试及 Broker 地址回归覆盖
2026-08-06 18:20:23 +08:00
AutumnNazi
0921324374 feat(tab): 支持标签显示直属分组名称
- 工作区 Tab 标签新增分组显示项,未分组连接保持为空
- 按连接直接所属分组解析名称,不继承或拼接父级分组路径
- 支持分组变更即时刷新并限制长名称宽度
- 补充六种语言文案及嵌套分组回归测试
2026-08-06 18:19:33 +08:00
wait
0a98541a8e feat(data-grid-filter): 优化筛选框显示与性能
- 优化筛选功能在大数据量时的性能
- 实现值统计结果的升降序排序功能
- 将原有复选框列表替换为带排序功能的Ant Design表格
- 修复筛选弹窗内的事件冒泡问题,避免干扰列表头拖拽
2026-08-06 17:00:07 +08:00
Syngnat
32dfd39827 🐛 fix(query): 放开所有数据源默认查询超时
- 区分连接超时与查询超时,默认查询仅保留手动取消能力
- 清理各数据库及 HTTP 数据源由连接配置派生的请求超时
- 新增按请求 queryTimeout 透传并保留计数任务显式时限
- 补充前后端、缓存键与多驱动超时策略回归测试
2026-08-06 16:50:28 +08:00
Syngnat
0e46b9ff87 🐛 fix(mqtt): 修复 mqttBrokerAddresses 拼接端口号时重复追加的问题
- 问题根因:mqttBrokerAddresses 中主 broker 地址经过 net.JoinHostPort 再解析再格式化的冗余往返
- 触发条件:config.Host 中已含端口号时,net.JoinHostPort 会再次拼接导致 host:port:port
- 修复方式:去掉中间往返,直接使用 mqttFormatHostPort(host, port) 构建地址
- 影响范围:仅 MQTT 数据源的主 broker 地址构造逻辑
2026-08-06 16:47:51 +08:00
Syngnat
e2615d9cb8 feat(data-grid): 增加结果视图字段搜索定位 (#854)
## 关联 Issue

Closes #845

## 改动说明

- 在文本结果视图增加字段搜索,支持字段名和字段注释的前缀、包含匹配
- 文本视图选中唯一字段后自动滚动定位并高亮,不显示无意义的上下项导航
- 在 JSON 结果视图增加字段搜索,只定位每条记录的顶层真实字段键,避免命中字段值或嵌套 JSON 同名键
- JSON 视图支持上一项、下一项循环定位,并显示“当前 / 总数”
- 匹配顺序为字段完全匹配、字段前缀、字段包含、注释前缀、注释包含,忽略大小写并保留真实字段名
- 补充 Enter、Shift+Enter、Escape 键盘操作以及六种语言文案
- 统一搜索框与导航按钮为 24px 高度,移除叠加焦点光晕,并将输入及占位文字调整为 12px

## 验证

- `npm test -- --run src/utils/dataGridRecordFieldSearch.test.ts
src/components/DataGridRecordViews.interaction.test.tsx
src/components/DataGrid.layout.test.tsx`(46 tests passed)
- `npm run build`
- `go test ./shared/i18n`
2026-08-06 12:11:54 +08:00
Syngnat
cb683ec7e5 🐛 fix(tab): 修复 Schema 副行显示 (#851) (#852)
## 关联 Issue

Fixes #851

## 问题根因

Tab 标签展示的 Schema 字段只从 `tableName`、`viewName` 等对象名称的限定前缀推导,没有读取
`TabData.schemaName`。当 PostgreSQL / Kingbase 标签使用“裸对象名 + 独立 schema
元数据”时,Schema 副行为空,而仍启用的 Database 字段继续展示数据库名,表现为选择 Schema 后仍只看到数据库名称。

## 修复方案

- Schema 标签值优先使用 `TabData.schemaName`,缺失时保留原有的限定对象名解析逻辑。
- 增加“裸表名 + 独立 schema 元数据”的回归测试,确认双行标签副行展示 `SCHEMA:reporting`。
- 不改变数据库字段、对象标题、标签配置格式或已有 schema 限定名行为。

## 验证结果

| 验证项 | 命令或步骤 | 结果 |
| --- | --- | --- |
| 缺陷复现 | `npm --prefix frontend test --
src/utils/tabDisplay.test.ts`(修复前) | 新增用例失败:副行实际为空,期望 `SCHEMA:reporting`
|
| Schema 副行回归 | `npm --prefix frontend test --
src/utils/tabDisplay.test.ts` | 通过,23/23 |
| 标签展示相关测试 | `npm --prefix frontend test --
src/components/TabManager.hover.test.tsx
src/components/TabManager.recent.test.ts src/utils/tabDisplay.test.ts` |
通过,38/38 |
| 完整前端测试 | `npm --prefix frontend test` | 通过,445 个文件、3770/3770 |
| 前端生产构建 | `npm --prefix frontend run build` | 通过,TypeScript 与 Vite 构建完成
|
| GUI 设置交互 | 浏览器模式打开“设置中心 → 主题与外观 → 工作区”,启用 Schema | 通过,Schema
自动加入副行,预览更新;测试后已恢复原设置 |
| GUI 布局 | 1280×720 与应用最小支持宽度 900×720 | 通过,无白屏或控件重叠 |
| Diff 检查 | `git diff --check`、`git diff --cached --check` | 通过 |

浏览器 Mock 不提供 PostgreSQL / Kingbase schema 表数据,无法在 GUI 中构造“裸表名 + 独立
schema 元数据”的精确对象标签;该路径由新增回归测试覆盖。内置浏览器未提供控制台日志读取接口。

## 风险与兼容性

改动仅影响标签 Schema 字段的取值优先级。已有 `schemaName` 时使用专用元数据;未提供时继续从限定对象名解析。无公共
API、配置、持久化格式、数据、并发或性能变化。

## 回滚方式

回滚提交 `90020799ad078d3cb5db7bc495fb6f23d1f6bc68` 即可。回滚只恢复旧的标签 Schema
推导逻辑,不影响数据或配置。
2026-08-06 12:11:24 +08:00
kunghim
cf8397d310 feat(data-grid): 增加结果视图字段搜索定位 2026-08-06 11:33:06 +08:00
mango
90020799ad 🐛 fix(tab): 修复 Schema 副行显示 (#851) 2026-08-06 11:18:09 +08:00
Syngnat
bdd84db52c 🐛 fix(data-sync): 修复跨库同步静默失败与数据安全问题
- 聚合表级失败并保留已确认提交计数,避免任务误报成功

- 绑定分析上下文与实际同步模式,阻止陈旧或无效配置执行

- 加固全量覆盖及同端点分页写入,补充跨库与失败回归测试

Refs #846
2026-08-05 23:55:44 +08:00
Syngnat
005113dd79 🐛 fix(redis): 修复列表新增与精确删除
- 对齐新版 Redis List 头尾新增的 Wails 参数契约

- 分别使用 LPUSH 与 RPUSH 保证插入位置语义

- 按索引原子删除并避免重复值误删

- 补充多语言文案与前后端回归测试

Refs #639
2026-08-05 22:33:53 +08:00
Syngnat
450b70178c 🐛 fix(oceanbase/dameng): 修复元数据连接与带点对象名解析
- OceanBase Oracle 元数据请求复用基础连接,避免 CURRENT_SCHEMA 初始化触发 EOF
- 达梦结果编辑保留带点 owner 边界,统一 SQL 预览与实际执行目标
- 完善限定名解析、补全导航与数据库回归测试

Refs #836
2026-08-05 16:24:02 +08:00
Syngnat
e42f2ba7b2 feat(tab): 增加查询标签右键重命名 (#844)
## 变更说明

- 在查询 Tab 的右键菜单中增加“重命名查询”入口。
- 复用 QueryEditor 现有的重命名流程,保持保存记录、Tab 标题和未保存查询引导行为一致。
- 右键非当前查询 Tab 时先激活目标 Tab,再打开对应的重命名窗口。
- SQL 文件 Tab 保留现有不可重命名限制,表数据等非查询 Tab 不显示该菜单项。
- 通过带 tabId 的事件只通知目标 QueryEditor,避免误操作其他查询 Tab。

## 测试

- 定向测试:325 passed
- npm run build:TypeScript 和 Vite 构建通过
- Wails Windows 测试包:GoNavi-issue-835-query-tab-rename.exe
- 已完成人工测试验证

Fixes #835
2026-08-05 14:35:49 +08:00
Syngnat
308b8de07e 🐛 fix(about): 移除重复更新日志入口 (#834) (#843)
## 关联 Issue

Fixes #834

## 问题根因

V2
设置中心的“关于”页面已经在版本信息区域提供“查看更新日志”链接,但底部复用了旧版关于弹窗的操作集合,额外再次渲染了同名按钮,造成入口重复并增加页面纵向占用。

## 修复方案

为关于页底部操作集合区分页面形态:V2
设置中心隐藏重复的底部更新日志按钮,保留版本信息区域的入口;旧版独立关于弹窗继续保留原有更新日志按钮。新增回归测试覆盖两种页面形态的入口策略。

## 验证结果

| 验证项 | 命令或步骤 | 结果 |
| --- | --- | --- |
| 回归测试(修复前) | `npm --prefix frontend test --
src/utils/aboutUpdateActions.test.ts` | 按预期失败:设置中心仍返回显示更新日志入口 |
| 相关前端测试 | `npm --prefix frontend test --
src/utils/aboutUpdateActions.test.ts
src/hooks/useAppUpdateManager.test.tsx
src/components/UpdateReleaseNotesModal.test.tsx
src/App.tool-center.test.ts` | 通过,32 tests |
| 前端构建 | `npm --prefix frontend run build` | 通过,TypeScript 与 Vite 构建成功 |
| 完整前端测试 | `npm --prefix frontend test` | 通过,445 test files / 3748 tests
|
| Web Server 健康检查 | 隔离临时数据根目录启动 `go run . web-server --addr
127.0.0.1:34117`,请求 `GET /__gonavi/healthz` | 通过,HTTP 200 / `ok` |
| 桌面视口 UI 验证 | Web Server 登录后进入 Settings → About,视口 `1280×720` |
通过:`View release notes` 按钮数量为 1;页面
`scrollWidth=clientWidth=1280`、`scrollHeight=clientHeight=720`;截图确认底部仅保留检查和下载操作
|
| 窄屏视口 UI 验证 | 同一路径,视口 `390×844` | 通过入口验收:按钮数量为 1;页面
`scrollWidth=clientWidth=390`、`scrollHeight=clientHeight=844`。同时观察到设置中心既有双栏内容在窄屏下挤压,该布局不在本次
diff 范围内,未混入本 PR |

## 风险与兼容性

仅调整 V2 设置中心底部操作按钮的显示条件,不改变更新检查、更新日志弹窗、下载或旧版关于弹窗行为;不涉及数据、配置、公共 API
或依赖。窄屏双栏布局的既有显示问题仍需单独评估。

## 回滚方式

回滚提交 `a0f84fd6e364daa4db50eac2291861ffa9da80c0` 即可恢复原有入口显示逻辑,不影响数据或配置。
2026-08-05 14:33:33 +08:00
kunghim
209b6638bd feat(tab): 增加查询标签右键重命名 2026-08-05 14:04:24 +08:00
mango
a0f84fd6e3 🐛 fix(about): 移除重复更新日志入口 (#834) 2026-08-05 11:29:59 +08:00
github-actions[bot]
35b7267ec0 chore(docs): refresh star history chart [skip ci] 2026-08-05 03:21:08 +00:00