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

Timer: guard Resume by lifecycle state and use Restart after completion

Aperta
#174 4 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
48/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
macos, swift
Ambito
desktop

Direzione di ricerca

Start with the timer state and controls in Sources/StageKit/Views.swift, AppCoordinator.swift, Core.swift, QuickControls.swift, and StageKitController.swift; compare the existing compact-control and menu guards. Add idle and finished transitions to the timer-owner checks, then repeat both native reproductions with sound safely controlled. Done means all entry points agree on transport state, Restart follows the normal visible start path, and the installed build and restoration are recorded.

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

Descrizione

Outcome and priority

P2 functional defect. Timer controls should describe and perform the next valid action consistently on the page and floating window.

Native reproduction

Preview 2.3.0, build 20260928054038, clean source 00be555139f87d4557f48fcffc132b8621c251a2; macOS 26.5.1 (25F80), built-in display. Verified through Copy build details in the running app and bundle metadata.

Idle/reset: Open Annotate → Break timer with 5 minutes, stopped and hidden. Resume is enabled beside Start break. Click Resume: it becomes Pause and the preview counts down (04:53 observed), while the page still says Off and no timer window opens.

Finished: Set 0.1 minutes and turn the chime off for a synthetic test. Start break correctly opens a timer. At 00:00, its floating control says Restart. Return to the page: it says Resume. Click it: the timer stays at 00:00 and the UI does not change.

Normal Start opening the window is a useful passing comparison. The test restored 5 minutes, chime on and stopped/hidden state.

Source owner

The main page enables the secondary action based only on timerRunning. pauseResumeTimer marks a session started without the normal show/admission path. Countdown.resume refuses zero remaining time. Existing compact control guard and menu guard show the intended distinction.

Chosen behaviour

Use one transport state across entry points: Start for idle/reset, Pause for running, Resume for paused, Restart for finished. Guard Resume in the coordinator as well as views. Start/Restart uses normal admission, activity tracking and visible-window presentation. Hide/reopen preserves a running or paused session; it does not reset it. A duration edit during pause configures the next Start/Reset, preserving remaining time until then.

Acceptance

  • Idle/reset cannot Resume a hidden new countdown or start a periodic update timer.
  • Finished offers a working Restart; no enabled Resume no-op.
  • Paused Resume preserves remaining time. Restart uses configured duration and opens the visible timer through the normal start path.
  • Page, quick panel and floating transport controls resolve the same state. The existing Timer shortcut keeps its visibility-toggle meaning; it must not become Pause/Resume.
  • Hide/reopen preserves position and time; independent Draw/Persona/Present jobs remain intact.
  • Add idle and finished transitions to the timer-owner checks, then repeat both native reproductions with sound safely controlled.
  • Record signed installed build and restoration.

Coordination

Second-pass request under #164/#134. #21 owns physical-display placement and receiver checks; this request fixes transport lifecycle without duplicating that work.

Lingua principale
Swift
Stelle
0
Fork
1
Merge medio
12h 29m
PR unite (30g)
201

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 Ship-Work/workbench

Tutte le issue di Ship-Work/workbench

Issue simili

Altre issue su Swift

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.