| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
DumbPad 是一款专注于速度、美感与跨端体验的极简 Markdown 编辑器。它采用了“混合编辑”模式,将 Markdown 的强大功能与所见即所得的直观性完美结合,特别针对移动端进行了深度交互优化。
DumbPad 当前保持无构建工具的 Vanilla JS 前端和 Express 后端。重构原则是小步提取高内聚模块,不改变 API、数据结构和用户可见行为。
更详细的模块说明见 项目技术介绍。
安装依赖:
npm install配置环境变量: 参考 .env.example 创建 .env 文件,设置你的 DUMBPAD_PIN 等参数。
启动应用:
npm run dev访问: 默认地址为 http://localhost:3000
部署机上进入仓库目录后运行:
npm run docker:update默认流程会先 git fetch --prune && git pull --ff-only,再用当前仓库源码重建 dumbpad 服务并重启容器,最后轮询 /health。常用参数:
npm run docker:update -- --skip-git-pull
npm run docker:update -- --health-url http://127.0.0.1:3000/health
npm run docker:update -- --service dumbpad --compose-file docker-compose.yml
npm run docker:update -- --image-only说明:docker-compose.yml 默认配置了上游镜像;脚本默认会临时追加本地 build override,确保更新的是本仓库当前代码。只有需要直接拉取 compose 中配置的镜像时才使用 --image-only。
默认使用本地存储:
DATA_DIR=./data
STORAGE_BACKEND=local
STORAGE_LAYOUT=legacy使用 S3 兼容存储:
STORAGE_BACKEND=s3
STORAGE_LAYOUT=split
S3_ENDPOINT=https://s3-cn-east-1.qiniucs.com
S3_REGION=s3-cn-east-1
S3_BUCKET=dumbpad
S3_ACCESS_KEY=your-access-key
S3_SECRET_KEY=your-secret-key
S3_PREFIX=optional-prefix说明:
AI 关联使用 OpenAI-compatible 接口;不配置 Key 时自动使用 noop provider:
AI_BASE_URL=https://example.com/v1
AI_API_KEY=your-api-key
AI_CHAT_MODEL=deepseek-v4-flash
AI_INSIGHT_BASE_URL=https://example.com/v1
AI_INSIGHT_API_KEY=your-insight-api-key
AI_INSIGHT_MODEL=your-dedicated-insight-model
AI_INSIGHT_MAX_CHARS=800
AI_EMBEDDING_BASE_URL=https://example.com/v1
AI_EMBEDDING_API_KEY=your-embedding-key
AI_EMBEDDING_MODEL=Qwen/Qwen3-Embedding-0.6B
AI_RERANK_BASE_URL=https://api.siliconflow.cn/v1
AI_RERANK_API_KEY=your-rerank-key
AI_RERANK_MODEL=BAAI/bge-reranker-v2-m3
AI_RELATION_META_READ_CONCURRENCY=4AI 运行规则:
Relations 重建接口只使用已有 ready meta,不重新提取 Thought,不重新生成 embedding:
curl -X POST http://localhost:3000/api/thoughts/relations-rebuild \
-H "Content-Type: application/json" \
-d '{"limit": 100}'S3 后端会保存 thoughts/、thoughts.meta/、relations/、relations.suppressed/、indexes/ 和 notepad 数据。应用仍然保持本地优先思路:AI 和 S3 都是后台能力,不应阻塞首屏和快速写入。
真实数据迁移建议先走 staging prefix:先 dry-run,再导入到新 prefix,确认页面可读后再运行 AI backfill。不要直接清空 bucket,也不要把测试 prefix 当成真实数据源。
本仓库提供一组固定 ID 的本地演示数据,包含 6 篇 Notepad、文章置顶、10 条 Thought、子任务、完成状态、附件、手动关联、时间图标、搜索关键词、同步与 API 回归场景。它同时可作为手动测试和接口测试夹具。
运行以下命令会清空当前本地 data/ 目录,然后重新生成演示数据;脚本会拒绝在 S3 后端或非 data 目录执行:
npm run seed:demo生成后可从“欢迎使用 DumbPad”开始体验,并重点检查:
固定测试 ID 见“开发者 API 指南”演示文章;完整 HTTP 契约见 api.md 与 /openapi.json。
症状:可视编辑模式中,普通文本按一次 Enter 可能在源码模式出现额外可编辑空行,并在阅读模式表现为异常大的段落间距。
基准:已部署并人工验证的 refactor-ai-s3-thoughts 分支保留了正确行为。后续排查不得以 main 分支替代该编辑器基线,两个分支的编辑器实现和提交历史并不等价。
修复边界:public/hybrid-editor.js 的 handleWysiwygSoftEnter() 只接管顶层普通段落,插入软换行与零宽光标保护字符,并在下一任务同步编辑器值;标题、列表、引用、代码、内联代码、组合输入和带修饰键的回车继续交给 Vditor。不要将它替换为“完全交给 Vditor”、editor.insertValue('\n') 或直接清理已有 Markdown 空行,这些改法分别会恢复空段、吞掉首次回车或误删用户刻意保留的段落。
防回归:修改这条路径后,至少运行 npm run test:hybrid-editor-time-command,并按上方手动回归项验证一次。
npm run check
npm run test:hybrid-editor-time-command
npm run test:api
npm run test:ai-provider
npm run test:ai-queue
npm run test:relations
npm run test:thought-modules
npm run test:note-sync
npm run test:pwa-cache
npm run test:s3-storage
npm run test:s3-migration
npm run test:s3-prefix真实 S3 smoke 需要先配置 S3 环境变量和唯一 S3_PREFIX:
npm run test:s3-real| 快捷键 | 功能 |
|---|---|
| Ctrl + Z | 撤销 (Undo) |
| Ctrl + Y | 重做 (Redo) |
| Ctrl + P | 打印当前文档 |
| Ctrl + \ | 搜索文档 (Search) |
让记录回归简单。
| Back | FazBrowse Home | New Git URL |