Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

After a slot with sign-ups moves, its editor still says "If you change its date or time"

Abierto
#599 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
55/100
Tipo de issue
Nueva funcionalidad
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
react, typescript

Línea de trabajo

Start with src/components/build-wysiwyg/SlotEditor.tsx and its SlotEditor.test.tsx tests; trace how slot edits save and how the editor identifies the reminder date and paired time using findReminderFields in src/lib/reminder-fields.ts. Check SLOT_CHANGE_SETTLE_MINUTES in src/jobs/slot-changes.ts and how the help article uses it. Done means the note updates after a saved move, reverts when moved back, ignores unrelated date fields and reminders-off cases, and announces the update politely to screen readers.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

enhancement pipeline:proposed pipeline:ux

Needs your OK: this changes the note in the Build tab's slot editor once a slot people hold has moved, to say they'll be emailed and when. Swap pipeline:proposed for pipeline:ready to have it built.

What happens

When an organizer opens a slot that people hold, the editor (SlotEditor in src/components/build-wysiwyg/SlotEditor.tsx) shows a note above its fields, added in #524. With reminders on, it reads: "2 people are signed up for this slot. If you change its date or time, we'll email them to let them know."

The note depends only on the count when the page loaded and on the reminders setting. When the organizer does change the date, the rail says "Saved" and the note still says "If you change…". Nothing says an email is now on its way, or when. In the walkthrough, the organizer couldn't tell whether the people on the slot would hear about the move.

What actually happens on main. The email does go, but later, and not from the page:

  • The move is recorded. updateSlot in src/services/slots.ts writes a slot.rescheduled activity row when the slot's time (slot_at) changes.
  • The worker sends it. The worker (pnpm worker) looks for moves every 2 minutes (slot-changes.dispatch, src/jobs/slot-changes.ts). Once a slot has stayed put for 10 minutes (SLOT_CHANGE_SETTLE_MINUTES), each person holding it gets a "Time changed: · " email with the slot's new details and their link to change or cancel. So it goes 10 to 12 minutes after the last change. With no worker running, nothing is sent.
  • Only to people who could get a reminder (notifiableRules in src/jobs/notify-rules.ts): reminders are on, they gave an email and haven't unsubscribed, the signup is open or closed, and the slot is still ahead.
  • Moved back, nothing sent. A slot put back where people were last told before the email goes sends nothing.
  • Only the reminder date moves a slot. slot_at comes from the reminder date field and the time field paired with it (findReminderFields in src/lib/reminder-fields.ts). Changing another date field sends nothing.

To see it: create a signup by hand, give its slot a date next month, and publish it. From its public page, sign up for that slot as [email protected]. Back in the Build tab, open the slot, change its date, and read the note after "Saved" shows.

Fix, in outline

  • Change the note once a move has saved. With reminders on, when the slot's reminder date, or its paired time, differs from when the page loaded and the save has succeeded, the note reads: "You moved this slot. We'll email the 2 people signed up in about 10 minutes, with the new details."
  • Moved back, first note back. If the organizer puts the date back, the note goes back to "If you change…". That matches the worker, which sends nothing for a slot moved back.
  • Take the wait from the constant. Build "10 minutes" from SLOT_CHANGE_SETTLE_MINUTES, as the help article does, so the note can't drift from the job.
  • Use the server's rule for which fields move a slot: findReminderFields, so a change to another date field doesn't promise an email.

Watch for

  • Screen readers. The note is a role="note" (InlineNote), so a change to its text isn't announced. Announce the new line through a polite status, without making the whole note live.
  • The count is a snapshot. taken comes from committedBySlot when the page loaded, and includes people who unsubscribed, who get no email. #524 accepted this for the first note.
  • Tests that pin the wording: SlotEditor.test.tsx.
  • Overlap with #580, which changes SlotEditor.tsx. Whichever lands second has a small merge.
  • CHANGELOG entry.

Choices this makes

  • Wording, as above. Default: as written. It says what happened, who hears, and when, in the note the organizer already reads.
  • Reminders off: the note stays as it is. Default: unchanged. "Reminders are off, so we won't email them if you change it." is still true after a move.
  • Compare with the page as it loaded, not with the server's record. Default: the page as it loaded. The editor can tell without a new request. The cost: after a reload within the 10 minutes, the note says "If you change…" again, though the email still goes. Reading recent moves from the activity log would close that gap, at the price of a new query on the Build page.
  • No question before a move saves. Default: none. Edits save as you type; the note tells, it doesn't ask.

Done when

  • With reminders on, changing a held slot's date shows the new note once the save succeeds, with the count and "about 10 minutes".
  • Changing the date back shows the first note again.
  • Changing a date field that isn't the reminder field leaves the first note.
  • With reminders off, the note doesn't change.
  • Unit tests cover all four.
  • pnpm lint && pnpm typecheck && pnpm knip && pnpm test pass.

Found by the UX walkthrough (scenario O4) on 2026-10-24, and checked against the code on main at 4ed27a9.


Generated by Claude Code

Lenguaje dominante
TypeScript
Estrellas
19
Forks
4
Merge medio
20 h 9 min
PR fusionados (30 d)
156

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de richshaw/OpenSignup

Todos los issues de richshaw/OpenSignup

Issues similares

Más issues de TypeScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.