Repository navigation
Feat/team sync - #13
Merged
Merged
Conversation
Sign-in goes through the website with PKCE; the token stays in the OS credential store and every API call is made in Rust, never by the webview. Changes are saved locally, queued in the session file and sent in order with an opId; the league's changes arrive as live events, and one PC can stream its timing to the others.
Welcome, browser sign-in, subscription request, league picker and the Team page, plus the sync state in the status bar, the league in the title bar and Settings → Account to download or delete your data.
# Conflicts: # apps/desktop/src-tauri/src/incidents/mod.rs
The API is served on the website's own origin, so a release build has one production address for both the sign-in pages and the API.
explorer.exe took the sign-in link for a folder and opened Documents, and Windows never saw the dev build's Linux registration of stewardpad://. Under WSL the app now opens links with rundll32.exe, registers the scheme for the Windows user too (started through wsl.exe --exec), and reads a link Windows handed over with a slash before its query.
Staff write it in Markdown in the back office; the app showed the source. It is now rendered from marked's tokens as React elements, like the website's preview: no HTML string is injected, and a link shows as its text so a click can't take the app's window elsewhere.
reviewedBy named whoever edited last; reviewers keeps everyone who claimed or edited the incident, in order. It is never typed, so it leaves the editable fields.
A steward claims an incident to say they're on it; editing it claims it too, and each steward removes only their own claim, so everyone who worked on a decision is listed. The inspector and the Review page get Claim and Unclaim, the incident lists show the stewards' initials, and the CSVs, the Discord post and the decisions document list every name. In a league, claims are claim/unclaim outbox operations, and an unsent claim stays on top of a teammate's newer copy. Older files' single reviewedBy reads as the first claim.
A release build refused to start a stream from the simulator, but a streamer could switch to it afterwards and the league then watched its invented grid. No frame leaves a release build unless the source is the game, and switching away ends the stream at once rather than leaving teammates on a frozen clock until the API drops it.
… game A teammate's stream replaces this PC's own data source, yet the status bar gave both the same green dot. The standings now say where their timing comes from (board 05), and the league's stream is blue in both places.
A change refused for good (a closed session) left the queue, and the next teammate edit of that incident overwrote it. It now stays on top of the league's copy until this PC changes those fields again. An answer the app couldn't read counted as offline and was sent again forever, and a change the API keeps answering 500 to held up every change behind it: the first now counts as sent, the second is kept on this PC after about 8 minutes. A child the league deleted leaves an unsent merge instead of getting the whole merge refused, and a field that no longer fits no longer loses the others with it.
Signing out dropped every change not yet sent, with no way back. The link now stays, as it does when a sign-in expires: signing in again sends the queue, and another account still starts afresh, told how many of the previous account's changes stay on this PC only.
Any 404 while loading made the app think it had left the league: a session deleted while this PC was offline unlinked it and wiped its queue. Only the league's own endpoints mean that now; a missing session just unlinks the session. A listener from before a league or session switch could still land its snapshot (deleting the new session's incidents here) or its revisions (skipping events): each listener now follows the league it started in, and a snapshot applies only to the session it was read for. A connection that ends at once backs off instead of reconnecting in a tight loop, and a broken read or a failed roster refresh is logged without the API's body.
The last streamed clock, standings and 'connected' stayed after a stream ended, which also let this PC start a stream without the game. They go now when the watched stream ends (live, or while away), and another stream ending leaves the watched one alone. Leaving the league or switching session while streaming ends the stream for the league at once, and a sign-out during frame uploads signs the app out instead of claiming the stream ended.
A PC that joined late didn't know which LMU contacts the league held, so its own feed could bring back one a head steward had deleted. Every league copy, deleted ones included, now marks its contact as seen.
An archive was a copy of the session file, so it kept the steward's user id, the league and every change not yet sent, for good. It is now written from the incidents alone.
Without a state, a stewardpad://signed-in link was taken as the answer to whatever sign-in this window had started. PKCE already made a stranger's code useless; the link must now name its own sign-in too.
Claims are shown by display name, and an unclaim removed every steward with that name until the league's copy came back.
The development link handler wrote the distro and build path into one registry command string; a quote in either could break out of it.
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.
No description provided.