Commit Graph

417 Commits

Author SHA1 Message Date
Johannes Klein
58bd263c23 Update vision-plugin to prepare for cv model v2.20 (#2732)
* Update vision-camera-plugin-inatvision

* Update Podfile.lock
2025-03-09 17:59:02 +01:00
Kirk van Gorkom
6624acf65f Bump version to 0.59.4 2025-03-06 22:22:31 -08:00
Kirk van Gorkom
672e1913ef Bump version to 0.59.3 2025-03-06 10:48:44 -08:00
Johannes Klein
bd4723c2d2 Bump version 2025-03-04 17:57:45 +01:00
Johannes Klein
12c2e0e8ea Update vision-camera-plugin; breaking changes (#2701)
* Update vc plugin

* Update tests with breaking change: combined_score now 0-100

* Frame processor predictions are in range of 0-100 with new key

* Remove offline convert score to confidence

* Update calculateConfidence.js

* Common ancestor should use combine_score

* Offline suggestions have combined_scores now instead of scores

* Change filtering to range 0-100

* Only use combined_score for Match screen

* Update debug data

* Fic typo in tests

* Remove key from type
2025-02-28 14:21:01 +01:00
Johannes Klein
990eaeff39 v0.59.1 2025-02-22 10:52:15 +01:00
Johannes Klein
f90ff4f968 v0.59.0 2025-02-20 16:17:56 +01:00
Johannes Klein
574627fb6d During signup check first if an email is taken or not (#2665) 2025-02-14 11:49:37 +01:00
Johannes Klein
ce36e75176 v0.58.2 2025-02-12 17:44:14 +01:00
Johannes Klein
9166f26e3a Update to React Native 0.73.11 (#2655)
* Update to RN 0.73.11

* Gemfile changes
2025-02-10 12:38:16 +01:00
Johannes Klein
db21cbd766 v0.58.1 2025-02-07 11:19:00 +01:00
Johannes Klein
740e05320f Bump version 2025-02-05 16:37:19 +01:00
Ken-ichi Ueda
9d88a6b98f chore: improve context comments for datetime translation strings & fix typo 2025-02-03 14:55:38 -08:00
Johannes Klein
c378c8894d Replace small example models, and add example geomodel (#2644)
* Update env.example

* Update model download script

* Delete geomodel.placeholder

* Update README.md

* Update e2e_ios.yml

* Update vision-plugin

* Accept android flavor for downloading models

* Change Android e2e env

* Replace Android e2e model download step

* Update comment

* Move Java setup step

* Revert "Move Java setup step"

This reverts commit d8ca01a176.
2025-02-03 12:16:22 +01:00
Ken-ichi
7e960d9010 feat: display time zones and times in time zones (#2636)
* fix: show observation datetime in the obs time zone

I.e. it doesn't offset the observation datetime into the viewer's time zone.

* test: adjust to literal times by default

* chore: update to date-fns 3.0

* wip: show time zone names with all times

* show time zone name whenever a time zone is passed to a formatting function
* store observation IANA time zone in Realm

Note that this required patching around a bug in Hermes in which it should be
returning a GMT offset for the short time zone but is instead just returning
GMT.

* fix: omit time zone for unuploaded obs

* feat: show relative time differences on ActivityItem headers

* fix: hide zone/offset on ObsEdit before upload when signed in

* fix: hide clock icon in activity item header in new default mode

Also

* stop using checkCamelAndSnakeCase when not necessary in DetailsTab.js
* make POJO types only refer to other POJO types
2025-01-31 23:22:55 +01:00
Kirk van Gorkom
7dc29a25c4 Increment minor version number. Update various cocoapods. 2025-01-24 20:14:42 -08:00
Amanda Bullington
14d2ed990d Upgrade inatjs package and fix payload for users/update (#2635) 2025-01-23 17:52:58 -08:00
Ken-ichi
21a66c8580 fix: make UUIDs more random (#2629)
Replaces react-native-uuid with uuid, which might do a better job making UUIDs random
2025-01-21 15:23:15 -08:00
Johannes Klein
47cf9f815a chore: few minor dev dependency updates (#2626)
* Few minor dependency updates

* Bump detox

* Bump nock

* Bump some eslint plugins

* Bump some types
2025-01-20 21:35:37 +01:00
Johannes Klein
c225ea54b6 chore: minor dependency updates (#2625)
* Minor dependency updates

* Update Podfile.lock

* Update @bam.tech/react-native-image-resizer
2025-01-20 14:23:39 +01:00
Johannes Klein
0d97f69974 Bump version 2025-01-17 12:06:45 +01:00
Kirk van Gorkom
3940de1f17 Bump version number to 0.57.2, only for purposes of making a new build 2025-01-16 20:46:38 -08:00
Kirk van Gorkom
7d247e5b09 Bump version to 0.57.1 2025-01-16 16:41:08 -08:00
Johannes Klein
f84d09648d chore: rename look up location (#2603)
Renames a function call and fixes a NullPointerException on Android
2025-01-09 16:43:54 +01:00
Johannes Klein
feec5567a3 feat: update vision-camera-plugin-inatvision to a version that fully supports the geomodel (#2584)
* Update vision-plugin

* useOfflineSuggestion TS

* Use location for prediction from file

* Remove log

* Use plugin function to lookup location and elevation based on h3 cells

* taxonomyRollupCutoff is now done in the plugin on basis of the tops score for a frame

* Fix wrong commit reference. Now references main branch

* Fix has location check to account for 0.0 locations

* Only prop in lat and long

* Add explanation

* Fix: Import vision-plugin function from wrapper file

* Add jest mock for new plugin function
2025-01-08 16:15:36 +01:00
Ken-ichi
ebba764906 feat: sign in with Google (#2579)
Closes #2515
2024-12-19 12:24:16 -05:00
budowski
f89736188c feat: use physical volume buttons to capture photo (#2495)
* Fix #2212 - use physical volume buttons to capture photo

* Fixed tests (mocking VolumeManager)

* Fixed tests (mocking VolumeManager)

* #2212 - physical volume buttons for camera capture - also in AI camera

* #2212 - additional fixes for AI camera

* Update pods

* Update pods

---------

Co-authored-by: Amanda Bullington <albullington@gmail.com>
2024-12-17 16:40:26 -08:00
Ken-ichi Ueda
04e7ca6f05 v0.57.0 2024-12-12 12:39:08 -08:00
dependabot[bot]
eb20e4726e chore(deps): bump nanoid from 3.3.7 to 3.3.8 (#2538)
Bumps [nanoid](https://github.com/ai/nanoid) from 3.3.7 to 3.3.8.
- [Release notes](https://github.com/ai/nanoid/releases)
- [Changelog](https://github.com/ai/nanoid/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ai/nanoid/compare/3.3.7...3.3.8)

---
updated-dependencies:
- dependency-name: nanoid
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-11 17:25:53 -08:00
Ken-ichi
15f36386fd feat: sign in with Apple (#2543)
* Support Sign in with Apple on iOS, w/o design
* Typescript conversions
* Add authenticateUserByAssertion that should be usable w/ Google OAuth-based auth

Closes #583
2024-12-11 17:25:23 -08:00
Johannes Klein
03f8959f1e Update plugin to use new option names 2024-12-10 14:10:10 +01:00
Ken-ichi Ueda
af14aa5f14 v0.56.0 2024-12-07 00:25:22 -08:00
Johannes Klein
df4ff645c5 Get altitude for user location; Add Geo model (#2492)
* Also collect altitude from geolocation calls

* Update geomodel plugin

* Prop user location down into ai camera

* Add geo model file to be linked into xcode project

* Update env.example

* Update env.example

* Add geo model to cv model info file

* Update Developer.js

* Use user location for geo model while frame processing

useGeoModel boolean signals the frame processing plugin to use the geo model as well. It is turned on when we have a location.

* Update README.md

* Geo model is optional

* Adding a dummy neural network called geomodel.placeholder

This model doesn't do anything just returns the input. This is a overhead we could justify in my view as not to spend some more time figuring out how to make a model optional in an Xcode project.

* Geo model files are optional

* Update README.md

* Fix wrong model usage

* Update README.md

* This comment is no longer true

* feat: use full-text index on new _searchableName field (#2487)

Supports searches across non-contiguous tokens, e.g. finding "Mount Diablo
fairy lantern" with a query like "diablo lantern"

Related to #2348

* feat: add pull to refresh on notifications (#2489)

Closes #2349

* feat: show notifications from others (#2491)

* split notifications into tabs
* lots of TypeScript conversion
* feat: resize Heading5 and add Heading6 (closes #2480)
* fix: mark remote observations as viewed from ObsDetails
* feat: show indicator in Notifications tabs if unviewed notifications

Closes #2451

* feat: add option to save all observations from batch obs edit (#2493)

* fix: bring KebabMenu in line with designs

Closes #2268

* Update testing instructions

* v0.55.2

* v0.55.2+129

* fix: show observation from external link when Explore filters open (#2453)

* Open observation in app when link is pressed even if modals are open

* Remove comments

* Add comment and reset obsid

* fix: show onboarding content when signed in user has 0 observations (#2510)

Closes #2508

* fix: load new Explore results when filters change (#2507)

URL params got removed from the query key as a part of pull-to-refresh, but
that's how changes to filters were triggering a new request. This restores
that behavior, adds a test to ensure changes to filters call the API again,
and fixes the prior test of pull to refresh which was not testing the
equivalent behavior when pulling to refresh (API on first load, so the mock
needed to be cleared).

* fix: restore observation fetch when focusing on myobs (#2511)

* fix: center number in photo count (#2512)

Closes #2506

* refactor: minor edits for clarity

* fix: specify CV model version in e2e test

Hoping this deflakes the e2e a bit. Not sure why the AICamera test ever worked
without this.

* v0.55.3

* v0.55.3+130

* New Crowdin translations by GitHub Action (#2481)

Co-authored-by: Crowdin Bot <support+bot@crowdin.com>

* fix: get quality grade descs closer to designs; add Joanne to staff (#2517)

* fix: prevent BottomSheet title from overflowing over close button

* Update to Geomodel name

* Another name change

* Rename var and const names

* Rename const file references

* Also collect altitude from geolocation calls

* Update geomodel plugin

* Prop user location down into ai camera

* Add geo model file to be linked into xcode project

* Update env.example

* Update env.example

* Add geo model to cv model info file

* Update Developer.js

* Use user location for geo model while frame processing

useGeoModel boolean signals the frame processing plugin to use the geo model as well. It is turned on when we have a location.

* Update README.md

* Geo model is optional

* Adding a dummy neural network called geomodel.placeholder

This model doesn't do anything just returns the input. This is a overhead we could justify in my view as not to spend some more time figuring out how to make a model optional in an Xcode project.

* Geo model files are optional

* Update README.md

* Fix wrong model usage

* Update README.md

* This comment is no longer true

* refactor: minor edits for clarity

* Update to Geomodel name

* Another name change

* Rename var and const names

* Rename const file references

---------

Co-authored-by: Ken-ichi <kenichi.ueda@gmail.com>
Co-authored-by: Angie <angie@inaturalist.org>
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2024-12-05 17:14:28 +01:00
Ken-ichi Ueda
2da9b72c44 v0.55.3 2024-12-04 16:18:49 -08:00
Johannes Klein
5548410e35 v0.55.2 2024-11-29 15:16:38 +01:00
Johannes Klein
5a05ba14e0 v0.55.1 2024-11-25 12:01:50 +01:00
Johannes Klein
e752341e59 v0.55.0 2024-11-22 14:58:36 +01:00
Ken-ichi
6bc0d0098c fix: update user language on server after changing in app (#2467)
Main fix was updating inaturalistjs to get a recent bug fix. Also submits a
JSON body instead of a pseudo-formdata-style body.

Also:

* Only try to process queued items that have not failed in the last minute
* Delete queued items after failing 3 times
* Fix index.js error handler bug that was squelching errors that weren't
  getting caught by the ErrorBoundary
2024-11-21 13:21:29 -08:00
Johannes Klein
290b2d9185 Update cv plugin (#2472)
Technically this means we could now support geomodel on iOS. We need additional work though to add the model to the app and connect to the frame processor.
2024-11-21 22:03:37 +01:00
Johannes Klein
d0b188f108 Use stable computer vision plugin (#2464)
* Use stable plugin branch

* Update Podfile.lock

* Revert "Update Podfile.lock"

This reverts commit 192c09c06d.
2024-11-20 20:15:18 +01:00
Ken-ichi Ueda
e69a6d380a v0.54.1 2024-11-18 20:11:21 -08:00
Ken-ichi Ueda
be9c25163b v0.54.0 2024-11-15 16:02:13 -08:00
Johannes Klein
bb9261cfb0 v0.53.1 2024-11-08 16:04:58 +01:00
Amanda Bullington
6c0f5ec485 Upgrade MediaViewer image zoom component (#2392)
* Replace image zoom library with a newer, simpler library

* Fix tests for MediaViewer

* Code cleanup
2024-11-07 17:32:17 -08:00
budowski
7b8c88c84d feat: add onboarding carousel (#2285)
Note that offsetting the onboarding images ended up being a bit hard. We're
mostly doing so with a cropped version of one of the images.

Closes #1906

Also tried to de-flake some tests:

* Use fake timers when possible
* Ensure time travel helper doesn't un-fake our timers
* Wait for time travel helper to finish so changes don't happen outside of
  act
* Stop mocking useCurrentUser in integration tests; that's app code and should
  not be mocked when integrating all parts of the app; instead use signIn /
  signOut helpers
* Remove unnecessary direct uses of act()
* Mocked some inatjs calls to prevent React Query complaints about undefined
  query return values
* Close onboarding before all e2e tests

---------

Co-authored-by: Ken-ichi Ueda <kenichi.ueda@gmail.com>
2024-11-04 12:03:55 -08:00
Amanda Bullington
a4d2c7ca24 Restore language chooser and queue offline locale changes (#2329)
Restore language chooser with system locale (signed out users), web locale (signed in users), or app locale (as selected by user)
2024-11-03 20:12:06 -08:00
Ken-ichi Ueda
1f8328f57a v0.53.0 2024-11-01 15:13:09 -07:00
Ken-ichi
3dcc833c98 feat: support basic layout, typography, and photo carousel in RTL (#2334)
* Use a wrapper around Text for all typography components that sets
  app-specific defaults, allowing default RTL to work
* feat: make iOS permission prompt text translatable
* fix: allow RTL layout of char limit on text input bottom sheet
* fix: allow RTL photo carousel on ObsDetails and TaxonDetails

Removes react-native-reanimated-carousel, which needs to be patched to support
RTL and maybe wasn't providing anything beyond FlatList for us anyway.

InfoPlist.xcstrings will not be automatically updated on Crowdin sync pending
a Crowdin bug.

Work toward #2099
2024-11-01 12:59:25 -07:00
Johannes Klein
5c8e3be12c test AI camera in e2e (#2188)
* Add a cameraZoomRange default
* Small detox version bump
* Add a mocked camera with a take photo button
* An e2e mock for the computer vision plugin predicting a frame
* Mock taking a photo by loading the first photo from the CameraRoll

Closes #1981
2024-11-01 10:38:37 -07:00
Johannes Klein
bbe403e2a5 Optional computer vision speedup using a taxonomy cutoff threshold (#2328)
* Refactor SliderControl into own file, migrate to TS

* Update vision plugin to customize a taxonomy rollup cutoff threshold

A number of 0.01 means all nodes with a cv score lower than that are excluded from calculating the top predictions. Thereby saving resourced on computing those.

* Enable setting of threshold via debug menu

The threshold defaults to 0.0, i.e. no nodes are filtered out, because score is always positive.

* Update vision plugin

* More appropriate range of values
2024-10-31 17:55:35 +01:00