Land new drafts on a "Check your signup, then share it" page

クローズ
#502 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

  • #528 @richshaw による — マージされずにクローズ

評価

難易度
5/5
見積もり時間
1週間以上
初心者へのやさしさ
25/100
issue の種類
機能追加
明瞭さ
明確に書かれている
活発さ
活発
技術スタック
typescript

調査の方向性

Start with the /app/signups/[id] route, MagicComposeRoot.tsx, and src/mcp/links.ts; read the existing banner and card components, then inspect groupByFieldRefs and renderFieldValue. Add pure helpers under src/lib/ with unit tests, and update create-and-publish-a-signup plus the changelog. Done means all draft entry points reach the review page, empty drafts still open the builder, and the listed budget, lint, typecheck, knip, unit, and end-to-end checks pass.

索引モデルが issue の本文から書いたものです。

説明

enhancement pipeline:ux

Needs your OK: this is the biggest change in #498. Drafts open on a new review page instead of the Build tab. Swap pipeline:proposed for pipeline:ready to have it built.

Why

New organizers mostly stop before publishing, in their first session, and often right after the draft appears. Today they land in the Build tab:

  • a hand-built signup shows one empty "Set what" row and no next step;
  • an AI draft shows a long list.

This page asks them to check three things, then publish.

Design: canvas https://claude.ai/artifact/RqcjzCcdSTw5JhbXjm2x5y, row C, artboard "C · Check and publish: an AI draft with two problems". It's clickable. The canvas is private until shared.

What the page shows

  • Name and description, with Change. Change opens inline inputs with Save and Cancel.
  • What people sign up for:
    • A headline in fixed words, such as "12 slots · 3 days · 3 people each". It never borrows a word from a field label, so it reads correctly whatever language the organizer wrote in.
    • The slots exactly as the public page lists them, using the same groupByFieldRefs grouping and the same renderFieldValue. The list is folded to the first group or six rows, with "Show all N".
    • A value every slot shares is said once. For example, "Same on every slot: 9:00 am", instead of repeating it on every row.
    • This issue has no editing on this card. The problem checks and fixes are the next issue in #498, and editing slots is the one after.
  • What happens when someone signs up: requireEmail and sendReminders, with Change.
  • Actions:
    • "Publish and get the link";
    • "Edit everything in the builder";
    • "Preview the page";
    • "Not yet. Email me a link to finish later". Wire this up in the draft-email issue in #498; until then, leave it out.

Routing

  • /app/signups/[id] redirects to /build today. For a draft with at least one filled-in slot, render the review page instead. Otherwise keep the redirect. A draft with nothing in it needs the builder, not a checklist telling the organizer to delete their half-made slot.
  • Magic Compose pushes to /build?aiDraft=1 in MagicComposeRoot.tsx. Push to the review page instead, and show the AI-draft warnings on the card they're about.
  • Manual create already redirects to /app/signups/[id].
  • The AI connector's links.edit in src/mcp/links.ts points at the Build page. For drafts, point it at the review page or add a review link. Decide which here; it touches the tool description and links.test.ts.
  • Published signups open as they do today.

Watch for

  • JS budget. /app/signups/[id] has a 124 KB entry because it's a redirect today. Render the headline, list and fold on the server; only the Change forms should be client islands. Set the budget deliberately.
  • Tests. Put the headline and fold helpers in src/lib/ as pure functions with unit tests (the TDD rule).
  • Session check. The page calls requireOrganizerSession itself, as every organizer page does.
  • Help. create-and-publish-a-signup walks through landing in the builder. Rewrite it, and update its UI list, walkthrough and screenshots (help-pages skill).
  • Reuse. Use the existing banner and card components rather than new one-offs.
  • Phone. One column that works at 390px wide.
  • CHANGELOG: add a line.

Done when

  • A draft with content opens on the review page from every entry point: Magic Compose, manual create, the dashboard and the connector link.
  • An empty draft opens in the builder.
  • The headline and fold are unit-tested, including signups with unlimited spots and signups that aren't grouped.
  • pnpm budgets passes with the new page's entry.
  • pnpm lint && pnpm typecheck && pnpm knip && pnpm test pass, and the e2e flow for create-and-publish passes.

Planned in https://claude.ai/code/session_01AkZbMUc4ej4ed7o5uh6nqr

主要言語
TypeScript
スター
19
フォーク
4
平均マージ
22時間 45分
マージ済み PR(30日)
193

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

richshaw/OpenSignup のほかの issue

richshaw/OpenSignup の issue をすべて見る

似ている issue

TypeScript の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。