Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

Draft reminder email: email organizers once about a draft they haven't published

Đang mở
#560 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức phù hợp với người mới
45/100
Loại issue
Tính năng
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
postgresql, typescript

Hướng nghiên cứu

Start with src/lib/draft-nudge.ts and src/jobs/due-rules.ts, then inspect the referenced #532 diff and its database tests on claude/issue-506-draft-email. Check the migration numbering against main and follow the listed job, email, unsubscribe, privacy, telemetry, help, and CLAUDE.md entry points. Done when the eligibility cases, one-send behavior, template rendering, legal wording, and listed checks all pass.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

enhancement pipeline:ux

Why

Nothing brings an organizer back to a draft they didn't finish. #532 built an email for this, but it sat on top of the review-page stack, which is closed while the draft → publish → share flow is redesigned (#498). The automatic email doesn't depend on that design, so it can ship on its own.

What to do

Rebuild #532's email as a new PR from main. The code is on the branch claude/issue-506-draft-email, and #532's diff shows only the email.

Bring over:

  • The scheduled email. It goes out 3 hours after a draft is started (DRAFT_NUDGE_DELAY_HOURS in src/lib/draft-nudge.ts), and only while the signup is still an undeleted draft, has a slot filled in, and its organizer can still edit it. Drafts started more than 48 hours ago get none, so the first deploy doesn't email every old draft.
  • Not for drafts an AI connector created. The assistant already gives the organizer the links.
  • Jobs. draft-nudges.dispatch (a scan every 10 minutes) and draft-nudges.send (one job per due draft, which checks every rule again first). A draft.nudge_sent activity row stops a second send. The shared "which rules failed" SQL is src/jobs/due-rules.ts.
  • The template and subject ("Ready to publish: {title}"), in src/email/subjects.ts.
  • Turning it off. Each email has a link and List-Unsubscribe headers. The link opens /unsubscribe/drafts, which asks first and can turn the emails back on. One-click unsubscribe posts to POST /api/public/draft-email-optout. Both are token-checked and rate-limited per IP. The setting is one column, organizers.draft_emails_opted_out_at. Its migration needs a new number after main's latest.
  • Docs. The privacy page (bump "Last updated"), docs/telemetry.md, the help page line, and the jobs section of CLAUDE.md.
  • pnpm drafts:due, like pnpm reminders:due.

Leave for the redesign (#498, #506):

  • "Not yet. Email me a link to finish later". It was a button on the review page.

Changes from #532:

  • The main button. "Check it and publish" opened the review page. On main, /app/signups/[id] opens the Build tab, so the button should say something that fits, such as "Finish and publish".
  • The "So far" line. "12 slots · 3 days · 3 people each" used the review page's headline helper (signupHeadline, from #528). Either bring that small pure function over with its tests, or drop the line.

Decisions (defaults from #532)

  1. Delay: 3 hours, and only for drafts started in the last 48 hours.
  2. Off switch: per organizer, through the link in the email. There's no settings page for it.
  3. AI connector drafts: they don't get the email.
  4. New: keep the "So far" line, or drop it?

Watch for

  • One worker. As with reminders, the check that stops a second email holds only with one worker process.
  • Trust docs change in the same PR.

Done when

  • A due draft gets exactly one email. A published, deleted, empty, opted-out, connector-made or too-old draft gets none. #532 has a DB test for each case.
  • The template renders in the worker test.
  • The legal pages say organizers may get one email about an unpublished draft.
  • pnpm lint && pnpm typecheck && pnpm knip && pnpm test and pnpm test:db pass.
Ngôn ngữ chính
TypeScript
Star
19
Fork
4
Merge trung bình
22 giờ 46 phút
Pull request đã merge (30 ngày)
170

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của richshaw/OpenSignup

Tất cả issue của richshaw/OpenSignup

Issue tương tự

Thêm issue về TypeScript

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.