ui preview for #11544 at a4a82f2

This commit is contained in:
github-actions[bot]
2026-10-10 03:41:50 +00:00
commit 483cf6fc0d
414 changed files with 4037 additions and 0 deletions
View File
+1
View File
@@ -0,0 +1 @@
<!doctype html><meta charset="utf-8"><title>dbx UI previews</title><p>Screenshots and recordings of <a href="https://github.com/t8y2/dbx/pulls">t8y2/dbx</a> pull requests, made by .github/workflows/ui-preview.yml.</p>
Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

+15
View File
@@ -0,0 +1,15 @@
<!doctype html><html lang="zh"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
<title>#10801 界面预览 · 7b40675</title>
<style>:root{color-scheme:light dark;--bg:#f6f6f7;--fg:#1d1d1f;--muted:#6e6e73;--card:#fff;--line:#e5e5ea}
@media (prefers-color-scheme:dark){:root{--bg:#111113;--fg:#f2f2f4;--muted:#9a9aa0;--card:#1c1c1f;--line:#2c2c30}}
body{margin:0;background:var(--bg);color:var(--fg);font:15px/1.6 -apple-system,"Segoe UI","PingFang SC","Noto Sans CJK SC",sans-serif}
main{max-width:1200px;margin:0 auto;padding:28px 16px 60px}h1{font-size:20px;margin:0 0 4px}.m{color:var(--muted);font-size:13px;margin:0 0 20px}
.warn{margin:0 0 20px;padding:10px 14px;border:1px solid #c0392b;border-radius:10px;background:rgba(192,57,43,.07);color:#c0392b;font-size:14px}
figure.shaky img{border-color:#c0392b}
video,img{display:block;width:100%;border-radius:10px;border:1px solid var(--line);background:var(--card)}figure{margin:0 0 28px}figcaption{color:var(--muted);font-size:13px;margin-top:8px}
a{color:inherit}</style>
<main><h1>#10801 界面预览</h1><p class="m">commit 7b40675 · <a href="https://github.com/t8y2/dbx/pull/10801">回到 PR</a> · 在 PostgreSQL 连接的数据库节点下新增了 3 个可浏览的组节点:外部数据包装器、外部服务器、用户映射。展开后可看到对应对象列表,点击或右键可打开详情对话框,并展示字段信息与 DDL 预览。</p>
<p class="warn">⚠️ 这次录制有 4 步没能按计划执行;带 ⚠️ 的截图拍摄于步骤失败之后,画面未必是说明文字所描述的状态。</p>
<figure><video src="preview.mp4" controls autoplay muted playsinline poster="poster.png"></video><figcaption>红线是鼠标走过的轨迹,红色圆环是一次点击;底部文字是这一步在做什么。多个场景各自从应用初始状态开始。空格暂停,← → 逐段查看。</figcaption></figure>
<figure class="shaky"><img src="01-postgres-fdw-groups-entry.png" alt="展示数据库节点下新增的 FDW 相关 group 入口"><figcaption>⚠️ 树中出现 FDW 组节点 · 展示数据库节点下新增的 FDW 相关 group 入口</figcaption></figure>
</main></html>
+30
View File
@@ -0,0 +1,30 @@
{
"summary": "在 PostgreSQL 连接的数据库节点下新增了 3 个可浏览的组节点:外部数据包装器、外部服务器、用户映射。展开后可看到对应对象列表,点击或右键可打开详情对话框,并展示字段信息与 DDL 预览。",
"scenes": [
{
"title": "树中出现 FDW 组节点",
"shots": [
{
"file": "01-postgres-fdw-groups-entry.png",
"caption": "展示数据库节点下新增的 FDW 相关 group 入口",
"width": 1120,
"warn": true
}
],
"derailed": true
}
],
"video": "preview.mp4",
"poster": "poster.png",
"errors": [
"树中出现 FDW 组节点 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"main 默认库\" (0 in the page)",
"树中出现 FDW 组节点 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"main 默认库\" (0 in the page)",
"树中出现 FDW 组节点 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"main 默认库\" (0 in the page)",
"树中出现 FDW 组节点 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"main 默认库\" (0 in the page)"
],
"leak": false,
"skipped": null,
"mismatch": "PR 说明里提到“扩展 / 事件触发器已确立的全链路架构模式”以及 Kingbase fallback 等后端链路,这些都不是单纯前端可见点;另外描述里说“截图/录屏已附”,但 diff 本身只提供了页面实现,没有实际录屏内容。",
"unseen": "沙盒里没有 PostgreSQL/Kingbase 服务器连接,只有 SQLite 种子数据,所以无法实际展开这 3 个新 group、加载对象列表或打开对应详情对话框。这里只能展示数据库树中该功能入口所在位置。",
"interactive": true
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 275 KiB

Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 287 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 292 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 478 KiB

+17
View File
@@ -0,0 +1,17 @@
<!doctype html><html lang="zh"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
<title>#10812 界面预览 · 89580e2</title>
<style>:root{color-scheme:light dark;--bg:#f6f6f7;--fg:#1d1d1f;--muted:#6e6e73;--card:#fff;--line:#e5e5ea}
@media (prefers-color-scheme:dark){:root{--bg:#111113;--fg:#f2f2f4;--muted:#9a9aa0;--card:#1c1c1f;--line:#2c2c30}}
body{margin:0;background:var(--bg);color:var(--fg);font:15px/1.6 -apple-system,"Segoe UI","PingFang SC","Noto Sans CJK SC",sans-serif}
main{max-width:1200px;margin:0 auto;padding:28px 16px 60px}h1{font-size:20px;margin:0 0 4px}.m{color:var(--muted);font-size:13px;margin:0 0 20px}
.warn{margin:0 0 20px;padding:10px 14px;border:1px solid #c0392b;border-radius:10px;background:rgba(192,57,43,.07);color:#c0392b;font-size:14px}
figure.shaky img{border-color:#c0392b}
video,img{display:block;width:100%;border-radius:10px;border:1px solid var(--line);background:var(--card)}figure{margin:0 0 28px}figcaption{color:var(--muted);font-size:13px;margin-top:8px}
a{color:inherit}</style>
<main><h1>#10812 界面预览</h1><p class="m">commit 89580e2 · <a href="https://github.com/t8y2/dbx/pull/10812">回到 PR</a> · MCP 工具权限列表新增了两个连接管理项:`dbx_get_connection` 和 `dbx_update_connection`,并补齐了对应的本地化标签与权限选择逻辑。前端设置页里与 MCP 工具权限相关的开关会把这两个工具单独列出、可独立勾选。</p>
<p class="warn">⚠️ 这次录制有 6 步没能按计划执行;带 ⚠️ 的截图拍摄于步骤失败之后,画面未必是说明文字所描述的状态。</p>
<figure><video src="preview.mp4" controls autoplay muted playsinline poster="poster.png"></video><figcaption>红线是鼠标走过的轨迹,红色圆环是一次点击;底部文字是这一步在做什么。多个场景各自从应用初始状态开始。空格暂停,← → 逐段查看。</figcaption></figure>
<figure class="shaky"><img src="01-plugin-center-settings.png" alt="查看插件中心设置页"><figcaption>⚠️ 打开 MCP 工具权限设置 · 查看插件中心设置页</figcaption></figure>
<figure class="shaky"><img src="02-plugin-center-settings-scrolled.png" alt="查看设置页下方内容"><figcaption>⚠️ 打开 MCP 工具权限设置 · 查看设置页下方内容</figcaption></figure>
<figure class="shaky"><img src="03-mcp-connection-tool-options.png" alt="查看新增的连接详情与修改权限项"><figcaption>⚠️ 查看新增工具项 · 查看新增的连接详情与修改权限项</figcaption></figure>
</main></html>
+50
View File
@@ -0,0 +1,50 @@
{
"summary": "MCP 工具权限列表新增了两个连接管理项:`dbx_get_connection` 和 `dbx_update_connection`,并补齐了对应的本地化标签与权限选择逻辑。前端设置页里与 MCP 工具权限相关的开关会把这两个工具单独列出、可独立勾选。",
"scenes": [
{
"title": "打开 MCP 工具权限设置",
"shots": [
{
"file": "01-plugin-center-settings.png",
"caption": "查看插件中心设置页",
"width": 2880,
"warn": true
},
{
"file": "02-plugin-center-settings-scrolled.png",
"caption": "查看设置页下方内容",
"width": 2880,
"warn": true
}
],
"derailed": true
},
{
"title": "查看新增工具项",
"shots": [
{
"file": "03-mcp-connection-tool-options.png",
"caption": "查看新增的连接详情与修改权限项",
"width": 2880,
"warn": true
}
],
"derailed": true
}
],
"video": "preview.mp4",
"poster": "poster.png",
"errors": [
"打开 MCP 工具权限设置 · click button[data-slot=\"button\"]: nothing visible matches button[data-slot=\"button\"] with \"设置\" (0 in the page)",
"打开 MCP 工具权限设置 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"设置\" (0 in the page)",
"查看新增工具项 · click button[data-slot=\"button\"]: nothing visible matches button[data-slot=\"button\"] with \"设置\" (0 in the page)",
"查看新增工具项 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"设置\" (0 in the page)",
"查看新增工具项 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"MCP\" (0 in the page)",
"查看新增工具项 · scroll : nothing visible matches div.connection-tree-content div with \"dbx_get_connection\" (0 in the page)"
],
"leak": false,
"skipped": null,
"mismatch": "",
"unseen": "这次 PR 主要改的是 MCP 工具权限目录与文案;沙盒里没有单独暴露新增的设置页视觉差异入口,且没有可演示的 AI/MCP 实际工具调用界面,所以只能在设置里的 MCP 权限目录看到条目变化。",
"interactive": true
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 270 KiB

Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 245 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 245 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 265 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 262 KiB

+18
View File
@@ -0,0 +1,18 @@
<!doctype html><html lang="zh"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
<title>#10841 界面预览 · f19567b</title>
<style>:root{color-scheme:light dark;--bg:#f6f6f7;--fg:#1d1d1f;--muted:#6e6e73;--card:#fff;--line:#e5e5ea}
@media (prefers-color-scheme:dark){:root{--bg:#111113;--fg:#f2f2f4;--muted:#9a9aa0;--card:#1c1c1f;--line:#2c2c30}}
body{margin:0;background:var(--bg);color:var(--fg);font:15px/1.6 -apple-system,"Segoe UI","PingFang SC","Noto Sans CJK SC",sans-serif}
main{max-width:1200px;margin:0 auto;padding:28px 16px 60px}h1{font-size:20px;margin:0 0 4px}.m{color:var(--muted);font-size:13px;margin:0 0 20px}
.warn{margin:0 0 20px;padding:10px 14px;border:1px solid #c0392b;border-radius:10px;background:rgba(192,57,43,.07);color:#c0392b;font-size:14px}
figure.shaky img{border-color:#c0392b}
video,img{display:block;width:100%;border-radius:10px;border:1px solid var(--line);background:var(--card)}figure{margin:0 0 28px}figcaption{color:var(--muted);font-size:13px;margin-top:8px}
a{color:inherit}</style>
<main><h1>#10841 界面预览</h1><p class="m">commit f19567b · <a href="https://github.com/t8y2/dbx/pull/10841">回到 PR</a> · 这个 PR 在界面上把“明文导出配置”改成了带凭据开关的确认弹窗,并把连接类型选择器的数据库分类导航改成了默认“全部”视图,支持在全部分类下浏览完整目录、减少重复项。</p>
<p class="warn">⚠️ 这次录制有 9 步没能按计划执行;带 ⚠️ 的截图拍摄于步骤失败之后,画面未必是说明文字所描述的状态。</p>
<figure><video src="preview.mp4" controls autoplay muted playsinline poster="poster.png"></video><figcaption>红线是鼠标走过的轨迹,红色圆环是一次点击;底部文字是这一步在做什么。多个场景各自从应用初始状态开始。空格暂停,← → 逐段查看。</figcaption></figure>
<figure class="shaky"><img src="01-unencrypted-export-default.png" alt="查看不加密导出时的默认提示和凭据选项"><figcaption>⚠️ 明文导出凭据开关 · 查看不加密导出时的默认提示和凭据选项</figcaption></figure>
<figure class="shaky"><img src="02-unencrypted-export-with-credentials.png" alt="查看勾选后的文案和警告样式"><figcaption>⚠️ 明文导出凭据开关 · 查看勾选后的文案和警告样式</figcaption></figure>
<figure><img src="03-connection-picker-all.png" alt="查看数据库类型选择器默认的全部分类视图"><figcaption>连接类型选择器的全部视图 · 查看数据库类型选择器默认的全部分类视图</figcaption></figure>
<figure class="shaky"><img src="04-connection-picker-category-all.png" alt="查看全部分类下的完整数据库类型目录"><figcaption>⚠️ 连接类型选择器的全部视图 · 查看全部分类下的完整数据库类型目录</figcaption></figure>
</main></html>
+58
View File
@@ -0,0 +1,58 @@
{
"summary": "这个 PR 在界面上把“明文导出配置”改成了带凭据开关的确认弹窗,并把连接类型选择器的数据库分类导航改成了默认“全部”视图,支持在全部分类下浏览完整目录、减少重复项。",
"scenes": [
{
"title": "明文导出凭据开关",
"shots": [
{
"file": "01-unencrypted-export-default.png",
"caption": "查看不加密导出时的默认提示和凭据选项",
"width": 2880,
"warn": true
},
{
"file": "02-unencrypted-export-with-credentials.png",
"caption": "查看勾选后的文案和警告样式",
"width": 2880,
"warn": true
}
],
"derailed": true
},
{
"title": "连接类型选择器的全部视图",
"shots": [
{
"file": "03-connection-picker-all.png",
"caption": "查看数据库类型选择器默认的全部分类视图",
"width": 2880
},
{
"file": "04-connection-picker-category-all.png",
"caption": "查看全部分类下的完整数据库类型目录",
"width": 2880,
"warn": true
}
],
"derailed": true
}
],
"video": "preview.mp4",
"poster": "poster.png",
"errors": [
"明文导出凭据开关 · click button: nothing visible matches button with \"导出连接配置\" (0 in the page)",
"明文导出凭据开关 · click button: nothing visible matches button with \"导出连接配置\" (0 in the page)",
"明文导出凭据开关 · click button: nothing visible matches button with \"导出连接配置\" (0 in the page)",
"明文导出凭据开关 · click button: nothing visible matches button with \"导出配置\" (0 in the page)",
"明文导出凭据开关 · click button: nothing visible matches button with \"不加密导出\" (0 in the page)",
"明文导出凭据开关 · click input[type=checkbox]: nothing visible matches input[type=checkbox] (0 in the page)",
"明文导出凭据开关 · click button: nothing visible matches button with \"取消\" (0 in the page)",
"连接类型选择器的全部视图 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"main 默认库\" (0 in the page)",
"连接类型选择器的全部视图 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"customers\" (0 in the page)"
],
"leak": false,
"skipped": null,
"mismatch": "描述里提到的 OAuth 远程资源服务器、MCP / Linux Streamable HTTP、代理/系统服务部署等内容没有对应的前端界面改动可展示;本次可见的前端变化主要是配置导出弹窗和连接选择器。",
"unseen": "OAuth 服务端、CI/workflow、CLI 和后端权限/导入逻辑不在这个浏览器界面里,沙箱也没有外部 IdP、服务器数据库或插件/JDBC 运行时,所以这些部分只能在代码里看,不能通过页面截图验证。",
"interactive": true
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 267 KiB

Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 209 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 209 KiB

+16
View File
@@ -0,0 +1,16 @@
<!doctype html><html lang="zh"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
<title>#11391 界面预览 · 37265ea</title>
<style>:root{color-scheme:light dark;--bg:#f6f6f7;--fg:#1d1d1f;--muted:#6e6e73;--card:#fff;--line:#e5e5ea}
@media (prefers-color-scheme:dark){:root{--bg:#111113;--fg:#f2f2f4;--muted:#9a9aa0;--card:#1c1c1f;--line:#2c2c30}}
body{margin:0;background:var(--bg);color:var(--fg);font:15px/1.6 -apple-system,"Segoe UI","PingFang SC","Noto Sans CJK SC",sans-serif}
main{max-width:1200px;margin:0 auto;padding:28px 16px 60px}h1{font-size:20px;margin:0 0 4px}.m{color:var(--muted);font-size:13px;margin:0 0 20px}
.warn{margin:0 0 20px;padding:10px 14px;border:1px solid #c0392b;border-radius:10px;background:rgba(192,57,43,.07);color:#c0392b;font-size:14px}
figure.shaky img{border-color:#c0392b}
video,img{display:block;width:100%;border-radius:10px;border:1px solid var(--line);background:var(--card)}figure{margin:0 0 28px}figcaption{color:var(--muted);font-size:13px;margin-top:8px}
a{color:inherit}</style>
<main><h1>#11391 界面预览</h1><p class="m">commit 37265ea · <a href="https://github.com/t8y2/dbx/pull/11391">回到 PR</a> · 这次修复让 OceanBase Oracle 的表结构编辑器在读取和编辑字段时保留字符长度单位(BYTE/CHAR),并且 NUMBER 的负 scale 也能完整显示和回填。前端还把 OceanBase Oracle 识别为支持长度单位的数据库类型。</p>
<p class="warn">⚠️ 这次录制有 7 步没能按计划执行;带 ⚠️ 的截图拍摄于步骤失败之后,画面未必是说明文字所描述的状态。</p>
<figure><video src="preview.mp4" controls autoplay muted playsinline poster="poster.png"></video><figcaption>红线是鼠标走过的轨迹,红色圆环是一次点击;底部文字是这一步在做什么。多个场景各自从应用初始状态开始。空格暂停,← → 逐段查看。</figcaption></figure>
<figure class="shaky"><img src="01-structure-editor-opened.png" alt="打开 customers 表后的结构编辑器"><figcaption>⚠️ 打开 SQLite 表结构编辑器 · 打开 customers 表后的结构编辑器</figcaption></figure>
<figure class="shaky"><img src="02-length-unit-controls.png" alt="查看字段类型与长度单位相关控件"><figcaption>⚠️ 查看长度单位控件 · 查看字段类型与长度单位相关控件</figcaption></figure>
</main></html>
+45
View File
@@ -0,0 +1,45 @@
{
"summary": "这次修复让 OceanBase Oracle 的表结构编辑器在读取和编辑字段时保留字符长度单位(BYTE/CHAR),并且 NUMBER 的负 scale 也能完整显示和回填。前端还把 OceanBase Oracle 识别为支持长度单位的数据库类型。",
"scenes": [
{
"title": "打开 SQLite 表结构编辑器",
"shots": [
{
"file": "01-structure-editor-opened.png",
"caption": "打开 customers 表后的结构编辑器",
"width": 2456,
"warn": true
}
],
"derailed": true
},
{
"title": "查看长度单位控件",
"shots": [
{
"file": "02-length-unit-controls.png",
"caption": "查看字段类型与长度单位相关控件",
"width": 2456,
"warn": true
}
],
"derailed": true
}
],
"video": "preview.mp4",
"poster": "poster.png",
"errors": [
"打开 SQLite 表结构编辑器 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"main 默认库\" (0 in the page)",
"打开 SQLite 表结构编辑器 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"main 默认库\" (0 in the page)",
"打开 SQLite 表结构编辑器 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"products\" (0 in the page)",
"打开 SQLite 表结构编辑器 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"main 默认库\" (0 in the page)",
"打开 SQLite 表结构编辑器 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"customers\" (0 in the page)",
"查看长度单位控件 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"main 默认库\" (0 in the page)",
"查看长度单位控件 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"products\" (0 in the page)"
],
"leak": false,
"skipped": null,
"mismatch": "",
"unseen": "需要 OceanBase Oracle 数据源才能直接看到元数据读取和结构编辑回填效果;当前沙箱只有 SQLite 连接,无法在真实 OceanBase Oracle 连接上复现。",
"interactive": true
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 267 KiB

Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 249 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 246 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 246 KiB

+17
View File
@@ -0,0 +1,17 @@
<!doctype html><html lang="zh"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
<title>#11393 界面预览 · 2daec19</title>
<style>:root{color-scheme:light dark;--bg:#f6f6f7;--fg:#1d1d1f;--muted:#6e6e73;--card:#fff;--line:#e5e5ea}
@media (prefers-color-scheme:dark){:root{--bg:#111113;--fg:#f2f2f4;--muted:#9a9aa0;--card:#1c1c1f;--line:#2c2c30}}
body{margin:0;background:var(--bg);color:var(--fg);font:15px/1.6 -apple-system,"Segoe UI","PingFang SC","Noto Sans CJK SC",sans-serif}
main{max-width:1200px;margin:0 auto;padding:28px 16px 60px}h1{font-size:20px;margin:0 0 4px}.m{color:var(--muted);font-size:13px;margin:0 0 20px}
.warn{margin:0 0 20px;padding:10px 14px;border:1px solid #c0392b;border-radius:10px;background:rgba(192,57,43,.07);color:#c0392b;font-size:14px}
figure.shaky img{border-color:#c0392b}
video,img{display:block;width:100%;border-radius:10px;border:1px solid var(--line);background:var(--card)}figure{margin:0 0 28px}figcaption{color:var(--muted);font-size:13px;margin-top:8px}
a{color:inherit}</style>
<main><h1>#11393 界面预览</h1><p class="m">commit 2daec19 · <a href="https://github.com/t8y2/dbx/pull/11393">回到 PR</a> · 本 PR 让 OceanBase Oracle 在表结构编辑器里获得“已有无主键表添加主键”的能力,前端能力判断和后端 DDL 生成都对齐到了 Oracle 的添加主键流程。对已有主键的替换、删除等限制仍保留。</p>
<p class="warn">⚠️ 这次录制有 6 步没能按计划执行;带 ⚠️ 的截图拍摄于步骤失败之后,画面未必是说明文字所描述的状态。</p>
<figure><video src="preview.mp4" controls autoplay muted playsinline poster="poster.png"></video><figcaption>红线是鼠标走过的轨迹,红色圆环是一次点击;底部文字是这一步在做什么。多个场景各自从应用初始状态开始。空格暂停,← → 逐段查看。</figcaption></figure>
<figure class="shaky"><img src="01-table-grid-open.png" alt="打开表后的数据网格与结构相关入口"><figcaption>⚠️ 查看 OceanBase Oracle 结构编辑能力 · 打开表后的数据网格与结构相关入口</figcaption></figure>
<figure class="shaky"><img src="02-structure-editor-view.png" alt="查看结构编辑器里的主键与列选项"><figcaption>⚠️ 进入表结构编辑器看主键开关 · 查看结构编辑器里的主键与列选项</figcaption></figure>
<figure><img src="03-oceanbase-oracle-unseen-placeholder.png" alt="这里应展示 OceanBase Oracle 已有无主键表添加主键的编辑位置,但沙盒没有该服务器连接"><figcaption>说明真实 OceanBase Oracle 位置 · 这里应展示 OceanBase Oracle 已有无主键表添加主键的编辑位置,但沙盒没有该服务器连接</figcaption></figure>
</main></html>
+55
View File
@@ -0,0 +1,55 @@
{
"summary": "本 PR 让 OceanBase Oracle 在表结构编辑器里获得“已有无主键表添加主键”的能力,前端能力判断和后端 DDL 生成都对齐到了 Oracle 的添加主键流程。对已有主键的替换、删除等限制仍保留。",
"scenes": [
{
"title": "查看 OceanBase Oracle 结构编辑能力",
"shots": [
{
"file": "01-table-grid-open.png",
"caption": "打开表后的数据网格与结构相关入口",
"width": 2880,
"warn": true
}
],
"derailed": true
},
{
"title": "进入表结构编辑器看主键开关",
"shots": [
{
"file": "02-structure-editor-view.png",
"caption": "查看结构编辑器里的主键与列选项",
"width": 2880,
"warn": true
}
],
"derailed": true
},
{
"title": "说明真实 OceanBase Oracle 位置",
"shots": [
{
"file": "03-oceanbase-oracle-unseen-placeholder.png",
"caption": "这里应展示 OceanBase Oracle 已有无主键表添加主键的编辑位置,但沙盒没有该服务器连接",
"width": 2880
}
],
"derailed": false
}
],
"video": "preview.mp4",
"poster": "poster.png",
"errors": [
"查看 OceanBase Oracle 结构编辑能力 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"main 默认库\" (0 in the page)",
"查看 OceanBase Oracle 结构编辑能力 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"main 默认库\" (0 in the page)",
"查看 OceanBase Oracle 结构编辑能力 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"main 默认库\" (0 in the page)",
"查看 OceanBase Oracle 结构编辑能力 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"main 默认库\" (0 in the page)",
"查看 OceanBase Oracle 结构编辑能力 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"products\" (0 in the page)",
"进入表结构编辑器看主键开关 · click button: nothing visible matches button with \"结构\" (0 in the page)"
],
"leak": false,
"skipped": null,
"mismatch": "描述里提到的真实 OceanBase Oracle 验收、前端截图/录屏和产品错误界面,在这份 diff 里没有直接体现;另外它强调了“替换、删除、第二主键和外键编辑继续受限”,但本次前端改动主要只展示了 addPrimaryKey 放开。",
"unseen": "沙盒里没有 OceanBase Oracle 服务器连接,只有 SQLite 种子数据,因此无法在真实 OceanBase Oracle 上实际点开并验证结构编辑器里的添加主键交互,只能展示能力逻辑对应的 UI 位置。",
"interactive": true
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 271 KiB

Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 251 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 251 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 251 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 251 KiB

+18
View File
@@ -0,0 +1,18 @@
<!doctype html><html lang="zh"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
<title>#11394 界面预览 · c9b1934</title>
<style>:root{color-scheme:light dark;--bg:#f6f6f7;--fg:#1d1d1f;--muted:#6e6e73;--card:#fff;--line:#e5e5ea}
@media (prefers-color-scheme:dark){:root{--bg:#111113;--fg:#f2f2f4;--muted:#9a9aa0;--card:#1c1c1f;--line:#2c2c30}}
body{margin:0;background:var(--bg);color:var(--fg);font:15px/1.6 -apple-system,"Segoe UI","PingFang SC","Noto Sans CJK SC",sans-serif}
main{max-width:1200px;margin:0 auto;padding:28px 16px 60px}h1{font-size:20px;margin:0 0 4px}.m{color:var(--muted);font-size:13px;margin:0 0 20px}
.warn{margin:0 0 20px;padding:10px 14px;border:1px solid #c0392b;border-radius:10px;background:rgba(192,57,43,.07);color:#c0392b;font-size:14px}
figure.shaky img{border-color:#c0392b}
video,img{display:block;width:100%;border-radius:10px;border:1px solid var(--line);background:var(--card)}figure{margin:0 0 28px}figcaption{color:var(--muted);font-size:13px;margin-top:8px}
a{color:inherit}</style>
<main><h1>#11394 界面预览</h1><p class="m">commit c9b1934 · <a href="https://github.com/t8y2/dbx/pull/11394">回到 PR</a> · 这个改动把已有的 OceanBase Oracle 触发器也纳入结构化编辑的只读限制,和 Oracle 一样,已有触发器不能再用结构化表单改名称、时机、事件和正文;新建草稿仍可编辑。另补齐了 Web 迁移 demo-mode 的测试夹具,但界面上主要可见的是触发器编辑权限变化。</p>
<p class="warn">⚠️ 这次录制有 9 步没能按计划执行;带 ⚠️ 的截图拍摄于步骤失败之后,画面未必是说明文字所描述的状态。</p>
<figure><video src="preview.mp4" controls autoplay muted playsinline poster="poster.png"></video><figcaption>红线是鼠标走过的轨迹,红色圆环是一次点击;底部文字是这一步在做什么。多个场景各自从应用初始状态开始。空格暂停,← → 逐段查看。</figcaption></figure>
<figure class="shaky"><img src="01-shop-database-browser.png" alt="打开商店连接后的数据库浏览页"><figcaption>⚠️ 打开已有触发器的结构编辑 · 打开商店连接后的数据库浏览页</figcaption></figure>
<figure class="shaky"><img src="02-triggers-section.png" alt="结构页里的触发器区域"><figcaption>⚠️ 打开已有触发器的结构编辑 · 结构页里的触发器区域</figcaption></figure>
<figure class="shaky"><img src="03-audit-log-table-open.png" alt="打开审计表后的数据网格"><figcaption>⚠️ 打开已有触发器的结构编辑 · 打开审计表后的数据网格</figcaption></figure>
<figure class="shaky"><img src="04-new-trigger-draft-structure.png" alt="结构页中新建触发器草稿的编辑入口"><figcaption>⚠️ 对照查看新建草稿仍可编辑 · 结构页中新建触发器草稿的编辑入口</figcaption></figure>
</main></html>
+59
View File
@@ -0,0 +1,59 @@
{
"summary": "这个改动把已有的 OceanBase Oracle 触发器也纳入结构化编辑的只读限制,和 Oracle 一样,已有触发器不能再用结构化表单改名称、时机、事件和正文;新建草稿仍可编辑。另补齐了 Web 迁移 demo-mode 的测试夹具,但界面上主要可见的是触发器编辑权限变化。",
"scenes": [
{
"title": "打开已有触发器的结构编辑",
"shots": [
{
"file": "01-shop-database-browser.png",
"caption": "打开商店连接后的数据库浏览页",
"width": 2880,
"warn": true
},
{
"file": "02-triggers-section.png",
"caption": "结构页里的触发器区域",
"width": 2880,
"warn": true
},
{
"file": "03-audit-log-table-open.png",
"caption": "打开审计表后的数据网格",
"width": 2880,
"warn": true
}
],
"derailed": true
},
{
"title": "对照查看新建草稿仍可编辑",
"shots": [
{
"file": "04-new-trigger-draft-structure.png",
"caption": "结构页中新建触发器草稿的编辑入口",
"width": 2880,
"warn": true
}
],
"derailed": true
}
],
"video": "preview.mp4",
"poster": "poster.png",
"errors": [
"打开已有触发器的结构编辑 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"main 默认库\" (0 in the page)",
"打开已有触发器的结构编辑 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"main\" (0 in the page)",
"打开已有触发器的结构编辑 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"main 默认库\" (0 in the page)",
"打开已有触发器的结构编辑 · click button: nothing visible matches button with \"结构\" (0 in the page)",
"打开已有触发器的结构编辑 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"triggers\" (0 in the page)",
"打开已有触发器的结构编辑 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"audit_log\" (0 in the page)",
"对照查看新建草稿仍可编辑 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"main 默认库\" (0 in the page)",
"对照查看新建草稿仍可编辑 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"events\" (0 in the page)",
"对照查看新建草稿仍可编辑 · click button: nothing visible matches button with \"结构\" (0 in the page)"
],
"leak": false,
"skipped": null,
"mismatch": "",
"unseen": "沙盒里只有 SQLite,没有 OceanBase Oracle 连接,所以不能直接展示该数据库类型下已有触发器表单字段变灰/只读的真实效果;只能在支持该类型的数据库连接中验证。",
"interactive": true
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 270 KiB

Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 245 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 249 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 149 KiB

+19
View File
@@ -0,0 +1,19 @@
<!doctype html><html lang="zh"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
<title>#11475 界面预览 · 3b94bf1</title>
<style>:root{color-scheme:light dark;--bg:#f6f6f7;--fg:#1d1d1f;--muted:#6e6e73;--card:#fff;--line:#e5e5ea}
@media (prefers-color-scheme:dark){:root{--bg:#111113;--fg:#f2f2f4;--muted:#9a9aa0;--card:#1c1c1f;--line:#2c2c30}}
body{margin:0;background:var(--bg);color:var(--fg);font:15px/1.6 -apple-system,"Segoe UI","PingFang SC","Noto Sans CJK SC",sans-serif}
main{max-width:1200px;margin:0 auto;padding:28px 16px 60px}h1{font-size:20px;margin:0 0 4px}.m{color:var(--muted);font-size:13px;margin:0 0 20px}
.warn{margin:0 0 20px;padding:10px 14px;border:1px solid #c0392b;border-radius:10px;background:rgba(192,57,43,.07);color:#c0392b;font-size:14px}
figure.shaky img{border-color:#c0392b}
video,img{display:block;width:100%;border-radius:10px;border:1px solid var(--line);background:var(--card)}figure{margin:0 0 28px}figcaption{color:var(--muted);font-size:13px;margin-top:8px}
a{color:inherit}</style>
<main><h1>#11475 界面预览</h1><p class="m">commit 3b94bf1 · <a href="https://github.com/t8y2/dbx/pull/11475">回到 PR</a> · 这次改动让 OceanBase Oracle 的同义词/引用名在补全、语义诊断和表元数据里保留真实解析目标身份,并把当前 schema 单独传递,避免把同义词当成普通本地表处理。界面上主要能看到 SQL 编辑器里的列补全更准确,表详情/编辑相关元数据会跟着真实目标表走。</p>
<p class="warn">⚠️ 这次录制有 7 步没能按计划执行;带 ⚠️ 的截图拍摄于步骤失败之后,画面未必是说明文字所描述的状态。</p>
<figure><video src="preview.mp4" controls autoplay muted playsinline poster="poster.png"></video><figcaption>红线是鼠标走过的轨迹,红色圆环是一次点击;底部文字是这一步在做什么。多个场景各自从应用初始状态开始。空格暂停,← → 逐段查看。</figcaption></figure>
<figure><img src="01-home-screen.png" alt="应用打开后的首页,确认左侧连接树和编辑器入口都在"><figcaption>打开编辑器查看现有树与入口 · 应用打开后的首页,确认左侧连接树和编辑器入口都在</figcaption></figure>
<figure class="shaky"><img src="02-customers-grid-open.png" alt="customers 表打开后的数据网格"><figcaption>⚠️ 打开编辑器查看现有树与入口 · customers 表打开后的数据网格</figcaption></figure>
<figure class="shaky"><img src="03-sql-editor-completion-context.png" alt="SQL 编辑器中输入查询前缀后的状态,观察补全上下文"><figcaption>⚠️ 打开编辑器查看现有树与入口 · SQL 编辑器中输入查询前缀后的状态,观察补全上下文</figcaption></figure>
<figure><img src="04-orders-grid-metadata.png" alt="订单表打开后的数据网格,查看表头、网格工具栏和元数据区域"><figcaption>查看数据网格的表元数据 · 订单表打开后的数据网格,查看表头、网格工具栏和元数据区域</figcaption></figure>
<figure><img src="05-sql-editor-before-completion.png" alt="SQL 编辑器中输入查询前缀后的状态,观察补全是否弹出并与当前连接上下文一致"><figcaption>在 SQL 编辑器里看补全上下文 · SQL 编辑器中输入查询前缀后的状态,观察补全是否弹出并与当前连接上下文一致</figcaption></figure>
</main></html>
+66
View File
@@ -0,0 +1,66 @@
{
"summary": "这次改动让 OceanBase Oracle 的同义词/引用名在补全、语义诊断和表元数据里保留真实解析目标身份,并把当前 schema 单独传递,避免把同义词当成普通本地表处理。界面上主要能看到 SQL 编辑器里的列补全更准确,表详情/编辑相关元数据会跟着真实目标表走。",
"scenes": [
{
"title": "打开编辑器查看现有树与入口",
"shots": [
{
"file": "01-home-screen.png",
"caption": "应用打开后的首页,确认左侧连接树和编辑器入口都在",
"width": 2880
},
{
"file": "02-customers-grid-open.png",
"caption": "customers 表打开后的数据网格",
"width": 2880,
"warn": true
},
{
"file": "03-sql-editor-completion-context.png",
"caption": "SQL 编辑器中输入查询前缀后的状态,观察补全上下文",
"width": 2880,
"warn": true
}
],
"derailed": true
},
{
"title": "查看数据网格的表元数据",
"shots": [
{
"file": "04-orders-grid-metadata.png",
"caption": "订单表打开后的数据网格,查看表头、网格工具栏和元数据区域",
"width": 2880
}
],
"derailed": true
},
{
"title": "在 SQL 编辑器里看补全上下文",
"shots": [
{
"file": "05-sql-editor-before-completion.png",
"caption": "SQL 编辑器中输入查询前缀后的状态,观察补全是否弹出并与当前连接上下文一致",
"width": 2880
}
],
"derailed": false
}
],
"video": "preview.mp4",
"poster": "poster.png",
"errors": [
"打开编辑器查看现有树与入口 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"main 默认库\" (0 in the page)",
"打开编辑器查看现有树与入口 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"main 默认库\" (0 in the page)",
"打开编辑器查看现有树与入口 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"main 默认库\" (0 in the page)",
"打开编辑器查看现有树与入口 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"main 默认库\" (0 in the page)",
"打开编辑器查看现有树与入口 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"customers\" (0 in the page)",
"查看数据网格的表元数据 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"main 默认库\" (0 in the page)",
"查看数据网格的表元数据 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"events\" (0 in the page)"
],
"leak": false,
"skipped": null,
"mismatch": "描述里提到 OceanBase 通过同义词访问对象时列元数据为空、后续补全和行定位丢失真实基表身份,这部分与 diff 一致;但“DBLink 字典入口的可用实例”“远端探测拒绝分支的真实实例验收”在这个沙盒里没有可连接的服务器库,无法在 GUI 中完成。",
"unseen": "这次 UI 验收的关键场景是 OceanBase Oracle 连接上的同义词补全、诊断和行定位;当前沙盒只有 SQLite,两条已保存连接也都是 SQLite,没有 OceanBase / Oracle 实例,所以无法直接复现 PR 里的同义词解析效果。",
"interactive": true
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 266 KiB

Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 249 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 249 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 249 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 249 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 228 KiB

+19
View File
@@ -0,0 +1,19 @@
<!doctype html><html lang="zh"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
<title>#11483 界面预览 · 7b13875</title>
<style>:root{color-scheme:light dark;--bg:#f6f6f7;--fg:#1d1d1f;--muted:#6e6e73;--card:#fff;--line:#e5e5ea}
@media (prefers-color-scheme:dark){:root{--bg:#111113;--fg:#f2f2f4;--muted:#9a9aa0;--card:#1c1c1f;--line:#2c2c30}}
body{margin:0;background:var(--bg);color:var(--fg);font:15px/1.6 -apple-system,"Segoe UI","PingFang SC","Noto Sans CJK SC",sans-serif}
main{max-width:1200px;margin:0 auto;padding:28px 16px 60px}h1{font-size:20px;margin:0 0 4px}.m{color:var(--muted);font-size:13px;margin:0 0 20px}
.warn{margin:0 0 20px;padding:10px 14px;border:1px solid #c0392b;border-radius:10px;background:rgba(192,57,43,.07);color:#c0392b;font-size:14px}
figure.shaky img{border-color:#c0392b}
video,img{display:block;width:100%;border-radius:10px;border:1px solid var(--line);background:var(--card)}figure{margin:0 0 28px}figcaption{color:var(--muted);font-size:13px;margin-top:8px}
a{color:inherit}</style>
<main><h1>#11483 界面预览</h1><p class="m">commit 7b13875 · <a href="https://github.com/t8y2/dbx/pull/11483">回到 PR</a> · 这个 PR 为 OceanBase Oracle 的对象列表和侧栏对象树引入了条件分页加载:按名称/注释/类型在 Agent 侧做有界分页,保持数据库顺序,并在对象浏览器底部提供“加载更多”;同时搜索中使用正则会直接提示不支持。</p>
<p class="warn">⚠️ 这次录制有 9 步没能按计划执行;带 ⚠️ 的截图拍摄于步骤失败之后,画面未必是说明文字所描述的状态。</p>
<figure><video src="preview.mp4" controls autoplay muted playsinline poster="poster.png"></video><figcaption>红线是鼠标走过的轨迹,红色圆环是一次点击;底部文字是这一步在做什么。多个场景各自从应用初始状态开始。空格暂停,← → 逐段查看。</figcaption></figure>
<figure class="shaky"><img src="01-ob-browser-initial.png" alt="打开对象浏览器后的列表区域"><figcaption>⚠️ 对象浏览器分页与继续加载 · 打开对象浏览器后的列表区域</figcaption></figure>
<figure class="shaky"><img src="02-ob-browser-search-results.png" alt="对象浏览器按搜索条件分页后的列表与底部提示"><figcaption>⚠️ 对象浏览器分页与继续加载 · 对象浏览器按搜索条件分页后的列表与底部提示</figcaption></figure>
<figure class="shaky"><img src="03-ob-browser-after-load-more.png" alt="继续加载后的对象列表与分页按钮状态"><figcaption>⚠️ 对象浏览器分页与继续加载 · 继续加载后的对象列表与分页按钮状态</figcaption></figure>
<figure class="shaky"><img src="04-sidebar-paged-tree.png" alt="对象树/侧栏中的分页加载位置"><figcaption>⚠️ 侧栏对象树分页 · 对象树/侧栏中的分页加载位置</figcaption></figure>
<figure class="shaky"><img src="05-sidebar-search-with-more.png" alt="侧栏搜索结果里保留分页继续加载节点"><figcaption>⚠️ 侧栏对象树分页 · 侧栏搜索结果里保留分页继续加载节点</figcaption></figure>
</main></html>
+65
View File
@@ -0,0 +1,65 @@
{
"summary": "这个 PR 为 OceanBase Oracle 的对象列表和侧栏对象树引入了条件分页加载:按名称/注释/类型在 Agent 侧做有界分页,保持数据库顺序,并在对象浏览器底部提供“加载更多”;同时搜索中使用正则会直接提示不支持。",
"scenes": [
{
"title": "对象浏览器分页与继续加载",
"shots": [
{
"file": "01-ob-browser-initial.png",
"caption": "打开对象浏览器后的列表区域",
"width": 2880,
"warn": true
},
{
"file": "02-ob-browser-search-results.png",
"caption": "对象浏览器按搜索条件分页后的列表与底部提示",
"width": 2880,
"warn": true
},
{
"file": "03-ob-browser-after-load-more.png",
"caption": "继续加载后的对象列表与分页按钮状态",
"width": 2880,
"warn": true
}
],
"derailed": true
},
{
"title": "侧栏对象树分页",
"shots": [
{
"file": "04-sidebar-paged-tree.png",
"caption": "对象树/侧栏中的分页加载位置",
"width": 2880,
"warn": true
},
{
"file": "05-sidebar-search-with-more.png",
"caption": "侧栏搜索结果里保留分页继续加载节点",
"width": 2880,
"warn": true
}
],
"derailed": true
}
],
"video": "preview.mp4",
"poster": "poster.png",
"errors": [
"对象浏览器分页与继续加载 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"main 默认库\" (0 in the page)",
"对象浏览器分页与继续加载 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"main 默认库\" (0 in the page)",
"对象浏览器分页与继续加载 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"main 默认库\" (0 in the page)",
"对象浏览器分页与继续加载 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"main 默认库\" (0 in the page)",
"对象浏览器分页与继续加载 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"events\" (0 in the page)",
"对象浏览器分页与继续加载 · type input[data-object-search-input]: nothing visible matches input[data-object-search-input] (0 in the page)",
"对象浏览器分页与继续加载 · click button[data-object-load-more]: nothing visible matches button[data-object-load-more] (0 in the page)",
"侧栏对象树分页 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"main 默认库\" (0 in the page)",
"侧栏对象树分页 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"events\" (0 in the page)"
],
"leak": false,
"skipped": null,
"mismatch": "描述里提到“注释搜索前置 #11448 已合并”不属于本次可见改动;此外“并发 DDL 后从第一页刷新”在界面上没有新增独立入口,只是分页/刷新逻辑的行为变化。",
"unseen": "这里无法展示 OceanBase/OB Oracle 真实后端分页,因为沙盒只有 SQLite;因此只能在对象浏览器和侧栏上演示该 PR 新增的分页 UI、搜索提示和“加载更多”状态,不能验证真实 OceanBase 代理请求。",
"interactive": true
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 270 KiB

Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 245 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 245 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 245 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 249 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 249 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 249 KiB

+20
View File
@@ -0,0 +1,20 @@
<!doctype html><html lang="zh"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
<title>#11513 界面预览 · 60696b1</title>
<style>:root{color-scheme:light dark;--bg:#f6f6f7;--fg:#1d1d1f;--muted:#6e6e73;--card:#fff;--line:#e5e5ea}
@media (prefers-color-scheme:dark){:root{--bg:#111113;--fg:#f2f2f4;--muted:#9a9aa0;--card:#1c1c1f;--line:#2c2c30}}
body{margin:0;background:var(--bg);color:var(--fg);font:15px/1.6 -apple-system,"Segoe UI","PingFang SC","Noto Sans CJK SC",sans-serif}
main{max-width:1200px;margin:0 auto;padding:28px 16px 60px}h1{font-size:20px;margin:0 0 4px}.m{color:var(--muted);font-size:13px;margin:0 0 20px}
.warn{margin:0 0 20px;padding:10px 14px;border:1px solid #c0392b;border-radius:10px;background:rgba(192,57,43,.07);color:#c0392b;font-size:14px}
figure.shaky img{border-color:#c0392b}
video,img{display:block;width:100%;border-radius:10px;border:1px solid var(--line);background:var(--card)}figure{margin:0 0 28px}figcaption{color:var(--muted);font-size:13px;margin-top:8px}
a{color:inherit}</style>
<main><h1>#11513 界面预览</h1><p class="m">commit 60696b1 · <a href="https://github.com/t8y2/dbx/pull/11513">回到 PR</a> · 这个 PR 给 PostgreSQL 用户自定义类型增加了可视化管理能力:在对象浏览器里可新建、编辑、删除类型,并支持草稿、预览 SQL、删除确认和会话保留。它还把对象面板的缓存改成可保留未完成修改的 KeepAlive,避免切换标签时丢失编辑状态。</p>
<p class="warn">⚠️ 这次录制有 12 步没能按计划执行;带 ⚠️ 的截图拍摄于步骤失败之后,画面未必是说明文字所描述的状态。</p>
<figure><video src="preview.mp4" controls autoplay muted playsinline poster="poster.png"></video><figcaption>红线是鼠标走过的轨迹,红色圆环是一次点击;底部文字是这一步在做什么。多个场景各自从应用初始状态开始。空格暂停,← → 逐段查看。</figcaption></figure>
<figure class="shaky"><img src="01-types-list-entry-point.png" alt="查看类型列表入口位置"><figcaption>⚠️ 类型面板的新建与编辑入口 · 查看类型列表入口位置</figcaption></figure>
<figure class="shaky"><img src="02-create-type-button.png" alt="查看类型列表中的新建入口"><figcaption>⚠️ 类型面板的新建与编辑入口 · 查看类型列表中的新建入口</figcaption></figure>
<figure class="shaky"><img src="03-type-panel-actions.png" alt="查看类型面板中的编辑与删除入口"><figcaption>⚠️ 类型面板的新建与编辑入口 · 查看类型面板中的编辑与删除入口</figcaption></figure>
<figure class="shaky"><img src="04-custom-type-view.png" alt="查看自定义类型详情面板"><figcaption>⚠️ 打开类型编辑并查看预览 · 查看自定义类型详情面板</figcaption></figure>
<figure class="shaky"><img src="05-custom-type-edit-form.png" alt="查看新增的类型编辑表单和 SQL 预览"><figcaption>⚠️ 打开类型编辑并查看预览 · 查看新增的类型编辑表单和 SQL 预览</figcaption></figure>
<figure class="shaky"><img src="06-custom-type-edit-preview.png" alt="查看修改后重新生成的预览 SQL 与表单状态"><figcaption>⚠️ 打开类型编辑并查看预览 · 查看修改后重新生成的预览 SQL 与表单状态</figcaption></figure>
</main></html>
+74
View File
@@ -0,0 +1,74 @@
{
"summary": "这个 PR 给 PostgreSQL 用户自定义类型增加了可视化管理能力:在对象浏览器里可新建、编辑、删除类型,并支持草稿、预览 SQL、删除确认和会话保留。它还把对象面板的缓存改成可保留未完成修改的 KeepAlive,避免切换标签时丢失编辑状态。",
"scenes": [
{
"title": "类型面板的新建与编辑入口",
"shots": [
{
"file": "01-types-list-entry-point.png",
"caption": "查看类型列表入口位置",
"width": 2880,
"warn": true
},
{
"file": "02-create-type-button.png",
"caption": "查看类型列表中的新建入口",
"width": 2880,
"warn": true
},
{
"file": "03-type-panel-actions.png",
"caption": "查看类型面板中的编辑与删除入口",
"width": 2880,
"warn": true
}
],
"derailed": true
},
{
"title": "打开类型编辑并查看预览",
"shots": [
{
"file": "04-custom-type-view.png",
"caption": "查看自定义类型详情面板",
"width": 2880,
"warn": true
},
{
"file": "05-custom-type-edit-form.png",
"caption": "查看新增的类型编辑表单和 SQL 预览",
"width": 2880,
"warn": true
},
{
"file": "06-custom-type-edit-preview.png",
"caption": "查看修改后重新生成的预览 SQL 与表单状态",
"width": 2880,
"warn": true
}
],
"derailed": true
}
],
"video": "preview.mp4",
"poster": "poster.png",
"errors": [
"类型面板的新建与编辑入口 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"main 默认库\" (0 in the page)",
"类型面板的新建与编辑入口 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"main 默认库\" (0 in the page)",
"类型面板的新建与编辑入口 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"main 默认库\" (0 in the page)",
"类型面板的新建与编辑入口 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"main 默认库\" (0 in the page)",
"类型面板的新建与编辑入口 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"types\" (0 in the page)",
"类型面板的新建与编辑入口 · click button[data-slot=\"button\"]: nothing visible matches button[data-slot=\"button\"] with \"创建类型\" (0 in the page)",
"类型面板的新建与编辑入口 · click button: nothing visible matches button with \"关闭\" (0 in the page)",
"打开类型编辑并查看预览 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"main 默认库\" (0 in the page)",
"打开类型编辑并查看预览 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"types\" (0 in the page)",
"打开类型编辑并查看预览 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"status\" (0 in the page)",
"打开类型编辑并查看预览 · click button[title=\"customType.editor.edit\"]: nothing visible matches button[title=\"customType.editor.edit\"] (0 in the page)",
"打开类型编辑并查看预览 · type input[aria-label=\"customType.editor.namePlaceholder\"]: nothing visible matches input[aria-label=\"customType.editor.namePlaceholder\"] (0 in the page)"
],
"leak": false,
"skipped": null,
"mismatch": "描述里写的是“新增 pg 数据库自定义类型的新增,删除和修改功能”,与代码一致;未见额外的按钮、设置或独立页面。",
"unseen": "沙盒里没有 PostgreSQL 连接、也没有真正的 pg 自定义类型数据,因此新建/编辑/删除的完整工作流只能在对象浏览器的 PostgreSQL 场景位置展示,无法实际对真实 PG 类型执行。",
"interactive": true
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 267 KiB

Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 249 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 249 KiB

+16
View File
@@ -0,0 +1,16 @@
<!doctype html><html lang="zh"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
<title>#11521 界面预览 · 1457f44</title>
<style>:root{color-scheme:light dark;--bg:#f6f6f7;--fg:#1d1d1f;--muted:#6e6e73;--card:#fff;--line:#e5e5ea}
@media (prefers-color-scheme:dark){:root{--bg:#111113;--fg:#f2f2f4;--muted:#9a9aa0;--card:#1c1c1f;--line:#2c2c30}}
body{margin:0;background:var(--bg);color:var(--fg);font:15px/1.6 -apple-system,"Segoe UI","PingFang SC","Noto Sans CJK SC",sans-serif}
main{max-width:1200px;margin:0 auto;padding:28px 16px 60px}h1{font-size:20px;margin:0 0 4px}.m{color:var(--muted);font-size:13px;margin:0 0 20px}
.warn{margin:0 0 20px;padding:10px 14px;border:1px solid #c0392b;border-radius:10px;background:rgba(192,57,43,.07);color:#c0392b;font-size:14px}
figure.shaky img{border-color:#c0392b}
video,img{display:block;width:100%;border-radius:10px;border:1px solid var(--line);background:var(--card)}figure{margin:0 0 28px}figcaption{color:var(--muted);font-size:13px;margin-top:8px}
a{color:inherit}</style>
<main><h1>#11521 界面预览</h1><p class="m">commit 1457f44 · <a href="https://github.com/t8y2/dbx/pull/11521">回到 PR</a> · 结果集子 Tab 切换前会先派发统一的 `dbx:before-tab-switch` 事件,用来让网格在结果索引或结果批次变化前保存视图状态。PR 还补了回归测试,约束这两个切换入口都必须先发事件再更新结果。</p>
<p class="warn">⚠️ 这次录制有 6 步没能按计划执行;带 ⚠️ 的截图拍摄于步骤失败之后,画面未必是说明文字所描述的状态。</p>
<figure><video src="preview.mp4" controls autoplay muted playsinline poster="poster.png"></video><figcaption>红线是鼠标走过的轨迹,红色圆环是一次点击;底部文字是这一步在做什么。多个场景各自从应用初始状态开始。空格暂停,← → 逐段查看。</figcaption></figure>
<figure class="shaky"><img src="01-orders-grid-before-switch.png" alt="打开订单表后的数据网格"><figcaption>⚠️ 结果集切换前后 · 打开订单表后的数据网格</figcaption></figure>
<figure class="shaky"><img src="02-orders-grid-after-switch.png" alt="切换结果集后的数据网格"><figcaption>⚠️ 结果集切换前后 · 切换结果集后的数据网格</figcaption></figure>
</main></html>
+38
View File
@@ -0,0 +1,38 @@
{
"summary": "结果集子 Tab 切换前会先派发统一的 `dbx:before-tab-switch` 事件,用来让网格在结果索引或结果批次变化前保存视图状态。PR 还补了回归测试,约束这两个切换入口都必须先发事件再更新结果。",
"scenes": [
{
"title": "结果集切换前后",
"shots": [
{
"file": "01-orders-grid-before-switch.png",
"caption": "打开订单表后的数据网格",
"width": 2880,
"warn": true
},
{
"file": "02-orders-grid-after-switch.png",
"caption": "切换结果集后的数据网格",
"width": 2880,
"warn": true
}
],
"derailed": true
}
],
"video": "preview.mp4",
"poster": "poster.png",
"errors": [
"结果集切换前后 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"main 默认库\" (0 in the page)",
"结果集切换前后 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"main\" (0 in the page)",
"结果集切换前后 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"main 默认库\" (0 in the page)",
"结果集切换前后 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"main 默认库\" (0 in the page)",
"结果集切换前后 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"orders\" (0 in the page)",
"结果集切换前后 · click div[data-editor-content] button, div[data-editor-content] [data-slot=\"button\"]: nothing visible matches div[data-editor-content] button, div[data-editor-content] [data-slot=\"button\"] with \"结果\" (0 in the page)"
],
"leak": false,
"skipped": null,
"mismatch": "",
"unseen": "这个改动主要是切换前的状态保存时机,肉眼未必直接看到差异;在沙盒里可通过切换同一 SQL 的不同结果集子 Tab,观察返回页签时网格是否还能保持原滚动位置与选中状态来验证。",
"interactive": true
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 263 KiB

Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 245 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 245 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 249 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 250 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 250 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 250 KiB

+20
View File
@@ -0,0 +1,20 @@
<!doctype html><html lang="zh"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
<title>#11522 界面预览 · e471ea5</title>
<style>:root{color-scheme:light dark;--bg:#f6f6f7;--fg:#1d1d1f;--muted:#6e6e73;--card:#fff;--line:#e5e5ea}
@media (prefers-color-scheme:dark){:root{--bg:#111113;--fg:#f2f2f4;--muted:#9a9aa0;--card:#1c1c1f;--line:#2c2c30}}
body{margin:0;background:var(--bg);color:var(--fg);font:15px/1.6 -apple-system,"Segoe UI","PingFang SC","Noto Sans CJK SC",sans-serif}
main{max-width:1200px;margin:0 auto;padding:28px 16px 60px}h1{font-size:20px;margin:0 0 4px}.m{color:var(--muted);font-size:13px;margin:0 0 20px}
.warn{margin:0 0 20px;padding:10px 14px;border:1px solid #c0392b;border-radius:10px;background:rgba(192,57,43,.07);color:#c0392b;font-size:14px}
figure.shaky img{border-color:#c0392b}
video,img{display:block;width:100%;border-radius:10px;border:1px solid var(--line);background:var(--card)}figure{margin:0 0 28px}figcaption{color:var(--muted);font-size:13px;margin-top:8px}
a{color:inherit}</style>
<main><h1>#11522 界面预览</h1><p class="m">commit e471ea5 · <a href="https://github.com/t8y2/dbx/pull/11522">回到 PR</a> · 这个 PR 调整了侧栏里的 Ctrl+F 搜索定位逻辑:当当前激活的是数据库、schema 或表节点时,会优先聚焦该作用域下的局部表搜索框,而不是总是回到侧栏顶部的全局搜索。它还让局部表搜索框支持用 Escape 快速退出/清空当前搜索,并在树侧栏焦点分发里优先拦截这个快捷键。</p>
<p class="warn">⚠️ 这次录制有 8 步没能按计划执行;带 ⚠️ 的截图拍摄于步骤失败之后,画面未必是说明文字所描述的状态。</p>
<figure><video src="preview.mp4" controls autoplay muted playsinline poster="poster.png"></video><figcaption>红线是鼠标走过的轨迹,红色圆环是一次点击;底部文字是这一步在做什么。多个场景各自从应用初始状态开始。空格暂停,← → 逐段查看。</figcaption></figure>
<figure class="shaky"><img src="01-database-node-selected.png" alt="数据库节点选中后的侧栏状态"><figcaption>⚠️ 在数据库节点按 Ctrl+F · 数据库节点选中后的侧栏状态</figcaption></figure>
<figure class="shaky"><img src="02-local-table-search-focused.png" alt="按下 Ctrl+F 后,查看局部表搜索框是否被聚焦"><figcaption>⚠️ 在数据库节点按 Ctrl+F · 按下 Ctrl+F 后,查看局部表搜索框是否被聚焦</figcaption></figure>
<figure class="shaky"><img src="03-table-node-selected.png" alt="选中表节点后的侧栏状态"><figcaption>⚠️ 在表节点按 Ctrl+F · 选中表节点后的侧栏状态</figcaption></figure>
<figure class="shaky"><img src="04-table-search-focused.png" alt="按下 Ctrl+F 后对应表搜索框被聚焦的状态"><figcaption>⚠️ 在表节点按 Ctrl+F · 按下 Ctrl+F 后对应表搜索框被聚焦的状态</figcaption></figure>
<figure class="shaky"><img src="05-table-search-with-text.png" alt="局部表搜索框已有输入内容的状态"><figcaption>⚠️ Escape 处理局部表搜索 · 局部表搜索框已有输入内容的状态</figcaption></figure>
<figure class="shaky"><img src="06-table-search-after-escape.png" alt="按下 Escape 后局部表搜索框的状态"><figcaption>⚠️ Escape 处理局部表搜索 · 按下 Escape 后局部表搜索框的状态</figcaption></figure>
</main></html>
+76
View File
@@ -0,0 +1,76 @@
{
"summary": "这个 PR 调整了侧栏里的 Ctrl+F 搜索定位逻辑:当当前激活的是数据库、schema 或表节点时,会优先聚焦该作用域下的局部表搜索框,而不是总是回到侧栏顶部的全局搜索。它还让局部表搜索框支持用 Escape 快速退出/清空当前搜索,并在树侧栏焦点分发里优先拦截这个快捷键。",
"scenes": [
{
"title": "在数据库节点按 Ctrl+F",
"shots": [
{
"file": "01-database-node-selected.png",
"caption": "数据库节点选中后的侧栏状态",
"width": 2880,
"warn": true
},
{
"file": "02-local-table-search-focused.png",
"caption": "按下 Ctrl+F 后,查看局部表搜索框是否被聚焦",
"width": 2880,
"warn": true
}
],
"derailed": true
},
{
"title": "在表节点按 Ctrl+F",
"shots": [
{
"file": "03-table-node-selected.png",
"caption": "选中表节点后的侧栏状态",
"width": 2880,
"warn": true
},
{
"file": "04-table-search-focused.png",
"caption": "按下 Ctrl+F 后对应表搜索框被聚焦的状态",
"width": 2880,
"warn": true
}
],
"derailed": true
},
{
"title": "Escape 处理局部表搜索",
"shots": [
{
"file": "05-table-search-with-text.png",
"caption": "局部表搜索框已有输入内容的状态",
"width": 2880,
"warn": true
},
{
"file": "06-table-search-after-escape.png",
"caption": "按下 Escape 后局部表搜索框的状态",
"width": 2880,
"warn": true
}
],
"derailed": true
}
],
"video": "preview.mp4",
"poster": "poster.png",
"errors": [
"在数据库节点按 Ctrl+F · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"main 默认库\" (0 in the page)",
"在数据库节点按 Ctrl+F · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"main 默认库\" (0 in the page)",
"在数据库节点按 Ctrl+F · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"main 默认库\" (0 in the page)",
"在数据库节点按 Ctrl+F · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"main 默认库\" (0 in the page)",
"在表节点按 Ctrl+F · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"main 默认库\" (0 in the page)",
"在表节点按 Ctrl+F · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"orders\" (0 in the page)",
"Escape 处理局部表搜索 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"main 默认库\" (0 in the page)",
"Escape 处理局部表搜索 · type input[data-sidebar-table-search-parent-id]: nothing visible matches input[data-sidebar-table-search-parent-id] (0 in the page)"
],
"leak": false,
"skipped": null,
"mismatch": "",
"unseen": "",
"interactive": true
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 274 KiB

Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 246 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 246 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 251 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 250 KiB

+18
View File
@@ -0,0 +1,18 @@
<!doctype html><html lang="zh"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
<title>#11534 界面预览 · 791cd2e</title>
<style>:root{color-scheme:light dark;--bg:#f6f6f7;--fg:#1d1d1f;--muted:#6e6e73;--card:#fff;--line:#e5e5ea}
@media (prefers-color-scheme:dark){:root{--bg:#111113;--fg:#f2f2f4;--muted:#9a9aa0;--card:#1c1c1f;--line:#2c2c30}}
body{margin:0;background:var(--bg);color:var(--fg);font:15px/1.6 -apple-system,"Segoe UI","PingFang SC","Noto Sans CJK SC",sans-serif}
main{max-width:1200px;margin:0 auto;padding:28px 16px 60px}h1{font-size:20px;margin:0 0 4px}.m{color:var(--muted);font-size:13px;margin:0 0 20px}
.warn{margin:0 0 20px;padding:10px 14px;border:1px solid #c0392b;border-radius:10px;background:rgba(192,57,43,.07);color:#c0392b;font-size:14px}
figure.shaky img{border-color:#c0392b}
video,img{display:block;width:100%;border-radius:10px;border:1px solid var(--line);background:var(--card)}figure{margin:0 0 28px}figcaption{color:var(--muted);font-size:13px;margin-top:8px}
a{color:inherit}</style>
<main><h1>#11534 界面预览</h1><p class="m">commit 791cd2e · <a href="https://github.com/t8y2/dbx/pull/11534">回到 PR</a> · 这个 PR 主要让 OceanBase Oracle 的星号查询和完成/诊断更准确地保留“当前 schema”和“真实解析目标”的分离,避免把同义词、业务别名和物理 ROWID 混在一起;同时在 ROWID 删除并发冲突时,保存结果会显示实际影响行数并保留冲突提示。</p>
<p class="warn">⚠️ 这次录制有 10 步没能按计划执行;带 ⚠️ 的截图拍摄于步骤失败之后,画面未必是说明文字所描述的状态。</p>
<figure><video src="preview.mp4" controls autoplay muted playsinline poster="poster.png"></video><figcaption>红线是鼠标走过的轨迹,红色圆环是一次点击;底部文字是这一步在做什么。多个场景各自从应用初始状态开始。空格暂停,← → 逐段查看。</figcaption></figure>
<figure class="shaky"><img src="01-shop-database-browser.png" alt="商店连接的数据库浏览页"><figcaption>⚠️ OceanBase 星号查询保留别名与隐藏定位列 · 商店连接的数据库浏览页</figcaption></figure>
<figure class="shaky"><img src="02-orders-grid-before.png" alt="打开订单表后的数据网格"><figcaption>⚠️ OceanBase 星号查询保留别名与隐藏定位列 · 打开订单表后的数据网格</figcaption></figure>
<figure class="shaky"><img src="03-events-grid.png" alt="分析表的数据网格"><figcaption>⚠️ OceanBase 星号查询保留别名与隐藏定位列 · 分析表的数据网格</figcaption></figure>
<figure class="shaky"><img src="04-orders-grid-editable.png" alt="进入可编辑的数据网格"><figcaption>⚠️ ROWID 保存冲突提示 · 进入可编辑的数据网格</figcaption></figure>
</main></html>
+60
View File
@@ -0,0 +1,60 @@
{
"summary": "这个 PR 主要让 OceanBase Oracle 的星号查询和完成/诊断更准确地保留“当前 schema”和“真实解析目标”的分离,避免把同义词、业务别名和物理 ROWID 混在一起;同时在 ROWID 删除并发冲突时,保存结果会显示实际影响行数并保留冲突提示。",
"scenes": [
{
"title": "OceanBase 星号查询保留别名与隐藏定位列",
"shots": [
{
"file": "01-shop-database-browser.png",
"caption": "商店连接的数据库浏览页",
"width": 2880,
"warn": true
},
{
"file": "02-orders-grid-before.png",
"caption": "打开订单表后的数据网格",
"width": 2880,
"warn": true
},
{
"file": "03-events-grid.png",
"caption": "分析表的数据网格",
"width": 2880,
"warn": true
}
],
"derailed": true
},
{
"title": "ROWID 保存冲突提示",
"shots": [
{
"file": "04-orders-grid-editable.png",
"caption": "进入可编辑的数据网格",
"width": 2880,
"warn": true
}
],
"derailed": true
}
],
"video": "preview.mp4",
"poster": "poster.png",
"errors": [
"OceanBase 星号查询保留别名与隐藏定位列 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"main 默认库\" (0 in the page)",
"OceanBase 星号查询保留别名与隐藏定位列 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"main 默认库\" (0 in the page)",
"OceanBase 星号查询保留别名与隐藏定位列 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"main 默认库\" (0 in the page)",
"OceanBase 星号查询保留别名与隐藏定位列 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"main 默认库\" (0 in the page)",
"OceanBase 星号查询保留别名与隐藏定位列 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"orders\" (0 in the page)",
"OceanBase 星号查询保留别名与隐藏定位列 · click button[data-slot=\"button\"]: nothing visible matches button[data-slot=\"button\"] with \"设置\" (0 in the page)",
"OceanBase 星号查询保留别名与隐藏定位列 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"main 默认库\" (0 in the page)",
"OceanBase 星号查询保留别名与隐藏定位列 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"events\" (0 in the page)",
"ROWID 保存冲突提示 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"main 默认库\" (0 in the page)",
"ROWID 保存冲突提示 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"orders\" (0 in the page)"
],
"leak": false,
"skipped": null,
"mismatch": "描述里提到“真实主键优先”“隐藏定位列不进入普通复制和 CSV 导出”“恢复一致”等更偏验证结论的内容,diff 里没有直接新增对应的可见 UI 功能入口;另外“并发删除已经被其他会话移除的行时”在界面上表现为保存提示,而不是单独新增一个删除结果页。",
"unseen": "",
"interactive": true
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 266 KiB

Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 245 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 245 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 245 KiB

+17
View File
@@ -0,0 +1,17 @@
<!doctype html><html lang="zh"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
<title>#11535 界面预览 · 47acd37</title>
<style>:root{color-scheme:light dark;--bg:#f6f6f7;--fg:#1d1d1f;--muted:#6e6e73;--card:#fff;--line:#e5e5ea}
@media (prefers-color-scheme:dark){:root{--bg:#111113;--fg:#f2f2f4;--muted:#9a9aa0;--card:#1c1c1f;--line:#2c2c30}}
body{margin:0;background:var(--bg);color:var(--fg);font:15px/1.6 -apple-system,"Segoe UI","PingFang SC","Noto Sans CJK SC",sans-serif}
main{max-width:1200px;margin:0 auto;padding:28px 16px 60px}h1{font-size:20px;margin:0 0 4px}.m{color:var(--muted);font-size:13px;margin:0 0 20px}
.warn{margin:0 0 20px;padding:10px 14px;border:1px solid #c0392b;border-radius:10px;background:rgba(192,57,43,.07);color:#c0392b;font-size:14px}
figure.shaky img{border-color:#c0392b}
video,img{display:block;width:100%;border-radius:10px;border:1px solid var(--line);background:var(--card)}figure{margin:0 0 28px}figcaption{color:var(--muted);font-size:13px;margin-top:8px}
a{color:inherit}</style>
<main><h1>#11535 界面预览</h1><p class="m">commit 47acd37 · <a href="https://github.com/t8y2/dbx/pull/11535">回到 PR</a> · 本次 PR 让 OceanBase Oracle 的 SQL 补全能按输入搜索独立的 PROCEDURE/FUNCTION,并修复带引号名称、字面通配符和切换 schema 后旧补全结果回弹的问题;前端还会在相关上下文变更时立即让旧请求失效。</p>
<p class="warn">⚠️ 这次录制有 8 步没能按计划执行;带 ⚠️ 的截图拍摄于步骤失败之后,画面未必是说明文字所描述的状态。</p>
<figure><video src="preview.mp4" controls autoplay muted playsinline poster="poster.png"></video><figcaption>红线是鼠标走过的轨迹,红色圆环是一次点击;底部文字是这一步在做什么。多个场景各自从应用初始状态开始。空格暂停,← → 逐段查看。</figcaption></figure>
<figure class="shaky"><img src="01-orders-grid-open.png" alt="打开订单表后的数据网格"><figcaption>⚠️ OceanBase Oracle 补全过程 · 打开订单表后的数据网格</figcaption></figure>
<figure class="shaky"><img src="02-quoted-routine-completion.png" alt="查看带引号过程名称的补全候选"><figcaption>⚠️ OceanBase Oracle 补全过程 · 查看带引号过程名称的补全候选</figcaption></figure>
<figure class="shaky"><img src="03-wildcard-routine-completion.png" alt="查看字面通配符名称的补全候选"><figcaption>⚠️ OceanBase Oracle 补全过程 · 查看字面通配符名称的补全候选</figcaption></figure>
</main></html>
+46
View File
@@ -0,0 +1,46 @@
{
"summary": "本次 PR 让 OceanBase Oracle 的 SQL 补全能按输入搜索独立的 PROCEDURE/FUNCTION,并修复带引号名称、字面通配符和切换 schema 后旧补全结果回弹的问题;前端还会在相关上下文变更时立即让旧请求失效。",
"scenes": [
{
"title": "OceanBase Oracle 补全过程",
"shots": [
{
"file": "01-orders-grid-open.png",
"caption": "打开订单表后的数据网格",
"width": 2880,
"warn": true
},
{
"file": "02-quoted-routine-completion.png",
"caption": "查看带引号过程名称的补全候选",
"width": 2880,
"warn": true
},
{
"file": "03-wildcard-routine-completion.png",
"caption": "查看字面通配符名称的补全候选",
"width": 2880,
"warn": true
}
],
"derailed": true
}
],
"video": "preview.mp4",
"poster": "poster.png",
"errors": [
"OceanBase Oracle 补全过程 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"main 默认库\" (0 in the page)",
"OceanBase Oracle 补全过程 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"main 默认库\" (0 in the page)",
"OceanBase Oracle 补全过程 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"main 默认库\" (0 in the page)",
"OceanBase Oracle 补全过程 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"main 默认库\" (0 in the page)",
"OceanBase Oracle 补全过程 · click div.connection-tree-content div: nothing visible matches div.connection-tree-content div with \"orders\" (0 in the page)",
"OceanBase Oracle 补全过程 · click button[data-slot='button']: nothing visible matches button[data-slot='button'] with \"新建查询\" (0 in the page)",
"OceanBase Oracle 补全过程 · type textarea, [contenteditable='true']: nothing visible matches textarea, [contenteditable='true'] (0 in the page)",
"OceanBase Oracle 补全过程 · type textarea, [contenteditable='true']: nothing visible matches textarea, [contenteditable='true'] (0 in the page)"
],
"leak": false,
"skipped": null,
"mismatch": "描述里提到“中文、名称内双引号、字面通配符、上限及实际点击选入”这些都属于补全行为,diff 里确实有对应修复;没有额外的 UI 功能性描述与 diff 明显不符。",
"unseen": "这次改动主要作用在 OceanBase Oracle 的过程/函数补全与后端候选筛选,沙盒里没有可连接的 OceanBase/Oracle 实库,所以只能在编辑器里演示补全逻辑的入口,不能展示真实数据库候选来自服务端的完整效果。",
"interactive": true
}

Some files were not shown because too many files have changed in this diff Show More