Files
xuyueandClaude Opus 5.5 8653d411a6
Deploy / deploy (build, debian, 22) (push) Canceled after 0s
feat: 改版阶段 4:挑战列表页、教程按小节存代码、出题页合并、用户管理、整站暗色
- 挑战列表改成独立页面(ChallengeHome):每题一行,完成状态、分值、出题人,可按未做 / 已交筛选;
  教程面板只放教程
- 教程每一节的代码各存一份(和挑战同一个按任务的 key),切回来时还在,第一次才放示例代码;
  提交列表“复制到编辑器”对教程也写入该任务的代码
- 教程 / 挑战出题页合并为 TaskEditor:“提交”改为“保存”,保存后停在当前项,删除前说明会连带删除学生提交;
  admin 也能在列表里切换挑战是否公开(保存时本来就能设)
- 用户管理:初始密码默认隐藏,封号前确认,批量新建说明用户名规则
- 整站暗色:顶栏切换跟随系统 / 亮色 / 暗色;Naive 暗色主题、markdown 和代码高亮的暗色覆盖
  (styles/dark-content.css 由 GitHub 暗色样式生成)、CodeMirror One Dark 配色、md-editor 暗色;
  组件里剩下的硬编码颜色全部换成配色变量

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 08:17:43 +08:00

49 lines
1.4 KiB
JSON

{
"name": "webpreview-client",
"private": true,
"version": "0.3.0",
"type": "module",
"scripts": {
"dev": "bun --bun vite",
"build": "bun --bun vite build",
"build:staging": "bun --bun vite build --mode staging",
"fmt": "bun fmt src/",
"typecheck": "vue-tsc --noEmit -p tsconfig.app.json"
},
"dependencies": {
"@codemirror/lang-css": "^6.3.1",
"@codemirror/lang-html": "^6.4.12",
"@codemirror/lang-javascript": "^6.2.5",
"@codemirror/language": "6.12.3",
"@codemirror/theme-one-dark": "^6.1.3",
"@codemirror/view": "^6.41.1",
"@fontsource/jetbrains-mono": "^5.3.0",
"@vueuse/core": "^15.0.0",
"axios": "^1.20.0",
"codemirror": "^6.0.2",
"copy-text-to-clipboard": "^3.2.2",
"github-markdown-css": "^5.9.0",
"highlight.js": "^11.12.0",
"lucide-vue-next": "^1.0.0",
"marked": "^18.1.1",
"marked-alert": "^2.1.2",
"marked-code-preview": "^1.3.7",
"marked-highlight": "^2.2.4",
"md-editor-v3": "^7.1.0",
"naive-ui": "^2.45.3",
"vue": "^3.5.44",
"vue-codemirror": "^6.1.1",
"vue-router": "^5.4.0"
},
"devDependencies": {
"@vitejs/plugin-legacy": "^8.2.3",
"@vitejs/plugin-vue": "^6.0.10",
"@vue/tsconfig": "^0.9.1",
"prettier": "^3.9.10",
"typescript": "~5.9.3",
"unplugin-vue-components": "^32.1.0",
"vite": "^8.3.5",
"vue-tsc": "^3.3.13"
}
}