Conversation
Owner
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.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Contributor
There was a problem hiding this comment.
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
TimerViewlayout 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 newTimerSchedulerseries transition APIs andstoppedReason. - 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.
- 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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.