Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ docker run --rm -it -v "$PWD/secrets:/app/secrets" ghcr.io/iceean/codebuddy2api:
- 路由页面的主动导航统一使用 `chunkLoadRecovery.push()` / `replace()`;恢复器必须在 `app.use(router)` 前安装。Vite 的 `vite:preloadError` 也会覆盖 chunk 下载成功后的模块求值异常,不能单凭该事件判断资源加载失败;恢复器只处理已确认的路由资源获取或预加载错误,其他路由错误必须保留原始 Promise 拒绝、写入控制台并显示通用提示。
- chunk 首次失败最多自动刷新一次,并在新文档按原 push/replace 语义续接目标;刷新仍在进行时,后发 chunk 失败只更新为最新恢复目标,不得启动第二次刷新。成功、重定向、守卫中止或更新导航会消费记录。刷新取消或重复失败时允许留在当前页;用户选择留下后,本页后续失败只能手动刷新。退出等临界操作用 `deferReload()` 延迟刷新。
- 修改 chunk 恢复流程后必须运行 `pnpm run e2e`,用 Chromium 验证跨版本资源失效、历史栈、`beforeunload` 取消和防循环行为。
- 前端开发/构建要求 Node.js 24.11+。Vite 8/Rolldown 手动分包使用 `rollupOptions.output.codeSplitting.groups`,不要恢复对象形式 `manualChunks`;TypeScript 配置保留 `vite/client` 类型。
- 前端开发/构建要求 Node.js 24.15+。Vite 8/Rolldown 手动分包使用 `rollupOptions.output.codeSplitting.groups`,不要恢复对象形式 `manualChunks`;TypeScript 配置保留 `vite/client` 类型。

## Docker 与发布

Expand Down
4 changes: 2 additions & 2 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# syntax=docker/dockerfile:1

ARG NODE_VERSION=24.11.1
ARG NODE_VERSION=24.15.0
ARG PYTHON_VERSION=3.12

# 使用满足 Babel 8 / Vite 8 最低版本要求的 Node 构建 Vue 管理台。
# 使用满足前端工具链最低版本要求的 Node 构建 Vue 管理台。
FROM --platform=$BUILDPLATFORM node:${NODE_VERSION}-slim AS frontend-build

WORKDIR /frontend
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -550,7 +550,7 @@ python3 web.py

### 前端开发运行

前端开发和构建要求 Node.js 24.11+ 与 pnpm 10.29+。
前端开发和构建要求 Node.js 24.15+ 与 pnpm 10.29+。

前端开发服务器会把 `/auth`、`/api`、`/codebuddy`、`/openai`、`/anthropic`、`/health`、`/docs`、`/redoc` 和 `/openapi.json` 代理到本地后端 `127.0.0.1:8001`。

Expand Down
4 changes: 2 additions & 2 deletions frontend/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
"type": "module",
"packageManager": "pnpm@10.29.2",
"engines": {
"node": ">=24.11.0",
"node": ">=24.15.0",
"pnpm": ">=10.29.2"
},
"scripts": {
Expand Down Expand Up @@ -36,7 +36,7 @@
"@vitejs/plugin-vue": "^6.0.8",
"@vitest/coverage-v8": "^4.1.11",
"@vue/test-utils": "^2.4.11",
"jsdom": "^29.1.1",
"jsdom": "^30.0.1",
"oxlint": "^1.79.0",
"prettier": "^3.9.6",
"prettier-plugin-tailwindcss": "^0.8.1",
Expand Down
148 changes: 74 additions & 74 deletions frontend/pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion frontend/src/__tests__/apiDocsView.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ describe('ApiDocsView', () => {
expect(wrapper.get('header').text()).toBe('Swagger API 文档');
expect(wrapper.find('header a').exists()).toBe(false);

const link = wrapper.get('section > div > a');
const link = wrapper.get(':scope > div > a');
expect(link.text()).toContain('打开 Swagger 文档');
expect(link.attributes('href')).toBe('/docs');
expect(link.attributes('target')).toBe('_blank');
Expand Down
Loading
Loading