feat: improve model connections and settings workflow

Model settings can now duplicate saved connections with encrypted API-key copying, while settings navigation stays usable across long forms and preserves the separate Platform Features tabs. The assistant storage startup worker now gates historical migration and compaction on actual pending legacy data, so ordinary chat free pages do not reopen the migration screen. Desktop and Agent release metadata is prepared for 0.13.8 and 0.13.2.

Release note: 改进模型连接复制、长表单设置导航和历史数据迁移判断;普通聊天退出并重开后不再重复显示迁移页面。
This commit is contained in:
mesalogo
2026-09-21 09:19:30 +08:00
parent 6739e8e902
commit 8dce1d7007
33 changed files with 908 additions and 356 deletions
+8 -1
View File
@@ -51,6 +51,8 @@ app.whenReady().then(async () => {
await settle()
}
const key = async keyCode => {
win.focus()
win.webContents.focus()
win.webContents.sendInputEvent({ type: 'keyDown', keyCode })
win.webContents.sendInputEvent({ type: 'keyUp', keyCode })
await settle()
@@ -78,7 +80,9 @@ app.whenReady().then(async () => {
await key('Escape')
await wait('!document.querySelector("[role=tooltip]")')
assert(await js('!!document.querySelector("[aria-modal=true]")'), `Hover Escape closed modal: ${theme} ${width}x${height}`)
await mouse('#outside')
// Re-establish a native keyboard starting point after hover-only Escape.
await mouse('#outside', true)
assert(await js('document.activeElement.id === "outside"'))
await key('Tab')
await wait('!!document.querySelector("[role=tooltip]")')
assert(await js('document.activeElement.matches(".inline-help")'))
@@ -199,6 +203,9 @@ app.whenReady().then(async () => {
await wait(`!!document.querySelector('${context}')`)
assert.equal(await js(`document.querySelector('${context}').value`), '128')
checked.push(await checkHelp('.inline-help[aria-label="上下文上限(可选)"]', '.settings-panel', context))
assert(await js('!document.querySelector(".model-connection-detail details.settings-section").open'), 'Advanced model settings should start collapsed')
await mouse('.model-connection-detail details.settings-section > summary', true)
await wait('document.querySelector(".model-connection-detail details.settings-section").open')
checked.push(await checkHelp('.inline-help[aria-label="自定义请求体"]', '.settings-panel', '#model-request-body-' + profileId))
for (const applicationHelp of checked.slice(0, 2)) {
assert.deepEqual(applicationHelp.appearance, checked[2].appearance, 'Application/settings help button styles differ')