Skip to content

Refactor PeerList and SeriesProgress components; add modal for peer list and enhance series metadata display#13

Merged
GilbN merged 3 commits intomainfrom
feat/enhance-ux
Apr 15, 2026
Merged

Refactor PeerList and SeriesProgress components; add modal for peer list and enhance series metadata display#13
GilbN merged 3 commits intomainfrom
feat/enhance-ux

Conversation

@GilbN
Copy link
Copy Markdown
Owner

@GilbN GilbN commented Apr 14, 2026

  • Updated PeerList to use a modal for displaying connected peers, with an escape key listener for closing.
  • Enhanced SeriesProgress to show detailed exercise metadata and "up next" information.
  • Updated translations for improved clarity and consistency.
  • Adjusted loading time constants and renamed trial stages for better understanding.
  • Refactored TimerScheduler to manage series transitions more effectively, including new methods for restarting and advancing series.
  • Improved global styles for better mobile responsiveness and visual consistency.
  • Updated TimerView to incorporate new controls for series management and improved layout for better usability.

…ist and enhance series metadata display

- Updated PeerList to use a modal for displaying connected peers, with an escape key listener for closing.
- Enhanced SeriesProgress to show detailed exercise metadata and "up next" information.
- Updated translations for improved clarity and consistency.
- Adjusted loading time constants and renamed trial stages for better understanding.
- Refactored TimerScheduler to manage series transitions more effectively, including new methods for restarting and advancing series.
- Improved global styles for better mobile responsiveness and visual consistency.
- Updated TimerView to incorporate new controls for series management and improved layout for better usability.
Copilot AI review requested due to automatic review settings April 14, 2026 22:04
@vercel
Copy link
Copy Markdown

vercel bot commented Apr 14, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
nsf-timer Ready Ready Preview, Comment Apr 15, 2026 4:49pm

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR refactors the timer screen UI/UX and improves series navigation by adding explicit “restart series” / “next series” controls driven by richer scheduler state, while also moving the peer list into a modal and expanding the series metadata display.

Changes:

  • Refactors TimerView layout into a split timer/controls pane (esp. for mobile landscape) and moves the peer list into a modal.
  • Enhances series/next-step UX via updated ControlBar + SeriesProgress, backed by new TimerScheduler series transition APIs and stoppedReason.
  • Updates programs + translations for clearer labels (“Sighting Series”, metadata labels, next-stage/exercise labels) and adjusts default loading time constants.

Reviewed changes

Copilot reviewed 8 out of 8 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
src/views/TimerView.svelte Adds split-pane layout, new series controls, and peer modal trigger/rendering.
src/styles/global.css Switches #app to fixed full-viewport layout for iOS PWA height reliability.
src/lib/timer/TimerScheduler.js Adds stoppedReason, introduces nextSeries()/restartSeries(), and refactors series execution.
src/lib/programs/registry.js Adjusts default loading time and renames trial stages to “Sighting Series”; adds missing target hidden time in one trial stage.
src/lib/i18n.js Adds new translation keys for series controls and metadata labels.
src/components/SeriesProgress.svelte Displays exercise metadata line and “Up next” preview derived from stoppedReason.
src/components/PeerList.svelte Converts peer list into a modal with Escape/backdrop close behavior.
src/components/ControlBar.svelte Redesigns control logic/UI to support restart/next-series and contextual next exercise/stage.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/components/PeerList.svelte Outdated
Comment thread src/components/PeerList.svelte Outdated
Comment thread src/lib/timer/TimerScheduler.js Outdated
Comment thread src/lib/timer/TimerScheduler.js
- TimerScheduler: preserve pre-reshoot stoppedReason across reshoot
  runs so nextSeries()/restartSeries() resume correctly instead of
  treating the reshoot as a manual abort (which skipped a series
  when reshooting between series or from idle).
- PeerList: drop panel onkeydown stopPropagation so Escape reaches
  the document listener when focus is inside the dialog.
- PeerList: add aria-labelledby linking the panel to the <h2> title
  for screen-reader dialog naming.
- registry: restore DEFAULT_LOADING_TIME to 60s and fix comment typo.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
After a solo session was disconnected, roomState.isSolo remained true
because clearRoomState() only clears localStorage, and solo mode has
no SocketHost whose destroy() would reset the store. Starting a hosted
room afterwards then used SocketHost._syncRoomState's spread update,
which preserved the stale isSolo flag — causing LobbyView/TimerView
to keep showing the solo badge instead of the room code.

- SocketHost._syncRoomState now explicitly sets isSolo/isSpectator to
  false so a host session can never inherit stale flags.
- Disconnect handlers in LobbyView, TimerView, and DisplayView now
  reset the roomState store alongside clearRoomState().

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@GilbN GilbN merged commit 7c24abb into main Apr 15, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants