feat: expand multi-runtime workflows for 0.10.0

GoodBuddy previously exposed Runtime capabilities, MCP assignments, plugin controls, context compaction, usage reporting, and task-completion behavior through incomplete or inconsistent paths. This release unifies managed OpenCode, Continue, and DeepSeek Harness controls; adds DSH plugin and image workflows; strengthens MCP and Runtime lifecycle bounds; fixes Windows notification activation; validates cross-architecture packages; and presents the approved bilingual four-section release notes.

The DSH plugin marketplace remains a default-off preview whose trusted third-party code runs with current-user permissions. Ask remains read-only, Execute keeps approval controls, and context compaction may use the selected model without deleting GoodBuddy chat history.

Release note: GoodBuddy 0.10.0 重点完善多 Runtime 工作流,统一 OpenCode、Continue 与 DeepSeek Harness 的能力、MCP、插件和上下文管理,并提升长对话、多会话与任务通知的连贯性。
This commit is contained in:
mesalogo
2026-08-17 12:57:12 +08:00
parent f5ee9b2198
commit cbbe30896e
50 changed files with 4077 additions and 605 deletions
+45 -6
View File
@@ -17,12 +17,51 @@ describe('packaged release notes', () => {
expect.objectContaining({ version: '0.8.19' })
)
for (const release of parsed.releases) {
expect(release.notes['zh-CN'].features).toHaveLength(
release.notes['en-US'].features.length
)
expect(release.notes['zh-CN'].fixes).toHaveLength(
release.notes['en-US'].fixes.length
)
for (const section of [
'highlights',
'features',
'fixes',
'notices'
] as const) {
expect(release.notes['zh-CN'][section]).toHaveLength(
release.notes['en-US'][section].length
)
}
}
const currentRelease = parsed.releases.find(
(release) => release.version === '0.10.0'
)
expect(currentRelease).toBeDefined()
expect(currentRelease?.releasedAt).toBe('2026-08-17')
expect(currentRelease?.notes['zh-CN'].highlights).toHaveLength(1)
expect(currentRelease?.notes['zh-CN'].features).toHaveLength(7)
expect(currentRelease?.notes['zh-CN'].fixes).toHaveLength(6)
expect(currentRelease?.notes['zh-CN'].notices).toHaveLength(4)
expect(
currentRelease?.notes['zh-CN'].features.every((item) =>
item.startsWith('**')
)
).toBe(true)
expect(
currentRelease?.notes['zh-CN'].fixes.every((item) =>
item.startsWith('**')
)
).toBe(true)
expect(
currentRelease?.notes['zh-CN'].notices.every((item) =>
item.startsWith('**')
)
).toBe(true)
expect(JSON.stringify(currentRelease)).not.toContain('官网')
expect(JSON.stringify(currentRelease)).not.toContain(
'Website and product preview'
)
const legacyRelease = parsed.releases.find(
(release) => release.version === '0.9.3'
)
expect(legacyRelease?.notes['zh-CN'].highlights).toEqual([])
expect(legacyRelease?.notes['zh-CN'].notices).toEqual([])
})
})