show progress arc while waiting for first map and clean up atomic state#17
Open
JohnN193 wants to merge 6 commits intopr-b-configfrom
Open
show progress arc while waiting for first map and clean up atomic state#17JohnN193 wants to merge 6 commits intopr-b-configfrom
JohnN193 wants to merge 6 commits intopr-b-configfrom
Conversation
Closed
c2df93b to
71b5798
Compare
6a13444 to
de03d7f
Compare
71b5798 to
151372c
Compare
While a job is active but no map has been received yet, PointCloudMap returns a PCD point arc instead of the blank default. The arc grows from a small sliver to a full circle over 5 minutes, giving the user visual feedback that the session is running. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- merge activeJob + jobStartTime into activeJobState struct; nil pointer replaces empty-string sentinel, and startedAt replaces the separate jobStartTime atomic so both fields are updated atomically - wrap updatingMapName/updatingMapVersion into updatingMapInfo struct; nil replaces the != "" guard and fixes a latent bug where version could be set with an empty name - clear activeJob in StopJob (stops polling) while keeping lastPointCloudURL so the final map stays visible after a session ends - store logger on AppClient at construction; drop logger param from CheckSensorsDataCapture Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
part_id is now required (from config or env var), matching the existing machine_id behavior. removes the dead partID != "" guard in initialize. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
151372c to
6d5fc3d
Compare
JohnN193
commented
Mar 20, 2026
| // generateProgressRingPCD generates a point cloud of a progress arc indicating elapsed time. | ||
| // The arc grows clockwise from 0 to a full circle over progressRingDuration, giving the user | ||
| // visual feedback while waiting for the first cloudslam map to appear. | ||
| func generateProgressRingPCD(elapsed time.Duration) ([]byte, error) { |
Collaborator
Author
There was a problem hiding this comment.
when running cloudslam there is always a period of waiting for the job to start, because we have to spin up a job and setup the machine.
now we display something that moves, and in the next pr we expand on that further
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.
Two related changes: a user-visible feature and the internal state refactor it motivated.
Progress arc
While a job is running but no map has arrived yet,
PointCloudMapreturns a point cloud arc instead of the blank default. The arc grows from a small sliver to a full circle over 5 minutes, giving visual feedback that the session is active. (Text label added in the next PR.)Atomic state cleanup
activeJob(job ID string) +jobStartTimeinto a singleactiveJobStateatomic struct — both fields are now updated in one atomic swap, eliminating the window where one is set and the other isn't. Nil pointer replaces the empty-string sentinel.updatingMapName/updatingMapVersioninto anupdatingMapInfostruct; nil replaces the!= ""guard and fixes a latent bug where version could be set alongside an empty name.activeJobinStopJobto stop the polling loop, while preservinglastPointCloudURLso the final map stays visible after the session ends.machine_part_idis now required at startup (matchingmachine_idbehavior) — safe now that it's auto-populated from the env var.AppClientat construction; removes the logger parameter fromCheckSensorsDataCapture.Fix
page=slamto theStopJobreturn URL (without it the app backend redirects to/fleet/location/...).Part of a series: [PR A] → [PR B] → PR C → [PR D]