社区与新手任务
目标:让第一次提 PR 的人 2 小时内能合入 有意义的改动,抬升贡献者留存(愿景第三层用户价值)。
标签约定
| 标签 | 含义 |
|---|---|
good first issue | 范围清晰、本地可验证、无需深架构上 下文 |
help wanted | 欢迎外部认领,可稍大 |
docs / frontend / backend | 域 |
area:designer / area:share / area:reverse | 子域(可选) |
Issue 标题建议:[good first] <一句话结果>。正文必含:背景 / 接受标准 / 验证命令 / 相关文件。
维护者运营节奏(双周)
- 扫一遍打开 Issue,给合格项打上
good first issue(保持 3–8 个开放) - 正式仓就绪后:
REPO=owner/name ./scripts/seed-good-first-issues.sh(草稿在.github/ISSUE_DRAFTS/) - 合并后立刻关 Issue,并在 PR 描述链回 Issue
- 双周发版笔记里点名合入的新手 PR(
docs/releases/) - 文档站「社区」页与本清单同步(改本文件即可)
Issue 草稿投放规则
- 源文件:
.github/ISSUE_DRAFTS/NN-*.md(见同目录README.md) - 跳过:正文以
> **已合入**开头的引用块(仅行首匹配;正文其它「已合入」字样不跳过) - 目标:正式仓始终保持 3–8 个开放的
good first issue - Dry-run:
DRY_RUN=1 REPO=owner/name ./scripts/seed-good-first-issues.sh
什么样的任务适合 good first
- 改文案、补 aria-label /
data-testid、修死链、补单测断言 - 清一处明确 eslint warn(附文件路径)
- 补 E2E 单条旅程(现有 helpers 可复用)
- 文档示例可复制命令
不适合:改 Security/OAuth、改 projectJSON 主结构、画布协议大改、无复现步骤的模糊 UX。
种子任务池(可直接开 Issue)
下列为当前仓库已知低风险债,开 Issue 时复制「接受标准」即可:
文档站相对链接(仓库根路径已改绝对 GitHub URL;docs/内./同目录链路由onBrokenLinks=throw门禁)登录/注册页副标题去 ChatGPT 噱头(已合入;回归见smoke.spec.ts)(已合入presence.spec清理项目deleteOwnPersonProjects)协作 sync toast E2E(已合入sync-toast.spec.ts;info 路径)前端 eslint warn 定点清零(configJsonSlice)(已合入;其它 store 文件仍可认领)(已合入)databaseDomainsSliceeslint warn 清零协作 sync warning toast E2E(已合入sync-toast.spec.ts)后端创建项目默认 projectJSON(已合入ensureDefaultProjectJson+ 单测)去掉开源版「升级至尊」CTA(已合入;dialog/upgrade已删)(已合入)exportSliceeslint warn 清零(已合入)profileSliceeslint warn 清零(已合入)dataTypeDomainsSliceeslint warn 清零设计器顶栏 Gitee star 链更新(已合入 → GitHuberdonline/erdonline)社交登录已删路径 E2E(已合入dead-auth-routes.spec.ts)页脚/ChatSQL 去「零代科技」商业文案(已合入;页脚ERD Online · MIT)(已合入;warn=0)entitiesSliceeslint 清零设计器「项目」菜单接线(已合入;数据源设置可开)(已合入;草稿projectJsonSliceeslint warn 清零06已标完成)(已合入;草稿useProjectStoreeslint warn 清零07已标完成)(已合入;modulesSliceeslint warn 清零src/store/projecteslint warn=0)项目菜单「版本」入口(已合入:跳转版本管理 + E2E)默认项设置保存反馈(已合入 E2E「设置成功」;草稿10)版本管理页骨架(已合入;loading.spec.ts)模型树删表二次确认 E2E(已合入smoke取消/确认)导入/导出开弹窗关下拉遮罩(已合入)删除确认主按钮改「删除」(已合入;E2E/删\s*除/)侧栏与项目菜单「版本」叙事对齐(已合入)导出 DDL 向导按钮 aria-label(已合入)ISSUE_DRAFTS README 与投放清单(已合入;seed 仅认行首> **已合入**)版本排序页 eslint(已合入)canvasHistory 去 any(已合入)关系图边热区(已合入interactionWidth=24)导出 DDL 第二步 E2E(已合入;ExportDDL 对齐 ADR-0008)community seed 规则说明(已合入本文「投放规则」)PK 徽标切换 E2E(已合入relation.spec「PK」)表头改名 E2E(已合入relation.spec「改名」)版本管理页 eslint(已合入)ExportDDL 剩余 eslint(已合入)PageSkeleton aria-busy(已合入)json2code 入口类型收窄(已合入)share.spec 清理更稳(已合入)canvasHistory 单测(已合入yarn test:unit:canvas-history)项目菜单关闭态 CSS class(已合入erd-project-menu--closed)version/approval goto 抽 helpers(已合入;回滚同步落库)CHANGELOG Unreleased 整理(已合入:按日### YYYY-MM-DD+ 文首维护约定;草稿32)控件矩阵 🚧 行(P2b 矩阵 🚧=0;余 📋 延期不拆阻断 Issue)画布「删除字段」可访问按钮(已合入;relation.spec「删除字段」;草稿33)ReactFlow Controls 中文 aria(已合入;ZhControls+relation.spec「Controls」;草稿34)ReactFlow MiniMap 中文 aria(已合入;ariaLabel="画布缩略图"+relation.spec「MiniMap」;草稿35)画布工具栏撤销/重做/排布/对齐 aria(已合入;relation.spec「工具栏」;草稿36)顶栏 SaveStatus aria-live(已合入;role="status"+aria-live="polite";relation.spec「save-status」;草稿37)顶栏 CollabPresence aria-live(已合入;role="status"+aria-live="polite";presence.spec;草稿38)命令面板 listbox 语义(已合入;role="listbox"+ 空态aria-live;relation.spec「命令面板」;草稿39)(已合入;lint:js:ci分享页 Array 类型 + DataDomain hooksyarn lint:js:ci0 error;share.spec)编辑版本号校验失败仍关弹窗(已合入;RenameVersiononFinish失败返回 false;version.spec「重命名」)
种子池暂空:a11y 微切片停。Word 导出已去 MinIO 硬依赖(classpath 默认模板);真实 Word 下载 E2E 可另开切片覆盖。正式仓投放时从合入项外另选题。
贡献者怎么认领
- 在 Issue 下留言「我来做」
- Fork →
feat/...分支 → PR 勾选模板 - 按 Issue 验证命令在描述里贴结果摘要
详见 CONTRIBUTING.md。