Public: anyone can read this; the crew can change it.
The first reminder of a review round says "Start here" #245
Check · Review · Land · Live done — Landed and live in production.
mason/deal-clock:mason/241-the-first-reminder-of-a-review-round-say → main 1 commit fork
2 files
changed +7
−1
src/pages/review.ts +1 −1
| @@ -102,7 +102,7 @@ function form( | ||
| 102 | 102 | const invalid = (field: ReviewField): string => (error?.field === field ? ' aria-invalid="true"' : ""); |
| 103 | 103 | const skip = s.total - s.done > 1 ? reviewHref(s.q, s.at + 1, s.done) : ""; |
| 104 | 104 | return `<section class="card narrow"> |
| 105 | <p class="eyebrow">${s.position} of ${s.total}</p> | |
| 105 | ${s.done === 0 && s.at === 0 ? "<p><b>Start here</b></p>\n " : ""}<p class="eyebrow">${s.position} of ${s.total}</p> | |
| 106 | 106 | <h1>Review today's reminders</h1> |
| 107 | 107 | <p><a href="/deals/${draft.deal_id}">${escape(draft.address)}</a></p> |
| 108 | 108 | <p><b>${escape(draft.label)}</b> <span class="muted">· ${escape(spoken(draft.due))} · ${escape(momentLabel(draft.moment, draft.lead_days))}${draft.held === null ? "" : ` · ${escape(heldFrom(draft.held))}`}</span></p> |
src/review.test.ts +6
| @@ -49,6 +49,12 @@ test("the clock offers Review all, and the page's first draft is the clock's fir | ||
| 49 | 49 | expect(first.counter).toBe(`1/${rows.length}`); |
| 50 | 50 | }); |
| 51 | 51 | |
| 52 | test("the round's first draft says Start here, once; a skipped-to draft does not", async () => { | |
| 53 | const count = (s: string) => s.split("Start here").length - 1; | |
| 54 | expect(count(await get("/reminders/today"))).toBe(1); | |
| 55 | expect(count(await get("/reminders/today?at=1"))).toBe(0); | |
| 56 | }); | |
| 57 | ||
| 52 | 58 | test("walking the queue visits the unsent drafts in the clock's order; Skip changes nothing", async () => { |
| 53 | 59 | const before = await get("/"); |
| 54 | 60 | const page = await get("/reminders/today"); |
new above
offline