fix: align detection overlays and prepare field.5 - #34
Conversation
|
/gemini review |
|
Thank you! Fix looks sound. One suggestion from the bots to prevent stuck navigation where image loading fails. One item should be fixed before merge. Gating the overlay on a valid frame means a photo that fails to decode now renders no boxes at all. Base rendered them unconditionally, misplaced but tappable. This screen's boxes are the only in-screen route into Match Review, so a decode failure leaves a blank photo area, no error text, and no way forward, while the header still reports unreviewed detections and Save All stays enabled. The suite encodes this as intended behavior, so it was a deliberate choice, but it needs a fallback state. The missing trailing newline in the new component is worth the same commit, since no lint job catches it. |
|
@JasonWildMe Addressed your failed-image navigation blocker in
Also resolved the two iOS CI failures encountered during validation: native-test The combined field.6 candidate includes this fix and #35. Upright/rotated/mirrored |
|
/gemini review |
Summary
Fix detection boxes being scaled to the whole image container instead of the
photo's aspect-fit rectangle. Blank margins could stretch or displace the
overlay even when the saved detector crop was correct.
and render the existing normalized boxes within it.
changes. Stale load/error callbacks cannot change a replacement photo.
loading, missing, or failed. A decode failure shows a safe error and retry;
the existing note-saving review path is preserved.
0.1.0-field.5/1787551546fromf42c618.a2e47f7), including Jason's token alias and shortpack path fixes. No detector thresholds, weights, crop math, backend,
pack format, or dependencies changed in this PR.
Review Follow-up (2026-09-10)
Jason's failed-image navigation request is addressed in
e291fb8, includingthe trailing newline. Six new red/green regressions cover missing/loading/failed
photos, per-detection review access, retry and late callbacks, and failed note
persistence. All 38 screen tests and 1,031 Jest tests pass.
Two independent iOS CI failures were addressed: debug native XCTest hosts no
longer start React Native without Metro, and the download tests now insert
fixtures under the existing barrier queue rather than racing background state
restoration. Production download behavior is unchanged.
CI run 34487558000
passed all four jobs on current head
65cbaaa, including the native iOS tests.The archived field.5 APK and screenshots below remain evidence of the original
geometry fix only; they do not contain these follow-up commits.
An explicitly approved field.6 integration candidate (
41c2dca) combines thisPR's runtime changes with #35. On Pixel9a Android16, upright/rotated/mirrored
gallery fixtures produced aligned boxes, close crop pixels, and the same top
match. Four pre-upgrade records were preserved; three new TEST ONLY records
remain pending/unsynced. Offline cold start and catalog return passed, and all
temporary phone settings were restored. The photo-error fallback is covered
by component tests, not by removing a device photo. Neither PR is merged, and
the candidate is not distributed.
Type of Change
Screenshots / Screen Recordings
Android
Before/after screenshots from the same approved fixture were captured on the
signed release on a Pixel 9a. The two cropped, metadata-free attachments below
were approved for publication. Raw screenshots and user records stay local and
are not committed.
iOS
Physical iPhone and simulator UI validation not performed on this Windows host.
The shared React Native geometry/lifecycle regressions run in Jest.
Checklist
General
Testing
npm test)Original field.5 gates at
f42c618: all 67 Jest suites / 1,025 tests passed through the commit hook;18 Android unit tests, TypeScript, JS lint, Android lint, and signed release
build passed. The combined
npm testincludes iOS tooling unavailable here.Two existing JS lint warnings and existing Android baseline/deprecation warnings
remain. No full iOS pass is claimed from these local gates.
13 new geometry/lifecycle tests failed before the change, then passed:
landscape/portrait/square/matching-aspect frames, resize, invalid dimensions,
loading/error states, missing photos, and source changes with stale callbacks.
Jason's token-alias and pack-path regression suites also passed.
Physical evidence on the exact signed field.5 APK:
1.1px in portrait, landscape, and light appearance. Keyboard interaction kept
alignment but did not resize the frame; actual resize was checked by rotation.
survived; a second pending test record was added for the after comparison.
cold startup succeeded without Metro or detected fatal/JS startup errors.
approvals, or deletion. Connectivity/location/rotation/appearance restored.
React Native Specific
project.pbxproj) (not applicable: none added)useThemedStylespatternFlatList/FlashList(unchanged)Performance & Models
Security
Related Issues
Follow-up to Jason's YOLO11 box screenshot and merged #33.
Additional Notes
6be6a02258fca9065cfe52392e1dccd2bf89200f03ca1157d58685c12ab8f16e.checked against the overlay and both merged Jason fixes. No model, observation,
credential, or signing material bundled.
does not establish older Keystore/ARM-translation compatibility. No fresh
sign-in or new pack download was attempted in this device run; existing packs
retain their previous absolute paths. Jason's alias change requires a fresh
sign-in for previously signed-in Android12+/iOS users.
separate. The current npm install reports 31 existing dependency findings
(2 low, 19 moderate, 9 high, 1 critical); no dependency changes/remediation here.