{{ t('clean') }}
{{ t('cleanScope') }}
{{ t('cleanIrreversible') }}
{{ prepared?.target ?? t('loadingRun') }}{{ t('user') }}: {{ prepared.user }}{{ t('cleanScopeNote') }}
+{{ failure || error }}
+ + + + +diff --git a/CHANGELOG.md b/CHANGELOG.md index d53594e..7d8daa7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,36 @@ Flydb 的重要变更记录在本文件中。版本遵循语义化版本;正 ## [Unreleased] +## [0.3.7] - 2026-09-08 + +本次重点完善本机工作台的日常使用:大变更预览更流畅,多配置更易整理,问题上下文可直接交给 Agent;修复大记录读取与迁移状态显示问题。 + +### 新增 + +- Web 配置名称旁新增“复制给 Agent”:整理脱敏配置、迁移状态与最近执行摘要,标明过期状态、未保存草稿和截断范围;剪贴板不可用时提供手动复制。 +- Web 侧边栏支持分组折叠、新建、重命名、删除、拖拽排序及跨组移动配置,提供无需拖拽的移动入口;分组目录与顺序持久化,删除组只移入未分组。 +- Web 迁移列表、当前项目执行记录和全部执行记录每页 10 条,顶部与底部均支持翻页、直接输入页码,后台刷新保留当前页。 +- Web 高级操作支持 clean:显示生效目标和当前 schema 删除范围,要求风险勾选、输入 `CLEAN` 与最终确认;后端以五分钟单次引用绑定配置和目标,单次解除禁用保护,复用 Core clean 和执行记录,不修改配置文件。 +- 随包提供独立 `flydb-analysis` Skill preview,支持离线材料的方言预检、结构漂移、依赖和引用分析;这是独立技能工作流,不代表迁移内核已交付完整影响分析引擎。 + +### 修复 + +- 修复分组新建、重命名和配置移动弹窗因内容根节点与焦点管理不兼容,导致输入框或选择框无法获得键盘焦点的问题。 +- clean 确认弹窗不再因周期刷新返回内容相同的配置对象而清空输入和风险勾选;仅在配置、目标或凭据实际变化、或主动重新确认时重置。 +- 大迁移预览改用只读虚拟滚动编辑器,支持全文查找、长行横向滚动和完整 SQL 下载;脚本列表分页,原始报告详情按需渲染。Web 轮询使用不含 SQL 正文的摘要,完整记录仅在打开时加载,避免反复传输和渲染大结果。 +- Web 遇到 `MISSING` / `FUTURE` 时直接解释历史与本地脚本不匹配,提供连接配置入口,并明确修复历史、基线及临时测试重新开始的边界。 +- 修复大迁移预览记录写入成功后因超过 8 MiB 而无法读取的问题;Run 采用文件流读取完整记录,配置登记文件继续保留大小限制。 +- 修复 GUI 将 `OUT_OF_ORDER` 误标为“乱序已执行”并计入已执行数量的问题,按状态区分待执行与成功历史;当前版本包含本地缺失的成功历史,不再因 `FUTURE` / `MISSING` 而遗漏。 +- 执行失败面板直接展示脱敏后的具体错误详情,无需展开原始 JSON 才能看到脚本与原因。 +- Web 正确显示无法读取的执行记录:缺失的核验结果显示“未知”,缺失或无效时间的耗时显示“—”,修复中英文界面及导出报告中的 `undefined`、`NaN:NaN`;明确区分本地记录读取失败与数据库执行失败。 + +### 使用与升级 + +- 停止旧的 `flydb web`,解压新版 ZIP,保留原配置和驱动位置后用新版启动。工作台登记兼容既有 profiles.json,新增 groups 保存空分组及顺序;执行记录不迁移或自动删除。 +- 执行记录列表覆盖最近 200 条,分页不代表全量历史查询;预览 SQL 完整保留,Agent 交接内容使用有界摘要。 +- 版本同步为 0.3.7,MCP Adapter 独立版本仍为 0.1.0,CLI JSON 协议不变。README 更新为 GUI、CLI 与 Agent 使用场景,并保留数据库验证矩阵。 +- 本轮 clean 的新增确认入口由隔离测试验证,未在用户数据库执行清理,也不新增厂商数据库认证声明。 + ## [0.3.6] - 2026-09-06 ### 安全修复 diff --git a/README.en.md b/README.en.md index ab78501..e63f3d5 100644 --- a/README.en.md +++ b/README.en.md @@ -1,56 +1,84 @@ English | [中文](./README.md)
-
+
-
+
{{ t('agentCopyFallback') }}
{{ t('cleanScope') }}
{{ t('cleanIrreversible') }}
{{ prepared?.target ?? t('loadingRun') }}{{ t('user') }}: {{ prepared.user }}{{ t('cleanScopeNote') }}
+{{ failure || error }}
+ + + + +{{ t('previewBody') }}
{{ run.target }}{{ statement.sql }};{{ t('noPending') }}
+{{ t(run.detailsOmitted ? 'loadingRun' : 'noPending') }}
{{ run.result?.plan?.id }}{{ t('previewLimit') }}
diff --git a/flydb-web/frontend/src/components/ProfileSidebar.vue b/flydb-web/frontend/src/components/ProfileSidebar.vue new file mode 100644 index 0000000..16dca0e --- /dev/null +++ b/flydb-web/frontend/src/components/ProfileSidebar.vue @@ -0,0 +1,102 @@ + + + + +{{ error }}
+ + +{{ run.target ?? run.configPath }}
{{ run.target ?? run.configPath ?? '—' }}
{{ run.progress.script }}{{ t('commitNote') }}
{{ t('lastActivity') }} · {{ new Date(run.lastActivityAt).toLocaleString(locale) }}
-{{ t('recoveryHint') }}
+{{ t('unreadableRecord') }}
+{{ t('recoveryHint') }}
{{ t('failureHint') }}
-{{ te(`errors.${run.result.error.code}`) ? t(`errors.${run.result.error.code}`) : t('operationFailed') }}
{{ te(`errors.${run.result.error.code}`) ? t(`errors.${run.result.error.code}`) : t('operationFailed') }}
{{ run.result.error.detail }}
{{ run.driver.className }}{{ driverSource(run.driver.source) }}{{ JSON.stringify(run.result, null, 2) }}{{ t('loadingRun') }}
+