feat(desktop): full frame + plate crop together in Plates, customizable (Fixes #155) - #156
Merged
Conversation
…mizable (Fixes #155) Plate previews showed either the full camera frame or the plate crop; now they can show both, laid out per view, with the choice persisted client-side. - New client prefs (PlatesPrefs): image display (both / full-only / crop-only, default both) and crop corner (default bottom-right). - _PlateThumb reworked: renders the full frame, the crop, or both — pinning the crop as a bordered corner inset in the compact/gallery thumbs, and laying the two out side-by-side in the list rows (which have the horizontal room). Every mode falls back to the full frame when a read has no bbox / the crop fails. - Threaded through all four views (list, gallery, grouped, timeline) and the detail popup (which hides the crop block in full-frame-only mode). - New "Display" toolbar popover to pick the mode and crop corner. Signed-off-by: badbread <badbread@users.noreply.github.com>
…crop + frame step Refinements from testing the #155 feature: - Use the horizontal room: much larger thumbs in list / grouped / timeline, with the full frame + crop laid out side-by-side there (not a tiny inset). - New crop-size preference (Small / Medium / Large) in the Display popover — scales the pinned inset in gallery cards, the crop column in the list, and the crop height in the detail popup. - Detail popup: the prominent plate crop now fetches its own snapshot when a tile hasn't cached one (it was cache-only, so it silently blanked when the popup was opened cold), is centered above the clip, and honors crop size. - Plate clip player: add back/forward one-frame step buttons to our transport. Signed-off-by: badbread <badbread@users.noreply.github.com>
… clip player no longer auto-restarts on pause Two fixes from testing: - Side-by-side (list/grouped/timeline) rendered the full frame in the wide fixed box via BoxFit.cover, so a read with no crop showed a stretched-looking wide horizontal slice. Now the full frame renders at its natural 16:9 aspect with a fixed-width crop slot beside it (a subtle placeholder when there's no crop), sized to content so rows still align. - The plate clip player's cold-load watchdog was armed AFTER play(), so the initial playing=true fired before it existed and never cancelled it. It then fired ~seconds later, saw a user pause as a "stall", and re-opened the clip from the start (also clobbering frame-step seeks). Latch `_everPlayed` so the watchdog only ever retries a stalled INITIAL load, never after playback began. Signed-off-by: badbread <badbread@users.noreply.github.com>
…ting - Clip player: force exact seeks (mpv hr-seek=yes). Without it a small backward seek snapped to the same keyframe (frame-back did nothing) while forward crossed into the next frame — so the one-frame buttons only worked forward. - Plates watchlist: the per-read star now opens a Watch/Ignore chooser (kind + optional label + notify) instead of silently adding as a watch, and each watchlist entry has an Edit action (reuses the chooser, upserts by plate). Backend already supported kind/label/notify + upsert; this was client-only. Signed-off-by: badbread <badbread@users.noreply.github.com>
…live misread hint The Watch/Ignore chooser (per-read add and entry edit) now embeds the global match-fuzziness slider with the same live 'accepted misreads' preview the panel shows — using the plate being added/edited as the example — so you can tune tolerance in context. Admin-only; hidden when the LPR config isn't loaded. Signed-off-by: badbread <badbread@users.noreply.github.com>
badbread
force-pushed
the
feat/155-plate-image-display
branch
from
July 14, 2026 22:30
311432b to
183bc16
Compare
This was referenced Jul 14, 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.
Follow-on to #149. Plate previews now show both the full camera frame and the plate crop, laid out per view, with the choice persisted client-side.
Layouts
Customization — new "Display" toolbar popover (persisted via
PlatesPrefs, shared_preferences):Everything falls back to the full frame when a read has no bbox or the crop fails.
Verification
flutter analyze— no new issues (one pre-existing unrelated import info).flutter build windows --release— clean.Fixes #155