Commit graph

166 commits

Author SHA1 Message Date
Vadim
efc8363fb9 stub logbook photos for tests 2025-07-19 17:48:37 +02:00
Vadim
10fc2146dc Merge branch 'main' of https://github.com/vodemn/m3_lightmeter into feature/ML-203 2025-07-18 19:30:14 +02:00
Vadim
5363d22fb5 typo 2025-07-18 19:21:49 +02:00
Vadim
d67b75cbca fixed unit tests 2025-07-18 01:16:19 +02:00
Vadim
91a1942191 wip 2025-07-16 21:24:37 +02:00
Vadim
a6d2892d5c made note field multiline 2025-07-11 22:54:30 +02:00
Vadim
65e3724ce8 made image preview full-width 2025-07-11 22:50:54 +02:00
Vadim
cfff85a7f3 made DialogPicker content scrollable 2025-07-11 22:49:16 +02:00
Vadim
02f60956e3 fixed updating photos 2025-07-11 22:36:03 +02:00
Vadim
812d3b281a added saveLogbookPhotos option 2025-07-11 11:37:59 +02:00
Vadim
416c3b7d9c added empty logbook state 2025-07-10 16:23:37 +02:00
Vadim
84c8973690 fixed logbook list updates 2025-07-10 16:18:12 +02:00
Vadim
ca6b921b6b added hero animation 2025-07-10 16:12:36 +02:00
Vadim
84e77d0620 adjusted logbook grid 2025-07-10 16:05:35 +02:00
Vadim
02c6c2fc6f added CameraSettingsSection 2025-07-10 15:43:54 +02:00
Vadim
39501ee4ac save geolocation 2025-07-10 15:18:47 +02:00
Vadim
1412ce2b3e added photo update 2025-07-10 13:52:48 +02:00
Vadim
4e7c080b97 implemented LogbookPhotoEditScreen 2025-07-10 00:08:57 +02:00
Vadim
a517a28daf implemented LogbookScreen 2025-07-09 21:48:24 +02:00
Vadim
dfe10493b8
ML-236 Exposure offset for equipment profiles (#238)
* Set `targetSdkVersion ` to 35

* unified zoom icons

* expose exposure and zoom ranges

* added list tile to set exposure offset for equipment profile

* added translations

* Update metering_screen.png

* use latest m3 packages

* fixed iap stub

* added missing field
2025-07-09 19:27:46 +02:00
Vadim
435a551235 typos 2025-06-13 22:53:49 +02:00
Vadim
7c96b5a47d
ML-220 Show focal length when zooming (#233)
* extract focal length from exif

* added focal length section

* wip

* [android] calculate EFL

* split other platform handlers to separate files

* [ios] calculate EFL

* updated translations

* deleted `focalLengthFromTags`

* fixed unit tests

* [ios] link missing files

* updated Pro features screen

* [ios] fixed signing

* fixed screenshot generator

* updated goldens

* [android] updated store screenshots

* wip

* [ios] updated store screenshots

* enable focal length feature by default

* mock camera focal length for integration tests

* cleanup

* added logging to `CameraInfoService`
2025-05-14 10:26:59 +02:00
Vadim
f820f9fbba
ML-218 Changing app resets EV and Zoom values (#231)
* preserve camera controls values after controller dispose

* notify camera bloc about equipment profile changes

* fixed tests

* lint
2025-05-04 11:21:37 +02:00
Vadim
79f702f7ea
ML-228 Name textfield keeps focus after editing on other sections (#229)
* unfocus textfield when tapped outside

* autofocus equipment profile name

* upload diagnostic screenshots

* typo

* wip

* typo

* more diagnostic screenshots

* removed diagnostic screenshots

* returned diagnostic screenshots

* skip failing step (wip)

* cleanup
2025-04-01 22:35:24 +02:00
Vadim
0e45d98060
ML-221 Spot Metering only available when Histogram is enabled (#225) 2025-03-17 22:43:00 +01:00
Vadim
2dee63e78e
Updated screenshots with v1.0.3 (#219)
* fixed errors

* removed autofocus from name textfield

* fixed equipment profiles find

* updated ios screenshots

* deleted redundant "light_equipment-profiles-iso-picker"

* merged scripts per platform

* updated android screenshots

* fixed flutter version

* Update README.md

* skip codesign for PR ipa
2025-02-16 12:41:56 +01:00
Vadim
8ecab836a3 ML-209 Camera preview orientation is wrong (#210)
* lock orientation to `portraitUp`

* removed custom rotator for camera preview
2025-01-23 18:05:39 +01:00
Vadim
fb58b6cd9f
Upgrade project to the latest stable Flutter version (#201)
* fixed fvm path typo

* Update pubspec.yaml

* version control pubspec.lock

* fixed ios build

* deleted `ExpandableSectionList`

* removed redundant default cases

* avoided async gaps

* replaced deprecated color value getter

* `WillPopScope` -> `PopScope`

* removed theme deprecations

* replaced text scale deprecation

* updated goldens

* updated flutter version across workflows

* [android] migrated to the new gradle

* upgraded dependencies

* [android] fixed build

* [ios] fixed build

* updated config

* allow release notes to fail

* updated stub pubspec

* [android] use java 17

* [ios] enable flutterfire

* added firebase.json to secrets

* typo

* update color utils

* use exact versions

* reverted color utils

* updated goldens
2025-01-20 19:32:57 +01:00
Vadim
c0e26b8840
ML-196 Allow to select equipment profile in use (#199)
* fixed equipment profile pickers updates
2024-11-17 09:49:01 +01:00
Vadim
1d22ec5439
Removed language switch from release notes dialog (#198)
* Removed language switch from release notes dialog
2024-11-11 18:51:16 +01:00
Vadim
30418a9cfd
ML-196 Allow to select equipment profile in use (#197)
* integrated `EquipmentProfilesStorageService`

* implemented `EquipmentProfileEditScreen`

* added equipment profiles screens to navigation

* fixed tests

* fixed splashscreen removal

* replaced old `EquipmentProfilesScreen`

* typo

* use outlined icons

* fixed storage mock for integration tests

* recovered copy feature for profiles

* added profile deletion to e2e test

* added translations

* added film translations

* wip

* add ability to toggle equipment profiles

* lints

* fixed tests

* sync with iap rename

* use `Toggleable` from resources

* use iap 2.1.0

* use outlined edit icon
2024-11-11 17:20:12 +01:00
Vadim
c66381f813
ML-191 Add an ability to add a generic film, that will accept a formula (#195)
* sync with resources

* separated `ExpandableSectionList` as widget

* fixed generic type

* implemented `FilmsScreen` (wip)

* made `SliverScreen` title a widget

* [`FilmEditScreen`] wip

* [`FilmEditScreen`] added validation

* fixed title overflow for `SliverScreen`

* [`FilmEditScreen`] separated add and edit blocs

* [`FilmEditScreen`] split into separate components

* added bottom widget to `SliverScreen`

* implemented films list tabs fo `FilmsScreen`

* added films screen to navigation

* replaced explicit routes names with enum values

* implemented CRUD for custom films

* added placeholder for empty custom films list

* added `FilmsStorageService`

* fixed unit tests

* fixed integration tests

* lint

* fixed golden tests

* added iap stub methods

* added custom films to features list

* use 2.0.0 resouces

* fixed film picket tests

* migrated to iap 1.0.1

* autofocus film name field

* wait for the film to edited

* migrated to iap 1.1.0

* typo

* wait for storage initialization

* migrated to iap 1.1.1

* fixed films initialization

* added conditions to films model `updateShouldNotifyDependent`

* typo

* fixed select film discard notify

* covered films model `updateShouldNotifyDependent`
2024-11-03 20:16:01 +01:00
Vadim
63ff6cc867
ML-189 Auto-downsize exposure pairs items for big display sizes (#190)
* added autosize text

* added more room for exposure pairs list

* downsize text only for long values
2024-09-23 16:08:30 +02:00
Vadim
9d5860a53f
ML-184 Make "Restore purchases" option more accessible (#185)
* moved "Restore purchases" to the Pro section

* updated goldens

* downgraded dependencies

* upgraded again

* added resources to dependency_overrides
2024-07-28 14:37:37 +02:00
Vadim
f0d707b071
Show Lightmeter Pro price before purchase (#183)
* Upgraded `targetSdkVersion` to 34

* added price to `IAPProduct`

* implemented `ProFeaturesScreen` (wip)

* finalized `ProFeaturesScreen` layout

* replaced `ProFeaturesDialog` with `ProFeaturesScreen`

* added translations

* fixed feature checkbox width calculation

* fixed tests

* separated android & ios features

* NPE

* changed "get pro" tile colors

* unified Lightmeter Pro related naming

* typo

* updated golden tests

* use iap 0.11.0

* revert unrelated changes

This reverts commit bae5ead8f0.

* lint

* adjusted eng translation

* updated goldens
2024-07-23 23:19:41 +02:00
Vadim
90bfe7c7b8 Fixed integration tests 2024-05-23 11:34:11 +02:00
Vadim
7f8ea54c6e Fixed duplicate release notes dialog 2024-05-23 09:08:16 +02:00
Vadim
881778b313
Show release notes after update (#178)
* replace generated release notes with pre-built assets

* implemented release notes dialog

* store release notes for version

* show release notes dialog after update

* added release notes dialog to settings

* allow blank values in settings

* updated release notes
2024-05-22 22:46:46 +02:00
Vadim
f62f658be8
Automated release screenshots generation (#177)
* added system overlays for iPhone 8 Plus & iPhone 13 Pro

* add device frame (wip)

* scale device frame (wip)

* add text to screenshots (wip)

* added screenshots config json

* reorganized screenshot models

* cleanup

* added fonts for dark screenshots

* typo

* store raw screenshots

* added standalone script to update screenshots

* wip

* refined screenshots naming

* skip metering layout dialog screenshot

* parse ipad name

* added assets for Pixel 6

* typo

* added text for incident light metering

* reorganized store script

* typo

* wip

* synced outlined icons

* added timer screen to screenshot generator

* constrained timer screen timeline for tablets

* added timer screenshot title

* typo

* revised scripts

* track release screenshots

* Update README.md

* iphone 6.5" -> iphone 6.7"

* Update google_play_resources.md

* softened screenshot font colors

* cleanup
2024-05-21 19:13:33 +02:00
Vadim
8c016e548b
Unified the app's color palette & icons (#176)
* unified scaffold background color

* unified components elevation

* use filled tonal icon buttons

* aligned slider colors with guidelines

* removed unused `CloseButton`

* migrated to outlined icons

* moved timer list tile to the top of the section

* updated goldens

* migrated to the latest material utils

* reaplced `SchemeTonalSpot` with `SchemeRainbow`

* fixed ruler slider ticks color

* update goldens

* fixed tests

* fixed scheme mapping and returned to `SchemeTonalSpot`
2024-05-20 17:08:37 +02:00
Vadim
5c27f726c5
ML-173 Add a timer for long exposures (#174)
* wip

* added start/stop button

* animated timeline

* fixed timer stop state

* added reset button (wip)

* added `onExposurePairTap` callback

* integrated `TimerScreen` to navigation

* separated `TimerTimeline`

* fixed timeline flickering

* added milliseconds to timer

* synchronized timeline with actual timer

* reused `BottomControlsBar`

* fixed default scaffold background color

* moved center button size to the bar itself

* display selected exposure pair on timer screen

* separated reusable `AnimatedCircluarButton`

* release camera when timer is opened

* added `TimerInteractor`

* added `TimerBloc` test

* fixed hours parsing

* added scenarios for timer golden test

* adjusted timer timeline colors

* show iso & nd values on timer screen

* automatically close timer screen after timeout

* added timer autostart

* reverted theme changes

* updated goldens

* typo

* removed timer screen auto-dismiss

* increased timer vibration duration

* replaced outlined locks

* increased 1/3 values font size
2024-05-07 19:24:51 +02:00
Vadim
bc7e6e14d0
ML-170 Show long shutter speeds for all selected aperture values (#172)
* generate exposures > 1"

* fixed unit tests

* added manual shutter speed to equipment profiles

* fixed integration tests

* fixed unit tests

* fixed long exposures overflow

* migrated to resources 1.2.0 and iap 0.10.0

* removed unnecessary loop

* fixed extreme exposure pairs test

* updated master screenshots

* fixed iap stub
2024-04-30 12:44:01 +02:00
Vadim
27d56d1061
ML-166 Golden tests (#167)
* setup golden toolkit

* implemented `GoldenTestApplicationMock`

* added devices with dark theme

* implemented MeteringScreen golden test

* moved platform channel logic to app mock

* implemented SettingsScreen golden test

* gitignore golden tests failures

* Create dart_test.yaml

* adjusted `RulerSlider` ticks height

* set master screenshots

* run golden tests on ci

* fixed `LightSensorService` tests

* removed golden workflow call from PR check

* Update pr_check.yml
2024-04-12 08:07:20 +02:00
Vadim
2f8bb983d5
MLI-7 Manually restore purchases (#165)
* added `RestorePurchasesListTile`

* added `restorePurchases` to iap stub

* reordered settings

* migrated to iap 0.9.0

* migrated to iap 0.9.1

* use version in release commit

* Revert "use version in release commit"

This reverts commit 513b13eb96.

* migrated to iap 0.9.2

* allow manual restore if Pro features are not unlocked
2024-04-10 22:30:35 +02:00
Vadim
2117df2f11
ML-44 Save zoom level for equipment profile (#164)
* made zoom slider vertical & added more ticks to ruler

* show sliders values

* increased slider tappable area

* more accurate sliders values

* added zoom slider to equipment profiles settings

* split `EquipmentListTiles` widget

* set zoom on equipment profile change

* clamp zoom to the nearest value

* added missing translations

* added zoom checks to e2e test

* removed unused import
2024-04-07 10:54:57 +02:00
Vadim
bfd0bfe531
ML-108 First exposure metering seems to be wrong (#163)
* use latest `camera_android_camerax`

* fixed trailing commas

* moved ci/cd to 3.13.9

* removed focus & exposure fix

* fixed camera not being initialized on Android

* removed unused import
2024-04-06 19:14:37 +02:00
Vadim
2128e7c2e9 Fixed test coverage script 2024-03-17 20:18:00 +01:00
Vadim
134af8ad28
ML-141 Prepare iOS release (#144)
* implemented `MockCameraContainerBloc` to stub camera on simulator

* [iOS] fixed camera preview aspect ratio

* place screenshots in platform-specific folders

* [iOS] updated buildable name

* [iOS] fixed stub image cover fit

* [iOS] implemented screenshots generator for all target devices

* store screenshots in _generated_ folder

* Update .gitignore

* Created "Build Prod .ipa" workflow

* added. certs to .ipa workflow

* test ipa building

* fixed provision cert path

* set provision profile in XCode

* set automatic signing for dev builds

* set ios version in Podfile

* renamed provision file

* renamed provision profile

* fixed cert folder...

* changed provision path

* typo

* typo

* try automatic signing

* use manual profile installation

* added export options

* typo

* increased timeout

* increased ipa timeout

* Update README.md

* typo

* [iOS] separated camera handling logic

* [iOS] fixed vibration

* migrated to http server iap

* [iOS] fixed histogram

* replaced distribution profile with development profile

* removed constants from env to the separate file

* removed duplicate launch schema

* fixed PR check workflow

* [iOS] set `ITSAppUsesNonExemptEncryption` to NO

* [iOS] removed java reference from "Build .ipa" workflow
2024-02-21 12:33:25 +01:00
Vadim
fc37016770
ML-154 Improve Crashlytics reports (#155)
* removed unused analytics event & added `logCrash`

* added analytics to `RemoteConfigService`

* run app with `runZonedGuarded`

* added crash logging to `CameraContainerBloc`

* log product id for IAP errors

* typo

* log crashes in `RemoteConfigService`

* ignore silent `FlutterError`

* fixed `evFromImage` test

* fixed `showBuyProDialog` test

* log errors in console

* depend on iap 0.7.2
2024-01-27 23:20:53 +01:00
Vadim
2b2a5441c7
ML-130 Added ff for the "Pro features" tile on the main screen (#149)
* added ff for Pro features tile on main screen
2024-01-15 22:57:40 +01:00