Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

An open signup past its closing time still says open to its organizer, with no way to reopen it

Aperta
#611 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
53/100
Tipo di issue
Funzionalità
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
next.js, typescript

Direzione di ricerca

Read src/lib/signup-closing.ts, src/services/signups.ts, and src/app/app/(chrome)/signups/[id]/layout.tsx, then trace how the signup header, list, and API expose status and reopening. Update the help article at src/help/articles/close-or-reopen-a-signup.tsx and inspect the related unit and DB tests. Done means expired open signups appear closed to organizers, can be reopened with their closing time cleared, future closing times remain refused, and the stated checks pass.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

bug pipeline:proposed pipeline:ux

Needs your OK: this changes what an organizer sees once a signup's closing time has passed. Swap pipeline:proposed for pipeline:ready to have it built.

What happens

A signup's closing time (closesAt) can be set only by an AI assistant (create_signup, update_signup) or the REST API. The web app has no control for it. Once it passes:

  • People are turned away. signupShutReason in src/lib/signup-closing.ts refuses every sign-up, and /s/[slug] shows Closed at the top and on every slot (shownSignupStatus, since #397).
  • The organizer is told it's open. The stored status stays open, and the organizer's pages read the stored status. The header's pill says open, Share and the ⋯ are still there, the spots line has no "Closed ·", and the signup list shows it as open. There's no grey Signup closed box, so no Reopen signup either (src/app/app/(chrome)/signups/[id]/layout.tsx).
  • Reopening is refused. reopenSignup (transitionStatus in src/services/signups.ts) only moves closed to open, so an open signup gets conflict ("cannot reopen a signup that is open").

The only way out is to close it with Close signup and then reopen it, which removes a closing time that has passed. Nothing on screen says so. The organizer sees an open signup that nobody can sign up for.

Fix, in outline

  • In the signup layout and header, show the status people see: shownSignupStatus rather than the stored status. That gives the closed pill, "Closed · …" beside the link, and the grey box with Reopen signup, on every tab, on a phone and a computer.
  • Let reopenSignup take an open signup whose closing time has passed. It removes the time and records clearedClosesAt on the signup.reopened row, as it does for a closed one.
  • Show the same status in the signup list on Your signups.

Choices this makes

  • Show it as closed rather than change the stored status. Reminders and the status changes expect a signup that passes its closing time to stay open (see the comment on signupShutReason). Changing the row would need a job and would touch both.
  • The same grey box and wording as a signup closed with Close signup, since people get the same result.
  • Close signup isn't offered while it shows as closed, as for any closed signup.

Watch for

  • The help page "Close or reopen a signup" (src/help/articles/close-or-reopen-a-signup.tsx, from #610) says reopening removes a closing time that has passed. Once this lands, that applies here too. Update the paragraph, its UI list and its walkthrough, and run pnpm help:screenshots if a picture changes.
  • GET /api/signups/[id] lists reopen in _links. Decide whether it now appears for an open signup past its closing time. Keep the reopen_signup tool description true either way.
  • HeaderAnnouncer and the Reopen button's refusals expect a stored status of closed. Check that a reopen from this state still says "Reopened. People can sign up again."
  • CHANGELOG line.

Order

After #608, because this changes the closed banner and Reopen signup that #608 adds, and after #610, whose help page needs updating here.

Done when

  • An open signup whose closing time has passed shows closed and the grey Signup closed box with Reopen signup on Build, Responses and Settings, on a phone and a computer.
  • Reopen signup there removes the closing time, and people can sign up again at the same link.
  • A unit test pins the status the header shows, and a DB test pins the reopen of an open signup past its closing time, plus one still to come, which stays refused.
  • The help page and its walkthrough are updated.
  • pnpm lint && pnpm typecheck && pnpm knip && pnpm test and pnpm test:db pass.

From the review of #610, which noted it as out of scope; #20's plan comment lists it as later work. Checked against claude/sharp-carson-ryvv43-5-help at 9f68b2f: shownSignupStatus drives /s/[slug], the signup layout and header read sig.status, and transitionStatus refuses a reopen unless the status is closed. https://claude.ai/code/session_01LrYa57fvbqWjZj89iH975K

Lingua principale
TypeScript
Stelle
19
Fork
4
Merge medio
23h 28m
PR unite (30g)
173

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di richshaw/OpenSignup

Tutte le issue di richshaw/OpenSignup

Issue simili

Altre issue su TypeScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.