yuzhiran-dev
|
150ae3dcfd
|
feat: 技能库改为数据库存储 (Prisma Skill 模型 + seed)
- Prisma 新增 Skill 模型 (id/name/description/icon/category/difficulty/systemPrompt/starters/tasks/tags/prerequisiteIds)
- SkillsService 从 DB 读取替代硬编码常量
- seed.ts 新增 seedSkills() 写入 8 个技能
- SkillsController 保持不变,API 返回 JSON 解析后的 starters/tasks
|
2026-05-18 16:23:52 +08:00 |
|
yuzhiran-dev
|
79d7535c1c
|
feat: P4 多模态 — 图片上传 + 沙盒 vision 支持
后端:
- ChatMessage 接口支持 text | image_url 多部分内容
- sandbox chat 接受 images[] 参数
- 自动将图片转为 image_url 格式发送到 AI
- 上传模块支持 jpg/png/gif/webp/svg
前端:
- 沙盒输入区 + 图片上传按钮
- 图片缩略图预览 + 删除
- 上传后随消息发送到 API
- uploads/ 目录持久化存储
|
2026-05-18 14:15:56 +08:00 |
|
yuzhiran-dev
|
0ed017b212
|
feat: P3c LLM集成层增强 (模型目录 + 用量统计 + getModelInfo)
|
2026-05-18 12:10:17 +08:00 |
|
yuzhiran-dev
|
ed003d0ef0
|
feat: P3b 会话重命名 (PATCH + 双击编辑)
|
2026-05-18 12:08:32 +08:00 |
|
yuzhiran-dev
|
4de042abcd
|
feat: P3a 代码语法高亮 (highlight.js + CodeBlock组件)
|
2026-05-18 12:06:30 +08:00 |
|
yuzhiran-dev
|
21078ae287
|
feat: Mobile 全站 CSS 变量对齐
- 批量替换 18 个页面硬编码颜色 → CSS 变量
- sandbox page 完整迁移(参考页)
- App.vue + variables.css 统一 Token 定义
- 剩余仅保留语义色(红色价格、绿色完成、阴影、渐变)
- 剩余 16 页按相同模式可逐步迁移
|
2026-05-18 11:52:57 +08:00 |
|
yuzhiran-dev
|
1a8b3fbaab
|
fix: PC 端全站移动端响应式修复
Critical:
- header.tsx: 手机菜单按钮 flex-row→flex-col, 修复 w-full 溢出
- compare/page.tsx: 参数面板 grid-cols-3→grid-cols-1 sm:grid-cols-3
High:
- sandbox/page.tsx: header 区 flex-wrap + 模型选择器 w-48→w-40 sm:w-48
- member/page.tsx: 功能对比行 grid 布局替代 flex, 防溢出
- workshop/page.tsx: 编辑区 flex-col sm:flex-row + 按钮组 flex-wrap
Medium:
- analytics/page.tsx: domain name truncate
- skills/[id]: CTA 按钮 w-full sm:w-auto
|
2026-05-18 11:47:50 +08:00 |
|
yuzhiran-dev
|
8665032da4
|
feat: P2 Mobile CSS 变量对齐
- 新建 mobile/src/styles/variables.css — Design Token 变量定义
- App.vue — 使用 var(--muted) / var(--foreground) 替代硬编码
- sandbox/index.vue — 完整迁移参考页(品牌色/边框/文字/背景)
- docs/design-tokens.md — 更新 Mobile 迁移对照表
|
2026-05-18 11:18:02 +08:00 |
|
yuzhiran-dev
|
fb092cb5d9
|
feat: P1 学习技能包 — 可组合技能模块系统
后端:
- SkillsModule (service + controller),8 个预置技能
- GET /skills (支持 category/difficulty/search 过滤)
- GET /skills/:id /categories /difficulties
前端:
- /skills 技能市场 — 分类/难度/搜索过滤
- /skills/[id] 技能详情 — system prompt、练习任务、starter
- header 导航新增「技能」入口
- sandbox page 改为从 API 加载技能(替代硬编码 SCENES)
- 支持 ?skill=xxx 直接加载指定技能
- useSearchParams Suspense 包装
全栈: 70 pages / 92 tests 全部通过
|
2026-05-18 11:15:00 +08:00 |
|
yuzhiran-dev
|
cba785e6bd
|
feat: P0f 会话分享链接 + 全栈验证
- 后端: POST /sessions/:id/share 生成 HMAC 签名分享令牌
- 后端: GET /sandbox/shared/:token 公开查看分享会话
- 前端: sandbox/page.tsx 新增「复制分享链接」按钮
- 前端: /sandbox/share?token=xxx 分享查看页面
- 全栈: 后端 build + 前端 61 页 + 92 tests 全部通过
|
2026-05-18 10:43:25 +08:00 |
|
yuzhiran-dev
|
f2a6bb93f9
|
feat: P0e 模型选择器升级 — 卡片式下拉
- ModelSelector 组件:标签/提供商/描述/选中状态
- 替换 sandbox page + workshop page 原生 select
- 模型数据增加 provider/desc 字段
|
2026-05-18 10:39:32 +08:00 |
|
yuzhiran-dev
|
0fdad71c57
|
feat: P0d 会员定价页重构 — 用量可视化 + 方案对比
- 三栏定价卡片(免费/月卡/年卡),参考 opencode Go 页面风格
- 日配额用量进度条
- 功能对比表(沙盒/模型/提示词/课程/广告)
- 当前方案标记 + 最受欢迎标记
- useT 全量翻译
- 补充中/英 30+ 定价相关翻译 key
|
2026-05-18 10:37:58 +08:00 |
|
yuzhiran-dev
|
a4c7d71931
|
feat: P0c 沙盒页面 useT 翻译迁移
- sandbox/page.tsx 全量迁移:所有用户可见文本使用 useT()
- 场景命名翻译:sceneName() 函数映射翻译 key
- formatTime 使用 i18n 时间文本(刚刚/分钟前/小时前)
- 高级参数面板抽象为 map 渲染(消除重复 markup)
- 补充中/英 justNow/minutesAgo/hoursAgo 翻译
|
2026-05-18 10:36:22 +08:00 |
|
yuzhiran-dev
|
41374f2642
|
feat: P0b Design Token + 共享组件库
- docs/design-tokens.md — 完整 Token 规范(色彩/间距/圆角/排版/组件模式)
- 新增 PageLayout 组件(封装 26+ 页面的重复容器模式)
- 新增 Card / StatCard 组件
- 补充 Mobile (Vue) 迁移清单和 CSS 变量映射
|
2026-05-18 10:18:32 +08:00 |
|
yuzhiran-dev
|
9efa2d0425
|
feat: P0a i18n 基础设施 + UI 语言切换
- 创建 i18n 模块 (provider + useT hook + useLang hook)
- 中/英翻译文件 (zh.ts / en.ts),覆盖沙盒/学习/会员/对比等核心页面
- LanguageProvider 包装 layout,支持 localStorage 持久化
- Header 添加语言切换按钮 (中<>EN)
- AGENTS.md 新增国际化约定
- opencode 源码克隆到 /tmp/opencode-source/ 供参考
|
2026-05-18 10:12:37 +08:00 |
|
yuzhiran-dev
|
11bb86854c
|
feat: Phase 1-3 全部完成 — 沙盒增强、学情分析、学习路径
|
2026-05-18 09:48:51 +08:00 |
|