12 Commits

Author SHA1 Message Date
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
ebba764906 feat: sign in with Google (#2579)
Closes #2515
2024-12-19 12:24:16 -05: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
7570b1e596 Notify slack after internal and beta releases (closes #2145) 2024-09-23 17:57:23 -07:00
Johannes Klein
2e8665047c Cv model 2.4 (#729)
* Use env var for cv model version

* Reorder code

* Specify tensorflow version to use
2023-08-07 16:44:58 +02:00
Ken-ichi Ueda
393bf767cf Link iOS CV model files in a build phase
iOS bundle files *must* be referenced in the xcode projects, which means that
updating the filenames in .env is not enough, you also have to add them to
the xcode project. This attempts to simplify this by assuming the named files
in the xcode project remain the same, but they are actually hard links to the
files specified in .env.
2023-08-03 21:24:16 -07:00
Johannes Klein
5f81c49f85 ARCamera MVP: Basic screen with full screen camera and prediction labels (#684) 2023-07-15 07:53:18 +02:00
Ken-ichi Ueda
f2aa4fe52b Switch to manually specifying provisioning profiles
I'd rather not do this but I wasn't able to figure out how get Fastlane to
automatically detect both of the provisioning profiles we need, because with
the multiple targets we need to support sharing we now need two provisioning
profiles.
2023-05-19 16:08:31 -07:00
Amanda Bullington
5ee4a433df Add location picker to ObsEdit (#593)
* Crosshairs, location accuracy warnings, text input for location picker

* Add LocationPicker tests

* UI improvements and code refactor into smaller components; get GMaps working

* Add shadows to icons/text boxes

* Use debouncing to avoid map jitter when typing in location

* Show place results & let user pick new location from web api

* Add tests for location picker with remote results

* Add gmaps api key to github actions

* Try adding manifest placeholders for env variable to work in github actions

* Add key to printf in github actions

* Try accessing GMAPS_API_KEY a different way

* Update android e2e env file step

This updates the "Create .env file" step to use printf to print the Google Maps key into a newly created .env file in the GitHub Action runner. Using the same key as in env.example.

* Fix newline

---------

Co-authored-by: Johannes Klein <johannes.t.klein@gmail.com>
2023-04-26 10:51:05 -07:00
Amanda Bullington
a163e82ef8 Create e2e sign in test (#356)
* Add e2e test to log in a test user

* Add config variables to .env.example

* Add e2e user credentials to .env created for workflow

* Fix newline typo in workflow file

* Change ios e2e to run only on push to main as well

Co-authored-by: Johannes Klein <johannes.t.klein@gmail.com>
2023-01-16 17:49:01 +01:00
Ken-ichi
109f91908e Consolidate API URL config into .env (#101) 2022-05-23 15:39:38 -07:00
Ken-ichi
09ed361d02 Camera and gallery now display after granting permission (#79)
* Camera and gallery now display after granting permission

Previously these were not quite working because the usePhotos hook was asking
for a permission, so if that was used anywhere in conjunction with another
permission request, one or both success promises never got executed. This
commit tries to solve that with a PermissionGate component that takes a
permission as a prop, asks for it if not granted, then renders its children
when granted. If not granted, it renders a message saying that the permission
is required to use the feature.

Other stuff

* Added `env.example` so people know how to populate `.env`
* Added the `intl-pluralrules` polyfill to support pluralization with i18next
* Skip some token granting logic if the user is not logged in
* Trim whitespace from username/email before auth
* Some minor UI changes to auth form so I know where to tap
* Test fixes

* Use a full screen view for children of PermissionGate

* Globalized text on PermissionGate
2022-04-27 12:36:03 -07:00