Skip to content

Fixed up various issues noticed in field testing + base string improvements - #1044

Merged
davecraig merged 7 commits into
Scottish-Tech-Army:mainfrom
davecraig:main
Aug 27, 2026
Merged

Fixed up various issues noticed in field testing + base string improvements#1044
davecraig merged 7 commits into
Scottish-Tech-Army:mainfrom
davecraig:main

Conversation

@davecraig

Copy link
Copy Markdown
Contributor

No description provided.

davecraig and others added 6 commits August 27, 2026 14:27
Migrates SA project issues from Jira Cloud into GitHub Issues via ACLI
and gh: full fidelity (description, comments, labels, status,
attachment filenames), detects Jira issues that just reference an
existing GitHub issue and appends comments there instead of creating a
duplicate, and supports --exclude for issues containing information
not fit for a public repo.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
OfflineGeocoder used properties["pavement"] as the callout's road name,
falling back to the way's own name only when pavement was null. But an
unnamed sidewalk/path with no adjacent named road caches pavement as the
empty-string sentinel "" (WayNaming.addSidewalk), not null, so `?:` never
kicked in and callouts like StreetDescriptionBetween got a blank first
argument. Treat a null-or-empty pavement value as absent and fall back to
Way.getName(), which resolves a generic label (e.g. "Path") for unnamed
ways, matching the convention already used elsewhere (ManualCallouts).

Also refactor the offlineReverseGeocode test into one @test per case, each
building its own geocoder/grid via a shared helper, and add a mapMatch
option to the helper so a test can reproduce being GPS map-matched onto an
unnamed way - the only way OfflineGeocoder's buggy branch is reachable,
since its own unmatched fallback search only ever considers named roads.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
StreetDescription.createDescription() bucketed houses by a house.side
Boolean using the opposite mapping from what getStreetNumber() assumed
when looking up Side.LEFT/Side.RIGHT, so a query point's computed side
was matched against the other side's house numbers. This inversion was
previously masked by a second, unrelated inversion in getStreetNumber()
that got fixed in be20ab3 - fixing one exposed the other.

Retype MvtFeature.side from Boolean? to Side? and drop the sideToBool()
detour so the compiler enforces the LEFT/RIGHT bucketing instead of a
positional Boolean array that has to be got right by convention.

Adds regression tests against real Kersland Drive data and a GPX
fixture reproducing the side-switching case.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
locationRecorder.storeLocation() was only called inside the same gate
that decides whether to speak an auto-callout ((!isAudioEngineBusy() ||
streetPreview.running) && !autoCalloutDisabled && !menuActive). Since
"My Location" itself speaks a callout, every GPS update arriving while
that callout was playing got silently dropped from the recorded track -
repeatedly pressing "My Location" while walking a street noticeably
thinned out the recorded GPX points.

Recording is a data-capture concern, not an audio one, so move it out
from behind the callout gate - it now only depends on recordTravel.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
StreetDescription.createDescription() walks a street's whole way graph
plus every nearby house-number/POI tree, which isn't cheap. It was
rebuilt from scratch on every getAddressFromLngLat() call, so pressing
"My Location" repeatedly while stationary or map-matched to the same
street recomputed identical work each time.

Add GridState.generation, bumped whenever featureTrees/
gridStreetNumberTreeMap are rebuilt (or torn down), and have
OfflineGeocoder cache the last StreetDescription it built, reusing it
when the street name, grid generation, and the specific Way passed in
(verified against the cached description's own way graph, so two
disconnected same-named streets in one grid can't be confused) all
still match.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@davecraig
davecraig merged commit 3560f50 into Scottish-Tech-Army:main Aug 27, 2026
4 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.

1 participant