You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Introduce configurable overlay templates for saved images and on-screen previews so users can choose different metadata card styles (classic_dark, minimal_strip, field_report).
Improve camera preview scaling and provide a template picker in-camera for faster template selection.
Enhance gallery and locations experiences with selection, sharing/deleting multiple photos, date grouping, improved viewer, and a map view for location entries.
Description
Add OverlayTemplateIds and new overlayTemplate setting to AppSettings and persist it via SettingsService (overlayTemplateKey).
Rework LocationStampCard to support multiple templates and compact previews, accept settings injection, and expose _StaticMap with configurable size and label rendering.
Update ImageOverlayService.composeGeoTaggedImage to accept overlayTemplate and render three templates by adding _drawMinimalStrip and _drawFieldReportCard (and adjust layout, fonts, colors for rendering).
Update camera UI in camera_screen.dart: replace CameraPreview with _CameraPreviewCover for correct aspect fitting, pass settings into LocationStampCard, and add a _TemplateChoiceTile sheet to select and save templates.
Upgrade gallery in gallery_screen.dart: add date grouping (uses intl), selection mode (_selectedIds) with multi-share and multi-delete, a paged AppPhotoViewer, tile components (_GalleryTile, _DateHeader), and an empty-state widget (_EmptyGallery).
Implement locations UI in locations_screen.dart: load and group photo locations into _LocationEntry, add search header, entries grouped by capture date, expandable cards with thumbnails, actions sheet (view, map, share, delete), and a _LocationsMap using flutter_map for map overview.
Miscellaneous tweaks: increase static map request size, refine loading placeholders, style and layout adjustments across templates, and a number of small refactors to frame builders and image caching in thumbnails.
Testing
Ran static analysis with flutter analyze which completed without issues.
Ran the automated test suite with flutter test and all tests passed.
final cardTop = height - cardHeight - (height *0.035).round();
Keep the watermark visible on field report exports
When users choose the new field_report template, this places the card from about 68.5% to 96.5% of the image height, but _drawWatermark is drawn earlier at about 70% of the height. Because _drawFieldReportCard is painted after the watermark, the field-report card covers the watermark on exported photos, unlike the classic/minimal templates.
When the app is in light theme (darkTheme=false), this modal still forces a dark background but these Text widgets inherit the light theme's dark/default text color, so the sheet title and template names render nearly unreadable on the black sheet. Give the sheet's text a light DefaultTextStyle or explicit white colors.
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
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
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.
Motivation
classic_dark,minimal_strip,field_report).Description
OverlayTemplateIdsand newoverlayTemplatesetting toAppSettingsand persist it viaSettingsService(overlayTemplateKey).LocationStampCardto support multiple templates and compact previews, acceptsettingsinjection, and expose_StaticMapwith configurable size and label rendering.ImageOverlayService.composeGeoTaggedImageto acceptoverlayTemplateand render three templates by adding_drawMinimalStripand_drawFieldReportCard(and adjust layout, fonts, colors for rendering).camera_screen.dart: replaceCameraPreviewwith_CameraPreviewCoverfor correct aspect fitting, passsettingsintoLocationStampCard, and add a_TemplateChoiceTilesheet to select and save templates.gallery_screen.dart: add date grouping (usesintl), selection mode (_selectedIds) with multi-share and multi-delete, a pagedAppPhotoViewer, tile components (_GalleryTile,_DateHeader), and an empty-state widget (_EmptyGallery).locations_screen.dart: load and group photo locations into_LocationEntry, add search header, entries grouped by capture date, expandable cards with thumbnails, actions sheet (view, map, share, delete), and a_LocationsMapusingflutter_mapfor map overview.Testing
flutter analyzewhich completed without issues.flutter testand all tests passed.Codex Task