docs(troubleshooting): put the condition first in the GPS lock note - #653
Merged
Merged
Conversation
Readers on Cloudy Nights took the old note two different wrong ways. One read it as "GPS is only for the solar system", another called the wording confusing. The sentence opened with "a GPS lock is not needed" and hung the whole condition on a trailing "once your location and time are set", so the reader kept the first half and dropped the second. Lead with what actually needs a location and a time, then separate the two cases: a hand entry serves as well as a lock, and with neither you lose Push-To as well as the Planets and Comets catalogs. Verified against the code. altaz_ready() is location.lock and datetime() (state.py), and manual entry sets lock=True via Location.make_fix(..., "MANUAL") (ui/callbacks.py), so a hand entry is equivalent to a lock. aim_degrees() returns (None, None) without both, on Alt/Az and EQ mounts alike (calc_utils.py), and object_details.py draws "Searching for GPS" in its place. Planets and Comets are the only runtime-computed catalogs. The issue's claim that alignment stops without a location is wrong: align_on_radec() is purely RA/Dec to camera pixel, and the Focus screen has no location or time dependency at all, so both are described as working either way. Closes #646 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Both catalog entries said the catalog fills in "once the PiFinder has a GPS lock", which is imprecise in exactly the way #646 was about: the catalogs need a location and a time, not the receiver that usually supplies them. Entering Place & Time by hand fills them just as well, because Location.make_fix(..., "MANUAL") sets lock=True and is indistinguishable from a GPS fix downstream. Same correction as the rewritten note in "The GPS never locks", applied where a reader browsing the catalog list meets the claim first. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Owner
Author
|
Follow-up commit Both the CM and PL entries said the catalog fills in "once the PiFinder has a GPS lock" — imprecise in exactly the way this PR is about, since a hand-entered Place & Time fills them just as well ( Build stays clean at zero warnings; both new |
This was referenced Sep 23, 2026
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.
Why
The note closing "The GPS never locks" was read two different wrong ways on Cloudy Nights (thread 914101, 2026-09-10). One reader took it as "GPS is only for the solar system", another called the wording confusing twice.
The sentence opened with "a GPS lock is not needed" and hung the whole condition on a trailing "once your location and time are set". A reader in a hurry keeps the first half and drops the second, which is exactly the misreading that happened.
What changed
One note in
docs/source/troubleshooting.rst. The condition now comes first, and the two cases are separate.Before
After
Naming Push-To in the first sentence, alongside the catalogs, is what closes off the "GPS is only for the solar system" reading. The reader is also told what they actually see on screen when nothing is set, which is the job of a troubleshooting page.
The paragraph above it already points at
:ref:user_guide:place & time``, so the note no longer repeats that imperative. It states the consequence instead.Facts checked against the code
The issue's framing was mostly right, with one correction.
SharedStateObj.altaz_ready()islocation.lock and datetime()(python/PiFinder/state.py:332). That single flag gates everything location-dependent.Location.make_fix(lat, lon, alt, "MANUAL"), which setslock: True(python/PiFinder/ui/callbacks.py:337,python/PiFinder/state.py:225). A hand entry is therefore equivalent to a lock, not a lesser substitute.aim_degrees()returns(None, None)unlesslocation.lock and dt(python/PiFinder/calc_utils.py:195). This holds for EQ mounts too, even though the maths would not require it. Push-To genuinely does not work without a location and a time.object_details.py:445draws "Searching" / "for GPS…" in place of the pointing instructions whenaltaz_ready()is false. That is the message quoted in the note.PlanetCatalogandCometCatalogare the only catalogs whose positions are computed at runtime (python/PiFinder/catalogs.py:994), and both gate onaltaz_ready().Correction to the issue. Issue #646 lists alignment among the things that stop working with neither a lock nor a manual entry. The code says otherwise.
align_on_radec()asks the solver for the camera pixel matching an RA/Dec and stores it astarget_pixel(python/PiFinder/ui/align.py:27). No location, no time.align_daytime.pyhas no location reference either. Location is used on the Align screen only to rotate the star chart, and that already degrades gracefully to north-celestial-pole-up, asuser_guide.rstdocuments. The Focus screen (python/PiFinder/ui/preview.py) has no location or time dependency at all, andsolver.pyreferences neither.So the note says Focus and Align work either way, rather than repeating the issue's claim.
Out of scope, worth a follow-up
Three things turned up while checking the facts. None of them belongs in this diff.
1.
catalogs.rstis imprecise the same way the old note was.docs/source/catalogs.rstsays of both Comets and Planets: "The catalog fills in once the PiFinder has a GPS lock." By the samealtaz_ready()logic that is imprecise, since a hand-entered location fills them just as well. Left alone to keep this diff to the one note.2. EQ push-to is over-gated (code, not docs).
aim_degrees()guards its EQ branch onlocation.lock and dt, but that branch is pure RA/Dec subtraction of two solve-frame values (calc_utils.py:212-234). It needs neither a location nor a time.ui/object_details.py:446gates the whole screen the same way. An EQ user with a good solve and no GPS sees "Searching for GPS" where the answer is computable. The note documents the shipped behaviour, which is correct for the manual, but this is worth its own issue.3. Two guards test the wrong thing (code, not docs).
integrator.py:493andcalc_utils.py:243guard onlocation is None/if location, butshared_state.location()never returnsNone— it returns an unlockedLocation()at lat 0, lon 0 (state.py:295). Any path that sets a datetime without a lock (the webtime_lockatserver.py:1458, telemetry replay, the console debug key) makes these compute alt/az at Null Island. Thealtaz_ready()gates further up currently mask it, so there is no user-visible symptom today, but the guards are wrong as written.Also not in the note, deliberately. Polar Align, observation logging, Save Location and the zenith-up chart orientation all depend on
altaz_ready()too. The note stays scoped to what issue #646 asked about, and it does not claim to be an exhaustive list. "The Focus and Align screens" is accurate as written: Polar Align is a separate menu item (ui/menu_structure.py:1254) from Align (:55).Verification
Prints nothing, so the manual still builds with zero warnings.
No hits. The added text carries no em-dashes or semicolons, uses the approved terms, and matches the file's two-spaces-after-a-full-stop convention.
Closes #646
🤖 Generated with Claude Code