Commit Graph
23 Commits
Author SHA1 Message Date
n0tst3v3andClaude Opus 5 5d98f474ae fix(live): stop the item pin from tracking the bearing arrow
The pin sat dead ahead of the heading arrow no matter which way the
user turned, so the arrow looked like it was aiming at the item and
the item looked like it was always straight down the path of travel.

The cause is geometric, not a UI link. addSample() only accepts a
sample after 5 m of movement, so every sample lies on the line the
user walked. gradientBearing() correlates RSSI against centred
position, and on a collinear track each centred position is t*u for
a single unit vector u along the walk - so the sum is exactly
parallel to u regardless of the signal. The "estimated" bearing was
the direction of travel, echoed back.

That bearing then placed the pin in three separate paths:
preliminaryEstimate() projects along it, solve() overrides a
converged trilateration with it, and consensusEstimate() averages
the result. All three produced a pin straight ahead.

Refuse the bearing until the track has real width across its own
axis - the smaller eigenvalue of the position covariance, against
max(4 m, meanAccuracy/2). A straight walk with GPS jitter measures
about 1 m of spread and is rejected; an L of two 20 m legs measures
about 5 m and is accepted. Distances still place the item off-axis
on a straight walk, but which side is a real mirror ambiguity, so
the UI now says so and asks for a leg at 90 degrees instead of
inventing a side.

Also drops showFallbackPin(), which projected the pin along the raw
compass heading whenever no estimate was solved - a fourth route to
the same wrong place. With no estimate the pin now shows the item's
last known GPS fix, or nothing at all.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-19 09:10:26 -06:00
n0tst3v3andClaude Opus 5 15baafc9be refactor(map): split the map screen into four focused classes
MapActivity had grown to 4,800 lines and was editing itself into
corruption - the field block had picked up seventeen duplicate
declarations of showNormalizationChanges, and that name was being
used for both the CheckBox widget and the boolean state it toggles,
which is what the compiler was actually failing on.

Fix the collision the way the class already handles the same pattern
elsewhere (showNormalized/normalizedMode): the widget is showChanges,
the state stays showNormalizationChanges.

Then move the bulk out of the activity:

  HistoryNormalizer  the GPS cleanup engine, its caches, thresholds
                     and the LocationPoint reflection helpers
  MapExporter        CSV export, including the 695-line writer and
                     the file-picker round trip
  MapHtmlBuilder     the Leaflet page, markers, trails and popups
  MapFormat          date/reason/colour/HTML/JS/CSV escaping shared
                     by all three

The activity keeps the UI - onCreate, the filter panel, pickers and
sensors - and feeds the builders through a Filters snapshot, an
Options struct and a two-method DataSource interface, so none of the
extracted classes reach back into its widgets.

Behaviour is unchanged. Also drops pendingExportMode, which was
written in two places and never read.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-19 04:56:19 -06:00
n0tst3v3 00703e013c fix(live): restore the moving navigation pin, aimed at the signal gradient 2026-08-19 04:01:30 -06:00
n0tst3v3 57861a19c6 fix: restore AIDE build config and layer live find map correctly 2026-08-19 03:50:02 -06:00
n0tst3v3 feb32c9cd1 fix(ui): support foldables and large screens instead of running in compat mode 2026-08-19 03:32:34 -06:00
n0tst3v3 340a32c301 fix(live): point the heading arrow at true north and keep the phone marker on top 2026-08-19 03:13:43 -06:00
n0tst3v3 f711e5ee36 build: modernize Gradle to AGP 8.5 with wrapper and namespace 2026-08-19 03:13:43 -06:00
n0tst3v3 48b40136cf fix: restore NavigationHelper.java clobbered by a pasted Python script 2026-08-19 02:26:16 -06:00
n0tst3v3 564877e1e7 fix(map): make filter panel compact and scrollable 2026-08-19 00:57:05 -06:00
n0tst3v3 8d3d571954 feat(alerts): keep alerting until left-behind items are acknowledged 2026-08-19 00:57:05 -06:00
n0tst3v3 a48cc91680 feat(list): sort tracked items by last seen with reverse toggle 2026-08-19 00:56:47 -06:00
n0tst3v3 a5f5d415e2 feat(map): add GPS point downsampling and UI density control 2026-08-19 00:56:47 -06:00
n0tst3v3 a2c74dc52f chore(map): add missing package declaration to MapActivity 2026-08-19 00:56:38 -06:00
n0tst3v3 2ced76049b Revert "fix(map): make filter panel compact and scrollable"
This reverts commit dc63fffb67.
2026-08-19 00:54:47 -06:00
n0tst3v3 dc63fffb67 fix(map): make filter panel compact and scrollable 2026-08-19 00:50:25 -06:00
n0tst3v3 d5150ba126 Revert "feat(map): add GPS point downsampling and UI density control"
This reverts commit c15dd28f3b.
2026-08-19 00:49:20 -06:00
n0tst3v3 b8401b3613 Revert "feat(ui): update item sorting, persistent notifications, and compact map sampling UI"
This reverts commit ca3aaaf163.
2026-08-19 00:49:20 -06:00
n0tst3v3 ca3aaaf163 feat(ui): update item sorting, persistent notifications, and compact map sampling UI 2026-08-19 00:18:43 -06:00
n0tst3v3 c15dd28f3b feat(map): add GPS point downsampling and UI density control 2026-08-18 23:57:46 -06:00
n0tst3v3 a3587d8720 Merge remote-tracking branch 'origin/main' 2026-08-18 22:08:13 -06:00
n0tst3v3 a5f3e8ae04 Commit deleted image files 2026-08-18 22:08:01 -06:00
MAragon ffac2efd22 Update Bluetooth logger files 2026-08-18 18:52:29 -06:00
MAragon eb16dbaeac Initial commit 2026-08-16 22:52:52 -06:00