After a slot with sign-ups moves, its editor still says "If you change its date or time"
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
- Área
- accessibility, frontend, testing
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
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.
updateSlotinsrc/services/slots.tswrites aslot.rescheduledactivity 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 (
notifiableRulesinsrc/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_atcomes from the reminder date field and the time field paired with it (findReminderFieldsinsrc/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.
takencomes fromcommittedBySlotwhen 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 testpass.
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
- Incluye un Dockerfile o un archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de richshaw/OpenSignup
-
enhancement pipeline:proposed pipeline:ux
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
richshaw/OpenSignup#654 ·
Los mantenedores suelen responder en 1 día
-
The help pages never say "pause", so organizers looking for it miss Close or reopen a signupAbiertoenhancement pipeline:proposed pipeline:ux
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
richshaw/OpenSignup#653 ·
Los mantenedores suelen responder en 1 día
-
enhancement pipeline:proposed pipeline:ux
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
richshaw/OpenSignup#652 ·
Los mantenedores suelen responder en 1 día
-
enhancement good first issue pipeline:ready
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
richshaw/OpenSignup#645 ·
Los mantenedores suelen responder en 1 día
-
bug good first issue pipeline:ready pipeline:ux
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
richshaw/OpenSignup#644 ·
Los mantenedores suelen responder en 1 día
Todos los issues de richshaw/OpenSignup
Issues similares
-
Manager flashes an empty "errorOccurred" dialog while redirecting a logged-out user to loginAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
openremote/openremote#3487 · 1 comentario ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
coollabsio/jean#867 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
ehmpathy/rhachet-roles-bhuild#616 ·
Los mantenedores suelen responder en 1 día
-
📘 Docs supabase/cli
Dificultad 2/5 1-3 horas Aptitud para principiantes 83/100
Los mantenedores suelen responder en 1 día
-
bug(cli): theme file home-directory check uses startsWith (sibling dirs pass, Windows casing fails)Abiertoarea/core kind/bug priority/p2 status/bot-triaged
Dificultad 2/5 1-3 horas Aptitud para principiantes 79/100
google-gemini/gemini-cli#29955 · 2 comentarios ·
Los mantenedores suelen responder en 1 día