Преглед на файлове

发布 v0.3.29:完善流式 Markdown 渲染

LSamien преди 1 месец
родител
ревизия
529221d37e
променени са 6 файла, в които са добавени 19 реда и са изтрити 9 реда
  1. 1 1
      README.md
  2. 4 0
      docs/releases/v0.3.29.md
  3. 2 2
      package-lock.json
  4. 1 1
      package.json
  5. 3 3
      release.json
  6. 8 2
      tests/e2e/workspace-chat.spec.ts

+ 1 - 1
README.md

@@ -1,6 +1,6 @@
 # 夭夭 Web
 
-当前发布版本:**v0.3.28**,配套 iOS **1.3(188)**。详见 [发布说明](docs/releases/v0.3.28.md)。
+当前发布版本:**v0.3.29**,配套 iOS **1.3(188)**。详见 [发布说明](docs/releases/v0.3.29.md)。
 
 夭夭 Web 为网页和 iOS 提供统一的 Agent、群聊、文件库及语音配置服务。Hermes 通过标准 9119 HTTP/WebSocket 接口执行任务;无需安装 Yaoyao 插件。
 

+ 4 - 0
docs/releases/v0.3.29.md

@@ -0,0 +1,4 @@
+# v0.3.29
+
+- 改进流式 Markdown 分块渲染,避免不完整的表格、代码块和行内语法在输出过程中抖动或误渲染。
+- 为 Bot 对话补充分片定时刷新,保证持续输出时及时更新界面,并在完成后清理临时状态。

+ 2 - 2
package-lock.json

@@ -1,12 +1,12 @@
 {
   "name": "hermes-yaoyao",
-  "version": "0.3.28",
+  "version": "0.3.29",
   "lockfileVersion": 3,
   "requires": true,
   "packages": {
     "": {
       "name": "hermes-yaoyao",
-      "version": "0.3.28",
+      "version": "0.3.29",
       "license": "BSL-1.1",
       "dependencies": {
         "@koa/bodyparser": "^5.0.0",

+ 1 - 1
package.json

@@ -1,6 +1,6 @@
 {
   "name": "hermes-yaoyao",
-  "version": "0.3.28",
+  "version": "0.3.29",
   "private": true,
   "license": "BSL-1.1",
   "description": "夭夭 Web:直连 Hermes 9119 的聊天、团队、文件库与产物工作台",

+ 3 - 3
release.json

@@ -1,6 +1,6 @@
 {
   "schemaVersion": 1,
-  "releaseVersion": "0.3.28",
-  "webVersion": "0.3.28",
-  "gitTag": "v0.3.28"
+  "releaseVersion": "0.3.29",
+  "webVersion": "0.3.29",
+  "gitTag": "v0.3.29"
 }

+ 8 - 2
tests/e2e/workspace-chat.spec.ts

@@ -187,13 +187,19 @@ test('created roles and editable teams share a durable chat list without plugin
   await avatarEditor.locator('.mascot-grid--expression button').filter({hasText:'默认'}).click()
   await avatarEditor.getByRole('button', {name:'保存',exact:true}).click()
 
+  await expect(avatarEditor).toBeHidden()
+  const composerInput = page.getByPlaceholder('输入消息,Enter 发送,Shift + Enter 换行')
+  const sendButton = page.getByRole('button', { name: '发送消息', exact: true })
+  await expect(composerInput).toBeEnabled()
+
   await expect(rail.getByText('聊天', { exact: true })).toHaveCount(0)
   await expect(rail.getByText('聊天列表', { exact: true })).toHaveCount(0)
   await expect(rail.locator('.sidebar-item__row strong').first()).toHaveCSS('font-size', '15px')
   await expect(rail.locator('.sidebar-item__row--secondary').first()).toHaveCSS('font-size', '13px')
   await expect(rail.locator('.sidebar-item__row small').first()).toHaveCSS('font-size', '10px')
-  await page.getByPlaceholder('输入消息,Enter 发送,Shift + Enter 换行').fill('请说明角色职责')
-  await page.getByRole('button', { name: '发送消息', exact: true }).click()
+  await composerInput.fill('请说明角色职责')
+  await expect(sendButton).toBeEnabled()
+  await sendButton.click()
   await expect(page.locator('.message--assistant')).toContainText('我是产品经理')
   for (const colorScheme of ['light', 'dark'] as const) {
     await page.emulateMedia({ colorScheme })