|
|
714da2d633
|
feat: 聊天侧边栏新对话按钮统一为 antd Button 样式
|
2026-06-03 15:17:05 +08:00 |
|
|
|
02a202290f
|
refactor: 替换 Markdown 渲染组件为 markdown-to-jsx
|
2026-06-03 13:13:04 +08:00 |
|
|
|
5b09a16bc3
|
refactor(web): React 最佳实践优化 — memo/callback + 目录边界 + 路由增强
- useLogger: useMemo + JSON.stringify 替代 useState 派生
- useIsDark: effectiveTheme 替代 token 色值比较
- useCurrentProject: layouts/ 提升到 shared/hooks/
- ConsoleShell: locale useMemo 缓存
- ConsoleOutlet: 添加 Suspense 边界
- routes: 添加 layout 级 errorElement
- Table 组件: operationColumn useMemo + useCallback
- ChatPanel: footer 合并为 useCallback, props 传入模型数据
- ChatPage: textModels/conversations useMemo 缓存
|
2026-06-03 11:32:28 +08:00 |
|
|
|
297293cb61
|
chore: 移除 .pi 和 .claude 目录及其 gitignore 规则
|
2026-06-03 09:46:36 +08:00 |
|
|
|
2cdbe474ce
|
feat(workbench): 新增收集箱页面 — 素材列表/详情分栏布局 + 新增/选中/删除 mock 交互
|
2026-06-03 08:36:38 +08:00 |
|
|
|
83349bf01b
|
chore: 移除 context.md 进度跟踪文件
|
2026-06-02 23:36:19 +08:00 |
|
|
|
b1dec691e9
|
refactor(web): 前端目录重构 — consoles/pages → layouts/features + shared
- consoles/admin/ → layouts/admin-layout/
- consoles/workbench/ → layouts/workbench-layout/ + features/chat/
- pages/ → features/ (dashboard, models, projects, not-found)
- components/ → shared/components/
- hooks/ → shared/hooks/
- utils/ → shared/utils/
- 更新所有 import 路径 (src/web/ + tests/web/)
- 更新开发文档 (README.md, frontend.md, architecture.md)
|
2026-06-02 23:17:28 +08:00 |
|
|
|
1f05f259d0
|
fix(chat): 修复暗黑模式下 Markdown 和滚动条样式 — 响应式 useIsDark hook + 动态主题切换
|
2026-06-02 22:44:46 +08:00 |
|
|
|
ed97b30d51
|
feat(chat): 聊天滚动条美化 + Markdown 增强 — OverlayScrollbars/CodeHighlighter/代码复制/表格样式
|
2026-06-02 21:19:50 +08:00 |
|
|
|
26ecaadb26
|
feat(chat): 引入 @ant-design/x 组件 — Sender/Conversations/XMarkdown 替代手动拼装
- ConfigProvider → XProvider(ConsoleShell + test-utils)
- ChatSidebar → Conversations(menu dropdown + MoreOutlined trigger)
- ChatInputArea → Sender(footer 左右排版 + 模型 Select + 自动清空)
- Streamdown → XMarkdown(streaming hasNextChunk 映射 AI SDK 状态)
- CSS 清理 ~94 行废弃样式,新增统一布局规则
- 删除 streamdown 依赖
|
2026-06-02 18:31:31 +08:00 |
|
|
|
9c9afbd108
|
feat(chat): 优化聊天面板交互体验 — 推理折叠/智能滚动/工具中文名/代码块按钮
|
2026-06-02 08:43:26 +08:00 |
|
|
|
628b592577
|
fix: 修复 ChatPanel 无限重渲染 — useLogger 新增 bindings 参数保证引用稳定
|
2026-06-02 00:50:59 +08:00 |
|
|
|
29bf61f7a3
|
docs: 同步开发文档至代码最新状态
|
2026-06-01 23:33:16 +08:00 |
|
|
|
ab7b7fb189
|
fix: 质量修复 — ESLint 规则 TS6 兼容 + catch 注解 + 空函数体注释化 + 后端架构对齐 + 前端红线修复
- enforce-catch-type: 增加 TSUnknownKeyword 判断,消除28个 TS6 假阳性
- no-empty-function: 统一为注释方案,移除测试/生产分支和 eslint-disable 引导
- logger.ts: 空函数体改为注释说明,删除无用 eslint-disable 指令
- 补充15处 catch 子句 : unknown 类型注解
- 清理7个测试文件失效 eslint-disable 指令
- chat/send.ts: 提取 getModelWithProvider DAO,消除直接 Drizzle 操作
- projects/update.ts: 修复死代码+条件逻辑 bug
- providers/update.ts: 补充至少一个字段校验
- 前端: inline style → CSS className, ProviderFormModal whitespace 校验
- 开发文档: 更新 Zod 使用说明(AI SDK 框架级约束)
|
2026-06-01 23:11:42 +08:00 |
|
|
|
0d60120219
|
chore: merge dev-document into master
# Conflicts:
# docs/development/frontend.md
|
2026-06-01 20:59:48 +08:00 |
|
|
|
459cc76edf
|
chore: merge dev-eslint-rules into master
|
2026-06-01 20:47:55 +08:00 |
|
|
|
844562303c
|
feat: 全栈 Logger 依赖注入 — DB/Route/AI 层传参 + 前端 Logger + 测试更新 + 归档 add-frontend-logger
|
2026-06-01 20:32:19 +08:00 |
|
|
|
df5b60eb53
|
feat: ESLint 自定义规则增强 — 空函数和 catch 模式的项目修复指引
|
2026-06-01 20:19:13 +08:00 |
|
|
|
b3f77e8ac6
|
docs: 细化 config.yaml subagent 使用指引
|
2026-06-01 16:51:29 +08:00 |
|
|
|
b225b0a0c7
|
docs: 开发文档面向AI精简重构,补充文档编撰规范
|
2026-06-01 16:43:17 +08:00 |
|
|
|
de51a817fb
|
docs: 开发规范重构 — 新增后端红线、禁止事项汇总、前端能力优先级,精简 config.yaml
|
2026-06-01 16:12:21 +08:00 |
|
|
|
4c72754739
|
feat: 前端统一 Logger 模块 — 接口、双流 Sink、ESLint 规则、测试
|
2026-06-01 14:26:17 +08:00 |
|
|
|
d765f86b65
|
docs: 文档全面审查更新与规范集中化重构
|
2026-06-01 13:13:52 +08:00 |
|
|
|
60843f7dbf
|
feat: Python 版 init-dev-branch 改写为 Node.js 脚本
|
2026-06-01 11:28:05 +08:00 |
|
|
|
897fad95eb
|
refactor: 标题生成重构、UI样式优化、测试增强
- 将标题生成逻辑提取为独立函数,提前到Agent调用前非阻塞执行
- 修复模型/供应商不存在时的HTTP状态码 500→400
- ChatPanel: 分离模型选择useEffect、CSS类替代内联样式、按钮样式统一
- use-conversations: fetchConversations/fetchMessages改用handleResponse去重
- 聊天面板滚动优化(scroll-behavior: smooth, overflow-anchor: auto)
- 测试: mock支持onFinish回调,新增首次消息标题生成测试
- 移除未使用的SendMessageRequest接口
|
2026-06-01 10:49:38 +08:00 |
|
|
|
f34028368d
|
fix: 欢迎页发送消息后侧边栏即时刷新会话列表
在 handleSend 中 createConversation 成功后立即调用 invalidateQueries,
同时传入 displayModelId 保持与侧边栏新建会话行为一致。
|
2026-06-01 08:34:50 +08:00 |
|
|
|
8463274c4b
|
feat: 聊天页优化 — 欢迎页、标题自动生成、消息操作
|
2026-06-01 07:37:23 +08:00 |
|
|
|
f2e3d84fb1
|
feat: 聊天室模型选择器 + 会话更新 API + 消息部件重构
- 新增 PATCH /api/projects/:id/conversations/:cid 端点,支持更新 modelId 和 title
- 聊天面板新增模型选择下拉框,切换模型自动持久化
- 新建会话时传入默认文本模型 modelId
- 将 ToolCallCard 拆分为 ReasoningPart / TextPart / ToolPart 独立部件
- ToolPart 增加流式状态图标、折叠面板自动展开、错误详情展示
- ReasoningPart 增加思考中/思考完成状态指示
- 补充 PATCH 端点测试:更新成功、跨项目 403、不存在 404、无效 modelId 400
|
2026-05-31 21:56:50 +08:00 |
|
|
|
3e1f3b554d
|
fix: 优化聊天室消息卡片与页面滚动布局
- 统一用户和AI消息卡片外观,移除头像和背景色区分
- AI消息名称为蓝色l阿福l,用户消息名称为默认色l用户l
- 修正全局布局高度链,实现内容区域滚动而非页面滚动
- 消息列表内部滚动,输入框固定在页面底部
- 侧边栏会话列表添加min-height:0确保滚动正常
|
2026-05-31 19:01:53 +08:00 |
|
|
|
6eeb4ced7b
|
refactor: 聊天室 Agent 重构 — ToolLoopAgent + 论坛式布局
后端:
- 删除 agent-stream.ts,新建 alfred-agent.ts (ToolLoopAgent 工厂)
- 新建 get-current-time.ts 工具 (zod schema)
- 重构 send.ts: createAgentUIStreamResponse + onFinish 可靠持久化
前端:
- 删除 MessageBubble.tsx,新建 ToolCallCard.tsx (四态)
- 重构 ChatPanel.tsx: 论坛式 Card 布局 + PartRenderer 分派
- 移除 @ant-design/x 依赖,改用 antd 组件 + streamdown
依赖:
+ zod + streamdown
- @ant-design/x - @ant-design/x-markdown
测试: 306 pass, typecheck/lint 0 errors
|
2026-05-31 17:25:29 +08:00 |
|
|
|
f83f434863
|
feat: 工作台聊天室功能
|
2026-05-31 02:37:23 +08:00 |
|
|
|
83cf9eab94
|
fix: 项目表格列优化 — 描述列可见、标题简化、操作列自适应宽度
|
2026-05-29 23:32:12 +08:00 |
|
|
|
10b3928bee
|
refactor: 代码审查修复 — 错误边界、DRY抽取、测试修复、合规性改进
- P1: server.ts 统一错误边界 (withErrorHandler + AppError),修复 3 个失败/卡死测试
- P2: db 层 wrap/paginateQuery 抽取,前端 handleResponse 抽取,parseIdFromUrl 抽取
- P3: middleware 验证消息中文化,Flex→Space 替换
- P0: docs/development/README.md 新增已知设计决策章节
- P3-11 setup 拆分已尝试回退(@testing-library/react preload 依赖无法拆分)
- P3-13 config 层测试从本次变更移除
|
2026-05-29 22:27:56 +08:00 |
|
|
|
34e915ccf4
|
refactor: 简化模型管理,移除启用/禁用,优化测试和布局
- 移除供应商/模型启用禁用能力,清理DB schema/migration/API/前端
- 供应商测试改为Base URL连通性+/models探测
- 新增POST /api/models/test模型连接测试
- 新增GET /api/providers/options专用供应商选项接口
- 统一工具栏为ModelsToolbar,参考项目管理布局
- 模型弹窗优化:默认能力、响应式3列标签、并排数值
- 前后端正整数校验、供应商下拉loading/error/empty状态
- 表格列宽统一,操作列/名称列固定宽度
|
2026-05-29 18:03:33 +08:00 |
|
|
|
9241c782e6
|
docs: 新增代码审查提示词
|
2026-05-29 14:31:24 +08:00 |
|
|
|
48c76e6180
|
fix: 模型管理审查修复与归档
- 修复 registry 测试 ai mock 缺失 createProviderRegistry 导出
- 新增 POST /api/providers/test 支持未保存供应商配置连通性测试
- 供应商表单新增测试连接按钮,新建默认 openai-compatible
- 连通性测试按 ok 展示成功/失败,不再统一 success 样式
- 模型表单新建时也可测试供应商连接
- 模型页使用独立 provider 列表避免分页/搜索影响
- 移除模型管理组件内联 style
- 新增 ProviderTestResultResponse 共享响应类型
- 新增 bun run format:check 脚本
- 补充关键测试覆盖(删除关联、连通性、默认类型、表单测试)
- 更新 docs/user/usage.md、docs/development/*、design.md、tasks.md
- 归档 change 至 openspec/changes/archive/2026-05-29-add-model-management
|
2026-05-29 14:05:01 +08:00 |
|
|
|
933c2133f0
|
feat: 新增模型管理功能(供应商 + 模型 CRUD)
- 新增 providers/models 数据库表、迁移和数据访问层
- 新增 15 个后端 API 路由(供应商/模型 CRUD + 连通性测试)
- 新增 AI 服务层(registry.ts: buildProviderRegistry + testProviderConnection)
- 新增前端模型管理页面(Tabs: 供应商/模型,含表格、表单、工具栏)
- 新增前端 hooks(use-providers, use-models)
- 新增共享类型和 MODEL_CAPABILITIES 常量
- 新增 10 个测试文件(66 个测试用例,4 个因 bun test ESM 兼容问题待修复)
- 更新开发文档(architecture, backend, frontend)
- 附带 apply-review 修复:统一错误响应、提取共享常量、清理重复测试
注意:registry.test.ts 中 4 个测试因 bun test 无法解析
createProviderRegistry ESM 导出而失败,详情见 context.md
|
2026-05-29 12:40:10 +08:00 |
|
|
|
2ea4bd4410
|
test: 测试体系全面优化,修复 Windows SQLite EBUSY 和前端产品缺陷
测试基础设施
- 统一 SQLite 测试 DB/临时目录 helper(tests/helpers.ts),支持 Windows EBUSY 重试清理
- 测试库使用 PRAGMA journal_mode=DELETE 避免 WAL 句柄延迟
- 路由 handler 测试改用 createMigratedMemoryTestDatabase 避免 File DB 锁
- SQLite 聚焦 --rerun-each=20 全部通过(720 pass)
后端测试补强
- 新增 tests/server/app.test.ts 真实 startServer 集成测试
- 覆盖 /api/meta、项目 CRUD、错误路径、静态 fallback、安全 header
- bootstrap/logger 测试捕获预期输出,消除测试噪音
前端测试补强
- 移除 .ant-* 内部类名依赖,改为角色/文本/导航/请求契约断言
- 项目页补充搜索、Tab 切换、表单、表格操作、错误反馈行为测试
- 新增 hooks(use-theme-preference、use-sidebar-collapsed、use-projects)纯逻辑测试
- 新增 ErrorBoundary 错误展示和刷新按钮测试
- 新增搜索清空行为测试
- 测试 setup 过滤 antd/rc-trigger NaN height warning
产品修复(测试暴露)
- 修复 ProjectToolbar 搜索框无法输入(新增 draftKeyword 状态)
- 加固 ProjectFormModal 表单字段同步(useEffect 替代不可靠的 afterOpenChange)
- 清理 ProjectFormModal 冗余 afterOpenChange 同步逻辑
重构与合规
- ProjectContext 拆分为三文件满足 React Fast Refresh 规则
- use-projects.ts 导出内部 helper 函数供测试验证
- scripts/build.ts 提取纯生成函数供测试使用,修复构建步骤日志编号
- 修复 build 测试覆盖真实生成逻辑
文档同步
- 更新后端/前端/开发文档测试规范、质量门禁和 helper 使用说明
|
2026-05-29 00:45:21 +08:00 |
|
|
|
6cb378d7cb
|
feat: Admin/Workbench 双入口架构
- 抽取 ConsoleShell 共享外壳(Layout/Header/Sider/主题切换/侧边栏折叠)
- Sidebar 纯化为接受 menuItems prop 的展示组件
- Admin 管理台:/ 总览 + /projects 项目管理
- Workbench 工作台:/workbench/:projectId 项目作用域
- WorkbenchProjectGate 入口守卫(loading/error/archived/不存在拦截)
- ProjectContext 提供当前项目上下文
- 项目管理表格 active 行增加'进入工作台'按钮
- 项目名称 trim 后最多 10 字符(前后端一致)
- Workbench 总览页展示项目 Descriptions
- Header 区分:管理台显示副标题,工作台显示项目名 + 返回管理台按钮
- 28/28 前端测试通过
- 文档更新:frontend.md ConsoleShell 规范、usage.md 双入口说明
|
2026-05-28 22:33:03 +08:00 |
|
|
|
d33eb00377
|
docs: 完善前端样式开发规范
|
2026-05-28 16:57:46 +08:00 |
|
|
|
e09ced44ee
|
docs: 前端开发规范分层整理
- openspec/config.yaml 保留最高级前端规约和样式红线
- docs/development/README.md 引用前端专题文档避免重复
- docs/development/frontend.md 补充 antd、组件、样式、表单、测试等具体规范
|
2026-05-28 16:19:34 +08:00 |
|
|
|
b5301ec7d1
|
refactor: 前端 antd 组件使用最佳实践重构
- 修正 API 响应类型,增加 ProjectResponse 包装类型
- ConfigProvider 配置中文 locale (zhCN)
- 生产入口启用 ErrorBoundary,使用 Result 组件
- ReactQueryDevtools 仅开发环境渲染
- Sider 增加 collapsible 配置,使用 antd 默认折叠行为
- 项目页面拆分为 ProjectToolbar/ProjectTable/ProjectFormModal
- 搜索改用 Input.Search,表单增加 whitespace 校验
- 404/ErrorBoundary/Dashboard 使用 antd Result/Typography/Card/Descriptions
- 清理未使用的 ProtectedRoute 和冗余样式类
- styles.css 仅保留必要布局样式,无 antd 内部类覆盖
- 更新测试覆盖,避免依赖 antd 内部类名
- 更新 docs/development/frontend.md 开发规范
|
2026-05-28 16:09:01 +08:00 |
|
|
|
1f232e69fc
|
chore: add skills-lock.json
|
2026-05-28 13:22:36 +08:00 |
|
|
|
15ba33db27
|
refactor: 前端 UI 框架从 TDesign 迁移到 antd 6.x
- 移除 tdesign-react + tdesign-icons-react,新增 antd@6.4.3 + @ant-design/icons@6.2.3
- Layout/Header/Sider/Content 替换 TDesign Layout,Sider 内置折叠管理
- Segmented 替换 RadioGroup 主题切换,ConfigProvider 主题算法切换
- Menu items prop 模式,Sidebar 简化为无 props 纯组件
- Table/Modal/Form/Input.TextArea/Tabs/Tag/Popconfirm 全量迁移
- App.useApp().message 替换 MessagePlugin(hooks 模式)
- --td-* CSS 变量替换为 --ant-* antd CSS 变量
- 测试适配:ConfigProvider+App wrapper,.ant-menu-item-selected,antd CSS-in-JS jsdom 兼容
- 文档更新:frontend.md, development/README.md, config.yaml, deploy.md
- vendor-antd chunk 755KB gzipped 240KB
|
2026-05-28 13:20:12 +08:00 |
|
|
|
cd1533328d
|
chore: merge dev-openspec-optim into master
|
2026-05-28 11:01:36 +08:00 |
|
|
|
35ce2d1eda
|
refactor: 移除用户管理和系统设置占位页面
|
2026-05-27 23:16:12 +08:00 |
|
|
|
d5a0ba9e9e
|
feat: 增加项目管理功能
引入 SQLite 数据库(Drizzle ORM + bun:sqlite),实现项目 CRUD 与归档/恢复/删除
生命周期管理,新增项目管理前端页面,migration 嵌入单文件构建产物保持部署体验。
- src/server/db: schema、connection、migration 执行器、项目数据访问层
- src/server/routes/projects: 7 个 API 端点(列表/创建/详情/更新/归档/恢复/删除)
- src/web: 项目管理页面(TDesign Table/Tabs/Dialog/Form),TanStack Query hooks
- scripts: 构建时嵌入 migration SQL,开发期独立 generate-migrations-data 脚本
- tests: 60 个后端测试 + 27 个前端测试,覆盖 DB/migration/API/路由/页面
- docs: 更新架构、后端、发布、配置、部署、使用文档
|
2026-05-27 18:54:44 +08:00 |
|
|
|
be4b85126b
|
docs: 中文化 fast-drive 文档模板
|
2026-05-27 18:30:03 +08:00 |
|
|
|
348b35ef8c
|
feat: 放宽权限配置,允许 write/edit/bash 操作
|
2026-05-27 09:41:59 +08:00 |
|
|
|
34071a421a
|
refactor: 品牌重塑 my-app → Alfred·阿福
将项目从模板标识 my-app 全部替换为产品标识 Alfred·阿福,
去掉所有模板措辞,文档语态转为产品视角。
核心标识替换:
- name: my-app → alfred
- title: My App → Alfred·阿福
- subtitle: Bun 全栈应用 → 智能信息处理中枢
- description: 全栈开发框架 → 基于 AI 的信息综合处理平台
- 日志路径: my-app.log → alfred.log
- 构建产物: dist/my-app → dist/alfred(由 APP.name 自动适配)
文档更新:
- README.md 重写为产品介绍
- docs/README.md 去掉模板段落
- docs/user/ 从模板使用指南改为产品手册
- docs/development/ 标识替换 + 去模板措辞
- openspec/config.yaml 去模板项目描述
- LICENSE 填入 Copyright 2025 lanyuanxiaoyao
|
2026-05-27 09:38:57 +08:00 |
|