Compare commits

...

1542 Commits

Author SHA1 Message Date
Neeraj Gupta
3962c55140 Update flutter submodule: v3.22.0 2024-06-03 11:26:02 +05:30
Neeraj Gupta
82e478bb12 Merge branch 'f-droid' of https://github.com/ente-io/auth into f-droid 2024-06-03 11:25:26 +05:30
Neeraj Gupta
63c8e98492 Merge branch 'main' into f-droid 2024-06-03 11:21:35 +05:30
Manav Rathi
0cbf7db745 [desktop] Remember window size (#1968) 2024-06-03 10:20:14 +05:30
Manav Rathi
247db36c3b Add changelog entry 2024-06-03 10:18:58 +05:30
Manav Rathi
79d9eba099 Fin 2024-06-02 19:53:18 +05:30
Manav Rathi
19980559f4 Use 2 2024-06-02 19:33:15 +05:30
Manav Rathi
b365e03acd Use 1 2024-06-02 19:26:26 +05:30
Manav Rathi
d067673dca old 2024-06-02 19:15:10 +05:30
Manav Rathi
9deefeb019 window-rect 2024-06-02 19:13:53 +05:30
Manav Rathi
861b4d9228 [web] Introduce zod for API response runtime type validation (#1966)
Yup wasn't cutting it, after looking around and evaluating on a bunch of
parameters, zod seems like a better choice for such a primitive part of
our stack, even if it means an extra 8kb dependency in the bundle (zod
itself has no dependencies! wish more libs were like that).
2024-06-02 17:50:49 +05:30
Manav Rathi
1d5f936ced Move to lower layer for fixing eslint errors 2024-06-02 17:46:22 +05:30
Manav Rathi
e8a3b3b299 lf 2024-06-02 17:41:59 +05:30
Manav Rathi
62f3e6d47b Consolidate checks 2024-06-02 17:36:17 +05:30
Manav Rathi
0e9a4911b5 zod 2024-06-02 17:20:39 +05:30
Manav Rathi
7c3a137723 staff yup => zod 2024-06-02 17:11:03 +05:30
Manav Rathi
c9c582cbcc fix 2024-06-02 16:57:13 +05:30
Manav Rathi
d924ee636d Fix imports 2024-06-02 16:55:47 +05:30
Manav Rathi
176289d0a8 zod flags 2024-06-02 16:50:30 +05:30
Manav Rathi
f663c436cb Add zod
zod required strict mode, which is why creating this "@/new" package was a prereq.
2024-06-02 16:00:30 +05:30
Manav Rathi
3f3a63d8da Move 2024-06-02 15:50:58 +05:30
Manav Rathi
1360378aaa Fix circular dependency warning
> Circular dependency between chunks with runtime
  (src_services_face_face_worker_ts-src_services_face_index_ts-src_services_face_indexer_ts-src_-39d208,
  webpack)
2024-06-02 15:19:13 +05:30
Manav Rathi
14e4c3a133 Fix circular dependency warning 2024-06-02 15:06:21 +05:30
Manav Rathi
a6b8bfcf90 [web] Investigate ESLint 9 (but don't switch yet) (#1964)
Pending on https://github.com/facebook/react/pull/28773

Note - once we go eslint 9, we won't need the
`--report-unused-disable-directives` in our eslint invocation:

https://eslint.org/docs/latest/use/configure/configuration-files#reporting-unused-disable-directives
2024-06-02 15:02:42 +05:30
Manav Rathi
bf2a97f4a1 Prune (prep for eslint 9) 2024-06-02 14:40:34 +05:30
Manav Rathi
ebab8568b9 Prune old config 2024-06-02 14:31:01 +05:30
Manav Rathi
55ee9a5d29 [desktop] Upgrade dependencies to latest + ESLint 9 (#1962)
The two outdated dependencies in the desktop code at this point are
* Jackspeak, which needs to be pinned because of
https://github.com/isaacs/jackspeak/issues/5 (Presumably we'll not need
this once we go yarn v4).
* Electron store, which is ESM only.
2024-06-02 14:18:06 +05:30
Manav Rathi
27b7532ca4 lf 2024-06-02 14:15:13 +05:30
Manav Rathi
d38ea56492 Upgrade more 2024-06-02 14:06:06 +05:30
Manav Rathi
37f09c0dc3 yarn upgrade-interactive electron electron-log 2024-06-02 14:03:33 +05:30
Manav Rathi
22b9bc7804 onnx runtime 1.18
https://github.com/microsoft/onnxruntime/releases/tag/v1.18.0
https://stackoverflow.com/questions/70077595/is-32-bit-arm-windows-considered-dead-deprecated
2024-06-02 13:57:41 +05:30
Manav Rathi
aad4d62f05 typescript-eslint is not ready yet
https://github.com/typescript-eslint/typescript-eslint/pull/9002#issuecomment-2106424400
2024-06-02 13:56:06 +05:30
Manav Rathi
f716f3bed7 prettier 3.3
https://prettier.io/blog/2024/06/01/3.3.0
2024-06-02 13:50:36 +05:30
Manav Rathi
c2bf99531a eslint . is now the default
> If you are using a flat configuration file (eslint.config.js), you can also
> omit the file arguments and ESLint will use .
>
> https://eslint.org/docs/latest/use/command-line-interface
2024-06-02 13:42:16 +05:30
Manav Rathi
0d3db30cac Remove false disables that have been fixed in eslint 9 2024-06-02 13:41:13 +05:30
Manav Rathi
d9477891bb eslint 9 2024-06-02 13:38:10 +05:30
Manav Rathi
429caf5f6c New 2024-06-02 12:56:54 +05:30
Manav Rathi
39a17bc0b8 eslint 9 2024-06-02 12:45:59 +05:30
Manav Rathi
2310758810 We'll put react code here 2024-06-02 12:43:31 +05:30
Manav Rathi
781a99aa42 Place 2024-06-02 12:39:18 +05:30
Manav Rathi
3ff5b2f18f This config is automatically included
...if you use any of the recommended configurations.

https://typescript-eslint.io/users/configs/
2024-06-02 12:29:38 +05:30
Laurens Priem
38c88c9aa8 [mob][photos] Bump (#1960)
## Description

## Tests
2024-06-01 21:36:11 +05:30
laurenspriem
b6cb264cbb [mob][photos] Bump 2024-06-01 21:32:04 +05:30
Manav Rathi
74ff0e4abe [desktop] (Maybe) fix the dock icon on Linux (#1959)
Ref: https://github.com/ente-io/ente/issues/1909

build/icons/512-512.png is just a 1/2 copy of build/icons.png.
2024-06-01 20:31:53 +05:30
Manav Rathi
cab8660446 [desktop] (Maybe) fix the dock icon on Linux
Ref: https://github.com/ente-io/ente/issues/1909

build/icons/512-512.png is just a 1/2 copy of build/icons.png.
2024-06-01 20:05:35 +05:30
Manav Rathi
e4e47ab3d4 [desktop] Minor tweaks (#1958)
- Shorten tsconfig include
- Update @typescript-eslint/
2024-06-01 19:44:32 +05:30
Vishnu Mohandas
b8911d8303 Format doc 2024-06-01 18:07:55 +05:30
Vishnu Mohandas
87f53177c0 Update index.md 2024-06-01 15:27:23 +05:30
Neeraj Gupta
a43162d76a [photos] bump version 0.8.128+648 (#1956)
## Description

## Tests
2024-06-01 12:26:53 +05:30
Neeraj Gupta
68f291efe7 [photos] bump version 0.8.128+648 2024-06-01 12:26:28 +05:30
Neeraj Gupta
6e9b7272f3 Update mobile-release.yml (#1955)
## Description

## Tests
2024-06-01 12:20:32 +05:30
Neeraj Gupta
b53dc645c3 Update mobile-release.yml 2024-06-01 12:20:17 +05:30
Neeraj Gupta
12f28b489f [mob] Gracefully handle the case when app is stuck due to secureStore exception (#1916)
## Description

## Tests
2024-06-01 12:04:21 +05:30
Neeraj Gupta
26cbc5a2f0 [cli] Fix bug in decrypting exported data from Ente Auth (#1951)
## Description

## Tests
Tested locally
2024-05-31 21:31:22 +05:30
Neeraj Gupta
4674ab63e9 [cli] Fix Ente Auth export decryption 2024-05-31 21:29:17 +05:30
Manav Rathi
8b35cfd802 Update @typescript-eslint/* 2024-05-31 20:28:23 +05:30
Manav Rathi
010ff29b16 Shorten equiv 2024-05-31 20:20:33 +05:30
Laurens Priem
641efa15be Minor fixes (#1950)
## Description

## Tests
2024-05-31 18:20:30 +05:30
Neeraj Gupta
55e2911eef Bump version 2024-05-31 18:14:14 +05:30
Neeraj Gupta
d9553fc5bb Handle error during suggestion 2024-05-31 18:13:59 +05:30
Neeraj Gupta
9ce613eae5 Always use goodMeanDistance 2024-05-31 18:11:59 +05:30
Neeraj Gupta
be3e33f5c5 Handle missing cluster summary on sorting 2024-05-31 18:07:04 +05:30
Manav Rathi
f5fee2185c [desktop] RC updates (#1948) 2024-05-31 17:38:27 +05:30
Manav Rathi
44fefac37c Don't show the message to beta users
It's more confusing that way
2024-05-31 17:36:34 +05:30
Neeraj Gupta
8b53dac00c generated strings 2024-05-31 17:32:33 +05:30
Manav Rathi
abf13245dc pre 2024-05-31 17:13:17 +05:30
Manav Rathi
e87475beb7 [desktop] Update nightly release artifacts
Ref: https://github.com/electron-userland/electron-builder/issues/2074
2024-05-31 17:06:12 +05:30
Manav Rathi
55b62ce3cc [desktop] Fix the value for the release type env var (#1947) 2024-05-31 16:53:06 +05:30
Manav Rathi
b2405e8b59 [desktop] Fix the value for the release type env var 2024-05-31 16:52:01 +05:30
Manav Rathi
1eaa635d0e [desktop] Update published artifacts on the nightly pre-release (#1946)
Untested, will need to trigger the workflow to see if this works.
2024-05-31 16:35:14 +05:30
Manav Rathi
291d5c437c [desktop] Update published artifacts on the nightly pre-release 2024-05-31 16:33:21 +05:30
Manav Rathi
7f4b0c3d10 [desktop] Show option to enable face indexing for beta users (#1945) 2024-05-31 15:56:16 +05:30
Manav Rathi
4718e640b4 Match mobile behaviour, don't reset the consent per device 2024-05-31 15:52:54 +05:30
Manav Rathi
c7c50293df Reduce delay 2024-05-31 15:30:58 +05:30
Manav Rathi
b7181963ca Fix 2024-05-31 15:28:57 +05:30
Manav Rathi
fa06a15ad7 Show the option for beta users too 2024-05-31 15:26:36 +05:30
Manav Rathi
133693d058 Fetch beta flag 2024-05-31 15:15:51 +05:30
Neeraj Gupta
d3ad6cbd4e Final beta face (#1944)
## Description

- Decreased clustering bucket size
- Show on UI when clustering is running

## Tests

Tested in debug mode on my pixel phone.
2024-05-31 14:58:25 +05:30
laurenspriem
bfe34a908c [mob][photos] Bump 2024-05-31 14:54:37 +05:30
laurenspriem
f6bdeef33d [mob][photos] Show when clustering is running 2024-05-31 14:47:03 +05:30
Manav Rathi
9a7ba8a406 Alias 2024-05-31 14:40:44 +05:30
Manav Rathi
a850500beb Clear 2024-05-31 14:29:28 +05:30
Manav Rathi
72a3f7f17a Reduce noise in UI layer 2024-05-31 14:25:12 +05:30
Manav Rathi
c8d30323e4 Trigger 2024-05-31 14:11:16 +05:30
laurenspriem
029872e54e [mob][photos] Decrease clustering bucket size 2024-05-31 14:07:31 +05:30
Manav Rathi
3ad8f73289 mandate 2024-05-31 14:06:06 +05:30
Neeraj Gupta
2ad4912d7e [auth] Add custom Doppler icon (#1935)
## Description

Adds a custom icon for [Doppler](https://www.doppler.com)
2024-05-31 14:05:28 +05:30
laurenspriem
b3c907f8ee [mob][photos] Stale todo 2024-05-31 14:03:56 +05:30
Neeraj Gupta
50a8ddc002 [mobile] New translations (#1938)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-app)
2024-05-31 14:01:30 +05:30
Neeraj Gupta
5fc03bca1c [auth] New translations (#1939)
New translations from
[Crowdin](https://crowdin.com/project/ente-authenticator-app)
2024-05-31 13:59:52 +05:30
Neeraj Gupta
05e4d18a14 [mob][photos] Upgrade to flutter 3.22.0 (#1933)
## Description

- Upgraded flutter and some packages.
- `flutter_map` had some breaking changes. 
- `flutter_map_marker_cluster` also required some changes.
- Marker clusters weren't rendering after upgrading to flutter 3.22.0 on
profile and release mode. This was also fixed.
2024-05-31 13:57:30 +05:30
Manav Rathi
387ca79b6d [desktop] Tweak the nightly build flow (#1943) 2024-05-31 13:32:21 +05:30
Manav Rathi
ddaa872b97 more 2024-05-31 13:25:23 +05:30
Manav Rathi
67169b4efa more 2024-05-31 13:20:58 +05:30
Manav Rathi
52b3a6d0f7 [desktop] Tweak the nightly build flow
If we publish a tag when publishing the pre-release, it then triggers another
workflow invocation that fails (harmlessly). So instead, push the tag after
releasing to trigger the steps.
2024-05-31 13:14:56 +05:30
Manav Rathi
575c5aad81 [desktop] Closer to mobile app's behaviour (#1941) 2024-05-31 12:04:06 +05:30
Manav Rathi
f062074177 Index videos 2024-05-31 11:56:10 +05:30
Manav Rathi
41124d07a5 Shorten to original
433d0e81fc
2024-05-31 11:53:56 +05:30
Manav Rathi
5042e3cbd7 Index video thumbnails 2024-05-31 11:51:18 +05:30
Manav Rathi
1227bbc4a9 Don't duplicate state 2024-05-31 11:12:29 +05:30
Manav Rathi
27a5aa99c0 wrap 1 2024-05-31 10:56:42 +05:30
Manav Rathi
5049b5cc4e wip 2024-05-31 10:47:06 +05:30
Manav Rathi
beedbd0991 wip 2024-05-31 10:35:00 +05:30
Manav Rathi
113a949a4b wip 2024-05-31 10:02:58 +05:30
Manav Rathi
c70c498d38 Pick from correct execution context 2024-05-31 09:33:17 +05:30
Manav Rathi
c0c4412b19 [web] Rework the face DB schema (#1940) 2024-05-31 09:22:21 +05:30
Manav Rathi
84ac002885 lf 2024-05-31 09:22:02 +05:30
Manav Rathi
29f89ab901 Skip 2024-05-31 09:15:50 +05:30
Manav Rathi
253b74d58f [web] Rework the face DB schema
These changes were in main only overnight and were not released anywhere, so I
will take the liberty of modifying the schema without bumping the version.
2024-05-31 09:09:07 +05:30
Manav Rathi
89064f77ae [web] New translations (#1937)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2024-05-31 08:49:50 +05:30
Crowdin Bot
9d309dd6de New Crowdin translations by GitHub Action 2024-05-31 02:07:29 +00:00
Crowdin Bot
9fbe02eeac New Crowdin translations by GitHub Action 2024-05-31 01:58:48 +00:00
Crowdin Bot
0d38c6ac1b New Crowdin translations by GitHub Action 2024-05-31 01:42:37 +00:00
Joel Watson
453f196a63 [auth] Add custom Doppler icon 2024-05-30 14:15:24 -05:00
ashilkn
f14f973a61 [mob][photos]
Remove commented out code
2024-05-30 21:58:36 +05:30
ashilkn
a830e42ead Merge branch 'main' into upgrade_flutter 2024-05-30 21:45:36 +05:30
Neeraj Gupta
62e5950429 [auth] Add new custom icons in auth (#1923) 2024-05-30 21:36:57 +05:30
Neeraj Gupta
1c241d70fd Add alt names for some services (#1928) 2024-05-30 21:36:09 +05:30
Manav Rathi
81472fdafb [desktop] Nightly builds (#1932)
## Description

## Tests
2024-05-30 21:22:32 +05:30
Manav Rathi
c1097de27f Non required 2024-05-30 21:02:17 +05:30
Manav Rathi
f647355666 [desktop] Nightly builds 2024-05-30 20:58:31 +05:30
ashilkn
f871255833 [mob][photos] fix clusters in map not rendering properly in profile or release mode
Key.toString() is working as expected on debug mode after upgrading flutter to 3.22.0
2024-05-30 20:34:59 +05:30
Manav Rathi
ae9d406fe9 [web] Switch to new storage layer for face indexes (#1931) 2024-05-30 19:58:46 +05:30
Manav Rathi
8f7af989bb Remove unused 2024-05-30 19:30:03 +05:30
Manav Rathi
21567d546e bye 2024-05-30 19:22:55 +05:30
Manav Rathi
400a6a9054 Store enabled state in local storage 2024-05-30 19:17:24 +05:30
Manav Rathi
7cc29c302e new 2024-05-30 19:11:44 +05:30
Manav Rathi
654f6b8934 Remove old indexstatus 2024-05-30 19:04:01 +05:30
Manav Rathi
3e1dbce629 Prune 2024-05-30 18:57:19 +05:30
Manav Rathi
ce93ce6529 sync + fetch 2024-05-30 18:32:43 +05:30
Laurens Priem
e682b065d1 Update intl_en.arb (#1930) 2024-05-30 18:26:52 +05:30
Laurens Priem
9f2d770bc2 Update intl_en.arb 2024-05-30 18:24:43 +05:30
Vishnu Mohandas
27523e2f10 Update intl_en.arb 2024-05-30 18:18:28 +05:30
Zxhir
966e5527ec Add alt names for some services 2024-05-30 12:05:35 +01:00
Manav Rathi
074e867886 Disable the download for now 2024-05-30 16:08:07 +05:30
Manav Rathi
46761622f1 Fix 2024-05-30 16:05:50 +05:30
Manav Rathi
45d7e3da2c Prune 2024-05-30 16:00:09 +05:30
Manav Rathi
1f6be04bf4 Rename 2024-05-30 15:57:27 +05:30
Manav Rathi
6327a7f9da nu 2024-05-30 15:55:06 +05:30
Manav Rathi
9dbec2729c remote mapping 2024-05-30 15:44:25 +05:30
Manav Rathi
2b3b84de0f Closer 2024-05-30 15:31:07 +05:30
Manav Rathi
a6a0a24b26 Refer 2024-05-30 15:23:31 +05:30
Manav Rathi
1a292aae27 Split 2024-05-30 15:17:06 +05:30
Laurens Priem
154cb7a8bc Update README (#1926)
## Description

Updated README to clarify free nature of Auth, and ways to contribute.
2024-05-30 14:59:25 +05:30
Laurens Priem
bb9a605b0d Update README (#1927)
Formatting suggestions, no changes in content:
- Limit to 80 character lines
- Move the period out of the "Spread the word" link

PR is against your branch.
2024-05-30 14:58:19 +05:30
Manav Rathi
b2277cfcc2 Update README 2024-05-30 14:53:28 +05:30
laurenspriem
69c18cb852 Update README 2024-05-30 14:48:25 +05:30
Manav Rathi
b9a07e536c blur 2024-05-30 14:32:52 +05:30
Manav Rathi
6b0501e272 Move the score out 2024-05-30 14:30:19 +05:30
Manav Rathi
57404e1f49 id2 2024-05-30 14:17:31 +05:30
Manav Rathi
b5c52a4ae2 id 2024-05-30 14:14:59 +05:30
Manav Rathi
2abcb709d9 Unused 2024-05-30 14:11:23 +05:30
Manav Rathi
13d15ceeb9 nest 2024-05-30 14:09:59 +05:30
Manav Rathi
34166ecffb Move to generator 2024-05-30 14:00:00 +05:30
Manav Rathi
40d35e157e t 2024-05-30 13:54:50 +05:30
Manav Rathi
91be44c4c5 dup 2024-05-30 13:53:18 +05:30
Manav Rathi
6d3391528d Closer 2024-05-30 13:48:36 +05:30
Manav Rathi
4b202d2dda r 2024-05-30 13:45:23 +05:30
Manav Rathi
ac8677d7b4 Filter instead of marking as errors 2024-05-30 13:36:35 +05:30
Laurens Priem
227873cc2d More tiny faces (#1925)
## Description

- Some UI alignment changes
- More error logging

## Tests

Tested in debug mode on my pixel phone.
2024-05-30 13:34:32 +05:30
Manav Rathi
3fc41aecca inl 2024-05-30 13:32:10 +05:30
laurenspriem
6dc26b9124 [mob][photos] Bump 2024-05-30 13:31:26 +05:30
laurenspriem
841a67443d [mob][photos] Logs 2024-05-30 13:29:12 +05:30
Manav Rathi
c71e56ec43 inl 2024-05-30 13:26:09 +05:30
Manav Rathi
fd4a788953 Checked that the image part is passed as the file 2024-05-30 13:22:46 +05:30
laurenspriem
81f9efbace [mob][photos] Logs 2024-05-30 13:21:16 +05:30
Manav Rathi
23c73a83eb Inline 2024-05-30 13:16:15 +05:30
Manav Rathi
6e6c88826e t 2024-05-30 13:02:11 +05:30
laurenspriem
80be753d77 [mob][photos] Properly align person tiles 2024-05-30 13:02:00 +05:30
laurenspriem
e41e0eadee [mob][photos] Rename var showOptionToCreateNewAlbum 2024-05-30 13:01:35 +05:30
Manav Rathi
53dea9dcf3 Sync 2024-05-30 12:50:14 +05:30
Manav Rathi
6b1484671b Add remove 2024-05-30 12:24:34 +05:30
laurenspriem
c3347bae5d [mob][photos] Show indexing description only once at top 2024-05-30 12:20:40 +05:30
Manav Rathi
b17933a2b3 Tweak 2024-05-30 12:14:02 +05:30
Manav Rathi
d448676b8f Move 2024-05-30 12:09:01 +05:30
Manav Rathi
c8a7152cdc Remove unnecessary propagation 2024-05-30 12:01:04 +05:30
Manav Rathi
3c3f9b2b48 Inline 2024-05-30 11:54:48 +05:30
Manav Rathi
f66170b5b2 Bypass 2024-05-30 11:53:25 +05:30
Neeraj Gupta
8e1d7bc884 [mob] Log file details on decryption Error (#1924)
## Description

## Tests
2024-05-30 11:52:05 +05:30
Neeraj Gupta
dafdeca7e4 [mob] Log file details on decryption Error 2024-05-30 11:50:56 +05:30
Manav Rathi
6be42225c2 Bypass 2024-05-30 11:49:36 +05:30
Manav Rathi
403cc3cca0 New 2024-05-30 11:46:36 +05:30
Manav Rathi
321422e915 No clustering yet 2024-05-30 11:35:14 +05:30
Manav Rathi
3c92349054 Move 2024-05-30 11:33:09 +05:30
Manav Rathi
c3f6ecbf6a Prune 2024-05-30 11:30:23 +05:30
Manav Rathi
35090a6cdd No clustering yet 2024-05-30 11:22:20 +05:30
Manav Rathi
ab61fee8de simpl 2024-05-30 11:06:31 +05:30
Manav Rathi
896de62794 Get counts from db 2024-05-30 11:05:04 +05:30
Manav Rathi
d9200f4703 Outline 2024-05-30 10:55:46 +05:30
Manav Rathi
3c0d82279c Wrap 2024-05-30 10:35:02 +05:30
Manav Rathi
f6bd99386e t 2024-05-30 10:29:08 +05:30
Manav Rathi
85785f7543 Doc 2024-05-30 10:20:57 +05:30
Manav Rathi
aa353b57e8 Prune new API 2024-05-30 10:08:54 +05:30
Manav Rathi
cbdd82f6c0 Use 2024-05-30 10:06:53 +05:30
Manav Rathi
ddddc09226 New 2024-05-30 10:04:39 +05:30
Manav Rathi
bae4c65ab3 Pull out the alignment 2024-05-30 09:45:43 +05:30
Manav Rathi
54654159ff Remove unused 2024-05-30 09:36:26 +05:30
Manav Rathi
8a1acc756e Move the put to worker 2024-05-30 09:34:46 +05:30
Manav Rathi
61fb9cf544 Flow via the new path 2024-05-30 09:26:30 +05:30
ashilkn
7739be4e21 [mob][photos] Migrating to flutter_map v6 (4): Fix attribution 2024-05-29 20:42:05 +05:30
Manav Rathi
3b8ab89647 w 2024-05-29 20:33:28 +05:30
Manav Rathi
4ce02fba93 ll 2024-05-29 20:14:53 +05:30
Manav Rathi
72851397b1 wip 2024-05-29 20:00:55 +05:30
ialexanderbrito
08a073fc1b feat: add new icons and altnames 2024-05-29 11:03:27 -03:00
ialexanderbrito
ce1ba6112f fix: icons error and new icon 2024-05-29 11:03:03 -03:00
Manav Rathi
6097f9d4ba wip 2024-05-29 19:30:27 +05:30
Manav Rathi
daf72d8ac6 Tweak 2024-05-29 19:30:27 +05:30
Manav Rathi
9adc8126bb Rename 2024-05-29 19:30:27 +05:30
Manav Rathi
c968cc3c41 remote 2024-05-29 19:30:27 +05:30
Manav Rathi
7f150d8dc7 comp 2024-05-29 19:30:27 +05:30
Manav Rathi
f8aa749799 timeout 2024-05-29 19:30:27 +05:30
Manav Rathi
2fb7ee0171 Sketch 2024-05-29 19:30:26 +05:30
Manav Rathi
a44e932c84 Plan 2024-05-29 19:30:26 +05:30
Manav Rathi
d92e7e0c5d [web] Invalidate sessions on auth.ente.io on password changes (#1922)
Ref: https://github.com/ente-io/ente/issues/1891

**Tested**

Locally - auth in one window, photos in another, change password in
photos, auth shows dialog on page refresh.
2024-05-29 19:21:15 +05:30
Manav Rathi
9ae13ec159 Do it inline 2024-05-29 19:09:29 +05:30
Manav Rathi
d83eedc93d [web] Invalidate auth session's on password changes 2024-05-29 18:58:02 +05:30
ashilkn
588df2c346 [mob][photos] Migrating to flutter_map v6 (3): Fix cluster with only one image not rendering 2024-05-29 17:46:30 +05:30
Laurens Priem
1e792459a1 Last fixes (#1920)
## Description

- Some small UI fixes

## Tests

Tested in debug mode on my pixel phone.
2024-05-29 16:21:27 +05:30
laurenspriem
245e9c0fff [mob][photos] Bump 2024-05-29 16:20:14 +05:30
laurenspriem
85ce2d7e49 [mob][photos] Properly reset last viewed clusterID 2024-05-29 16:10:03 +05:30
laurenspriem
ee3ea77831 [mob][photos] Don't show naming banner in personCluster 2024-05-29 16:04:04 +05:30
laurenspriem
9922b704e8 [mob][photos] Remove "view confirmied photos" 2024-05-29 16:03:21 +05:30
Manav Rathi
a24cfe9d05 [docs] Fix typo in custom server documentation (#1907)
## Description
This PR fixes the spelling of a word, `appps` to `apps`, in the title of
a section of the documentation for using a custom server.
2024-05-29 15:54:07 +05:30
ashilkn
6c77901396 [mob][photos] Migrating to flutter_map v6 (2) 2024-05-29 15:41:26 +05:30
Neeraj Gupta
272025e657 [mob] Remove dead code (#1919)
## Description

## Tests
2024-05-29 15:29:50 +05:30
Neeraj Gupta
798f5d2e11 [mob] Hide faceItemWidget from fileInfo if faceIndexing is disabled (#1918)
## Description

## Tests
2024-05-29 15:29:38 +05:30
Neeraj Gupta
6b655c8157 [mob] Hide faceItemWidget from fileInfo if faceIndexing is disabled 2024-05-29 15:27:54 +05:30
Neeraj Gupta
2ba802d59f Remove dead code 2024-05-29 15:22:30 +05:30
Laurens Priem
27d89c4952 Breakup cluster (#1917)
## Description

Fixed issue with breaking up clusters

## Tests

Tested in debug mode on my pixel
2024-05-29 14:16:05 +05:30
laurenspriem
642ea88319 [mob][photos] Remove redundant null checks 2024-05-29 14:12:13 +05:30
Neeraj Gupta
e2791723d0 Minor fix 2024-05-29 14:09:38 +05:30
Neeraj Gupta
edb6c804e6 Lint fix 2024-05-29 14:02:50 +05:30
Neeraj Gupta
319108db1b Update auto logout message 2024-05-29 14:00:01 +05:30
Neeraj Gupta
09aa2fece0 Fix: Only try stopping sync for manual logout 2024-05-29 13:58:18 +05:30
Neeraj Gupta
535d24779f Handle bad secure stroage state error 2024-05-29 13:57:16 +05:30
laurenspriem
979730d740 [mob][photos] Small refactor FaceClusteringService 2024-05-29 13:46:39 +05:30
Neeraj Gupta
f8f2bae173 Log error during init 2024-05-29 13:46:06 +05:30
Manav Rathi
079ff43557 [web] Create the face DB layer (#1915) 2024-05-29 13:31:17 +05:30
Manav Rathi
b3a0bc624b lf 2024-05-29 13:25:41 +05:30
Manav Rathi
cee093c214 query 2024-05-29 13:23:39 +05:30
Manav Rathi
8dd0d58319 tick 2024-05-29 13:06:52 +05:30
Manav Rathi
34d4aeaf56 file entry 2024-05-29 13:04:09 +05:30
Manav Rathi
431cd39358 Save 2024-05-29 13:00:02 +05:30
Manav Rathi
bb46e98e85 Desktop 2024-05-29 12:28:56 +05:30
Manav Rathi
f0f3af96d1 dedup 2024-05-29 12:26:29 +05:30
Manav Rathi
9c60fe6f3f logout 2024-05-29 12:22:58 +05:30
Manav Rathi
0cae667b44 Add a close
Ref: https://www.w3.org/TR/IndexedDB-2/
2024-05-29 12:14:18 +05:30
Manav Rathi
2f7d1401cd Promise 2024-05-29 11:26:38 +05:30
laurenspriem
cfb4ded991 [mob][photos] Fix breakupCluster not returning cluster summaries 2024-05-29 11:13:21 +05:30
Manav Rathi
b1e64cadf6 Lifecycle 2024-05-29 11:07:11 +05:30
Raphael Le Goaller
4aaafd3b08 [docs] Fix typo in custom server documentation 2024-05-28 15:49:08 +02:00
Manav Rathi
f34a4d4a21 lf 2024-05-28 18:18:59 +05:30
Laurens Priem
c8a3728f5d Tiny face (#1906)
## Description

- Fixed issue with slow clustering
- Reset for face thumbnail generation

## Test

Tested in debug mode on my pixel.
2024-05-28 16:42:47 +05:30
laurenspriem
b10f4ee18a [mob][photos] Bump 2024-05-28 16:41:40 +05:30
laurenspriem
433c23ca07 [mob][photos] Put MLController timeout back to 15 seconds 2024-05-28 16:35:56 +05:30
ashilkn
cb0cffce3d [mob][photos] Migrating to flutter_map v6 (1) 2024-05-28 16:28:39 +05:30
laurenspriem
853f291de3 [mob][photos] Fix face thumbnail generation pool issue 2024-05-28 16:20:33 +05:30
Manav Rathi
9887d44416 index 2024-05-28 16:12:40 +05:30
Manav Rathi
ca7b609217 Schema 2024-05-28 16:12:40 +05:30
Manav Rathi
f1b2e2bec2 Update to idb 8
No breaking changes that impact us
https://github.com/jakearchibald/idb/blob/main/CHANGELOG.md
2024-05-28 16:12:40 +05:30
Manav Rathi
f5947a0c4a Introduce idb 2024-05-28 16:12:40 +05:30
Manav Rathi
126727a9cc Document 2024-05-28 16:12:40 +05:30
Manav Rathi
5e49b8a528 Move 2024-05-28 16:12:39 +05:30
Manav Rathi
3664532f91 Document 2024-05-28 16:12:39 +05:30
Manav Rathi
8ea7a742b1 Outline 2024-05-28 16:12:39 +05:30
Manav Rathi
77f3503a0b Make space 2024-05-28 16:12:39 +05:30
laurenspriem
8975af7a71 [mob][photos] Dont forget to continue 2024-05-28 15:47:46 +05:30
laurenspriem
b64077d5e7 [mob][photos] Skip cluster bucket if everything already has a clusterID 2024-05-28 15:41:20 +05:30
laurenspriem
50968fd6a1 [mob][photos] Comment 2024-05-28 15:20:44 +05:30
laurenspriem
89a47026d9 [mob][photos] Clustering cleanup 2024-05-28 15:18:44 +05:30
laurenspriem
9a8c4d9cfd [mob][photos] Calculate cosine distance inline 2024-05-28 15:06:22 +05:30
ashilkn
284bca782e [mob][photos] Update flutter version in internal release workflow 2024-05-28 14:01:58 +05:30
ashilkn
1535f61653 [mob][photos] upgrade to flutter 3.22.0 2024-05-28 14:01:12 +05:30
laurenspriem
b45dfa9cfc [mob][photos] Show error on UI in debugMode 2024-05-28 12:58:10 +05:30
ashilkn
ae92d2f759 Merge branch 'main' into f-droid 2024-05-28 12:37:14 +05:30
Neeraj Gupta
f9b3a931a5 [mob] Use same flutter version in all workflows (#1903)
## Description

## Tests
2024-05-28 12:35:15 +05:30
ashilkn
761c3e6ac2 [mob][photos] Update flutter submodule on f-droid branch 2024-05-28 12:34:37 +05:30
Neeraj Gupta
dd83edf0e3 [mob] Use same flutter version in all workflows 2024-05-28 12:33:33 +05:30
ashilkn
f9a3009c60 [mob][photos] Resolve merge conflicts and merge 2024-05-28 12:28:03 +05:30
Neeraj Gupta
6988b70d9f [mob] Lint fix (#1902)
## Description

## Tests
2024-05-28 12:27:17 +05:30
Neeraj Gupta
d33c92a51c Lint fix 2024-05-28 12:26:54 +05:30
Ashil
54aecfd721 Revert "Upgrade to flutter 3.22.0 (#1804)" (#1901)
## Description

This reverts commit a41f705dad.

Need to update `flutter_map` dependency to work with flutter 3.22.0.
2024-05-28 12:24:37 +05:30
Neeraj Gupta
d8f3a48a6f [mob] Minor fixes in face (#1900)
## Description

## Tests
2024-05-28 12:21:31 +05:30
Neeraj Gupta
cb8d572951 Bump version 2024-05-28 12:20:39 +05:30
Neeraj Gupta
c1e5249c9b Merge branch 'main' into minor_faces 2024-05-28 12:19:54 +05:30
Neeraj Gupta
07552f7a89 Handle case when person has no file mapping 2024-05-28 12:19:28 +05:30
Manav Rathi
6c28dede44 [desktop] Start next release sequence (#1899) 2024-05-28 12:15:50 +05:30
Manav Rathi
b2df698e42 [desktop] Start next release sequence 2024-05-28 12:14:10 +05:30
Neeraj Gupta
2ae869075e [mob][photos] Migrate files db to sqlite async (#1802) 2024-05-28 12:04:12 +05:30
Neeraj Gupta
95ae7a6cd0 [auth] New translations (#1897)
New translations from
[Crowdin](https://crowdin.com/project/ente-authenticator-app)
2024-05-28 11:52:39 +05:30
laurenspriem
d1b2d5696a [mob][photos] Wrap people banner in a SafeArea 2024-05-28 11:05:40 +05:30
laurenspriem
705fae35e6 [mob][photos] Fire PeopleChangedEvent after syncing 2024-05-28 10:55:04 +05:30
laurenspriem
cad07cd96f [mob][photos] Fire PeopleChangedEvent after each cluster bucket 2024-05-28 10:53:50 +05:30
Manav Rathi
f66ac40903 photosd-v1.7.0 (#1898) 2024-05-28 09:38:30 +05:30
Manav Rathi
07dc0231ee photosd-v1.7.0 2024-05-28 09:36:44 +05:30
Manav Rathi
40db48b88f [web] New translations (#1896)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2024-05-28 09:05:35 +05:30
Crowdin Bot
50556b9930 New Crowdin translations by GitHub Action 2024-05-28 02:07:43 +00:00
Crowdin Bot
321ae0b7fc New Crowdin translations by GitHub Action 2024-05-28 01:42:06 +00:00
Neeraj Gupta
9b0b7f11f1 [mobile] New translations (#1835)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-app)
2024-05-28 07:03:51 +05:30
Neeraj Gupta
3415739f43 [auth] Create a custom icon for RuneMate (#1894)
## Description
Creates a custom icon for the OSRS client, RuneMate
2024-05-28 05:41:59 +05:30
Neeraj Gupta
855e706f4b [auth] Create a custom icon for YNAB (#1893)
## Description
Creates a custom icon for the popular budgeting app, [You Need a
Budget](https://www.ynab.com/), or YNAB.
2024-05-28 05:41:38 +05:30
Xeiv
eaaa26c2e3 [auth] Create a custom icon for RuneMate 2024-05-28 01:14:34 +05:30
Griffin Wiebel
0f502eb9c2 Create a custom icon for YNAB 2024-05-27 11:59:57 -07:00
Manav Rathi
af571669da [desktop] Fix windows cache issue (#1892) 2024-05-27 20:21:36 +05:30
Manav Rathi
69e2a36933 Revert "[desktop] Code sign on Windows"
This reverts commit 7e6b75004026f24cc340bc5da806fbe8fc20e6c8 and its never
siblings. Retaining them in git history though.
2024-05-27 20:17:36 +05:30
Manav Rathi
bed57eb03e Fix the actual issue (the signing thing was a red herring) 2024-05-27 20:17:36 +05:30
Manav Rathi
03bc8f0493 Let prettier have a go at it
> Example 7.5 Double Quoted Line Breaks
> All leading and trailing white space characters on each line are excluded from the content.
>
> https://yaml.org/spec/1.2.2/
2024-05-27 20:17:36 +05:30
Manav Rathi
3d122b9f9d Add publisher
> no certificates with ExtKeyUsageCodeSigning
  Cannot extract publisher name from code signing certificate. As workaround, set win.publisherName.
2024-05-27 20:17:36 +05:30
Manav Rathi
e90eb50a50 [desktop] Code sign on Windows 2024-05-27 20:17:36 +05:30
Laurens Priem
5e18ae1938 [mob][photos] Bump (#1889)
## Description

Bump
2024-05-27 18:35:31 +05:30
laurenspriem
37d3776e28 [mob][photos] Bump 2024-05-27 18:34:26 +05:30
Laurens Priem
05579ef368 [mob][photos] Fetch remote feedback before clustering (#1888)
## Description

See title
2024-05-27 18:33:22 +05:30
laurenspriem
90e467c7c0 [mob][photos] Fetch remote feedback before clustering 2024-05-27 18:31:17 +05:30
Neeraj Gupta
ae61fc9c6f Wrap add person name banner inside safeArea (#1887)
## Description

## Tests
2024-05-27 18:12:45 +05:30
Neeraj Gupta
c291fa70d3 Wrap add person name banner inside safeArea 2024-05-27 18:12:21 +05:30
ashilkn
99cf23d286 [mob][photos] Resolve conflicts and merge main 2024-05-27 18:03:01 +05:30
Crowdin Bot
d854d5820e New Crowdin translations by GitHub Action 2024-05-27 12:17:06 +00:00
Laurens Priem
232acfa211 Face (#1885)
## Description

- Several fixes for Faces
2024-05-27 17:46:05 +05:30
laurenspriem
f25f119ca1 [mob][photos] Copy 2024-05-27 17:26:14 +05:30
laurenspriem
89a61b3bf7 [mob][photos] Bump 2024-05-27 17:21:29 +05:30
laurenspriem
380d37267b [mob][photos] Don't pop too often 2024-05-27 17:19:06 +05:30
laurenspriem
9cf5691e42 [mob][photos] Delete instead of drop table 2024-05-27 17:09:33 +05:30
laurenspriem
8f474a4500 [mob][photos] Set MLController timer to 10 seconds 2024-05-27 15:54:10 +05:30
Manav Rathi
c7be2270ff [desktop] RC fixes (#1884) 2024-05-27 15:16:04 +05:30
laurenspriem
ced1f0bd79 [mob][photos] Don't remove last cluster of person 2024-05-27 14:55:52 +05:30
Manav Rathi
9f58f1eeb3 Fix error on refresh while a folder watch is being set up
Notes:

From QA

> This error mostly happens if i add a watch folder and before watch folders
  start to upload and i refresh the app.

e is undefined in

    let {watches: e, removeWatch: n} = t;
    return 0 === e.length ? (0,...

Results in Next throwing

    Application error: a client-side exception has occurred (see the browser console for more information).
2024-05-27 14:42:56 +05:30
Manav Rathi
04be2b6a2c Update electron updater
Trying to rule out https://github.com/electron-userland/electron-builder/issues/7127
2024-05-27 14:00:24 +05:30
laurenspriem
9f361237b1 [mob][photos] Fix cluster appbar not showing 2024-05-27 13:04:20 +05:30
Manav Rathi
8cb7cae7b7 [web] Fix display of auth codes on Safari (#1882) 2024-05-27 13:03:19 +05:30
Manav Rathi
a2a209a849 [web] Fix display of codes on Safari 2024-05-27 12:59:32 +05:30
ashilkn
d413c4f4c1 [mob][photos] Add try catch + logs for debugging in FaceMLDataDB 2024-05-27 12:57:25 +05:30
ashilkn
ee8976e92b [mob][photos] Add schema migration easier on FaceMLDataDB 2024-05-27 12:56:20 +05:30
laurenspriem
baa90c42ad [mob][photos] Remove stale comments 2024-05-27 11:59:36 +05:30
laurenspriem
30ade541df [mob][photos] Logging 2024-05-27 11:57:46 +05:30
laurenspriem
86fb8ebfaf [mob][photos] Fix indexing issue on iOS 2024-05-27 11:57:40 +05:30
laurenspriem
b2e8c3c0eb [mob][photos] Remove restriction for ML for F-Droid 2024-05-27 11:51:20 +05:30
Ashil
e203a8378e [mob][photos] Trigger send logs if app is stuck in spalsh screen for >= 15 seconds (#1796) 2024-05-27 11:31:18 +05:30
laurenspriem
b100f1d4bf [mob][photos] Catch and stopwatch on faces db creation 2024-05-27 11:28:05 +05:30
laurenspriem
7b4559f3ca [mob][photos] Reduce clustering frequency 2024-05-27 10:49:42 +05:30
Neeraj Gupta
eac142025d [mob] Increase limit to 50 for adding asset from device (#1873)
## Description

## Tests
2024-05-27 10:31:46 +05:30
Manav Rathi
c5aa536c3b [web] App context refactoring (#1879) 2024-05-26 22:03:33 +05:30
Manav Rathi
05406333e4 Split types 2024-05-26 21:55:16 +05:30
Manav Rathi
8ebd50606a lf 2024-05-26 21:32:24 +05:30
Manav Rathi
cbcfc243fc lf 2024-05-26 21:02:48 +05:30
Manav Rathi
7d497b5ae1 Revert reimportability 2024-05-26 20:43:53 +05:30
Manav Rathi
b28f6c3d8c reduce auth 2024-05-26 20:31:32 +05:30
Manav Rathi
71a8049a35 reduce accounts 2024-05-26 20:28:59 +05:30
Manav Rathi
e95cba0ace Reduce boilerplate 2024-05-26 20:25:02 +05:30
Manav Rathi
e836ada0d6 Refactor 2024-05-26 20:13:53 +05:30
Manav Rathi
19a104374d Refactor 2024-05-26 19:49:23 +05:30
Manav Rathi
693ef45e2c Refactor 2024-05-26 19:39:32 +05:30
Manav Rathi
55bdb070ce Wrap 2024-05-26 19:14:35 +05:30
Manav Rathi
27127ff3d4 2fa 2024-05-26 19:12:12 +05:30
Manav Rathi
345c706814 ce 2024-05-26 19:07:48 +05:30
Manav Rathi
49133b7b86 Move 2024-05-26 19:02:47 +05:30
Manav Rathi
3a5311cdcc cp 2024-05-26 18:58:57 +05:30
Neeraj Gupta
7182795732 [auth] New translations (#1836)
New translations from
[Crowdin](https://crowdin.com/project/ente-authenticator-app)
2024-05-26 18:55:51 +05:30
Manav Rathi
ca00b3b558 creds 2024-05-26 18:55:20 +05:30
Manav Rathi
4bcb765810 [web] Passkey fixes (#1866)
@ua741 Not sure if passkey code is supposed to work on web yet, but I
was doing an unrelated change and noticed that clicking passkeys didn't
even try to redirect to accounts. I don't have a test setup for
passkeys, so don't know if these changes are 100% correct, but at least
now it redirects to accounts. Can test fully when doing final
integration.

- Use correct origin for passkey API requests
- Fix key length error
- Fix param name to match server
- Pass the token instead of a query param
2024-05-26 18:55:11 +05:30
Manav Rathi
17b49595a0 generate 2024-05-26 18:23:55 +05:30
Manav Rathi
b99c573d3a verify 2024-05-26 18:22:07 +05:30
Manav Rathi
d3d3e4dbed signup 2024-05-26 18:19:12 +05:30
Manav Rathi
ba1af5eaf0 Move 2024-05-26 18:14:34 +05:30
Manav Rathi
14cf59c1e5 recover 2024-05-26 18:13:02 +05:30
Manav Rathi
452872156a login 2024-05-26 18:10:22 +05:30
Manav Rathi
4f31bd625d Context 2024-05-26 18:05:04 +05:30
Manav Rathi
6bf6f78147 Refactor app context types 2024-05-26 17:53:49 +05:30
Neeraj Gupta
5576f99548 [mob] Increase limit to 50 for adding asset from device 2024-05-26 16:55:31 +05:30
Manav Rathi
5bbe768acb Scaffold 2024-05-26 16:06:29 +05:30
Manav Rathi
babe378301 Move 2024-05-26 16:03:16 +05:30
Manav Rathi
b2fda16561 Home route 2024-05-26 15:55:41 +05:30
Manav Rathi
6d289d73db Add a new type 2024-05-26 15:50:02 +05:30
Manav Rathi
17acf4b3ee [web] New translations (#1872)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2024-05-26 15:33:35 +05:30
Crowdin Bot
4d666d4b01 New Crowdin translations by GitHub Action 2024-05-26 10:00:34 +00:00
Manav Rathi
619f8319ed [web] Title improvements - P1 (#1871)
Opening the PR to sync the translations, will make other changes
subsequently.
2024-05-26 15:24:51 +05:30
Manav Rathi
3261da3515 title 2024-05-26 15:19:05 +05:30
Manav Rathi
d0d491f7f5 Pass the token instead of a query param 2024-05-26 08:36:57 +05:30
Manav Rathi
db3764d448 Fix param name to match server 2024-05-26 08:36:57 +05:30
Manav Rathi
5fe5451f5c Fix key length error
[error] failed to redirect to accounts page: TypeError: invalid key length
2024-05-26 08:36:57 +05:30
Manav Rathi
6d3d5d03f8 Use correct origin for passkey API requests 2024-05-26 08:36:57 +05:30
Manav Rathi
582eb9e1ea [web] Enable Typescript's strict mode for auth's code (#1865) 2024-05-26 08:35:11 +05:30
Manav Rathi
51770a11ef Tweak 2024-05-26 08:12:52 +05:30
Manav Rathi
1ea7a8f3a7 tweak 2024-05-26 07:20:52 +05:30
Manav Rathi
b4536a7aee [meta] Update issue template (#1864) 2024-05-26 05:31:17 +05:30
Manav Rathi
9d2be29fad [meta] Update issue template 2024-05-26 05:16:36 +05:30
Manav Rathi
f92a18efca [server] Mention more details around s3 provider config (#1863) 2024-05-26 04:53:03 +05:30
Manav Rathi
af382d483d [server] Mention more details around s3 provider config 2024-05-26 04:50:44 +05:30
Manav Rathi
99f1ba799d lhs of && cannot be a number
needs to be false for the hole
2024-05-25 20:56:46 +05:30
Manav Rathi
1548bcd378 Fix dialog 2024-05-25 20:30:43 +05:30
Vishnu Mohandas
c2fc0a3d57 Update verification email address (#1855) 2024-05-25 18:48:50 +05:30
vishnukvmd
39a706ea20 Update verification email address 2024-05-25 18:47:19 +05:30
Manav Rathi
38d6464f55 muppets 2024-05-25 18:13:11 +05:30
Manav Rathi
c5b6297cea Wrap 2024-05-25 18:05:22 +05:30
Manav Rathi
390b4b1f81 Towards noUncheckedIndexedAccess 2024-05-25 17:44:49 +05:30
Manav Rathi
b19b34b3dc Prune 2024-05-25 17:39:45 +05:30
Manav Rathi
5690d613bb tsc 2024-05-25 17:17:21 +05:30
Manav Rathi
bb713cfc76 Cannot avoid a undefined initial app context 2024-05-25 17:14:08 +05:30
Manav Rathi
4a0c93373d st 2024-05-25 17:00:51 +05:30
Manav Rathi
b42759d473 tsc 2024-05-25 16:55:31 +05:30
Manav Rathi
2e93281368 tsc 2024-05-25 16:51:58 +05:30
Manav Rathi
c18be32c09 Rearrange 2024-05-25 16:48:13 +05:30
Manav Rathi
650163c341 id is always sent be server 2024-05-25 16:40:28 +05:30
Manav Rathi
d101208baa tsc 2024-05-25 16:34:10 +05:30
Manav Rathi
76f7215269 Filter 2024-05-25 16:31:42 +05:30
Manav Rathi
621c482529 tsc 2024-05-25 16:27:46 +05:30
Manav Rathi
314c8f69f2 Comment out 2024-05-25 16:24:14 +05:30
Manav Rathi
1f45cf00c7 tsc 2024-05-25 16:20:47 +05:30
Manav Rathi
e0e80ee91f tsc 2024-05-25 16:08:50 +05:30
Manav Rathi
225278adb7 tsc 2024-05-25 16:06:24 +05:30
Manav Rathi
8d30bfbefa tsc 2024-05-25 15:43:08 +05:30
Manav Rathi
ad96f679c9 tsc 2024-05-25 15:39:20 +05:30
Manav Rathi
4b896d3aab tsc 2024-05-25 15:37:05 +05:30
Manav Rathi
533e6d06e7 tsc 2024-05-25 15:32:56 +05:30
Manav Rathi
e88b5c99ba tsc 2024-05-25 15:29:01 +05:30
laurenspriem
1ec7e02695 [mob][photos] Copy change 2024-05-25 12:03:34 +05:30
Manav Rathi
19e08cf803 tsc 2024-05-25 10:15:43 +05:30
Manav Rathi
08073b927c tsc 2024-05-25 10:12:40 +05:30
Manav Rathi
711a44412d tsc 2024-05-25 10:08:14 +05:30
Manav Rathi
c9f94f062b tsc 2024-05-25 10:04:54 +05:30
Manav Rathi
c8205b8475 tsc
The only place I can currently find where this code would run is on the delete
account dialog, where props.color is being passed.
2024-05-25 10:02:09 +05:30
Manav Rathi
b0d3fcfe79 tsc 2024-05-25 09:38:45 +05:30
Manav Rathi
11a354c560 tsc 2024-05-25 09:37:07 +05:30
Manav Rathi
823f739c32 tsc 2024-05-25 09:31:09 +05:30
Manav Rathi
f8876c8154 [docs] Add steam import guide to sidebar (#1850) 2024-05-25 08:37:35 +05:30
Manav Rathi
90db45d845 uploading 2024-05-25 08:35:41 +05:30
Manav Rathi
6a1f5945b9 pretty 2024-05-25 08:34:36 +05:30
Manav Rathi
f7ca838428 Add to sidebar 2024-05-25 08:33:51 +05:30
Manav Rathi
2b065dd68d yarn pretty 2024-05-25 08:32:00 +05:30
Manav Rathi
f168ea9e1e [docs] Mention troubleshooting tips for 403 forbidden when self-hosting (#1849) 2024-05-25 08:27:46 +05:30
Manav Rathi
58702103f3 Add link to example 2024-05-25 08:26:52 +05:30
Manav Rathi
dfb3a6f65c [docs] Add a section about 403 forbidden 2024-05-25 08:19:12 +05:30
Manav Rathi
491f38b120 tsc 2024-05-25 07:44:16 +05:30
Manav Rathi
79c0880c9c tsc 2024-05-25 07:40:38 +05:30
Manav Rathi
834b8f78b7 opts 2024-05-25 07:39:24 +05:30
Manav Rathi
cbf0336cd0 More 2024-05-25 07:37:53 +05:30
Manav Rathi
431d629641 Start tackling strict null 2024-05-25 07:35:07 +05:30
Manav Rathi
94c1cc011b lf 2024-05-25 07:26:20 +05:30
Manav Rathi
b26b0759d6 tsc 2024-05-25 07:10:47 +05:30
Manav Rathi
d51fb99fd3 type for tsc 2024-05-25 06:34:13 +05:30
Manav Rathi
0379216e05 Remove sx prop (in prep for typing) 2024-05-25 06:30:21 +05:30
Manav Rathi
ccd486f659 tsc 2024-05-25 06:22:11 +05:30
Manav Rathi
ce3ab55069 tsc 2024-05-25 06:21:02 +05:30
Manav Rathi
34effef810 tsc 2024-05-25 06:19:01 +05:30
Manav Rathi
56aceb589d tsc 2024-05-25 06:06:29 +05:30
Manav Rathi
92a2506f8a Reduce prop scope 2024-05-25 06:02:47 +05:30
Manav Rathi
e23bc2602f Reorder 2024-05-25 06:01:06 +05:30
Manav Rathi
69beecb7bb tsc
Omit<...,"inherit"> doesn't resolve

    Element implicitly has an 'any' type because expression of type 'OverridableStringUnion<"error" | "inherit" | "secondary" | "primary" | "info" | "success" | "warning", ButtonPropsColorOverrides>' can't be used to index type 'Palette'.
      Property 'inherit' does not exist on type 'Palette'.
2024-05-25 05:57:33 +05:30
Manav Rathi
880b13f436 Fix 2024-05-24 20:48:07 +05:30
Manav Rathi
9061caac99 Ditto 2024-05-24 20:43:32 +05:30
Manav Rathi
11cc8e46b7 Session storage shouldn't be undefined in newer browsers
Tried FF incognito
2024-05-24 20:41:11 +05:30
Manav Rathi
54820689c2 Towards removing implicit anys 2024-05-24 20:16:55 +05:30
Manav Rathi
acebb86fec Towards strict 2024-05-24 19:49:11 +05:30
Manav Rathi
367e09599d Enable more 2024-05-24 19:43:10 +05:30
Manav Rathi
b9fe509567 Enable noImplicitReturns 2024-05-24 19:41:37 +05:30
Manav Rathi
82bffd81de [web] Tighten auth's tsconfig.json (#1846)
Ongoing process, just some steps in the direction we wish.
2024-05-24 19:03:53 +05:30
Manav Rathi
7340443b86 lf 2024-05-24 18:57:32 +05:30
Manav Rathi
2cd1dfd720 Chip away 2024-05-24 18:54:16 +05:30
Neeraj Gupta
3c8d29bcdc [mob] Use custom assetPickerTextDelegate to use en as default (#1844)
## Description

## Tests
Tested locally
2024-05-24 18:24:48 +05:30
laurenspriem
7a6fa1cd80 Merge remote-tracking branch 'origin/main' into migrate_files_db_to_sqlite_async 2024-05-24 18:23:32 +05:30
Laurens Priem
06a698ddbb Face wake (#1843)
## Description

- Fix issue with thumbnail decoding in indexing
- Fix show correct cluster progress counter
- Add wakelock to ML settings page
- Show in settings when device health is low

## Tests

Tested in debug on my pixel
2024-05-24 18:22:00 +05:30
Manav Rathi
3b8c48e92d Create a next specific base
The include still needs to be specified in the importing tsconfig otherwise the
"." is resolved relative to the @/build-config.
2024-05-24 18:17:59 +05:30
Neeraj Gupta
3c0cb20a9b [mob] Use custom assetPickerTextDelegate to use en as default 2024-05-24 18:13:09 +05:30
Manav Rathi
74bb169f0d Equivalent to "**/*.ts", "**/*.tsx", "**/*.d.ts"
From the docs: https://www.typescriptlang.org/tsconfig/#include

> If the last path segment in a pattern does not contain a file extension or
  wildcard character, then it is treated as a directory, and files with
  supported extensions inside that directory are included (e.g. .ts, .tsx, and
  d.ts by default).
2024-05-24 17:54:05 +05:30
laurenspriem
302890baef [mob][photos] Fix for PlatformException in video thumbnails 2024-05-24 17:48:03 +05:30
Manav Rathi
54e33d3f42 Create a WIP replacement 2024-05-24 17:29:06 +05:30
Manav Rathi
0adb94f405 Link to @/build-config 2024-05-24 17:17:55 +05:30
Manav Rathi
7d634aa703 Add a note 2024-05-24 17:16:16 +05:30
laurenspriem
b1e0c83733 [mob][photos] Show pause status copy when device is unhealthy 2024-05-24 17:04:35 +05:30
laurenspriem
d4af7792d4 [mob][photos] Forgot this in previous commit 2024-05-24 16:40:14 +05:30
laurenspriem
f301ab57f2 [mob][photos] Use EnteWakeLock in ML settings page 2024-05-24 16:39:42 +05:30
laurenspriem
7b0f5909b5 [mob][photos] Ente wakelock utility 2024-05-24 16:39:24 +05:30
laurenspriem
e9064f6904 [mob][photos] Correct cluster progress counter 2024-05-24 16:29:00 +05:30
ashilkn
022448155d [mob][photos] Bump up version to v0.8.111 2024-05-24 15:48:39 +05:30
ashilkn
ed830dc387 Merge branch 'main' into migrate_files_db_to_sqlite_async 2024-05-24 15:04:50 +05:30
laurenspriem
0d21fc77b5 [mob][photos] Keep ML settings page awake 2024-05-24 14:45:16 +05:30
Manav Rathi
b26c6e9c0d [web] Auth - Improve HOTP support (#1842)
- Use HOTP counter
- Don't advance the bar for HOTPs
2024-05-24 14:43:57 +05:30
ashilkn
a79d11c263 [mob][photos] Add more info in error message 2024-05-24 14:43:39 +05:30
ashilkn
a470ed4dfa Merge branch 'main' into migrate_files_db_to_sqlite_async 2024-05-24 14:39:46 +05:30
ashilkn
500d7da306 [mob][photos] Remove log lines used for testing 2024-05-24 14:39:16 +05:30
Manav Rathi
057d11f39b Fix typo 2024-05-24 14:38:49 +05:30
Manav Rathi
c9de6d7a82 Don't advance the bar for HOTPs 2024-05-24 14:35:59 +05:30
Manav Rathi
698ac9f29e Use HOTP counter 2024-05-24 14:30:05 +05:30
ashilkn
637adb4617 [mob][photos] Simplify how FilesDB migrates 2024-05-24 14:21:02 +05:30
Manav Rathi
a0d26c860c [web] Fix auth ticker (#1841) 2024-05-24 14:16:32 +05:30
Manav Rathi
bd2444d353 [web] Fix auth ticker 2024-05-24 14:11:56 +05:30
Manav Rathi
ca24a86179 [web] Steam support on web version of auth (#1840) 2024-05-24 14:01:06 +05:30
Manav Rathi
fffe96a4c7 Tweak 2024-05-24 13:49:21 +05:30
Manav Rathi
0ec75c2435 Parse the type 2024-05-24 13:47:11 +05:30
Manav Rathi
cb78c848d6 Impl 2024-05-24 13:36:55 +05:30
Manav Rathi
6594db9393 Encode counter 2024-05-24 13:26:16 +05:30
Manav Rathi
f6c40ee67d fromBase32 is exposed in the library API 2024-05-24 13:18:42 +05:30
Manav Rathi
36aa33ed5a Move to separate file 2024-05-24 13:08:41 +05:30
Neeraj Gupta
776dba4fb0 Face small improvements (#1839)
## Description

- Fix embeddings fetch issue
- Decrypt embeddings in computer
- Change clustering sorting and remove restrictions
- Cleaned up faces status page


## Tests

Tested in debug mode on pixel phone.
2024-05-24 12:52:41 +05:30
laurenspriem
7f49f530c5 [mob][photos] Bump 2024-05-24 12:47:10 +05:30
laurenspriem
ef6fe80944 [mob][photos] Fix 400 on embedding fetch 2024-05-24 12:44:01 +05:30
Manav Rathi
370b28f9e4 Type 2024-05-24 12:39:06 +05:30
Manav Rathi
05e737cb11 Add steam as a type 2024-05-24 12:32:58 +05:30
laurenspriem
0fdb58eda1 [mob][photos] Force clustering first if too many unclustered faces 2024-05-24 12:30:22 +05:30
Manav Rathi
1ce90839fe Remove type from auth UI 2024-05-24 12:18:28 +05:30
Manav Rathi
697946f415 Scaffold 2024-05-24 12:12:06 +05:30
laurenspriem
cc91cb8012 [mob][photos] Correct mistake 2024-05-24 11:16:40 +05:30
Manav Rathi
754de7065f [web] Auth cleanup - Part 3/3 (#1838)
Prep done.
2024-05-24 11:02:45 +05:30
laurenspriem
5587373b42 [mob][photos] Remove clustering restriction based on indexed amount 2024-05-24 11:00:05 +05:30
laurenspriem
f1d1a4a9e1 [mob][photos] Clustering sort to cluster new files first 2024-05-24 10:57:27 +05:30
Manav Rathi
dc38a8bc9f Account for node/browser discrepancy 2024-05-24 10:51:19 +05:30
laurenspriem
edf9f743f4 [mob][photos] Prefer using getFileIdFromFaceId 2024-05-24 10:27:16 +05:30
Manav Rathi
fec040e528 Tweak error report 2024-05-24 10:20:58 +05:30
laurenspriem
86f96a5713 [mob][photos] Show intermediate clustering results 2024-05-24 10:19:24 +05:30
laurenspriem
c3fb472287 [mob][photos] Fix clustering progress number 2024-05-24 10:18:17 +05:30
Manav Rathi
eaf8b9cebc Also include same workaround as mobile app 2024-05-24 10:10:59 +05:30
Manav Rathi
2ce9212457 We encodeURIComponent the pathname 2024-05-24 09:58:50 +05:30
laurenspriem
4fa59ce258 [mob][photos] Common ml util for getting indexable files across faces and clip 2024-05-24 09:56:10 +05:30
ashilkn
320f79bb52 Merge branch 'main' into migrate_files_db_to_sqlite_async 2024-05-24 09:53:44 +05:30
Manav Rathi
59ed89cba1 .get returns null when the property is not present 2024-05-24 09:49:20 +05:30
Manav Rathi
623b71715d Wrap 2024-05-24 09:42:23 +05:30
laurenspriem
a74943698f Merge remote-tracking branch 'origin/main' into face_small_improvements 2024-05-24 09:37:53 +05:30
Manav Rathi
bfe8fd83ac Take 2 2024-05-24 09:29:54 +05:30
Manav Rathi
0a01cac57b Take 1 (incorrect) 2024-05-24 09:27:28 +05:30
Crowdin Bot
b7f248fa93 New Crowdin translations by GitHub Action 2024-05-24 02:06:42 +00:00
Manav Rathi
d814b6cdf0 Use standard URL parsing - WIP 1 2024-05-23 21:01:18 +05:30
Manav Rathi
1712bf60cb [web] Auth cleanup - Part 2/x (#1834)
Preparing for steam support (sibling of
https://github.com/ente-io/ente/pull/1820)
2024-05-23 20:36:08 +05:30
Manav Rathi
369a5a5233 lf 2024-05-23 20:19:20 +05:30
Manav Rathi
9bae31d748 Parse 2024-05-23 19:38:23 +05:30
Manav Rathi
11453b327f Improve docs with hints from otpauth
https://github.com/hectorm/otpauth
2024-05-23 19:34:53 +05:30
Manav Rathi
7780c1c7b7 Move to the correct place 2024-05-23 19:29:56 +05:30
Manav Rathi
0f1c98d0d0 Reword 2024-05-23 19:22:45 +05:30
Manav Rathi
48fcbdc98c Reword 2024-05-23 19:10:42 +05:30
Manav Rathi
90d0196d47 Extract logic 2024-05-23 19:06:06 +05:30
ashilkn
484d2dc6cb Merge branch 'main' into migrate_files_db_to_sqlite_async 2024-05-23 19:04:07 +05:30
Ashil
30a8691c7f [mob][photos] Fix infinite loading on searching (#1830)
## Description

Search was infinitely loading even after all search results are ready.
2024-05-23 18:59:36 +05:30
Manav Rathi
69cea6786d Redistr 2024-05-23 18:54:55 +05:30
laurenspriem
ccac5e73a3 [mob][photos] Remove found faces from status 2024-05-23 18:13:47 +05:30
laurenspriem
3e79c8cf28 [mob][photos] Decrypt remote embeddings in computer 2024-05-23 18:12:41 +05:30
ashilkn
a63558a309 [mob][photos] Resolve merge conflicts and merge main 2024-05-23 17:36:10 +05:30
Neeraj Gupta
31dee1249d Steam Authenticator migration guide (#1825)
A quick guide on how to use steamguard-cli to generate a Steam 2FA QR
code for Ente Auth

Inspired by
https://github.com/beemdevelopment/Aegis/wiki/Adding-Steam-to-Aegis-from-steamguard-cli,
but updated to utilize the latest flags provide by the steamguard-cli

addresses this:
https://github.com/ente-io/ente/discussions/1038#discussioncomment-9520070
2024-05-23 17:13:50 +05:30
Neeraj Gupta
e5a293a6ab Dart UI isolate fix (#1829)
## Description

Forgot to bump version in previous PR
2024-05-23 17:10:08 +05:30
laurenspriem
ffcb68b32f [mob][photos] Bump 2024-05-23 17:05:15 +05:30
laurenspriem
a8af90dfee [mob][photos] Bump 2024-05-23 17:02:47 +05:30
Neeraj Gupta
ca0474faca Updated submodule mobile/thirdparty/flutter to 3.22.1 2024-05-23 17:00:33 +05:30
Neeraj Gupta
b469985277 Removed submodule mobile/thirdparty/isar 2024-05-23 16:58:51 +05:30
Neeraj Gupta
2a5dacb460 Merge branch 'main' into f-droid 2024-05-23 16:55:27 +05:30
Neeraj Gupta
6ee38cb291 Dart UI isolate fix (#1828)
## Description

- Fix for using dart_ui_isolate package properly

## Test

Neeraj tested it
2024-05-23 16:45:17 +05:30
laurenspriem
3810df1b20 [mob][photos] Fix for dart_ui_isolate 2024-05-23 16:37:34 +05:30
laurenspriem
cc8e345a17 Revert "[mob][photos] Revert back to FlutterIsolate"
This reverts commit c4a6011621.
2024-05-23 16:35:45 +05:30
laurenspriem
63653411b8 [mob][photos] Logs 2024-05-23 16:33:21 +05:30
laurenspriem
c4a6011621 [mob][photos] Revert back to FlutterIsolate 2024-05-23 16:32:25 +05:30
Manav Rathi
1ee52c780f [desktop] Allow refreshing when inside an album (#1827)
Steps to reproduce on Linux:

- Open an album
- Open a photo
- View > Reload

Causes a 404 page to be displayed.
2024-05-23 16:17:41 +05:30
Manav Rathi
b402662c09 [desktop] Allow refreshing when inside an album
Steps to reproduce on Linux:

- Open an album
- Open a photo
- View > Reload

Causes a 404 page to be displayed.
2024-05-23 16:13:21 +05:30
Rex Ng
51756d45d9 Steam Authenticator migration guide
guide on how to use steamguard-cli to generate a qr code for Ente Auth
2024-05-23 17:41:15 +08:00
Neeraj Gupta
a3bb7ad85a [mob][photos] Use flutter 3.22 for internal build (#1824) 2024-05-23 14:51:44 +05:30
laurenspriem
17058299c1 [mob][photos] Use flutter 3.22 for internal build 2024-05-23 14:50:37 +05:30
Laurens Priem
65de02d8d9 Face fix (#1823)
## Description

- Bug fixes
- Logging

## Tests

Tested on my pixel phone with remote embedding fetch disabled.
2024-05-23 14:42:04 +05:30
Laurens Priem
1f9e222d6e Merge branch 'main' into face_fix 2024-05-23 14:40:26 +05:30
Manav Rathi
3d96be6c27 [desktop] Keep integral millisecond precision for modified time (#1822)
Fixes the following upload:

> metadata: {title: xxx.jpeg, creationTime: 1715925330480368.8,
modificationTime: 1715925330480368.8, latitude: null, longitude: null,
fileType: 0, hash: ...}

Related: https://github.com/ente-io/ente/pull/1821
2024-05-23 14:38:31 +05:30
laurenspriem
1bbe495306 [mob][photos] Bump 2024-05-23 14:36:17 +05:30
laurenspriem
a76f3ca1b3 [mob][photos] Logging 2024-05-23 14:35:22 +05:30
laurenspriem
7800b7db32 [mob][photos] Regularly check for wifi 2024-05-23 14:35:15 +05:30
Manav Rathi
ea2a355bcc Revert to the behaviour of the existing 1.6.63 client 2024-05-23 14:34:24 +05:30
laurenspriem
d585b75514 [mob][photos] Logging 2024-05-23 14:27:29 +05:30
Manav Rathi
5caa32b1e0 Also add for zip reading 2024-05-23 14:27:17 +05:30
laurenspriem
11402d7819 [mob][photos] Fix indexing pausing 2024-05-23 14:27:12 +05:30
Ashil
a41f705dad Upgrade to flutter 3.22.0 (#1804) 2024-05-23 14:17:47 +05:30
Neeraj Gupta
69b808e62c [mobile] New translations (#1788)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-app)
2024-05-23 14:10:39 +05:30
laurenspriem
1e1e629891 [mob][photos] Set parallel fetch to five 2024-05-23 14:07:04 +05:30
Manav Rathi
a7e96d055c [web] Auth cleanup - Part 1/x (#1820)
In preparation for adding steam support
2024-05-23 13:42:34 +05:30
Manav Rathi
5e2261f793 Unclass 2024-05-23 13:36:44 +05:30
Manav Rathi
206be5c16f Document 2024-05-23 13:19:05 +05:30
Manav Rathi
41c87efc5a Use the union 2024-05-23 13:07:33 +05:30
Manav Rathi
171af35d85 Reword 2024-05-23 13:06:27 +05:30
Manav Rathi
99f47dc1ae Move into the function 2024-05-23 13:03:31 +05:30
Neeraj Gupta
cc7a516eba [mob][photos] Bump (#1819)
## Description

## Tests
2024-05-23 13:00:41 +05:30
Manav Rathi
26436f116f Nonopt 2024-05-23 12:58:47 +05:30
laurenspriem
9eab415906 [mob][photos] Bump 2024-05-23 12:58:42 +05:30
Manav Rathi
14655e5633 Fix 2024-05-23 12:47:29 +05:30
Manav Rathi
51dc8d1de6 Rearrange 2024-05-23 12:40:35 +05:30
Manav Rathi
51568e6c56 non optional 2024-05-23 12:20:04 +05:30
Manav Rathi
d2743f4121 Unclass 2024-05-23 12:16:02 +05:30
Neeraj Gupta
05c50e78bc Face flag (#1818)
## Description

Changes faces flag to use beta flag.
2024-05-23 12:13:46 +05:30
laurenspriem
9ac7b29e96 [mob][photos] Bump 2024-05-23 12:12:37 +05:30
laurenspriem
42106a72b3 [mob][photos] Change faces flag 2024-05-23 12:12:19 +05:30
Manav Rathi
2504046e26 Move 2024-05-23 12:11:11 +05:30
Manav Rathi
a104f36561 Inline 2024-05-23 12:06:54 +05:30
Manav Rathi
b26afdcf2e Inline 2024-05-23 11:43:35 +05:30
Manav Rathi
bf707ae02d Inline 2024-05-23 11:37:55 +05:30
Manav Rathi
68648d2f6c Remove nesting 2024-05-23 11:35:44 +05:30
Manav Rathi
371b8bf9cc [web] Rework the video chunk decryptor stream logic (#1817) 2024-05-23 10:56:24 +05:30
Manav Rathi
3b89471b87 Use a standard converter 2024-05-23 10:17:11 +05:30
Manav Rathi
8a2117f9d4 Chunk 2024-05-23 10:09:47 +05:30
Manav Rathi
132ddd3648 Rework the video chunk decryptor stream logic
When running on Ubuntu 24 arm64 in the desktop app (didn't test on web0, trying
to open certain videos fails with:

> [rndr] [error] Failed to process file stream: TypeError: Failed to execute
  'enqueue' on 'ReadableStreamDefaultController': Cannot enqueue a chunk into a
  closed readable stream

While not specifically fixing that issue, I'm first rewriting this to use the
more normal (recommended?) approach of implementing a pull instead of doing
everything in start. Maybe that fixes the issue, otherwise at least one less
ghost for me to worry about.
2024-05-23 09:51:29 +05:30
ashilkn
7aa26a950d [mob][photos] Bump up to version 0.8.103 2024-05-22 20:44:10 +05:30
ashilkn
b74be0b8f1 Merge branch 'main' into migrate_files_db_to_sqlite_async 2024-05-22 20:41:31 +05:30
Neeraj Gupta
048aaee40d [mob][photos] Bump (#1814)
## Description

Bump for internal release, which I forgot in previous PR.
2024-05-22 18:58:35 +05:30
ashilkn
8caa559812 [mob][photos] Resolve merge conflicts and merge main 2024-05-22 18:33:43 +05:30
laurenspriem
04475110ce [mob][photos] Bump 2024-05-22 17:56:43 +05:30
Laurens Priem
02366eb27f [mob][photos] Small fix in index scheduling (#1813)
## Description

- Small fix for scenario where MLController fired quicker than we could
pause

## Tests

Tested on my pixel phone.
2024-05-22 17:21:30 +05:30
laurenspriem
6c3953e855 [mob][photos] Small fix in index scheduling 2024-05-22 17:11:11 +05:30
Laurens Priem
201286f59a Ml fixes (#1812)
## Description

- Fixed some issues in face indexing
- Cleaned up some functions in FaceMlService
- Hooked iOS onto MLController for battery check, for faces and clip

## Tests

Tested on my Pixel phone only
2024-05-22 16:56:16 +05:30
Prateek Sunal
b00bffd785 Ente Auth: Add support for Steam domain (steampowered.com) as an issuer (#1809)
## Description
I don't think I'm the only one using website domains as issuers of TOTP
codes. This change will add support for the Steam domain
(steampowered.com) as an issuer.
2024-05-22 16:32:33 +05:30
laurenspriem
d477b55071 [mob][photos] Bump 2024-05-22 16:23:15 +05:30
Vladyslav Pashynskykh
227b7ddba0 Use uri.host instead of issuer in _GetDigits 2024-05-22 13:51:07 +03:00
ashilkn
22fc67c8c3 [mob][photos] Remove unnecessary parameters 2024-05-22 16:17:05 +05:30
laurenspriem
d12f570178 [mob][photos] Logging 2024-05-22 16:15:30 +05:30
Vladyslav
70dc660f5a Merge branch 'ente-io:main' into main 2024-05-22 13:37:42 +03:00
laurenspriem
e4c379963f [mob][photos] Logging 2024-05-22 16:04:26 +05:30
laurenspriem
e44be63586 [mob][photos] Logs 2024-05-22 15:54:56 +05:30
laurenspriem
6d5436c885 [mob][photos] Hook iOS into MLController for temperature check only 2024-05-22 15:50:14 +05:30
Vladyslav Pashynskykh
d75abcf6a7 Ente Auth: Add support for Steam domain used as issuer 2024-05-22 13:02:11 +03:00
laurenspriem
b3229785a0 [mob][photos] Small fix 2024-05-22 15:26:03 +05:30
Prateek Sunal
bd8757bbb8 [FIX (Auth)] Destroy window on exit, Color scheme fix, Hide code for steam fix (#1810)
## Description

## Tests
2024-05-22 15:24:08 +05:30
laurenspriem
92bafa7c38 [mob][photos] Temp fix for double assigned persons 2024-05-22 15:19:07 +05:30
laurenspriem
df756076e8 [mob][photos] Small cleanup of FaceMlService 2024-05-22 14:52:13 +05:30
laurenspriem
ffc9eecbd1 [mob][photos] Move listeners inside init 2024-05-22 14:45:16 +05:30
laurenspriem
678efd1e8b [mob][photos] Refactor of flags for faceMlService 2024-05-22 14:41:44 +05:30
ashilkn
cb9ac0d939 [mob][photos] bump up version to 0.8.100 2024-05-22 14:21:31 +05:30
ashilkn
f513473362 [mob][photos] Check db version when sqflite was used and run only migrations that are necessary using sqlite_async
Tested adding a new migration and it works. Tested two cases (a)Fresh install (b)Opening app with new migration added and the last db migration was done when sqflite was used
2024-05-22 14:20:29 +05:30
Prateek Sunal
9ab82621b9 fix(auth): hide codes reg ex, match every non-whitespace character 2024-05-22 14:08:09 +05:30
Prateek Sunal
59c2c7e343 fix(auth): color scheme for pinned 2024-05-22 14:06:41 +05:30
Prateek Sunal
8c3c0b2128 fix(auth): destroy window when exiting from tray 2024-05-22 13:30:42 +05:30
Vladyslav Pashynskykh
954581093d Ente Auth: Add support for Steam domain used as issuer 2024-05-22 09:51:12 +03:00
laurenspriem
78afae4013 [mob][photos] Lower file download limit 2024-05-22 11:40:22 +05:30
laurenspriem
7811c58214 [mob][photos] Inline 2024-05-22 11:08:51 +05:30
laurenspriem
85a8f6b7cf [mob][photos] MLController lower interaction times for now 2024-05-22 10:47:08 +05:30
Manav Rathi
f60e750848 [web] Inline sidebar code (#1803)
... to make it more manageable.
2024-05-21 20:04:02 +05:30
Manav Rathi
a086f36433 Fix type 2024-05-21 19:38:42 +05:30
Manav Rathi
4cb49c0b4a Fix warning about required key 2024-05-21 19:31:52 +05:30
Manav Rathi
334587474f Inline 2024-05-21 19:20:50 +05:30
Manav Rathi
0d52737c49 Inline 2024-05-21 19:18:54 +05:30
Manav Rathi
d4dc080231 Inline 2024-05-21 19:14:50 +05:30
Manav Rathi
f8d35c3dcf Inline 2024-05-21 19:10:29 +05:30
Manav Rathi
c20b9fa5fa Rename 2024-05-21 19:07:04 +05:30
Manav Rathi
6a8fa727a9 Inline 2024-05-21 19:06:30 +05:30
Manav Rathi
7712a8bd10 Inline 2024-05-21 18:45:53 +05:30
Manav Rathi
4feb8fd1f1 Inline 2024-05-21 18:44:36 +05:30
Manav Rathi
994876911a Inline 2024-05-21 18:42:42 +05:30
Manav Rathi
d6398bd8fc Inline 2024-05-21 18:39:42 +05:30
Manav Rathi
43064b617a Inline 2024-05-21 18:36:26 +05:30
ashilkn
4fb9e75394 [mob][photos] Bump up version to 0.8.99 2024-05-21 18:36:01 +05:30
ashilkn
ee348f5585 Merge branch 'main' into migrate_files_db_to_sqlite_async 2024-05-21 18:34:48 +05:30
ashilkn
eaca151a9f [mob][photos] Minor change 2024-05-21 18:34:11 +05:30
Manav Rathi
789783a370 Inline 2024-05-21 18:34:06 +05:30
Manav Rathi
9db1197c19 Inline 2024-05-21 18:33:08 +05:30
Manav Rathi
56a71c2cd8 Inline 2024-05-21 18:31:55 +05:30
ashilkn
e3ea22f479 [mob][photos] add comment 2024-05-21 17:44:38 +05:30
ashilkn
5a017616f5 [mob][photos] Fix sqlite command syntax errors 2024-05-21 17:10:42 +05:30
Neeraj Gupta
608c97603b Mobile face (#1799)
## Description

One fix related to DB, rest just more logging
2024-05-21 17:02:40 +05:30
laurenspriem
a9721e7744 [mob][photos] Bump 2024-05-21 17:02:14 +05:30
Neeraj Gupta
44e5af0434 [mob] Fix bug during logout (#1800)
## Description

## Tests
Tested locally
2024-05-21 16:59:20 +05:30
Neeraj Gupta
dfbdc94e61 [mob] Fix bug during logout 2024-05-21 16:58:54 +05:30
laurenspriem
71d3427879 [mob][photos] Logging 2024-05-21 16:56:00 +05:30
ashilkn
159fdf83ad [mob][photos] Migrate to sqlite_async(14) 2024-05-21 16:54:09 +05:30
laurenspriem
d235ff1035 [mob][photos] Inline 2024-05-21 16:53:52 +05:30
ashilkn
b2a359ca59 [mob][photos] Migrate to sqlite_async(13): Use getAll() instead of execute() for SELECT commands 2024-05-21 16:53:49 +05:30
laurenspriem
ee5be7f339 [mob][photos] Make sure faces tables are initialized 2024-05-21 16:43:55 +05:30
Neeraj Gupta
9b0e8b265d [auth] New translations (#1789)
New translations from
[Crowdin](https://crowdin.com/project/ente-authenticator-app)
2024-05-21 16:43:18 +05:30
laurenspriem
c0f243cee0 [mob][photos] Logging 2024-05-21 16:37:06 +05:30
laurenspriem
1bd2033a63 [mob][photos] Make sure clustering can run again after exception 2024-05-21 16:34:46 +05:30
ashilkn
cae3748995 [mob][photos] Resolve conflicts and merge main 2024-05-21 16:32:03 +05:30
Manav Rathi
982f0d8f77 [web] Improve consistency with mobile impl (#1797) 2024-05-21 16:12:57 +05:30
ashilkn
49e64b3d4c [mob][photos] Fix issue with EnteFile not having location data 2024-05-21 16:12:44 +05:30
Manav Rathi
9e26b81adf We don't need them 2024-05-21 16:03:47 +05:30
Manav Rathi
94cc26aead xMin, yMin to x, y in the remote format 2024-05-21 15:51:55 +05:30
Neeraj Gupta
d4b4007d96 [Auth] Fix parsing of code display when issuer/account contains special character (#1795)
## Description

## Tests
2024-05-21 14:48:12 +05:30
Neeraj Gupta
2daf5c8fde [auth] Bump version 3.0.4+304 2024-05-21 14:45:19 +05:30
Neeraj Gupta
7a5d4cedf6 Add log 2024-05-21 14:42:51 +05:30
Neeraj Gupta
2abc57f981 Minor refactor 2024-05-21 14:36:53 +05:30
Manav Rathi
2d5894c5d6 Convert point and box to regular objects 2024-05-21 14:28:33 +05:30
laurenspriem
0d43c0d326 Merge remote-tracking branch 'origin/main' into mobile_face 2024-05-21 14:06:04 +05:30
laurenspriem
1b46e159da [mob][photos] Put x and y instead of xMin and yMin in embeddingsJSON 2024-05-21 14:03:19 +05:30
Neeraj Gupta
a4d6fece41 Fix OTPAuthUrl format 2024-05-21 13:50:18 +05:30
Neeraj Gupta
86b24a4ccf [auth] Add safe parsing of code display 2024-05-21 13:34:01 +05:30
Neeraj Gupta
8520cdd1bb Gracefully handle failure in codeDisplay parsing 2024-05-21 13:05:10 +05:30
Neeraj Gupta
0655617a9e Improve log 2024-05-21 12:59:39 +05:30
Manav Rathi
4dbc8ab31e [web] ML prune todos (#1791) 2024-05-21 11:56:13 +05:30
Manav Rathi
1a376a1a9b Update deps 2024-05-21 11:52:01 +05:30
Manav Rathi
6e82964bf2 Post rebase 2024-05-21 11:50:13 +05:30
Manav Rathi
fdd5ffd45c Rename 2024-05-21 11:48:07 +05:30
Manav Rathi
ccb5c48c7d Comment 2024-05-21 11:46:49 +05:30
Manav Rathi
074d315c9f We need both 2024-05-21 11:46:48 +05:30
Manav Rathi
b8734fcc6c Add TODO 2024-05-21 11:46:27 +05:30
Manav Rathi
a8229f325d Document and move 2024-05-21 11:46:27 +05:30
Manav Rathi
5768edb3a5 Thank you Laurens! 2024-05-21 11:46:27 +05:30
Manav Rathi
8bc80d2821 Merge 2024-05-21 11:46:26 +05:30
Manav Rathi
825f5ff88d Inline 2024-05-21 11:45:56 +05:30
Manav Rathi
5aee42d59d Remove calculation 2024-05-21 11:45:56 +05:30
Manav Rathi
c8be764f35 Remove unused rotation 2024-05-21 11:45:55 +05:30
Manav Rathi
4e2f7c95e3 [web][photos] solve TODOs (#1790)
## Description

- Removed redundant rotation parameter in cropping
- Reviewed TODO regarding dependency: no changes
- Included proper Non-Max Suppression for filtering faces, same as on
Mobile
2024-05-21 11:42:26 +05:30
laurenspriem
56cd3a9949 [web][photos] Rename cropWithRotation to cropImage 2024-05-21 11:39:46 +05:30
Manav Rathi
12ce21cd08 [web] New translations (#1787)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2024-05-21 11:38:47 +05:30
laurenspriem
ae5496f306 [web][photos] solve TODOs 2024-05-21 11:35:07 +05:30
Crowdin Bot
d23638c30d New Crowdin translations by GitHub Action 2024-05-21 02:05:40 +00:00
Crowdin Bot
5724fad813 New Crowdin translations by GitHub Action 2024-05-21 01:57:44 +00:00
Crowdin Bot
ffe54f591c New Crowdin translations by GitHub Action 2024-05-21 01:40:33 +00:00
Prateek Sunal
13f9358a4f [FIX] Auth desktop icons and steam code (#1783)
## Description

## Tests
2024-05-20 23:06:34 +05:30
Prateek Sunal
4289ab2393 chore(auth): capitalize app name 2024-05-20 23:01:32 +05:30
Prateek Sunal
4032952168 fix(auth): show progress for steam too 2024-05-20 22:59:44 +05:30
Prateek Sunal
d104fc6788 fix(auth): support stream codes completely 2024-05-20 22:59:22 +05:30
Prateek Sunal
85396158aa chore(auth): bump version 2024-05-20 21:22:35 +05:30
Prateek Sunal
3d91b548db Merge remote-tracking branch 'origin' into auth-deskicons 2024-05-20 21:18:11 +05:30
Prateek Sunal
e500347fc5 fix(auth): update all desktop icons 2024-05-20 21:17:37 +05:30
Manav Rathi
9c667efee5 [web] Don't sync CLIP emeddings in the web app (#1782) 2024-05-20 21:10:21 +05:30
Manav Rathi
0877d9c788 [web] Don't sync CLIP emeddings in the web app 2024-05-20 20:59:05 +05:30
Manav Rathi
be9f8b8b1d [desktop] App name is always ente now
Fixed in 7049a901f8
2024-05-20 20:09:42 +05:30
Neeraj Gupta
b1314729b1 Mobile faces v0 (#1776) 2024-05-20 17:46:38 +05:30
Neeraj Gupta
c84acfd588 [auth] Bump version (#1779)
## Description

## Tests
2024-05-20 17:37:49 +05:30
Neeraj Gupta
41ba5b79e3 [auth] Bump version 2024-05-20 17:37:28 +05:30
Neeraj Gupta
0e957cbecb [photos] Bump version 0.8.97+617 2024-05-20 17:33:22 +05:30
Manav Rathi
6676c67cc3 [desktop] Fix logout (#1778) 2024-05-20 17:31:11 +05:30
Neeraj Gupta
57e9ef10af Fix lint 2024-05-20 17:30:57 +05:30
Neeraj Gupta
ee7c1bafc3 Enable remote fetch 2024-05-20 17:29:09 +05:30
Manav Rathi
dae9bdd583 [desktop] Fix logout 2024-05-20 17:21:10 +05:30
Neeraj Gupta
93473ebd12 Lint fix 2024-05-20 17:17:37 +05:30
Neeraj Gupta
e9be2b46a1 Merge branch 'mobile_face' of https://github.com/ente-io/auth into mobile_face 2024-05-20 17:09:46 +05:30
Neeraj Gupta
e4bec56ea3 Remove unused isar submodule 2024-05-20 17:09:23 +05:30
Neeraj Gupta
1e3fca2835 Remove unused submodule 2024-05-20 17:09:00 +05:30
Neeraj Gupta
58851f2d6e Remove unused submodule 2024-05-20 17:08:01 +05:30
laurenspriem
5172ce3126 Merge remote-tracking branch 'origin/mobile_face' into mobile_face 2024-05-20 16:56:53 +05:30
laurenspriem
3e1e26feb0 [mob][photos] Bigger and separate resources pool for face generation 2024-05-20 16:54:22 +05:30
Neeraj Gupta
aa8e128c44 Merge branch 'main' into mobile_face 2024-05-20 16:42:11 +05:30
Neeraj Gupta
cacb50b040 Fix git submodule 2024-05-20 16:40:21 +05:30
laurenspriem
58dcceca9f [mob][photos] Revert regression 2024-05-20 15:12:12 +05:30
laurenspriem
84f7d20966 [mob][photos] Put faces behind feature flag 2024-05-20 14:51:35 +05:30
Manav Rathi
41b22abc66 [desktop] ML touchups (#1777) 2024-05-20 14:49:50 +05:30
Manav Rathi
7049a901f8 Fix the app version in debug mode 2024-05-20 14:46:18 +05:30
Manav Rathi
cb86ab84f3 Send user agent 2024-05-20 14:28:27 +05:30
laurenspriem
76848c826e [mob][photos] Change embeddings server structure 2024-05-20 14:18:34 +05:30
Manav Rathi
69b4fde936 Update TODOs based on discussion 2024-05-20 13:57:52 +05:30
Manav Rathi
c2edac6192 Fix error I observed in logs
> TypeError: Cannot read properties of undefined (reading 'method')
2024-05-20 11:43:10 +05:30
Manav Rathi
d7bd0f0200 [desktop] Fix ML put error 2024-05-20 11:33:43 +05:30
Manav Rathi
07ba9ef1d6 [desktop] ML: Clarify that existing indexed people will not show in this update (#1775) 2024-05-20 10:48:22 +05:30
Manav Rathi
10934b08a8 Handle first search on app start 2024-05-20 10:39:11 +05:30
laurenspriem
09b2732d76 [mob][photos] Use hidden cached files for count 2024-05-20 10:23:07 +05:30
Manav Rathi
34a8bdcf47 Remove unnecessary rounding 2024-05-20 10:15:41 +05:30
Manav Rathi
78420f65ab Case 2024-05-20 10:09:41 +05:30
Manav Rathi
20dcf3e473 Annotate 2024-05-20 10:04:33 +05:30
Manav Rathi
e97225fa10 Remove 2024-05-20 09:57:42 +05:30
Manav Rathi
476edd8cf5 Remove unused code paths
Only internal users come into such scenarios currently
2024-05-20 09:52:32 +05:30
Manav Rathi
a3aa3755c6 [desktop] Clarify that existing indexed people will not show
These auto complete suggestions and the list of people in the photo details are
not shown when ML search is disabled, and it is disabled for non-internal users,
so updated the description.
2024-05-20 09:45:55 +05:30
laurenspriem
a48c8b481e [mob][photos] Small changes 2024-05-20 09:41:11 +05:30
Manav Rathi
531547cd48 [web] Fix race condition in initialization of search worker (#1772)
During app init, two worker instances would get created in some cases
and two getInstances raced because of the await. This was causing the
search results to be empty until the page is reloaded (since the files
array was empty in the worker that got assigned, but the files would get
set to the other worker instance that lost the race).
2024-05-19 20:26:34 +05:30
Manav Rathi
97b964fd6c [web] Fix race condition in initialization of search worker
During app init, two worker instances would get created in some cases and two
getInstances raced because of the await. This was causing the search results to
be empty until the page is reloaded (since the files array was empty in the
worker that got assigned, but the files would get set to the other worker
instance that lost the race).
2024-05-19 20:21:37 +05:30
Manav Rathi
69f06f753c [web] ML cleanup - Part 7/x (#1771) 2024-05-19 20:19:59 +05:30
Manav Rathi
e5a96222b9 Use 2024-05-19 19:14:48 +05:30
Manav Rathi
5c92bc5b89 Reduce scope 2024-05-19 19:08:07 +05:30
Manav Rathi
f692638ede Try to find a split point 2024-05-19 19:03:25 +05:30
Manav Rathi
c2e42266a6 Remove unused 2024-05-19 18:57:35 +05:30
Manav Rathi
2db8c779b4 Convert to function (in preparation of declassing) 2024-05-19 18:56:42 +05:30
Manav Rathi
2d9831bc59 Move 2024-05-19 18:15:56 +05:30
Manav Rathi
b026d861ff Relative 2024-05-19 18:10:13 +05:30
Manav Rathi
d9ba96b928 lf 2024-05-19 17:58:37 +05:30
Manav Rathi
ffcf015e1c lf 2024-05-19 16:58:24 +05:30
Manav Rathi
b71b6142c5 Tweak 2024-05-19 16:57:19 +05:30
Manav Rathi
568e470752 Inline 2024-05-19 16:51:07 +05:30
Manav Rathi
faf415277e Trim 2024-05-19 16:46:01 +05:30
Manav Rathi
bfc81b1ab6 Inline 2024-05-19 16:44:19 +05:30
Manav Rathi
d99c10c15e Inline 2024-05-19 16:41:42 +05:30
Manav Rathi
d39cf15f26 Prune 2024-05-19 16:31:43 +05:30
Manav Rathi
37abeac87b Comment out 2024-05-19 15:36:37 +05:30
Manav Rathi
7f5c951910 Split 2024-05-19 15:34:43 +05:30
Manav Rathi
87c7999370 Reduce API surface for migration 2024-05-19 15:21:45 +05:30
Manav Rathi
ee894a668c Reduce distance to server type 2024-05-19 13:23:08 +05:30
Manav Rathi
6b5788539b Move out 2024-05-19 13:17:58 +05:30
Manav Rathi
9346ce3255 Prune 2024-05-19 13:12:27 +05:30
Manav Rathi
40dfeb5bca Tweak 2024-05-19 12:57:47 +05:30
Manav Rathi
2e46f993f0 Remove duplicate alignment calculation 2024-05-19 12:50:31 +05:30
Manav Rathi
ded2402483 Rearrange 2024-05-19 12:43:24 +05:30
Manav Rathi
393a8f11dd Rearrange 2024-05-19 12:28:54 +05:30
Manav Rathi
82485ef9a1 Tweak 2024-05-19 12:24:17 +05:30
Manav Rathi
b36d3befe0 Split 2024-05-19 12:10:53 +05:30
Manav Rathi
e6ed6b4916 Tinker 2024-05-19 12:06:59 +05:30
Manav Rathi
6427c09f52 Don't let face crop save failures abort the entire indexing 2024-05-19 11:59:03 +05:30
Manav Rathi
9abc22ade5 Remove unused 2024-05-19 11:57:13 +05:30
Manav Rathi
1466ece701 Cache the caches 2024-05-19 11:54:00 +05:30
Neeraj Gupta
33a3eeb9b4 [server] Improve log (#1769)
## Description

## Tests
2024-05-19 08:35:29 +05:30
Neeraj Gupta
0949102959 Improve logs 2024-05-19 08:33:29 +05:30
Neeraj Gupta
367431bef8 Improve log 2024-05-19 08:31:32 +05:30
Neeraj Gupta
3bdb1e6277 [server] Remove fallback check as dc column was added with default dc b2 (#1768)
## Description

## Tests
2024-05-19 08:23:38 +05:30
Neeraj Gupta
113b776aea [server] Remove fallback check as dc column was added with default dc b2 2024-05-19 08:21:32 +05:30
Manav Rathi
99ed1bc9af Show saved crops 2024-05-19 07:18:18 +05:30
Manav Rathi
c1f0f67656 [meta] Prune gitignore (#1767)
About the auth dbs, discussed in chat: These files got created once when
debugging auth build for linux. They were probably accidental, so
removing them for now (will add back if there is a workflow when they
actively get recreated).
2024-05-18 21:28:22 +05:30
Manav Rathi
894acda782 [meta] Prune
About the auth dbs, discussed in chat: These files got created once when
debugging auth build for linux. They were probably accidental, so removing them
for now (will add back if there is a workflow when they actively get recreated).
2024-05-18 21:23:47 +05:30
Manav Rathi
b6a2985432 [web] ML cleanup - Part 6/x (#1766) 2024-05-18 20:57:24 +05:30
Manav Rathi
3ade7b797e Fix duplicate check 2024-05-18 20:50:35 +05:30
Manav Rathi
93c498b0f4 Remove unused context 2024-05-18 20:39:57 +05:30
Manav Rathi
6849041735 Tweak 2024-05-18 20:26:20 +05:30
Manav Rathi
a4494f5c6a Tweak 2024-05-18 20:23:31 +05:30
Manav Rathi
97adb89494 Tweak 2024-05-18 20:18:39 +05:30
Manav Rathi
fe8ff0a12a Remove redundant 2024-05-18 20:16:00 +05:30
Manav Rathi
8975546294 Simplify 2024-05-18 20:13:43 +05:30
Manav Rathi
acd3568dc6 Tinker 2024-05-18 20:06:29 +05:30
Manav Rathi
3b6760c65e Remove unused blazeflaze landmarks 2024-05-18 19:55:51 +05:30
Manav Rathi
6304d90b52 Inline 2024-05-18 19:50:13 +05:30
Manav Rathi
410b6e7d3e Tinker 2024-05-18 19:41:34 +05:30
Manav Rathi
a161203d0b Inline 2024-05-18 19:32:34 +05:30
Manav Rathi
c8623bab12 Cleanup 2024-05-18 17:42:27 +05:30
Manav Rathi
aa76448747 Shorten 2024-05-18 17:32:42 +05:30
Manav Rathi
139370c997 Shorten 2024-05-18 17:31:39 +05:30
Manav Rathi
4d5ba47be4 Sugar 2024-05-18 17:27:41 +05:30
Manav Rathi
3f18fb84a1 Rearrange 2024-05-18 17:20:42 +05:30
Manav Rathi
39a75430a5 Inline 2024-05-18 17:19:29 +05:30
Manav Rathi
c557e4a7a5 Inline 2024-05-18 16:56:18 +05:30
laurenspriem
bd28254021 [mob][photos] Fix fix trigger for iOS 2024-05-18 16:54:46 +05:30
Manav Rathi
a2e7231c37 Prune 2024-05-18 16:52:54 +05:30
Manav Rathi
9ba028b79d Isolate 2024-05-18 16:52:25 +05:30
laurenspriem
7263c45300 [mob][photos] More debug 2024-05-18 16:50:11 +05:30
Manav Rathi
8f43c3d712 Simplify 2024-05-18 16:19:55 +05:30
Manav Rathi
76cfae12a5 Point of use 2024-05-18 16:02:27 +05:30
Manav Rathi
b29436e160 Prune 2024-05-18 16:00:07 +05:30
Manav Rathi
bcbd805404 Inline 2024-05-18 15:58:41 +05:30
laurenspriem
613dffa03f [mob][photos] Small refactor 2024-05-18 15:58:03 +05:30
Manav Rathi
433d0e81fc Prune 2024-05-18 15:57:36 +05:30
Manav Rathi
bef7574c29 Trim 2024-05-18 15:53:10 +05:30
laurenspriem
131108a6db [mob][photos] Debug option to run indexing 2024-05-18 15:23:24 +05:30
laurenspriem
90c0ad08da [mob][photos] Remove jank 2024-05-18 15:22:41 +05:30
laurenspriem
a222e06634 [mob][photos] Fix breakup cluster for large clusters 2024-05-18 12:05:54 +05:30
laurenspriem
bcf78fb4b9 [mob][photos] generated intl 2024-05-18 12:05:00 +05:30
Manav Rathi
996d9ccda5 [web] ML cleanup - Part 5/x (#1762) 2024-05-18 11:06:04 +05:30
Manav Rathi
772215eddc Rearrange 2024-05-18 10:59:18 +05:30
Manav Rathi
e13f59606f Inline 2024-05-18 10:56:19 +05:30
Manav Rathi
4840214d89 Rearrange 2024-05-18 10:51:31 +05:30
Manav Rathi
b3b79c2b90 Rearrange 2024-05-18 10:48:09 +05:30
Manav Rathi
f25b4b37d0 Site of use 2024-05-18 10:46:34 +05:30
Manav Rathi
8a5bffc3e9 Remove unused 2024-05-18 10:43:44 +05:30
Manav Rathi
2791eeb270 Remove unused 2024-05-18 10:42:39 +05:30
Manav Rathi
bd3bdf64c2 Tweak 2024-05-18 10:40:49 +05:30
Manav Rathi
56aaad62be Tweak 2024-05-18 10:33:32 +05:30
Manav Rathi
88f9186be0 Split 2024-05-18 10:25:35 +05:30
Manav Rathi
9fa828e384 Restrict 2024-05-18 10:23:50 +05:30
Manav Rathi
42d767cac3 Shorten 2024-05-18 10:18:09 +05:30
Manav Rathi
17d78f23bb Shorten 2024-05-18 10:14:15 +05:30
Manav Rathi
246d44648b Reify 2024-05-18 10:11:16 +05:30
Manav Rathi
33d3428222 Move 2024-05-18 10:07:39 +05:30
Manav Rathi
295717ac2f Simplify 2024-05-18 09:59:53 +05:30
Manav Rathi
9808dce44d Pretty 2024-05-18 09:56:20 +05:30
Manav Rathi
fb81a59d4b Site of use 2024-05-18 09:51:42 +05:30
Manav Rathi
1edafd3568 [web] ML cleanup - Part 4/x (#1761) 2024-05-18 09:28:02 +05:30
Manav Rathi
0188749692 Prune 2024-05-18 09:21:17 +05:30
Manav Rathi
46ad045ed4 Merge 2024-05-18 09:19:14 +05:30
Manav Rathi
58193c0d7f Remove unused exports 2024-05-18 09:18:32 +05:30
Manav Rathi
87f60149e1 Remove DB dependency from indexer 2024-05-18 09:16:53 +05:30
Manav Rathi
ae70eb33dd Inline 2024-05-18 09:13:48 +05:30
Manav Rathi
e224ad19d3 Separate 2024-05-18 09:12:49 +05:30
Manav Rathi
f9346c56e9 Inline 2024-05-18 09:02:59 +05:30
Manav Rathi
e15460684d Inline 2024-05-18 08:51:57 +05:30
Manav Rathi
93cdf73a66 Inline 2024-05-18 08:50:48 +05:30
Manav Rathi
eaadc54184 Inline 2024-05-18 08:48:37 +05:30
Manav Rathi
5eb21fafbe Extract indexer 2024-05-18 08:43:01 +05:30
Manav Rathi
8edb506b29 Prune 2024-05-18 08:07:49 +05:30
Manav Rathi
a7e6b1bf5b Prune 2024-05-18 08:04:09 +05:30
Manav Rathi
0109602168 Inline 2024-05-18 08:03:17 +05:30
Manav Rathi
25ced9ce9d Prune 2024-05-18 08:00:42 +05:30
Manav Rathi
fcd4459e6d Move currently unused cluster stuff out of the way 2024-05-18 07:49:15 +05:30
Manav Rathi
295f4a0c2a Essence 2024-05-18 07:27:58 +05:30
Manav Rathi
512766ebed Essence 2024-05-18 07:21:43 +05:30
Manav Rathi
d4449d0f0b Remove noise 2024-05-18 07:10:24 +05:30
Manav Rathi
85562806a3 Prune 2024-05-18 07:07:48 +05:30
Manav Rathi
a18566ff86 Remove error message persistence 2024-05-18 07:05:47 +05:30
Manav Rathi
5c7361262d Prune 2024-05-18 07:00:46 +05:30
Neeraj Gupta
b00ee96dde [mob] Fix indexing trigger for iOS 2024-05-18 05:31:20 +05:30
Neeraj Gupta
ea587b6ccd [mob] Index hidden files 2024-05-18 05:31:04 +05:30
laurenspriem
af88756b5d [mob][photos] Don't show people results until clustering is mostly done 2024-05-17 18:39:07 +05:30
laurenspriem
df867b5957 [mob][photos] Undo change 2024-05-17 18:33:48 +05:30
laurenspriem
4bfb69dcc4 [mob][photos] Debug 2024-05-17 18:32:23 +05:30
laurenspriem
b1ccc39178 [mob][photos] More debug options 2024-05-17 18:15:43 +05:30
laurenspriem
b0ef3a070e Merge remote-tracking branch 'origin/mobile_face' into mobile_face 2024-05-17 17:52:48 +05:30
Neeraj Gupta
e331443691 [mob] Enable ml run on iOS 2024-05-17 17:47:10 +05:30
Neeraj Gupta
285b1f9527 Merge branch 'main' into mobile_face 2024-05-17 17:34:18 +05:30
laurenspriem
7a37eca4e6 [mob][photos] Refresh people section on people changed event 2024-05-17 17:33:31 +05:30
Prateek Sunal
19874e2186 chore: bump version to 301 2024-05-17 17:27:34 +05:30
Prateek Sunal
718b78adf0 chore(auth): update Podfile 2024-05-17 17:27:34 +05:30
Neeraj Gupta
fd63597ef3 [auth] iOS build changes (#1758)
## Description

## Tests
2024-05-17 17:27:11 +05:30
Neeraj Gupta
38ab7ae157 [auth] iOS build changes 2024-05-17 17:26:42 +05:30
laurenspriem
cd9db4d10f [mob][photos] Revert to SearchService just for now 2024-05-17 17:21:48 +05:30
laurenspriem
460025ce4a [mob][photos] Higher fetch limit 2024-05-17 17:16:49 +05:30
ashilkn
a7e0f3df7b [mob][photos] Remove sqflite import in filesDB 2024-05-17 17:05:58 +05:30
Neeraj Gupta
d00a032b17 [auth] New translations (#1751)
New translations from
[Crowdin](https://crowdin.com/project/ente-authenticator-app)
2024-05-17 16:50:47 +05:30
ashilkn
ab9cef689d [mob][photos] Create ConflictAlgorithm enum and stop using it from sqflite 2024-05-17 16:40:59 +05:30
ashilkn
18d68bbdf3 Migrate to sqlite_async(13): Migrate db migration to use sqlite_async 2024-05-17 16:34:04 +05:30
ashilkn
48436694eb [mob][photos] Fix incorrent sqlite operation 2024-05-17 16:28:13 +05:30
laurenspriem
b0fe3946ef [mob][photos] On empty people section go to ML status page 2024-05-17 16:19:38 +05:30
laurenspriem
8a2e2a8f80 [mob][photos] Copy change 2024-05-17 16:19:07 +05:30
laurenspriem
c8efc5fca0 [mob][photos] Debug DB call timings 2024-05-17 15:52:08 +05:30
Neeraj Gupta
401cf92695 Make embedding bucket configurable (#1726)
## Description

## Tests
- [x] New ml data is doing to new bucket
- [x] For existing embedding, fall back logic is working as expected, we
are returning the object immediately and copying the object to new
bucket in an async manner.
- [x] Verified that the dc values were getting updated correctly on copy
or insert.
- [x] Verified that on deletion, we are deleting files from all dcs
where the derived file is present.
2024-05-17 15:45:41 +05:30
laurenspriem
992ca1c4de [mob][photos] Rename parallelism variables for clarity 2024-05-17 15:42:38 +05:30
Neeraj Gupta
89b01f0a39 Query DB to get fallback DC 2024-05-17 15:40:09 +05:30
laurenspriem
baf24aca99 [mob][photos] Faces update status 2024-05-17 15:38:33 +05:30
Manav Rathi
b7bdd89708 [desktop] Add note about xdg-open bug on Ubuntu (#1756)
Was able to reproduce the issue in Ubuntu 24.04 LTS

Ref: https://github.com/electron/electron/issues/31485
2024-05-17 15:27:08 +05:30
laurenspriem
76a10fb84c [mob][photos] Index hidden for faces last 2024-05-17 15:26:12 +05:30
Manav Rathi
b420eece38 [desktop] Add note about xdg-open bug on Ubuntu
Ref: https://github.com/electron/electron/issues/31485
2024-05-17 15:24:42 +05:30
ashilkn
16178b6f09 [mob][photos] Add missing paranthesis 2024-05-17 15:09:10 +05:30
Neeraj Gupta
e33d85412c Fix query for add new DC 2024-05-17 15:08:57 +05:30
Neeraj Gupta
da155464fa Remove updated_at trigger for embeddings table 2024-05-17 15:08:48 +05:30
laurenspriem
1f78f71d0d [mob][photos] Include hidden for indexable count 2024-05-17 15:08:06 +05:30
laurenspriem
88b75c1191 [mob][photos] Migrate some db calls to async 2024-05-17 15:05:34 +05:30
laurenspriem
372fdd8a05 [mob][photos] Partly revert previous commit 2024-05-17 15:01:48 +05:30
Manav Rathi
32b12dbc09 [web] Fail to start if the port is taken (#1755)
This prevents cases say where the web app is running in a terminal, but
when we try to run the desktop app it silently switches to a different
and then failing to load in a manner that is harder to debug compared to
if it'd failed outright.

Ref:
-
https://github.com/vercel/next.js/discussions/23932#discussioncomment-599284
2024-05-17 14:44:15 +05:30
Manav Rathi
103d907781 [web] Fail to start if the port is taken
This prevents cases say where the web app is running in a terminal, but when we
try to run the desktop app it silently switches to a different and then failing
to load in a manner that is harder to debug compared to if it'd failed outright.

Ref:
- https://github.com/vercel/next.js/discussions/23932#discussioncomment-599284
2024-05-17 14:35:10 +05:30
Manav Rathi
61683713e9 [desktop] RC (#1754) 2024-05-17 14:24:37 +05:30
Manav Rathi
af7c2edf98 Remove debugging lines 2024-05-17 14:21:37 +05:30
laurenspriem
63618f00b2 [mob][photos] Clip don't index hidden files 2024-05-17 14:10:05 +05:30
ashilkn
c2b6032b6f [mob][photos] Fix broken query 2024-05-17 13:40:38 +05:30
laurenspriem
41edee7d04 [mob][photos] Update people section after clustering 2024-05-17 12:30:11 +05:30
laurenspriem
9e8a127d4a [mob][photos] Only cluster when indexing is nearly done 2024-05-17 12:28:57 +05:30
Manav Rathi
58d8f131da [desktop] Add a CORS workaround for uploads to arbitrary testing buckets (#1753)
This workaround already existed in older versions (See
`addAllowOriginHeader`), I had recently removed it, now putting it back.
2024-05-17 11:58:31 +05:30
Manav Rathi
f61b5118ba Add a CORS workaround for uploads to arbitrary testing buckets
Workaround for the following error when trying to upload from the desktop app to a staging bucket

> ente://app/gallery:1 Access to XMLHttpRequest at
  'https://xxx-staging-xxx.s3.xxx.backblazeb2.com/...' from origin 'ente://app'
  has been blocked by CORS policy: Response to preflight request doesn't pass
  access control check: The 'Access-Control-Allow-Origin' header has a value
  'null' that is not equal to the supplied origin.
2024-05-17 11:56:10 +05:30
Neeraj Gupta
d847d0601b [auth] Bump version to v3.0.0 (#1752)
## Description

## Tests
2024-05-17 11:48:08 +05:30
ashilkn
a44e5f9505 [mob][photos] Migrate to sqlite_async(12): Migrate entities 2024-05-17 11:47:32 +05:30
Neeraj Gupta
e7607160a0 [auth] Bump version to v3.0.0 2024-05-17 11:46:14 +05:30
laurenspriem
1299e12d92 [mob][photos] Cleanup face debug options 2024-05-17 11:27:42 +05:30
Neeraj Gupta
fd50461214 Add dc in the log ctx 2024-05-17 10:52:00 +05:30
laurenspriem
a8da045a32 [mob][photos] Inline 2024-05-17 10:33:19 +05:30
laurenspriem
d7e7aaa26f [mob][photos] Small refactor 2024-05-17 10:32:37 +05:30
laurenspriem
1f82599fb6 [mob][photos] use spinner 2024-05-17 10:21:33 +05:30
laurenspriem
345eed5209 [mob][photos] Remove old TODOs 2024-05-17 10:17:01 +05:30
Manav Rathi
4160be30b9 Fix tag 2024-05-17 10:14:29 +05:30
laurenspriem
725e628537 [mob][photos] Show clustering progress 2024-05-17 10:09:27 +05:30
Manav Rathi
4c3d549bbf [web] New translations (#1750)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2024-05-17 09:35:10 +05:30
Crowdin Bot
22cd8df340 New Crowdin translations by GitHub Action 2024-05-17 02:05:34 +00:00
Crowdin Bot
3d9aa05b07 New Crowdin translations by GitHub Action 2024-05-17 01:41:51 +00:00
Prateek Sunal
2ab7000af1 [FIX] Auth Macos build (#1746)
## Description

Updated Podfile

## Tests
2024-05-16 22:55:19 +05:30
Manav Rathi
50c1f3301e [web] Add Ubuntu section in getting started docs (#1747)
The `npm install -g corepack` was needed on Ubuntu 24 (See
https://github.com/yarnpkg/berry/discussions/5060)
2024-05-16 21:47:11 +05:30
Manav Rathi
20a7e47cde lint fix 2024-05-16 21:43:41 +05:30
Manav Rathi
ca2f124304 yarn pretty 2024-05-16 21:42:19 +05:30
Manav Rathi
ff5fbf3984 Update README 2024-05-16 21:42:03 +05:30
Manav Rathi
589d50e475 Mention in docs 2024-05-16 21:33:15 +05:30
Manav Rathi
1fbaa1e85d Link 2024-05-16 21:31:01 +05:30
Manav Rathi
23138800e0 [web] Add ubuntu instructions to the getting started docs 2024-05-16 21:28:34 +05:30
Prateek Sunal
34626e9da1 chore(auth): update podfile 2024-05-16 21:09:49 +05:30
Manav Rathi
7fe2a98eec [desktop] Fix warning on windows auto update (#1745)
> disableWebInstaller is set to false, you should set it to true if you
do not
plan on using a web installer. This will default to true in a future
version.
2024-05-16 20:56:12 +05:30
Manav Rathi
b9c4682adc [desktop] Fix warning on windows auto update
> disableWebInstaller is set to false, you should set it to true if you do not
  plan on using a web installer. This will default to true in a future version.
2024-05-16 20:54:24 +05:30
ashilkn
28ddb93747 [mob][photos] Add missing parameters for query 2024-05-16 20:17:58 +05:30
Manav Rathi
f75bb91af0 [desktop] Prevent accidental dismissal of auto update dialog (#1744) 2024-05-16 20:17:36 +05:30
Manav Rathi
9fc07b592b [desktop] Prevent accidental dismissal of auto update dialog 2024-05-16 20:07:11 +05:30
ashilkn
2b0fa9bae6 [mob][photos] Migrate to sqlite_async(11) 2024-05-16 19:34:59 +05:30
Manav Rathi
2d13c1ebb5 [web] Disable clustering (#1743) 2024-05-16 19:32:25 +05:30
Manav Rathi
25435dd693 [web] Disable clustering 2024-05-16 19:31:05 +05:30
Manav Rathi
55822d50ed [docs] Add yarn to package.json (#1742)
Same as b3ec2481bd
2024-05-16 19:13:25 +05:30
Manav Rathi
0e39bcdcd2 [docs] Add yarn to package.json
Same as b3ec2481bd
2024-05-16 19:06:00 +05:30
Manav Rathi
a61ef1b820 [docs] Add some more context to web + albums section of external-s3 guide (#1741)
Thanks to Zul from our community Discord. These clarifications were
provided by them, I just made some grammatical edits to fit the document
better.
2024-05-16 19:01:44 +05:30
Manav Rathi
ca504acf0f [docs] Add some more context to web + albums section of external-s3 guide
Thanks to Zul from Discord. These clarifications were provided by them, I just
made some grammatical edits to fit the document better.
2024-05-16 19:00:43 +05:30
laurenspriem
579239ad54 [mob][photos] Disable edit faces from file info for now 2024-05-16 18:52:29 +05:30
laurenspriem
288adb2e7c [mob][photos] Make faces loading in file info less ugly 2024-05-16 18:48:46 +05:30
laurenspriem
f441a0b456 [mob][photos] Don't show the option to assign suggestion to different person 2024-05-16 18:16:42 +05:30
ashilkn
16d54645bc [mob][photos] Migrate to sqlite_async(10) 2024-05-16 18:02:39 +05:30
laurenspriem
d9232c1b83 [mob][photos] Show faces index status in settings 2024-05-16 17:28:09 +05:30
Neeraj Gupta
a4ef4ce2c1 [mob] Show progress for downloading of clip models (#1738)
## Description

## Tests
Tested locally, enabled for internal users only.
2024-05-16 17:09:26 +05:30
Neeraj Gupta
18c083551e [mobile] New translations (#1716)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-app)
2024-05-16 17:08:18 +05:30
Neeraj Gupta
9c740dc810 Fix lint 2024-05-16 17:05:18 +05:30
ashilkn
dec7c45310 [mob][photos] Migrate to sqlite_async(9) 2024-05-16 16:41:57 +05:30
laurenspriem
1932a92cb8 [mob][photos] Require indexing 80% done before clustering 2024-05-16 16:39:58 +05:30
laurenspriem
9251fd8196 [mob][photos] Small change 2024-05-16 16:39:29 +05:30
laurenspriem
7f358c4bff [mob][photos] Better db query 2024-05-16 16:36:32 +05:30
Neeraj Gupta
698ceca49e Lint fix 2024-05-16 16:21:55 +05:30
Neeraj Gupta
51138e9263 Increase initial timeout val for b2 dc 2024-05-16 16:21:08 +05:30
laurenspriem
e9392d8f33 [mob][photos] Automatic sync 2024-05-16 16:11:12 +05:30
Neeraj Gupta
08555954d2 Document 2024-05-16 16:10:51 +05:30
Neeraj Gupta
b404b77da3 Update dc while copying derived file 2024-05-16 16:08:38 +05:30
Manav Rathi
b2082e3c2a [desktop] Update to electron 30.0.6 (#1740)
https://github.com/electron/electron/releases/tag/v30.0.6
2024-05-16 15:54:52 +05:30
Neeraj Gupta
e1153a4471 [mob] Show progress for downloading of clip models 2024-05-16 15:54:20 +05:30
Manav Rathi
17f3839e88 [desktop] Update to electron 30.0.6
https://github.com/electron/electron/releases/tag/v30.0.6
2024-05-16 15:51:15 +05:30
Manav Rathi
b3ec2481bd [web] Make corepack happy (#1739)
Latest Node 20 (20.13.1) ships with an updated corepack which seems to
insist
putting a package manager field in package.json
(https://github.com/nodejs/corepack/pull/413).

Let it have its way, hoping that this doesn't break someone's workflow
(depending on how they installed yarn without corepack or if they have a
node
version that doesn't have corepack).
2024-05-16 15:50:22 +05:30
Manav Rathi
e430ee3606 lf 2024-05-16 15:49:13 +05:30
Manav Rathi
eaa0ddc468 Same for desktop 2024-05-16 15:46:43 +05:30
Manav Rathi
8c2654e30a [web] Make corepack happy
Latest Node 20 (20.13.1) ships with an updated corepack which seems to insist
putting a package manager field in package.json
(https://github.com/nodejs/corepack/pull/413).

Let it have its way, hoping that this doesn't break someone's workflow
(depending on how they installed yarn without corepack or if they have a node
version that doesn't have corepack).
2024-05-16 15:43:02 +05:30
ashilkn
1a360d3ee7 [mob][photos] Migrate to sqlite_async(8): Migrate insert() + rearrange + clean up 2024-05-16 15:37:00 +05:30
Neeraj Gupta
a522631c2b Refactor 2024-05-16 15:19:22 +05:30
Manav Rathi
a0cb8b850e [web] ML cleanup - Part 3/x (#1737) 2024-05-16 15:11:10 +05:30
Manav Rathi
33272776d1 lf 2024-05-16 15:07:15 +05:30
Manav Rathi
7156a42d92 Unused 2024-05-16 15:06:02 +05:30
Manav Rathi
3603ca3d9b Reintroduce in worker 2024-05-16 14:52:36 +05:30
Manav Rathi
f7099c9bfe Prune 2024-05-16 14:46:42 +05:30
Manav Rathi
2452467796 Bypass 2024-05-16 14:42:15 +05:30
Manav Rathi
23087ee8dc Shuffle 2024-05-16 14:37:52 +05:30
Manav Rathi
fca668b8e6 Inline 2024-05-16 14:34:24 +05:30
laurenspriem
e414128f18 [mob][photos] Initial settings screen for face recognition 2024-05-16 14:30:45 +05:30
Manav Rathi
865ddc0fa9 Inline 2024-05-16 14:30:43 +05:30
Manav Rathi
fb53ae7163 Unwrap 2024-05-16 14:27:28 +05:30
Manav Rathi
a293141444 Remove unused contexty 2024-05-16 14:21:38 +05:30
ashilkn
584a37d2a2 [mob][photos] Remove obsolete code
This code is from when we used to support favoriting un-uploaded files
2024-05-16 14:20:03 +05:30
Manav Rathi
b1d9da663e Prune 2024-05-16 14:19:57 +05:30
Manav Rathi
054b4c7cfb Unclass indexer 2024-05-16 14:17:20 +05:30
Manav Rathi
3db91d2034 Cleanup 2024-05-16 13:52:45 +05:30
Manav Rathi
84c737ddd3 Unclass 2024-05-16 13:51:15 +05:30
Manav Rathi
43a3df5bbf embeddings 2024-05-16 13:43:18 +05:30
Neeraj Gupta
20e9a6a1fc Refactor 2024-05-16 13:39:47 +05:30
Manav Rathi
73946d9b8e Tinker 2024-05-16 13:36:03 +05:30
Manav Rathi
48cc9a08b6 Rename 2024-05-16 13:29:45 +05:30
Manav Rathi
839b4c04a9 Unclass 2024-05-16 13:29:27 +05:30
Manav Rathi
36af1cfacd Move 2024-05-16 13:19:33 +05:30
Manav Rathi
d8f7078418 Move 2024-05-16 13:17:27 +05:30
Manav Rathi
569808c291 Rearrange 2024-05-16 13:16:20 +05:30
Manav Rathi
7160ae700f Inline 2024-05-16 13:07:55 +05:30
Manav Rathi
db05afb9ff Inline and move 2024-05-16 13:03:00 +05:30
ashilkn
cd023b621a [mob][photos] Remove optional parameter which should never be used
Since generatedID (_id) has NOT NULL constrain, it shouldn't be in a parameter set of a query
2024-05-16 12:59:19 +05:30
Neeraj Gupta
3485b31475 Clean up & new line 2024-05-16 12:58:42 +05:30
Neeraj Gupta
b53a70cf65 Avoid retry if object is missing 2024-05-16 12:57:31 +05:30
Manav Rathi
fca2d460f9 Disable clustering 2024-05-16 12:55:05 +05:30
Manav Rathi
adda781dcc Fix initial run 2024-05-16 12:54:15 +05:30
Neeraj Gupta
3f1ee82ec5 Inline 2024-05-16 12:52:20 +05:30
Neeraj Gupta
4cc866fa12 Refactor 2024-05-16 12:49:23 +05:30
ashilkn
7fdc2b5e66 [mob][photos] Migrate to sqlite_async(8): Fix faulty update statements due to incorrect query generation 2024-05-16 12:48:21 +05:30
Manav Rathi
ad684c46c3 Remove old file handling 2024-05-16 12:43:58 +05:30
Manav Rathi
8a071fd45b Inline 2024-05-16 12:24:38 +05:30
Manav Rathi
79aea6a979 Inline 2024-05-16 12:24:00 +05:30
Neeraj Gupta
e0738db6ae Minor refactor 2024-05-16 12:23:25 +05:30
Manav Rathi
c48042546e Inline and move 2024-05-16 12:15:11 +05:30
Manav Rathi
2a35b0ec9c Inline clustering 2024-05-16 12:07:11 +05:30
Manav Rathi
fbebbd3583 Clean alignment 2024-05-16 11:44:24 +05:30
Neeraj Gupta
3c7d86da8d Minor refactor 2024-05-16 11:35:46 +05:30
Manav Rathi
19f06e6494 Rename 2024-05-16 11:33:03 +05:30
Neeraj Gupta
6e204d828c Delete derived data from all datacenters 2024-05-16 11:33:01 +05:30
Manav Rathi
24c33fceb7 Remove class 2024-05-16 11:28:55 +05:30
Manav Rathi
c127b7fc7e doc 2024-05-16 11:23:48 +05:30
Manav Rathi
0993d81b57 Remove unused clustering methods 2024-05-16 11:15:10 +05:30
Manav Rathi
dfd91beaff Inline 2024-05-16 11:13:34 +05:30
Manav Rathi
cfbd7806c8 Inline 2024-05-16 11:10:41 +05:30
Manav Rathi
2c0e8c76c3 From discussion 2024-05-16 11:09:02 +05:30
Manav Rathi
1856e344db Remove unused clustering method 2024-05-16 11:03:03 +05:30
Neeraj Gupta
64ecdfa153 Store dc during insert or update 2024-05-16 10:58:00 +05:30
Manav Rathi
6ce956c5bb Inline 2024-05-16 10:52:00 +05:30
Manav Rathi
7d122f825c Inline 2024-05-16 10:47:15 +05:30
Manav Rathi
095e8c7091 Inline 2024-05-16 10:44:36 +05:30
Manav Rathi
dd38232836 Subsume 2024-05-16 10:41:05 +05:30
Manav Rathi
01108141c2 Inline 2024-05-16 10:24:15 +05:30
Manav Rathi
0f00803519 Inline 2024-05-16 10:24:15 +05:30
Manav Rathi
160e360941 Inline 2024-05-16 10:24:15 +05:30
Manav Rathi
0a9f7b8635 Remove unused 2024-05-16 10:24:15 +05:30
Neeraj Gupta
da188aa753 Add datacenter column for embeddings 2024-05-16 10:19:58 +05:30
ashilkn
1e7779a819 [mob][photos] Remove method inline annotation which doesn
't have noticeable perf improvement + remove commented out code
2024-05-15 21:18:14 +05:30
ashilkn
56478fcb8a [mob][photos] avoid unnecessary compute 2024-05-15 21:10:37 +05:30
ashilkn
e179d351d9 [mob][photos] Migrate to sqlite_async(7): Assign String '{}' instead of map object {} to fix unexpected behaviour 2024-05-15 21:04:32 +05:30
ashilkn
25554209ec [mob][photos] Migrate to sqlite_async)(6): Migrate insertMultipleNew to use sqlite_async 2024-05-15 19:52:55 +05:30
Neeraj Gupta
851f914ef8 Add wasabi-derived in list of dcs 2024-05-15 17:50:05 +05:30
laurenspriem
ccec166fa0 [mob][photos] Copy change for empty people section 2024-05-15 17:01:08 +05:30
laurenspriem
1e5512b36f [mob][photos] Don't show PeopleSection when faces is disabled 2024-05-15 16:54:34 +05:30
Neeraj Gupta
7eabea3884 Rename embedding dc to derived storage 2024-05-15 16:37:23 +05:30
laurenspriem
3d906490a6 [mob][photos] Rename 2024-05-15 16:33:31 +05:30
laurenspriem
9946d08697 [mob][photos] Check wifi before indexing 2024-05-15 16:10:50 +05:30
ashilkn
d1a5921c27 [mob][photos] Migrate to sqlite_async(5): Create a method to get parameter set from file without calling getRowForFile() 2024-05-15 15:28:24 +05:30
laurenspriem
83a873672f [mob][photos] Remove double face debug widget 2024-05-15 14:43:31 +05:30
Neeraj Gupta
cc457eca98 Add log when embedding is fetched after retry 2024-05-15 14:25:28 +05:30
laurenspriem
cdf3d0e037 [mob][photos] Automatic clustering after indexing 2024-05-15 13:31:12 +05:30
laurenspriem
eef18ca054 [mob][photos] Logs 2024-05-15 13:27:19 +05:30
laurenspriem
c142ed07b8 [mob][photos] Don't show empty faces in debug 2024-05-15 12:04:10 +05:30
laurenspriem
6ab1371077 [mob][photos] Internally keep track of MLController status 2024-05-15 11:33:35 +05:30
laurenspriem
b2c274e73b [mob][photos] Extra safety checks for hooking MLController 2024-05-15 11:03:31 +05:30
laurenspriem
48e78d170d [mob][photos] Regression dumb fix 2024-05-14 19:45:55 +05:30
laurenspriem
df1ca5d583 [mob][photos] Hook faces into MachineLearningController 2024-05-14 18:09:38 +05:30
Neeraj Gupta
835a773f13 Add fallback logic to read embedding from hot bucket 2024-05-14 17:00:16 +05:30
laurenspriem
17696c6665 [mob][photos] Separate debug breakupCluster for cluster 2024-05-14 16:36:33 +05:30
laurenspriem
4f9fc9fb6a [mob][photos] Fix banner for light theme 2024-05-14 16:19:12 +05:30
laurenspriem
ef33754108 [mob][photos] Review suggestions banner 2024-05-14 16:04:44 +05:30
laurenspriem
3724ea0af1 [mob][photos] Add a name banner 2024-05-14 16:04:33 +05:30
laurenspriem
cb51e3e5b5 [mob][photos] PeopleBanner widget 2024-05-14 16:04:15 +05:30
laurenspriem
848b9c3b1b [mob][photos] Change copy 2024-05-14 15:39:31 +05:30
laurenspriem
71ca8a414c [mob][photos] Copy change 2024-05-14 15:22:08 +05:30
ashilkn
ff14eb1d5a [mob][photos] Migrate to sqlite_async (4) 2024-05-14 14:59:03 +05:30
Neeraj Gupta
87b087f295 Minor refactor 2024-05-14 14:52:07 +05:30
laurenspriem
4af9d46111 [mob][photos] Copy change 2024-05-14 14:45:22 +05:30
Neeraj Gupta
74a6e32538 Fix error check for no-object found 2024-05-14 14:37:24 +05:30
laurenspriem
2dc17dcec8 [mob][photos] Remove padding for banner 2024-05-14 14:24:35 +05:30
Neeraj Gupta
18d1bb60ca Delete embeddings from hot bucket if different from embedding bucket 2024-05-14 14:18:50 +05:30
Neeraj Gupta
3e7b16288f Add support for configuring diff bucket for embeddings 2024-05-14 14:03:35 +05:30
laurenspriem
a7bcd62a9d [mob][photos] Move banners to bottom of cluster/people page 2024-05-14 13:03:06 +05:30
laurenspriem
3b8cae068e [mob][photos] Retries for fetching face embeddings 2024-05-14 12:03:15 +05:30
laurenspriem
f4024d2007 [mob][photos] Suggestion option to assign to different person 2024-05-14 11:51:50 +05:30
Neeraj Gupta
bce3f40a16 Avoid retry for 404 error 2024-05-14 11:44:41 +05:30
laurenspriem
a3eba12ccf [mob][photos] Feedback buttons untappable when loading faces 2024-05-14 11:19:17 +05:30
Crowdin Bot
8699ec98ca New Crowdin translations by GitHub Action 2024-05-14 01:57:31 +00:00
laurenspriem
2cf193c2d0 [mob][photos] Avoid redundant db calls 2024-05-13 21:49:02 +05:30
laurenspriem
ed23286331 [mob][photos] Single spinner in suggestion page 2024-05-13 21:20:49 +05:30
laurenspriem
36ac637206 [mob][photos] Precompute max 8 face thumbnails 2024-05-13 20:47:33 +05:30
ashilkn
8fcd05b95f [mob][photos] Migrate to sqlite_async (3) 2024-05-13 18:29:01 +05:30
ashilkn
3a0882a1a9 [mob][photos] Migrate to sqlite_async (2): Migrate all update queries in filesDB 2024-05-13 17:57:22 +05:30
laurenspriem
2205d21770 [mob][photos] No double taps allowed when assigning cluster 2024-05-13 16:41:06 +05:30
Neeraj Gupta
acd61fc084 Fixed typo 2024-05-13 16:33:48 +05:30
Neeraj Gupta
be44665128 [server] Refactor embedding fetch 2024-05-13 16:33:36 +05:30
ashilkn
5bd845d32b [mob][photos] Migrate to sqlite_async (1) 2024-05-13 15:39:35 +05:30
laurenspriem
5815b57fe3 [mob][photos] Cannot make up mind on copy 2024-05-13 15:22:37 +05:30
laurenspriem
7c7ee6c432 [mob][photos] Copy change 2024-05-13 15:18:54 +05:30
laurenspriem
bb9c0673a8 [mob][photos] Don't use spinner in people section 2024-05-13 14:58:09 +05:30
laurenspriem
022d89b4a0 [mob][photos] Copy change 2024-05-13 14:47:30 +05:30
laurenspriem
e188382f09 [mob][photos] Suggestion yes no button in row not column 2024-05-13 14:42:41 +05:30
laurenspriem
75f0b0481b [mob][photos] Show spinner when generating face 2024-05-13 14:08:55 +05:30
laurenspriem
d7bd735f7b [mob][photos] Make add new person better tapable 2024-05-13 13:46:00 +05:30
laurenspriem
1f2c3f73df [mob][photos] Prevent dubble tap add person 2024-05-13 13:36:59 +05:30
vishnukvmd
d16f98cf07 v0.8.95 2024-05-12 08:44:26 +05:30
vishnukvmd
8677cbb4f8 Increase JVM allocation pool 2024-05-12 08:43:55 +05:30
laurenspriem
6652125804 [mob][photos] Change copy 2024-05-11 18:15:35 +05:30
laurenspriem
c28f6c36bb [mob][photos] Experiment higher distance for big suggestions 2024-05-11 16:54:29 +05:30
laurenspriem
605112eeb9 [mob][photos] Make naming banner dismissible 2024-05-11 16:35:58 +05:30
laurenspriem
a05d7d8660 [mob][photos] Rename var 2024-05-11 16:31:45 +05:30
laurenspriem
05f5e8a175 [mob][photos] Make suggestion banner dismissible 2024-05-11 16:30:39 +05:30
laurenspriem
8e341310a2 [mob][photos] Change icon 2024-05-11 16:15:59 +05:30
laurenspriem
45d46d5ca8 [mob][photos] Show banner for suggestions 2024-05-11 16:10:41 +05:30
laurenspriem
7045dbaeff [mob][photos] Remove padding around naming banner 2024-05-11 15:38:48 +05:30
laurenspriem
fc6830bdaf [mob][photos] Big cluster suggestions first 2024-05-11 15:20:28 +05:30
laurenspriem
abff589c21 [mob][photos] Increase "Add name" hitpoint 2024-05-11 14:53:19 +05:30
laurenspriem
3ab2535193 [mob][photos] Show face thumbnail in naming sheet 2024-05-11 13:57:15 +05:30
Neeraj Gupta
da5ceea0db [mob] decrease remoteFetch constant to 100 2024-05-10 16:44:11 +05:30
Neeraj Gupta
c235fb85b4 [mob] Increase remoteFetch constant to 200 2024-05-10 16:41:00 +05:30
Neeraj Gupta
5ba46a0707 [mob] Use diff constant for fetch & parallelism 2024-05-10 16:31:07 +05:30
Neeraj Gupta
38d622825b [mob] Handle indexed files with no embedding data 2024-05-10 16:17:40 +05:30
Neeraj Gupta
eee168837e [mob] Use diff val for fetch & parallel indexing 2024-05-10 16:16:56 +05:30
Neeraj Gupta
c906480dee [mob] Handle missing fileIDs during clustering 2024-05-10 13:25:22 +05:30
Neeraj Gupta
4db3c9fe95 [mob] FaceInfoForClustering add fileID getter 2024-05-10 13:10:27 +05:30
Neeraj Gupta
7623e69de3 [mob] Return list instead of set 2024-05-10 13:07:24 +05:30
Neeraj Gupta
33a0641c52 Merge branch 'mobile_face' of https://github.com/ente-io/auth into mobile_face 2024-05-10 11:48:17 +05:30
laurenspriem
5c85fe764a [mob][photos] Show "Add name" for clusters in discovery tab 2024-05-09 19:57:15 +05:30
laurenspriem
b74a572f1a [mob][photos] Debug experiment for detecting mixed clusters 2024-05-09 19:52:05 +05:30
Neeraj Gupta
acf8fd6e63 [mob] Enable cast for iOS in debug 2024-05-09 17:22:44 +05:30
laurenspriem
d08edacb66 Merge remote-tracking branch 'origin/mobile_face' into mobile_face 2024-05-09 16:38:35 +05:30
laurenspriem
b78a65dc51 [mob][photos] Breakup cluster function 2024-05-09 15:46:52 +05:30
laurenspriem
54e1198088 [mob][photos] Delete old cluster summary for removed clusters 2024-05-09 15:44:21 +05:30
laurenspriem
6eb34937b8 [mob][photos] Use normalized embeddings in complete clustering 2024-05-09 14:51:59 +05:30
Neeraj Gupta
089aa16bc6 Merge branch 'main' into mobile_face 2024-05-09 14:49:25 +05:30
laurenspriem
8c373857a2 [mob][photos] Don't show emptyCTA for faces in people full page 2024-05-08 15:32:13 +05:30
laurenspriem
63f22680f4 [mob][photos] Show add name button on discovery tab 2024-05-08 14:27:15 +05:30
laurenspriem
5e2f689265 [mob][photos] View history from suggestions 2024-05-08 12:20:48 +05:30
laurenspriem
bcac9b9ce9 [mob][photos] Cluster merge parameter change 2024-05-08 11:59:48 +05:30
laurenspriem
9ff4fc1b81 [mob][photos] Don't show memory count twice for clusters 2024-05-08 11:47:44 +05:30
laurenspriem
ee9eaedd99 [mob][photos] Prefer linear scan for clustering within cluster 2024-05-08 11:13:56 +05:30
laurenspriem
dd29e55b53 [mob][photos] Lower threshold for auto merges 2024-05-08 11:05:36 +05:30
laurenspriem
8027579080 [mob][photos] Lower threshold for automatic merges 2024-05-07 17:14:43 +05:30
laurenspriem
cb4fa38004 [mob][photos] Better suggestion parameter 2024-05-07 16:12:05 +05:30
laurenspriem
aff27a2211 [mob][photos] Show dialog on removing person label 2024-05-07 16:11:46 +05:30
laurenspriem
dc5a8ebd44 [mob][photos] More robust automatic merges 2024-05-07 13:38:55 +05:30
vishnukvmd
0e33299863 Merge branch 'main' into f-droid 2024-05-07 12:54:44 +05:30
laurenspriem
0ecbb73f1e [mob][photos] Only check automatic merges on big clusters 2024-05-07 12:27:01 +05:30
laurenspriem
115f1bd42e [mob][photos] Delete people and their mapping 2024-05-07 11:59:25 +05:30
laurenspriem
68be7f69d8 [mob][photos] Don't drop cluster summaries when dropping feedback 2024-05-07 11:22:44 +05:30
laurenspriem
bd495c3860 [mob][photos] Assert that embeddings are always normalized 2024-05-06 17:16:58 +05:30
laurenspriem
b4736fb1d6 [mob][photos] Normalize weighted embeddings for cluster summary 2024-05-06 17:03:06 +05:30
laurenspriem
71b572917e [mob][photos] More debug logging on clusters 2024-05-06 16:45:27 +05:30
laurenspriem
3c24345b68 [mob][photos] Add method for safe cosine distance 2024-05-06 16:38:19 +05:30
laurenspriem
ea8846ee0c [mob][photos] Properly sort faces on fileCreationTime for clustering 2024-05-06 10:38:26 +05:30
laurenspriem
077b46e490 [mob][photos] Small copy change 2024-05-04 14:04:34 +05:30
laurenspriem
cf6b311c14 [mob][photos] Fix person gallery random dates ordering 2024-05-04 13:57:28 +05:30
laurenspriem
ade70f40a9 [mob][photos] Use separate isIgnored getter instead of isHidden 2024-05-03 17:25:30 +05:30
laurenspriem
35aed07bc6 [mob][photos] Rename "remove" to "remove label" for person 2024-05-03 16:59:51 +05:30
laurenspriem
319dc055de [mob][photos] Rename "hidden" to "ignored" 2024-05-03 16:17:56 +05:30
laurenspriem
662dc1a32b [mob][photos] Make sure hidden doesn't show in naming sheet 2024-05-03 15:09:29 +05:30
laurenspriem
38a40a5ace [mob][photos] Make sure hidden faces are displayed last in file info 2024-05-03 15:05:02 +05:30
laurenspriem
915a3f646d [mob][photos] Small fix 2024-05-03 14:59:25 +05:30
laurenspriem
f275761c4b [mob][photos] Refresh file info on changed person 2024-05-03 14:49:06 +05:30
laurenspriem
cfd656b360 [mob][photos] Unhide person feedback 2024-05-03 14:42:33 +05:30
laurenspriem
95ba8a368b [mob][photos] Show (hidden) in file info for hidden persons 2024-05-03 12:45:21 +05:30
laurenspriem
8c27eb59ce [mob][photos] Show dialog before hiding person 2024-05-03 12:40:27 +05:30
laurenspriem
267b3669f2 [mob][photos] Don't show hidden clusters in clusters page 2024-05-03 12:25:14 +05:30
laurenspriem
1ab42640d9 [mob][photos] UI for triggering hide method 2024-05-03 12:16:48 +05:30
laurenspriem
cdc6972d53 [mob][photos] Remove validateCluster option 2024-05-03 12:10:58 +05:30
laurenspriem
5c1bc220e9 [mob][photos] Method for hiding cluster 2024-05-03 12:07:23 +05:30
laurenspriem
7e60e8532f [mob][photos] Don't show naming banner on suggestions 2024-05-02 17:22:46 +05:30
laurenspriem
4bafdf8922 Merge remote-tracking branch 'origin/mobile_face' into mobile_face 2024-05-02 17:12:29 +05:30
laurenspriem
6ea8b972bd [mob][photos] Put serialization for suggestions in computer 2024-05-02 17:01:10 +05:30
laurenspriem
793fc3aa46 [mob][photos] Cluster suggestion calculation in computer 2024-05-02 16:08:19 +05:30
Neeraj Gupta
6b70c721d4 Merge branch 'mobile_face' of https://github.com/ente-io/auth into mobile_face 2024-05-02 14:22:31 +05:30
Neeraj Gupta
88bdb06d05 [mob] Keep original files order intact 2024-05-02 14:22:24 +05:30
laurenspriem
2e17e2b78d [mob][photos] Trailing comma 2024-05-02 12:38:05 +05:30
laurenspriem
c6129c32da Merge remote-tracking branch 'origin/mobile_face' into mobile_face 2024-05-02 12:36:43 +05:30
laurenspriem
d650bac501 [mob][photos] Small changes in suggestion calculation 2024-05-02 12:35:52 +05:30
Neeraj Gupta
745daf39f7 [mob] Sort suggestion by creationTime to fix gallery grouping bug 2024-05-02 12:14:08 +05:30
Neeraj Gupta
9ecd406e56 [mob]Fix refresh bug in all sections for people 2024-05-02 11:56:20 +05:30
laurenspriem
74ae4ea74f [mob][photos] Fix regression in suggestion calculation 2024-05-02 11:18:06 +05:30
Neeraj Gupta
ca3172c33e [mobile] Add method to reconsile mappings 2024-05-02 07:04:31 +05:30
laurenspriem
689833d8aa Merge remote-tracking branch 'origin/mobile_face' into mobile_face 2024-04-30 17:13:39 +05:30
laurenspriem
09fadecd7a [mob][photos] Make sure precomputes also use thumbnail for face generation 2024-04-30 17:02:14 +05:30
laurenspriem
10b04c6ad3 [mob][photos] Make sure face in face thumbnail is always centered 2024-04-30 16:31:36 +05:30
Neeraj Gupta
f80f7a03e1 [mob] Fix query 2024-04-30 16:11:51 +05:30
laurenspriem
4cff6b1299 [mob][photos] Simplify face generation code 2024-04-30 15:44:32 +05:30
Neeraj Gupta
7e5561e5cd [mob] Use EntePopupMenuItem 2024-04-30 14:59:55 +05:30
Neeraj Gupta
b1cbf8526b Merge branch 'mobile_face' of https://github.com/ente-io/auth into mobile_face 2024-04-30 14:48:28 +05:30
Neeraj Gupta
49d5370d47 Merge branch 'ente_popup_menu' into mobile_face 2024-04-30 14:48:12 +05:30
laurenspriem
8d4f9fe966 [mob][photos] Move code 2024-04-30 14:29:25 +05:30
laurenspriem
29b9bee1be [mob][photos] Use thumbnails for generating face crop in suggestions 2024-04-30 14:20:21 +05:30
laurenspriem
a80c9dd589 [mob][photos] Rename method 2024-04-30 12:35:05 +05:30
laurenspriem
046a96f586 Merge remote-tracking branch 'origin/mobile_face' into mobile_face 2024-04-30 11:57:03 +05:30
laurenspriem
740ca907f2 [mob][photos] Prevent face cropping out of image bounds 2024-04-30 11:38:39 +05:30
laurenspriem
c783735e86 [mob][photos] Log clustering time for each bucket 2024-04-30 11:24:06 +05:30
Neeraj Gupta
cbf2a77d5b refactor 2024-04-30 11:06:41 +05:30
laurenspriem
9f5c5fde49 [mob][photos] Parallelize the cropping and encoding of faces 2024-04-30 10:59:45 +05:30
laurenspriem
1cd31d2cab [mob][photos] Only decode image once for face thumbnails in file info 2024-04-30 10:46:16 +05:30
Neeraj Gupta
4b6ecbdd30 Merge branch 'main' of https://github.com/ente-io/auth into mobile_face 2024-04-30 10:17:13 +05:30
Neeraj Gupta
7d2633190f Merge branch 'mobile_face' of https://github.com/ente-io/auth into mobile_face 2024-04-29 17:18:32 +05:30
Neeraj Gupta
52f605831f Merge branch 'main' into mobile_face 2024-04-29 17:18:16 +05:30
laurenspriem
8b1545239c [mob][photos] Use canvas again for generating face thumbnail 2024-04-29 16:28:19 +05:30
laurenspriem
aad1327705 [mob][photos] Small cleanup 2024-04-29 15:29:00 +05:30
laurenspriem
8058c6b621 [mob][photos] Remove unnecessary write transactions 2024-04-29 15:20:01 +05:30
laurenspriem
d03d8d564d [mob][photos] Fix DB issue 2024-04-29 15:13:51 +05:30
laurenspriem
87571159cc [mob][photos] Fix faces db conflict 2024-04-27 14:30:34 +05:30
laurenspriem
97d8c5f83e Merge remote-tracking branch 'origin/mobile_face' into mobile_face 2024-04-27 14:03:40 +05:30
laurenspriem
a2023bd457 [mob][photos] Fix database issue 2024-04-27 13:38:34 +05:30
Vishnu Mohandas
a16910a4ee [mob][photos] Remove unnecessary optional parameter (#1543) 2024-04-27 13:20:52 +05:30
ashilkn
54d3ad9743 [mob][photos] Remove unnecessary optional parameter 2024-04-27 12:37:42 +05:30
laurenspriem
6235f7ee78 [mob][photos] Move FaceBoxImage to face_util 2024-04-27 12:19:29 +05:30
Laurens Priem
9eeab36392 [mob][photos] Generate face crops faster (#1542)
## Description

Have written two new methods, `generateImgFaceThumbnails()` and
`generateJpgFaceThumbnails()`.
Using `generateJpgFaceThumbnails()` now since it returns
`Future<List<Uint8List>>` and is easier to integrate within the code
base because the return type remains the same with the older
`generateFaceThumbnailsForImage()`

There is performance improvement with `generateImgFaceThumbnails()`, but
it's not very significant and it requires changes in codebase to work
with it's return type `Future<List<Image>>` (`Image` from the `Image`
package). Can consider using it if it feels necessary in future.

If multiple faces are being generated from the same image, the image can
be decoded once and passed to `generateImgFaceThumbnails()` or
`generateJpgFaceThumbnails()` to avoid repeated decoding of the same
image.

`generateImgFaceThumbnails()` and `generateJpgFaceThumbnails()` uses the
isolates available from the pool of 4 spawned by `Computer` and
processes multiple faces in parallel unlike
`generateImgFaceThumbnails()`, which processes only one at a time.
2024-04-27 12:05:32 +05:30
laurenspriem
f422e30a8e [mob][photos] Migrate fully to sqlite async for faces, removing sqflite fully 2024-04-27 11:13:52 +05:30
ashilkn
58cd9350c0 Merge branch 'mobile_face' into fix_face_thumbnail 2024-04-27 11:10:10 +05:30
ashilkn
ab5985a08b [mob][photos] Use generated face crops and crop it using the new method 2024-04-27 11:06:54 +05:30
ashilkn
19f2c5f00a [mob][photos] remove negation 2024-04-27 11:02:38 +05:30
ashilkn
707916f677 [mob][photos] Add method to convert Image from Image package to UI image 2024-04-27 10:57:49 +05:30
ashilkn
8b236cde09 [mob][photos] When cropping a face from an image, make the image a square and add some buffer around it 2024-04-27 09:59:16 +05:30
laurenspriem
968eaaf5f6 [mob][photos] Better error logging 2024-04-27 09:39:12 +05:30
ashilkn
caa72ba830 [mob][photos] add option to pass decoded image to face thumbnail generation methods to avoid unnecessary decoding when possible 2024-04-26 15:44:07 +05:30
laurenspriem
2692d0a34f [mob][photos] Fix issue in displaying face thumbnails for videos 2024-04-26 14:50:14 +05:30
laurenspriem
44898415e7 [mob][photos] Index videos using thumbnails 2024-04-26 14:43:19 +05:30
laurenspriem
811ffe0117 [mob][photos] Create new cluster when tapping unassigned face 2024-04-26 14:13:00 +05:30
laurenspriem
43f01c31da [mob][photos] Prevent sqlite disk corruption issue 2024-04-26 12:58:27 +05:30
ashilkn
a0e9913f43 Revert "[mob] Crop image instead of using scale and translate transforms on OG image in CroppedFaceImageView widget"
This reverts commit b022ef6d1e.
2024-04-26 12:56:12 +05:30
ashilkn
b256bb2757 Revert "[mob] perf: Decode images from which face is to be cropped, in an isolate to avoid jank"
This reverts commit 2f7e0cd1ef.
2024-04-26 12:55:29 +05:30
ashilkn
3eebfdd037 Revert "[mob] Two varients of CroppedFaceImageView for testing out which is more performant"
This reverts commit 7617817798.
2024-04-26 12:54:29 +05:30
ashilkn
a577611e65 [mob] merge mobile_face to fix_face_thumbnail 2024-04-26 11:32:33 +05:30
laurenspriem
b2a2078045 [mob][photos] Moving more methods to sqlite async 2024-04-25 17:06:40 +05:30
ashilkn
7617817798 [mob] Two varients of CroppedFaceImageView for testing out which is more performant 2024-04-25 16:58:58 +05:30
ashilkn
f173bc4038 [mob] Wrote util methods to generate face thumbnails from an image path
Need to decide on which util method to use of the two after performance testing
2024-04-25 16:56:43 +05:30
laurenspriem
3828fa328e [mob][photos] Increase conservative clustering threshold slightly 2024-04-25 16:41:23 +05:30
laurenspriem
f101468a8d [mob][photos] Show faces in file info regardless of blur value 2024-04-25 16:30:00 +05:30
laurenspriem
52a7f2753e [mob][photos] Tiny change 2024-04-25 16:15:04 +05:30
laurenspriem
7fd5ffc0e6 [mob][photos] Forgot method 2024-04-25 16:14:16 +05:30
laurenspriem
43cbfbfa33 [mob][photos] Automatically reject overlapping suggestions 2024-04-25 16:13:29 +05:30
laurenspriem
7370557b08 [mob][photos] More use of sqlite async 2024-04-25 15:41:26 +05:30
laurenspriem
f0ebdb211c [mob][photos] Functionality to remove selected images from suggestion 2024-04-25 14:13:58 +05:30
ashilkn
2f7e0cd1ef [mob] perf: Decode images from which face is to be cropped, in an isolate to avoid jank 2024-04-25 12:29:29 +05:30
laurenspriem
d429efaf14 [mob][photos] Trailing commas 2024-04-25 12:19:19 +05:30
laurenspriem
7b8816a4bf [mob][photos] Higher conservative clustering threshold 2024-04-25 10:54:49 +05:30
laurenspriem
7e00a470aa [mob][photos] Lower both hard and soft blur thresholds 2024-04-25 10:54:19 +05:30
laurenspriem
1ae4482fe5 [mob][photos] Always check big clusters first for suggestions 2024-04-25 10:53:42 +05:30
laurenspriem
d0420ce477 [mob][photos] Better sorting of faces in file info 2024-04-25 10:03:05 +05:30
ashilkn
b022ef6d1e [mob] Crop image instead of using scale and translate transforms on OG image in CroppedFaceImageView widget 2024-04-25 09:35:55 +05:30
laurenspriem
244d562207 [mob][photos] Increase the pool for face thumbnail generation 2024-04-25 08:50:44 +05:30
laurenspriem
3fbfa8c0e6 [mob][photos] Precompute face thumbnails for suggestions 2024-04-24 18:59:08 +05:30
laurenspriem
6f6f976dec [mob][photos] Fix bug 2024-04-24 18:33:00 +05:30
laurenspriem
07458fb247 [mob][photos] Recompute suggestions on rejected suggestion 2024-04-24 17:15:11 +05:30
laurenspriem
72ff6e2cf3 [mob][photos] Tiny change 2024-04-24 17:07:28 +05:30
laurenspriem
e0fbb2620b [mob][photos] Correct suggestion logic again 2024-04-24 17:06:35 +05:30
laurenspriem
462d1d4854 [mob][photos] Use cosineDistanceSIMD 2024-04-24 16:37:39 +05:30
laurenspriem
05a4e9f90b [mob][photos] Remove redundant logging 2024-04-24 16:31:36 +05:30
laurenspriem
3806ee3232 [mob][photos] Use SIMD in sorting suggestions too 2024-04-24 16:19:10 +05:30
laurenspriem
e829f7b62f [mob][photos] Use vectors everywhere in cluster suggestion 2024-04-24 16:01:03 +05:30
laurenspriem
4b6641d7d8 [mob][photos] Speed up suggestion calculation 2024-04-24 15:46:00 +05:30
laurenspriem
093f48fb63 [mob][photos] Sort found suggestions based on distance 2024-04-24 11:24:25 +05:30
laurenspriem
759c8aa404 [mob][photos] Extra check in sorting suggestions 2024-04-24 10:01:07 +05:30
laurenspriem
c80208e754 [mob][photos] Fix in sorting suggestions 2024-04-24 09:53:42 +05:30
laurenspriem
7097ce3cf4 [mob][photos] Faster DB call when sorting suggestions 2024-04-24 09:06:20 +05:30
laurenspriem
efb1170b44 [mob][photos] unawait network call when accepting suggestion 2024-04-24 08:39:45 +05:30
laurenspriem
7312633e02 [mob][photos] Only sort big suggestions 2024-04-23 14:26:30 +05:30
laurenspriem
3786c9def9 [mob][photos] Suggestions change parameters 2024-04-23 13:37:53 +05:30
laurenspriem
6fe8dc7c66 [mob][photos] Check big and medium clusters first for suggestions 2024-04-23 12:18:19 +05:30
laurenspriem
9e87b4a2cc [mob][photos] Highlight face in cluster 2024-04-23 11:58:39 +05:30
Laurens Priem
dad427a498 [mob][photos] Fix issues with face thumbnail (#1523)
## Description

See commits.
2024-04-23 11:21:38 +05:30
ashilkn
4c25997bb6 [mob] use layoutBuilder in face thumbnail 2024-04-23 11:15:46 +05:30
laurenspriem
6a0a9bad1e [mob][photos] Clustering time logs 2024-04-23 09:56:46 +05:30
ashilkn
731610ed94 [mob] Refactor 2024-04-23 08:30:59 +05:30
ashilkn
e875eb1389 [mob] Remove unnecessary ShapeDecoration and width constrain 2024-04-23 08:27:47 +05:30
ashilkn
3253a2bf26 [mob] Remove unnecessary LayoutBuilder 2024-04-23 08:26:29 +05:30
ashilkn
8225697e43 Merge branch 'mobile_face' into fix_face_thumbnail 2024-04-23 07:49:59 +05:30
laurenspriem
f49ede4a74 [mob][photos] Small fix in detecting sideways faces 2024-04-22 18:07:50 +05:30
laurenspriem
9cdd4fd713 [mob][photos] Face thumbnail generation from widgets 2024-04-22 17:24:34 +05:30
laurenspriem
fa466d715f [mob][photos] Improve suggestions by improving speed and preferring big clusters 2024-04-22 16:40:31 +05:30
ashilkn
c1587cc5ea [mob] Remove redundant clippling and anti aliasing for performance gain 2024-04-22 11:52:39 +05:30
ashilkn
ae046e33b4 [mob] fix: face thumbnails getting cropped on the edges because the image uses BoxFit.cover 2024-04-22 11:45:54 +05:30
laurenspriem
37ab467da5 [mob][photos] Remove blur ranking debug option 2024-04-22 11:35:40 +05:30
Neeraj Gupta
cc682a0a09 Merge branch 'mobile_face' of https://github.com/ente-io/auth into mobile_face 2024-04-20 16:01:08 +05:30
Neeraj Gupta
864f8444d5 Merge branch 'main' into mobile_face 2024-04-20 15:59:36 +05:30
ashilkn
93ba4e011a Merge branch 'main' into f-droid 2024-04-20 15:23:14 +05:30
laurenspriem
edf99385dc [mob][photos] Precompute cluster summaries incrementally during clustering 2024-04-20 14:38:46 +05:30
laurenspriem
cde17441d6 [mob][photos] Forgot one import 2024-04-20 13:35:53 +05:30
laurenspriem
4ac295e1e2 [mob][photos] Remove ClusterResult old deprecated code 2024-04-20 13:35:02 +05:30
laurenspriem
a0502886b6 [mob] Minimum size argument for getting all cluster summaries 2024-04-20 13:26:47 +05:30
laurenspriem
7be1b63822 [mob] Clean up linear clustering method 2024-04-20 12:24:20 +05:30
laurenspriem
01aecb9742 [mob] store sideways face boolean in local face table 2024-04-19 18:13:35 +05:30
laurenspriem
a0fa90cb50 [mob] Remove faceArea and faceVisibility from local DB 2024-04-19 16:43:41 +05:30
laurenspriem
6d3e1325c4 [mob] Update face widget 2024-04-19 16:35:33 +05:30
laurenspriem
4095b14589 [mob] Conservative threshold for combination of low score and blur 2024-04-19 15:57:11 +05:30
laurenspriem
a92081e703 [mob] Only analyze clustering in debugMode 2024-04-19 15:20:29 +05:30
laurenspriem
f3f85e81ca [mob] Rename constant 2024-04-19 15:08:10 +05:30
laurenspriem
ecc1bc9980 [mob] Use more conservative cluster threshold for sideways faces 2024-04-19 14:58:52 +05:30
laurenspriem
2b88daa15f [mob] Method for detecting sideways faces 2024-04-19 14:00:15 +05:30
laurenspriem
a9ca8a4a24 [mob] Better handling of cluster update 2024-04-19 12:19:10 +05:30
laurenspriem
ab0a99cf76 [mob] Make sure cluster page is updated after file removal 2024-04-19 11:42:39 +05:30
laurenspriem
e20f13f02b [mob] Re-cluster when removing file from person/cluster 2024-04-18 17:57:14 +05:30
laurenspriem
34798c344c [mob] Fix typo 2024-04-18 16:32:11 +05:30
laurenspriem
e7992674d5 [mob] Use async sqlite for getting file creation times 2024-04-18 16:17:04 +05:30
laurenspriem
74247c4563 [mob] Use async sqlite for getting faceID from cluster 2024-04-18 16:00:47 +05:30
laurenspriem
be1b4b359c [mob] Fix typo 2024-04-18 15:32:59 +05:30
laurenspriem
79e763bf16 [mob] Small changes 2024-04-18 15:29:02 +05:30
laurenspriem
afbb1c69c2 [mob] More clustering methods in Computer within cluster 2024-04-18 15:20:28 +05:30
laurenspriem
417c5eab1c [mob] Rename cluster method to clarify use of Computer 2024-04-18 14:48:57 +05:30
laurenspriem
ba58ac1358 [mob] Add merges to predictComplete method 2024-04-18 14:44:12 +05:30
laurenspriem
7a5e1263e0 [mob] Use complete clustering for breaking up clusters 2024-04-18 11:26:24 +05:30
laurenspriem
45d18b187c [mob] Add completeClustering functionality 2024-04-18 11:25:48 +05:30
laurenspriem
e3fd836901 [mob] clustering make it difficult for good faces to link to bad faces 2024-04-17 17:46:53 +05:30
laurenspriem
51d15cc441 [mob] Clustering with dynamic threshold based on face blur and score 2024-04-17 16:38:47 +05:30
laurenspriem
72e677e9e5 [mob] Minimum cluster size of 20 2024-04-17 16:36:45 +05:30
laurenspriem
6f26901073 [mob] Minor refactor of clustering methods 2024-04-17 14:54:31 +05:30
laurenspriem
f61a5f91b6 [mob] Debug option to get clusters of blur values 2024-04-16 19:22:27 +05:30
laurenspriem
d4d9253f1a [mob] Minor changes 2024-04-16 15:22:59 +05:30
laurenspriem
b1eb6c11b2 [mob] Show face direction in face widget in debug mode 2024-04-16 15:11:51 +05:30
laurenspriem
618b152f17 [mob] FaceMlService static method for full pipeline 2024-04-16 15:04:15 +05:30
laurenspriem
e3b8d8975f [mob] Better blur detection handling background noise 2024-04-16 14:51:23 +05:30
laurenspriem
624a06c3f8 [mob] Deprecate methods 2024-04-16 14:37:56 +05:30
laurenspriem
e3b1cb8014 [mob] Debug log blur values of cluster when opening cluster page 2024-04-16 14:33:13 +05:30
vishnukvmd
7977bebcaa Update Flutter to v3.19.3 2024-04-16 11:35:32 +05:30
ashilkn
f28f49d724 Merge main 2024-04-15 11:20:03 +05:30
Neeraj Gupta
e09b77770d [mob] Upgrade sqlite_async 2024-04-13 16:55:21 +05:30
laurenspriem
ef4135f378 [mob] tiny change 2024-04-13 16:41:51 +05:30
laurenspriem
38381f6bb0 [mob] Tiny face widget debug change 2024-04-13 16:02:49 +05:30
laurenspriem
7d414a7b7d [mob] Increase activity timer of cluster isolate 2024-04-13 15:55:04 +05:30
laurenspriem
2ce078e173 [mob] Fix too many clustering rounds/buckets 2024-04-13 15:54:36 +05:30
ashilkn
d9a93ddad6 Merge branch 'main' into f-droid 2024-04-13 15:24:56 +05:30
laurenspriem
8801dc1a7a [mob] Show clustered percentage in UI 2024-04-13 15:11:12 +05:30
laurenspriem
5cf10c9c9b [mob] Rename face clustering service 2024-04-13 13:10:20 +05:30
laurenspriem
c58a8dc773 [mob] Better face clustering logging 2024-04-13 13:08:34 +05:30
laurenspriem
c67a1fa52a [mob] Make clustering in buckets the default 2024-04-13 11:32:03 +05:30
laurenspriem
5a5cdc8b6b [mob] Slightly faster indexed file count 2024-04-12 18:15:01 +05:30
laurenspriem
da7302b677 [mob] Remove incorrect log 2024-04-12 18:12:31 +05:30
laurenspriem
d65264e8e8 [mob] move fetching related code inside fetching block 2024-04-12 17:46:12 +05:30
Neeraj Gupta
2cb08569c9 Switch to older version of share_plus 2024-04-12 16:54:47 +05:30
Neeraj Gupta
5fec61fc1b [mob] Persist setting for disabling remote fetch 2024-04-12 16:20:09 +05:30
Neeraj Gupta
107b79eae6 [mob] Reduce invalid pixel noise 2024-04-12 16:19:51 +05:30
Neeraj Gupta
2302b930d3 [mob] Remove unsued section 2024-04-12 16:08:18 +05:30
Neeraj Gupta
fbec7db865 Merge branch 'mobile_face' of https://github.com/ente-io/auth into mobile_face 2024-04-12 15:53:34 +05:30
Neeraj Gupta
96b9019fff Flutter gradle plugin changes 2024-04-12 15:53:22 +05:30
laurenspriem
21451efa6b Merge remote-tracking branch 'origin/mobile_face' into mobile_face 2024-04-12 15:11:15 +05:30
Neeraj Gupta
259787ff41 [mob] Upgrade to flutter 3.19.5 2024-04-12 14:55:07 +05:30
laurenspriem
481410f183 [mob] Increase inactivity counter for clustering isolate 2024-04-12 14:38:36 +05:30
laurenspriem
eb8294ce95 [mob] Limit amount of sqlite read isolates for FaceMl DB 2024-04-12 14:33:48 +05:30
laurenspriem
9c09af54b3 [mob] Use sqlite async for getting all indexed fileIDs 2024-04-12 13:22:25 +05:30
laurenspriem
642e36b050 [mob] Use sqlite async for getting total face count 2024-04-12 13:21:38 +05:30
laurenspriem
38c0c44331 [mob] Remove GC from debug options 2024-04-12 13:13:20 +05:30
laurenspriem
3860d0a230 [mob] Read face embeddings using sqlite async 2024-04-12 12:57:03 +05:30
laurenspriem
ba107c2d25 [mob] Fix in clustering without buckets 2024-04-12 12:01:17 +05:30
Neeraj Gupta
f3647df1e9 [mob]Improve handling of multiple assignment of same faceID to different clusters 2024-04-12 11:49:40 +05:30
laurenspriem
01914ed3ce [mob] Option for indexing without fetching 2024-04-12 11:49:38 +05:30
Neeraj Gupta
5710cb2d35 Merge branch 'main' into mobile_face 2024-04-12 10:38:14 +05:30
laurenspriem
6df5559d75 Merge remote-tracking branch 'origin/mobile_face' into mobile_face 2024-04-11 16:44:40 +05:30
laurenspriem
b90aed0b4b [mob] Switch from FlutterIsolate to DartUiIsolate 2024-04-11 16:43:52 +05:30
laurenspriem
0eb876c985 [mob] Update dependency lock 2024-04-11 15:41:56 +05:30
laurenspriem
5996981c13 [mob] Remove empty asset directories 2024-04-11 15:41:23 +05:30
Neeraj Gupta
f459b1c2dd Merge branch 'mobile_face' of https://github.com/ente-io/auth into mobile_face 2024-04-11 13:17:15 +05:30
Neeraj Gupta
3ba6aea827 [mob] Enable impeller and wide Gamut color for iOS 2024-04-11 13:16:18 +05:30
laurenspriem
90db558498 Merge branch 'update_deps_and_flutter' into mobile_face 2024-04-11 12:39:54 +05:30
laurenspriem
cab649ef77 Merge remote-tracking branch 'origin/mobile_face' into mobile_face 2024-04-11 11:52:31 +05:30
laurenspriem
5b6df99486 [mob] Remove onnx models from local assets 2024-04-11 11:44:11 +05:30
laurenspriem
c902f24e63 [mob] Better organization of face detection code. 2024-04-11 11:42:31 +05:30
laurenspriem
aad0a5a1d4 [mob] More documentation 2024-04-11 11:15:37 +05:30
Neeraj Gupta
b18734f63e Merge branch 'main' into mobile_face 2024-04-11 11:10:54 +05:30
laurenspriem
21adb91c2f [mob] Rename face embedding service 2024-04-11 11:03:43 +05:30
laurenspriem
d4086357ec [mob] Remove all tflite models 2024-04-11 11:01:22 +05:30
laurenspriem
efaf869e95 [mob] Remove tflite dependency 2024-04-11 10:52:16 +05:30
laurenspriem
74f8f7aaf3 [mob] Remove debug option 2024-04-10 17:36:34 +05:30
laurenspriem
222716f6f9 [mob] Make methods private 2024-04-10 14:44:08 +05:30
laurenspriem
af8d919ff2 [mob] Documentation 2024-04-10 12:21:28 +05:30
laurenspriem
f3d18edf98 [mob] Better logging of face landmarks 2024-04-10 12:21:15 +05:30
Neeraj Gupta
fac087c81b [mob] Fix person entity update 2024-04-10 10:59:27 +05:30
Neeraj Gupta
c920aacd1b [mob] Reduce noise in the logs 2024-04-10 10:59:18 +05:30
Neeraj Gupta
16da5056ea [mob] Improve log 2024-04-10 10:53:18 +05:30
Neeraj Gupta
73007ee541 [mob] Improve log 2024-04-10 10:43:49 +05:30
Neeraj Gupta
915da41c86 [mob] generated changes 2024-04-10 10:21:07 +05:30
Neeraj Gupta
c224e38ddf Merge branch 'main' into mobile_face 2024-04-10 10:15:40 +05:30
Neeraj Gupta
e82cda1e82 [mob] Fix bug in discarding remote embedding 2024-04-10 10:10:53 +05:30
Neeraj Gupta
c8154784f1 [mob] Minor fixes 2024-04-09 16:37:54 +05:30
Neeraj Gupta
52038b8972 [mob] Sync removed clusters from a person 2024-04-09 15:00:57 +05:30
Neeraj Gupta
d43ed15cdf [mob] Add support for syncing multile clusters for a person 2024-04-09 14:48:05 +05:30
Neeraj Gupta
24f7b191b4 [mob] reduce clustering threshold 2024-04-09 09:04:07 +05:30
laurenspriem
acb3e05fc8 Merge remote-tracking branch 'origin/mobile_face' into mobile_face 2024-04-08 15:25:50 +05:30
laurenspriem
4cb15268e9 [mob] Cleaner handling of decoded image dimensions 2024-04-08 15:24:14 +05:30
Neeraj Gupta
250cb33bc9 [mob] Use localFileserver to serving files 2024-04-08 14:37:30 +05:30
laurenspriem
eeedf8b3c2 [mob] Trailing commas 2024-04-08 14:05:38 +05:30
Neeraj Gupta
b6aec20b22 [mob] Update log 2024-04-08 09:45:34 +05:30
Neeraj Gupta
0b08afdbe2 [mob] Use linear clustring for breaking up clusters 2024-04-08 08:52:00 +05:30
Neeraj Gupta
412e93c9fa [mob][face] Fix handling of case when noCluster id is assigned 2024-04-08 08:18:58 +05:30
Neeraj Gupta
67f26a1551 [mob][face] Add debug hook to delete all people to cluster mapping 2024-04-08 07:46:22 +05:30
Neeraj Gupta
2d58558737 [mob] Add support for removing people to cluster mapping 2024-04-08 07:43:08 +05:30
Neeraj Gupta
4a2b5fe27d [mob] Face: Ignore embeddings without image dims & bad landmarks 2024-04-07 16:12:59 +05:30
Neeraj Gupta
3d452c4e98 [mob] Logging changes 2024-04-07 16:11:07 +05:30
Neeraj Gupta
b00ab0541e [mob] Handle error and empty face in visibility detector 2024-04-07 16:09:34 +05:30
Neeraj Gupta
cbc7034d47 [mob] Discard old fileEmbeddings 2024-04-06 04:00:48 +05:30
Neeraj Gupta
d19d7ffe79 [mob][face] Storage width/height along with area and visibility 2024-04-06 03:49:03 +05:30
Neeraj Gupta
6c02b03426 [mob] Lint fixes 2024-04-06 01:50:45 +05:30
Neeraj Gupta
2ae37682e7 [mob] Fix bug in handling err for clustering 2024-04-05 18:49:01 +05:30
Neeraj Gupta
f261ee7184 [mob] Hide smaller clusters only when there are more than 2 clusters 2024-04-05 18:48:44 +05:30
Neeraj Gupta
add66569dd Merge branch 'main' into mobile_face 2024-04-05 18:24:44 +05:30
Neeraj Gupta
bb3a37adf5 [mob] Fetch remote entities before running clustering 2024-04-05 16:04:58 +05:30
Neeraj Gupta
7c6001321f Merge branch 'mobile_face' into mobile_face_feedback_sync 2024-04-05 16:03:32 +05:30
Neeraj Gupta
1b9c81c50c Merge branch 'mobile_face' of https://github.com/ente-io/auth into mobile_face 2024-04-05 16:00:09 +05:30
Neeraj Gupta
1996d86835 [mob] Persist remote feedback before running clustering 2024-04-05 15:59:53 +05:30
laurenspriem
0c72fd2a69 [mob] Add more validation for clustering 2024-04-05 15:50:52 +05:30
laurenspriem
723253a12c [mob] Fix issue with random photo entering cluster 2024-04-05 15:49:35 +05:30
Neeraj Gupta
18f202d3e4 [mob] Fixed bug in parsing json 2024-04-05 14:37:59 +05:30
laurenspriem
0777013b93 [mob] Show face area info in debug mode 2024-04-05 14:34:47 +05:30
laurenspriem
04a33e6f65 [mob] Show face visibility score in debug mode 2024-04-05 14:20:28 +05:30
laurenspriem
f1a7256a14 [mob] Fix wrong y-coordiantes being stored for faces 2024-04-05 14:01:26 +05:30
laurenspriem
78af84450a [mob] Show debug info on blur 2024-04-05 13:45:19 +05:30
Neeraj Gupta
2456c02956 [mob] Remove personEntity dependency from faceDB 2024-04-05 12:52:01 +05:30
Neeraj Gupta
199dad3705 [mob] Make linter happy 2024-04-05 11:59:19 +05:30
laurenspriem
ad73496c4d [mob] Minor change 2024-04-05 11:04:05 +05:30
Neeraj Gupta
ef03c6f40a [mob] Remove debug code 2024-04-05 08:09:57 +05:30
Neeraj Gupta
bd4c506fdd [mob] Remove fields & code related to person table 2024-04-05 07:50:03 +05:30
Neeraj Gupta
be06d45e3a [mob] Fix person custom avatar rendering 2024-04-05 07:21:48 +05:30
Neeraj Gupta
7429791a19 [mob] Persist person update on remote 2024-04-05 07:13:15 +05:30
Neeraj Gupta
49671cbda3 [mob] Undo local changes 2024-04-05 07:04:17 +05:30
Neeraj Gupta
81c94b1e73 [mob] Remove unused method 2024-04-05 06:58:32 +05:30
Neeraj Gupta
3fb323ef29 [mob] Read person info from entity 2024-04-05 00:24:05 +05:30
Neeraj Gupta
d8bf0ad2d5 [mob] Persist cluster information during person assignment 2024-04-04 22:04:19 +05:30
laurenspriem
b48cb84100 [mob] better cluster analysis visualization 2024-04-04 18:47:30 +05:30
laurenspriem
f1fd74b119 [mob] Option to add/remove face to cluster from file info 2024-04-04 18:47:09 +05:30
Neeraj Gupta
f5a9679c0e [mob] Rename and add more attr to PersonEntity 2024-04-04 17:27:28 +05:30
laurenspriem
19007c38b5 [mob] await removal and fire event 2024-04-04 16:03:17 +05:30
laurenspriem
583c09155b [mob] Rename file 2024-04-04 15:40:38 +05:30
laurenspriem
5bce9abb5c [mob] Rename PeopleClustersPage 2024-04-04 15:39:35 +05:30
laurenspriem
c6f9bbbbda [mob] Use rounded rectangle for cluster thumbnails 2024-04-04 15:38:23 +05:30
laurenspriem
517b099de8 [mob] better visualization of cluster analysis 2024-04-04 15:10:10 +05:30
Neeraj Gupta
2163201046 [mob] Increase the batch & bucket size 2024-04-04 14:46:56 +05:30
laurenspriem
dd3b0be8f2 [mob] Tune analysis parameter 2024-04-04 13:17:43 +05:30
laurenspriem
6a9b670d52 [mob] thinner highlight of face in file info 2024-04-04 12:58:58 +05:30
laurenspriem
0176b01fea [mob] Add basic debug UI for breaking up cluster 2024-04-04 12:14:18 +05:30
laurenspriem
15f9176208 [mob] More logs on breaking cluster 2024-04-03 21:31:16 +05:30
laurenspriem
744ded4922 [mob] Add DBSCAN clustering for intra-cluster analysis 2024-04-03 18:49:43 +05:30
laurenspriem
b21466bf13 Merge remote-tracking branch 'origin/mobile_face' into mobile_face 2024-04-03 17:02:39 +05:30
laurenspriem
6a240ee030 Highlight relevant face 2024-04-03 16:59:38 +05:30
Neeraj Gupta
922550b1a3 Merge branch 'mobile_face' of https://github.com/ente-io/auth into mobile_face 2024-04-03 13:57:58 +05:30
Neeraj Gupta
fb3a77bf94 Merge branch 'main' of https://github.com/ente-io/auth into mobile_face 2024-04-03 13:57:39 +05:30
laurenspriem
934d0bb3a0 [mob] Add todo 2024-04-03 13:19:12 +05:30
laurenspriem
11937a42b4 [mob] cluster suggestion class 2024-04-03 13:18:24 +05:30
laurenspriem
cb8f66fcaa [mob][wip] break up cluster method 2024-04-03 13:06:46 +05:30
laurenspriem
786ddf438b Add distance parameter to clustering 2024-04-03 13:06:08 +05:30
Neeraj Gupta
e10cb5d456 [mob] Fix person cover photo 2024-04-03 05:26:08 +05:30
Neeraj Gupta
a8b154b46e Merge branch 'mobile_face' of https://github.com/ente-io/auth into mobile_face 2024-04-02 17:39:19 +05:30
Neeraj Gupta
172678dc42 [mob] Lint fixes 2024-04-02 17:39:03 +05:30
laurenspriem
8fefc22180 Merge remote-tracking branch 'origin/mobile_face' into mobile_face 2024-04-02 17:30:50 +05:30
Neeraj Gupta
8e6617eed5 [mob] Speed up cluster avg calculation 2024-04-02 17:29:20 +05:30
ashilkn
07808d6139 Merge branch 'main' into f-droid 2024-04-02 17:22:34 +05:30
Neeraj Gupta
faa07a0704 [mob] compute suggestion in small batches 2024-04-02 16:56:55 +05:30
laurenspriem
57fec06d73 [mob] Bump minimum face score for clustering to 0.8 2024-04-02 16:44:34 +05:30
Neeraj Gupta
e2ed836b16 Merge branch 'mobile_face' of https://github.com/ente-io/auth into mobile_face 2024-04-02 14:07:18 +05:30
Neeraj Gupta
bdb7ce2f03 [mob] Store image height and width 2024-04-02 14:07:02 +05:30
laurenspriem
255b566342 View faces with highest distance in cluster suggestion 2024-04-02 13:46:42 +05:30
Neeraj Gupta
c85692360c [mob] Fix face cluster suggestion 2024-04-02 13:35:32 +05:30
Neeraj Gupta
8e322114b7 [mob] Fix reset queries for feedback & clusters 2024-04-02 12:21:14 +05:30
Neeraj Gupta
226808aadb [mob] Use vector for cosine dist 2024-04-02 11:53:40 +05:30
Neeraj Gupta
4cb7334868 [mob] Remove unused method 2024-04-02 10:43:50 +05:30
Neeraj Gupta
814c0ad4b6 [mob] Drop cluster colum from files table 2024-04-02 10:41:28 +05:30
Neeraj Gupta
51b51ff2b1 [mob] Use separate table for storing clusters 2024-04-01 17:34:35 +05:30
Neeraj Gupta
323521d496 [mob] Rename face tables 2024-04-01 16:05:23 +05:30
Neeraj Gupta
baec7a2af8 [mob] Remove unused column from facesTable 2024-04-01 15:49:15 +05:30
Neeraj Gupta
7e9c6a7f81 [mob] Rename 2024-04-01 15:44:25 +05:30
Neeraj Gupta
5b339fc30e Merge branch 'mobile_face' of https://github.com/ente-io/auth into mobile_face 2024-04-01 15:37:41 +05:30
Neeraj Gupta
f663bbfc53 [mob] Rename 2024-04-01 15:37:25 +05:30
laurenspriem
1af3d2d2db [mob] Big cleanup of old code 2024-04-01 15:34:45 +05:30
Neeraj Gupta
29c58d5554 [mob] Remove unused code 2024-04-01 15:31:50 +05:30
laurenspriem
e7670bfee6 [mob] complete remove from cluster feedback 2024-04-01 15:14:28 +05:30
Neeraj Gupta
a75c440dc2 [mob] sync person entity type 2024-04-01 15:10:19 +05:30
laurenspriem
768fa3d1ce [mob][wip] remove from cluster feedback 2024-03-30 18:35:46 +05:30
laurenspriem
a3b6a72315 [mob] Debug option to reset feedback 2024-03-30 17:13:54 +05:30
laurenspriem
7f66bd2ed0 [mob] constant increments in bucket clustering 2024-03-30 15:17:26 +05:30
laurenspriem
f5ea834fad [mob] delete old file 2024-03-30 14:41:15 +05:30
laurenspriem
aa79c4ee24 Merge remote-tracking branch 'origin/mobile_face' into mobile_face 2024-03-29 18:27:32 +05:30
laurenspriem
8c6bb30578 Change faceID generation 2024-03-29 18:26:28 +05:30
laurenspriem
8aed14ace6 [mob] Change text 2024-03-29 17:33:29 +05:30
laurenspriem
b56b0c47d0 Show debug info for cluster suggestions 2024-03-29 17:26:58 +05:30
laurenspriem
2a04192b3c [mob] temp fix 2024-03-29 17:24:50 +05:30
Neeraj Gupta
67134db3a4 [mob] Fixed typo 2024-03-29 15:43:13 +05:30
Neeraj Gupta
44a5b97de1 [mob] Storge cluster summary in batches 2024-03-29 15:39:12 +05:30
Neeraj Gupta
ab875ea9a9 [mob] Use epochTime as clusterID 2024-03-29 14:33:11 +05:30
Neeraj Gupta
5f468e6c63 [mob] Trim face score 2024-03-29 12:49:20 +05:30
laurenspriem
1d527f9e02 Add face score in debugMode 2024-03-29 12:18:21 +05:30
laurenspriem
afa8a372d2 Merge remote-tracking branch 'origin/mobile_face' into mobile_face 2024-03-29 12:14:33 +05:30
Neeraj Gupta
6c287775d4 [mob] Add logs for cluster feedback suggestions 2024-03-28 16:25:09 +05:30
Neeraj Gupta
9aafe137a1 Merge branch 'mobile_face' of https://github.com/ente-io/auth into mobile_face 2024-03-28 16:13:25 +05:30
Neeraj Gupta
d6db3de6b1 [mob] Log time to fetch in debugMode 2024-03-28 13:40:15 +05:30
Neeraj Gupta
03e5f06bf2 [mob][face] Add delay before starting faceIndexing 2024-03-28 13:27:16 +05:30
Neeraj Gupta
aa58989299 [mob] Remove commented out code 2024-03-28 13:23:39 +05:30
Neeraj Gupta
5b94cbf912 [face][mob] Log db batch update progress 2024-03-28 13:22:32 +05:30
laurenspriem
3869802e4c Use alternative face thumbnails in suggestions 2024-03-27 16:08:23 +05:30
laurenspriem
a09b71cc15 [mob] Faster face cropping method 2024-03-23 17:02:22 +05:30
laurenspriem
b1b3bcc534 Support for clustering in buckets 2024-03-22 11:49:23 +05:30
laurenspriem
85f76497b4 More debug info 2024-03-22 11:31:33 +05:30
laurenspriem
005ab0814f [mob] Remove empty CTA icon when there are people 2024-03-21 18:59:45 +05:30
laurenspriem
b8813161a1 Add faces count 2024-03-21 18:23:21 +05:30
laurenspriem
f94aa400bf [mob] Minor changes to clustering 2024-03-21 18:07:12 +05:30
laurenspriem
b5cff212bb Refactor of clustering 2024-03-21 16:59:55 +05:30
laurenspriem
212208ae01 Add debugPrint 2024-03-21 16:53:22 +05:30
laurenspriem
fc8122b18e Add indexing debug cooldown 2024-03-21 16:52:52 +05:30
laurenspriem
a2bca84b91 [mob] Sort clustering on fileCreationTime asc 2024-03-21 15:41:34 +05:30
laurenspriem
a9fdee96a8 More debug options 2024-03-21 12:40:03 +05:30
laurenspriem
125a4de66a Deprecate function 2024-03-20 16:20:55 +05:30
laurenspriem
a4582c0e55 Move FaceML inside Machine Learning directory 2024-03-20 15:51:57 +05:30
laurenspriem
1819ea834a Forgot to delete debug stuff 2024-03-20 14:44:28 +05:30
laurenspriem
a443ac1680 Better use of constants 2024-03-20 14:42:42 +05:30
laurenspriem
39f16ff517 Only show high quality faces in file info 2024-03-20 14:34:12 +05:30
laurenspriem
974b7c7329 Increase blur threshold 2024-03-20 14:15:59 +05:30
laurenspriem
af1a6fc9fa [mob] Log actually analyzed count 2024-03-20 12:03:08 +05:30
laurenspriem
2573328c30 [mob] Minor change 2024-03-20 11:28:59 +05:30
laurenspriem
eaea4f81b7 [mob] update server on old FaceMlVersion 2024-03-20 11:28:37 +05:30
laurenspriem
17fa64aa5e Remove unused import 2024-03-20 10:43:02 +05:30
laurenspriem
83d8d7ae7a [mob] empty constructor for Face 2024-03-19 18:24:46 +05:30
Neeraj Gupta
4d4bdb99df Remove auth/flutter submodule 2024-03-19 16:20:34 +05:30
Neeraj Gupta
a79b14db78 [mob] use ml version when to decide need for re-index 2024-03-19 16:16:08 +05:30
Neeraj Gupta
e83e8cdb6e [mob] minor refactor 2024-03-19 15:18:07 +05:30
Neeraj Gupta
3e4cf4b4f2 [mob] Skip already indexed files on remote 2024-03-19 15:06:32 +05:30
Neeraj Gupta
8a4ca15eb8 [mob] generated strings 2024-03-19 13:44:57 +05:30
Neeraj Gupta
79acd166b7 [mob] Enable magic search in face 2024-03-19 12:37:24 +05:30
Neeraj Gupta
f78eb703ef [mob] Add support for pushing embeddings to remote 2024-03-16 23:02:44 +05:30
laurenspriem
58c85c8c13 Deprecating some methods 2024-03-15 18:22:40 +05:30
laurenspriem
0b0a0cec26 [mob] Only run decoding of images once 2024-03-15 18:15:57 +05:30
laurenspriem
470a3da7b0 Merge remote-tracking branch 'origin/mobile_face' into mobile_face 2024-03-15 17:10:16 +05:30
laurenspriem
9285baace2 Change Face to use relative coordinates 2024-03-15 17:07:17 +05:30
Neeraj Gupta
bcfe05f16a [mob] Remove unused import 2024-03-15 15:20:49 +05:30
laurenspriem
ca16c6f0d6 Merge remote-tracking branch 'origin/mobile_face' into mobile_face 2024-03-15 14:58:21 +05:30
laurenspriem
cdd8929bc6 Cleanup 2024-03-15 14:53:46 +05:30
laurenspriem
05f188080b Remove image package in thumbnail generation 2024-03-15 14:53:40 +05:30
Neeraj Gupta
85ed93e374 [mob] Remove unused files 2024-03-15 14:52:57 +05:30
Neeraj Gupta
3007c4c7dd Remove unused model 2024-03-15 14:41:57 +05:30
laurenspriem
847a99d0e9 Fix cutoff face thumbnails 2024-03-15 12:52:27 +05:30
laurenspriem
52b787f71e Face thumbnail generation without canvas 2024-03-15 12:48:01 +05:30
Neeraj Gupta
9f3fe7b05b Merge branch 'main' into mobile_face 2024-03-14 17:11:53 +05:30
laurenspriem
8ef673fe58 Clean up logs 2024-03-14 16:13:42 +05:30
laurenspriem
74d1cbb01f Use full file on face detection 2024-03-14 16:13:27 +05:30
laurenspriem
f0ad363895 elliptical rounding on face widget 2024-03-14 16:04:08 +05:30
Neeraj Gupta
c643876955 [mob][face] Fix clear table query 2024-03-14 11:12:22 +05:30
vishnukvmd
1e1633bb45 Merge branch 'main' into f-droid 2024-03-13 21:57:19 +05:30
vishnukvmd
c0f33de0c8 Remove dead code 2024-03-13 21:56:09 +05:30
laurenspriem
17684a112e [mob] green banner for adding name to cluster 2024-03-13 19:00:23 +05:30
laurenspriem
aad4bd3b79 Better logging for face detection 2024-03-13 18:32:57 +05:30
Neeraj Gupta
614db863bc [mob] Fix search tab 2024-03-13 17:49:10 +05:30
Neeraj Gupta
f239959067 Merge branch 'mobile_face' of https://github.com/ente-io/auth into mobile_face 2024-03-13 16:39:27 +05:30
laurenspriem
83b9afa5c8 custom interpolation for face detection 2024-03-13 16:36:45 +05:30
vishnukvmd
417621b17c Pull code for transistor-background-fetch 2024-03-13 14:14:19 +05:30
vishnukvmd
8322540732 Add submodule for Flutter 2024-03-13 14:13:40 +05:30
vishnukvmd
2d61be37bb Add submodule for Isar 2024-03-13 14:12:23 +05:30
vishnukvmd
2a10aa7d61 Merge branch 'fdroid_cleanup' into f-droid 2024-03-13 13:52:25 +05:30
vishnukvmd
004eb310b3 Prepare for F-Droid 2024-03-13 13:43:46 +05:30
Neeraj Gupta
33a0a3511a Merge branch 'mobile_face' of https://github.com/ente-io/auth into mobile_face 2024-03-13 12:06:53 +05:30
Neeraj Gupta
f9dd509d61 Merge branch 'main' of https://github.com/ente-io/auth into mobile_face 2024-03-13 12:06:33 +05:30
laurenspriem
af978e1e36 Banner to add name to cluster 2024-03-12 18:52:31 +05:30
laurenspriem
a00a8bb0a9 RRect for faces in file info 2024-03-12 18:48:21 +05:30
laurenspriem
3b2fa3ba10 bicubic interpolation 2024-03-12 17:06:42 +05:30
laurenspriem
5b3519ea38 Align faces with bilinear interpolation in dart 2024-03-11 18:50:00 +05:30
laurenspriem
ebc69b645e Enable faces section quick and dirty fix 2024-03-11 18:18:45 +05:30
laurenspriem
db4b1a8767 Deprecate TFLite preprocessing methods 2024-03-11 17:10:16 +05:30
Neeraj Gupta
350e02f348 Lint fixes 2024-03-08 12:00:39 +05:30
Neeraj Gupta
d2bf4846a5 [mobile] Patch faces mvp from photos-app repo 2024-03-08 09:36:03 +05:30
680 changed files with 29896 additions and 12147 deletions

View File

@@ -4,11 +4,12 @@ labels: ["triage"]
body:
- type: markdown
attributes:
value: >
Before opening a new issue, please ensure you are on the latest
version (it might've already been fixed), and that you've searched
for existing issues (please add you observations as a comment
there instead of creating a duplicate).
value: |
Before opening a new bug report, please ensure
1. you are on the latest version (it might've already been fixed),
2. you've searched for existing issues (please add your observations as a comment there instead of creating a duplicate).
If you are self hosting, please create a community [Q&A](https://github.com/ente-io/ente/discussions/categories/q-a) instead.
- type: textarea
attributes:
label: Description
@@ -16,7 +17,8 @@ body:
Please describe the bug. If possible, also include the steps to
reproduce the behaviour, and the expected behaviour (sometimes
bugs are just expectation mismatches, in which case this would be
a good fit for Discussions).
a good fit for [feature
requests](https://github.com/ente-io/ente/discussions/categories/feature-requests)).
validations:
required: true
- type: input

View File

@@ -4,7 +4,7 @@ on:
workflow_dispatch: # Allow manually running the action
env:
FLUTTER_VERSION: "3.19.3"
FLUTTER_VERSION: "3.22.0"
jobs:
build:

View File

@@ -9,7 +9,8 @@ on:
- ".github/workflows/mobile-lint.yml"
env:
FLUTTER_VERSION: "3.19.5"
FLUTTER_VERSION: "3.22.0"
jobs:
lint:

View File

@@ -9,7 +9,7 @@ on:
- "photos-v*"
env:
FLUTTER_VERSION: "3.19.3"
FLUTTER_VERSION: "3.22.0"
jobs:
build:

6
.gitignore vendored
View File

@@ -1,8 +1,6 @@
# Let folks use their custom .vscode settings
# Let folks use their custom editor settings
.vscode
.idea
# macOS
.DS_Store
.idea
.ente.authenticator.db
.ente.offline_authenticator.db

3
.gitmodules vendored
View File

@@ -20,3 +20,6 @@
path = web/apps/photos/thirdparty/photoswipe
url = https://github.com/ente-io/PhotoSwipe.git
branch = single-thread
[submodule "mobile/thirdparty/flutter"]
path = mobile/thirdparty/flutter
url = https://github.com/flutter/flutter

View File

@@ -12,9 +12,10 @@ There are many ways to contribute, and most of them don't require writing code.
## Spread the word
This is perhaps the most impactful contribution you can make. Spread the word.
Online on your favorite social media channels. Offline to your friends and
family who are looking for a privacy-friendly alternative to big tech.
This is perhaps the most impactful contribution you can make. [Spread the
word](https://help.ente.io/photos/features/referral-program/). Online on your
favorite social media channels. Offline to your friends and family who are
looking for a privacy-friendly alternative to big tech.
## Engage with the community
@@ -76,7 +77,10 @@ us](https://github.com/ente-io/ente/discussions). Discussing your idea with us
first ensures that everyone is on the same page before you start working on your
change.
## Star
## Leave a review or star
If you haven't already done so, consider [starring this
repository](https://github.com/ente-io/ente/stargazers).
repository](https://github.com/ente-io/ente/stargazers) or leaving a review on
[PlayStore](https://play.google.com/store/apps/details?id=io.ente.auth),
[AppStore](https://apps.apple.com/us/app/ente-authenticator/id6444121398) or
[AlternativeTo](https://alternativeto.net/software/ente-authenticator/).

View File

@@ -60,8 +60,8 @@ Our labour of love. Two years ago, while building Ente Photos, we realized that
there was no open source end-to-end encrypted authenticator app. We already had
the building blocks, so we built one.
Ente Auth is currently free. If in the future we convert this to a paid service,
existing users will be grandfathered in.
Ente Auth is free, and will remain free forever. If you like the service and
want to give back, please check out Ente Photos or spread the word.
<br />

View File

@@ -95,13 +95,10 @@ more, see [docs/adding-icons](docs/adding-icons.md).
## 💚 Contribute
For more ways to contribute, see [../CONTRIBUTING.md](../CONTRIBUTING.md).
The best way to support this project is by checking out [Ente
Photos](../mobile/README.md) or spreading the word.
You can also support us by giving this project a ⭐ star on GitHub or by leaving
a review on
[PlayStore](https://play.google.com/store/apps/details?id=io.ente.auth),
[AppStore](https://apps.apple.com/us/app/ente-authenticator/id6444121398) or
[AlternativeTo](https://alternativeto.net/software/ente-authenticator/).
For more ways to contribute, see [../CONTRIBUTING.md](../CONTRIBUTING.md).
## ⭐️ About

View File

@@ -1,7 +1,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<application android:name="${applicationName}"
android:label="auth"
android:label="Auth"
android:icon="@mipmap/launcher_icon"
android:usesCleartextTraffic="true"
android:requestLegacyExternalStorage="true"

View File

@@ -32,7 +32,10 @@
},
{
"title": "Bloom Host",
"slug": "bloom_host"
"slug": "bloom_host",
"altNames": [
"Bloom Host Billing"
]
},
{
"title": "BorgBase",
@@ -83,6 +86,9 @@
{
"title": "Discourse"
},
{
"title": "Doppler"
},
{
"title": "dus.net",
"slug": "dusnet"
@@ -190,6 +196,15 @@
{
"title": "Letterboxd"
},
{
"title": "Local",
"slug": "local_wp",
"altNames": [
"LocalWP",
"Local WP",
"Local Wordpress"
]
},
{
"title": "Mastodon",
"altNames": [
@@ -203,7 +218,12 @@
},
{
"title": "Mercado Livre",
"slug": "mercado_livre"
"slug": "mercado_livre",
"altNames": [
"Mercado Libre",
"MercadoLibre",
"MercadoLivre"
]
},
{
"title": "Murena",
@@ -302,6 +322,10 @@
"title": "Rockstar Games",
"slug": "rockstar_games"
},
{
"title": "RuneMate",
"hex": "2ECC71"
},
{
"title": "Rust Language Forum",
"slug": "rust_language_forum",
@@ -341,7 +365,10 @@
"hex": "FFFFFF"
},
{
"title": "Techlore"
"title": "Techlore",
"altNames": [
"Techlore Courses"
]
},
{
"title": "Termius",
@@ -412,6 +439,14 @@
"Яндекс"
],
"slug": "Yandex"
},
{
"title": "YNAB",
"altNames": [
"You Need A Budget"
],
"slug": "ynab",
"hex": "3B5EDA"
}
]
}

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 68 KiB

After

Width:  |  Height:  |  Size: 68 KiB

View File

@@ -0,0 +1 @@
<svg fill="none" height="800" viewBox="0 0 800 800" width="800" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><radialGradient id="a" cx="0" cy="0" gradientTransform="matrix(-423.0004 -300.00003 172.7003 -243.50762 861 448)" gradientUnits="userSpaceOnUse" r="1"><stop offset="0" stop-color="#ea5926"/><stop offset="1" stop-color="#ea5a25" stop-opacity="0"/></radialGradient><radialGradient id="b" cx="0" cy="0" gradientTransform="matrix(-318.99928 -110.0022 110.0022 -318.99928 800 736)" gradientUnits="userSpaceOnUse" r="1"><stop offset="0" stop-color="#ea5a25"/><stop offset="1" stop-color="#ed5a21" stop-opacity="0"/></radialGradient><linearGradient id="c" gradientUnits="userSpaceOnUse" x1="505" x2="1.46826" y1="-305" y2="800.669"><stop offset="0" stop-color="#ff9efa"/><stop offset=".426562" stop-color="#ac50f7"/><stop offset=".646435" stop-color="#6b13f5"/></linearGradient><clipPath id="d"><path d="m0 0h500v500h-500z" transform="translate(150 150)"/></clipPath><rect fill="url(#c)" height="800" rx="400" width="800"/><rect fill="url(#a)" height="800" rx="400" width="800"/><rect fill="url(#b)" height="800" rx="400" width="800"/><g clip-path="url(#d)" fill="#fff"><path d="m467.396 151.3c-21.021-5.632-42.449 7.589-46.843 28.903l-19.94 96.716c-13.025 63.174-62.376 112.549-125.545 125.603l-94.873 19.607c-21.312 4.405-34.527 25.833-28.894 46.854 5.633 21.023 27.796 32.974 48.456 26.128l92.327-30.593c61.386-20.341 128.989-2.227 171.981 46.082l64.666 72.664c14.467 16.255 39.63 16.987 55.017 1.6 15.39-15.389 14.655-40.558-1.607-55.023l-73.135-65.056c-48.44-43.09-66.604-110.866-46.202-172.405l30.71-92.633c6.847-20.655-5.099-42.815-26.118-48.447z"/><path d="m216.103 272.283c-17.191-15.554-17.86-42.331-1.467-58.723 16.393-16.393 43.169-15.724 58.723 1.467l48.898 54.045c13.189 14.578 12.631 36.937-1.27 50.838s-36.261 14.46-50.839 1.271zm380.232 29.881c22.065-7.11 45.589 5.698 51.589 28.091s-7.967 45.248-30.632 50.122l-71.253 15.325c-19.22 4.133-38.305-7.53-43.393-26.52-5.088-18.989 5.608-38.632 24.32-44.662zm-217.826 315.811c-4.875 22.664-27.73 36.632-50.122 30.632-22.393-6-35.202-29.524-28.091-51.589l22.355-69.37c6.03-18.711 25.673-29.407 44.663-24.319 18.989 5.088 30.653 24.173 26.519 43.392z"/></g></svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 16 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 57 KiB

After

Width:  |  Height:  |  Size: 117 KiB

View File

@@ -0,0 +1,8 @@
<svg height="512pt" viewBox="0 0 512 512" width="512pt" xmlns="http://www.w3.org/2000/svg" fill="#2ecc71">
<symbol id="a" viewBox="0 0 1000 1000" style="clip-rule:evenodd;fill-rule:evenodd;image-rendering:optimizeQuality;shape-rendering:geometricPrecision;text-rendering:geometricPrecision">
<path d="M456.557 954.142c-51.209-5.834-105.636-23.11-164.89-52.34-77.345-38.153-130.132-84.108-171.904-149.652-13.757-21.586-34.244-56.915-41.287-71.198-26.53-53.794-41.318-128.813-39.427-200 3.104-116.883 48.87-223.866 132.312-309.3C245.728 95.508 343.98 48.75 449.405 39.326c16.075-1.437 42.857-1.633 42.857-.314 0 .84-9.912 36.005-15.619 55.41-2.335 7.94-2.459 8.099-5.794 7.366-5.02-1.103-38.597 1.5-54.588 4.23-78.184 13.352-148.872 53.08-205.858 115.696-44.404 48.79-73.222 96.544-90.72 150.33-9.247 28.422-13.436 51.91-15.467 86.718-4.603 78.927 3.852 137.972 26.617 185.88 11.44 24.075 41.212 74.137 53.452 89.88 12.95 16.658 45.5 53.571 47.225 53.557 1.003-.008 6.645-1.359 12.538-3.002 33.243-9.268 71.782-16.19 110.119-19.778 23.046-2.158 81.589-1.805 105.952.637 80.53 8.074 152.793 28.04 218.763 60.442 14.585 7.164 22.502 10.436 24.057 9.942 4.456-1.414 34.073-21.892 46.466-32.127 36.789-30.385 55.405-51.859 83.62-96.456 12.304-19.447 33.186-60.968 40.115-79.762 11.156-30.26 17.905-59.183 20.418-87.5 1.58-17.803.844-74.678-1.255-97.024-5.875-62.539-19.14-96.584-65.864-169.047-18.12-28.102-30.924-44.798-47.526-61.974-33.977-35.15-76.434-63.926-121.175-82.126-7.53-3.063-13.868-5.732-14.086-5.932-.217-.2 2.595-13.79 6.25-30.202 3.655-16.412 6.646-30.065 6.646-30.34 0-.699 20.397 5.54 29.894 9.143 48.79 18.51 94.215 50.387 138.598 97.264 28.447 30.046 56.905 68.452 77.93 105.172 23.918 41.775 43.482 101.062 51.717 156.733 12.077 81.642 3.119 156.375-27.337 228.05-26.303 61.906-59.852 113.54-102.193 157.284-24.676 25.493-52.838 48.34-76.347 61.935-5.239 3.03-14.647 8.58-20.908 12.333-39.579 23.728-89.618 43.541-136.83 54.177-30.244 6.813-50.423 9.032-86.31 9.49-23.602.3-37.675-.07-48.205-1.27z"/>
<path d="M500.595 722.575c-49.27-3.036-105.94-12.2-150.595-24.354-49.438-13.455-103.365-35.123-141.369-56.803-12.536-7.15-12.797-7.387-12.786-11.562.006-2.343 1.876-23.814 4.155-47.713 2.28-23.899 4.15-44.297 4.155-45.328.01-1.554-3.775-2.292-22.044-4.298-12.131-1.332-22.383-2.75-22.782-3.148-.891-.891 9.648-113.624 10.723-114.698.423-.423 11.314.114 24.203 1.193 12.89 1.08 23.606 1.79 23.816 1.581.27-.27 14.667-126.689 14.667-128.792 0-.604 20.651-7.884 29.762-10.492 34.467-9.866 97.903-19.388 152.496-22.89l12.614-.81 1.922-15.477c1.056-8.512 2.076-15.622 2.266-15.799.19-.177 12.08.182 26.425.797 14.344.616 26.479.695 26.966.176.487-.52 15.317-42.194 32.956-92.61 31.657-90.487 32.112-91.672 35.394-92.059 4.302-.507 31.608 2.981 39.318 5.023 3.274.867 5.892 2.055 5.818 2.64-.073.584-8.608 42.17-18.966 92.413-10.358 50.243-18.592 91.591-18.298 91.886.294.294 13.353 2.995 29.019 6.003 15.666 3.007 28.707 5.69 28.979 5.963.272.272-.376 8.106-1.44 17.409-1.065 9.303-1.681 17.168-1.37 17.479.31.31 6.685 1.808 14.166 3.328 27.185 5.523 59.165 15.788 92.694 29.752 18.402 7.665 72.77 34.438 74.732 36.802.998 1.202-.2 17.922-4.742 66.131-3.342 35.487-5.827 64.772-5.52 65.079.306.306 10.781 1.422 23.278 2.48 19.132 1.62 22.722 2.221 22.722 3.81 0 3.471-10.586 114.581-10.95 114.934-.198.192-11.208-.558-24.467-1.666-16.147-1.35-24.13-1.608-24.176-.783-.038.678-2.583 22.36-5.656 48.182l-5.587 46.95-15.475 3.924c-48.273 12.242-94.678 20.005-144.642 24.197-20.767 1.742-81.67 2.427-102.38 1.15zm83.334-73.78c32.215-2.204 65.058-6.745 96.16-13.295 10.325-2.175 12.312-2.962 12.758-5.05.29-1.36 5.928-54.426 12.529-117.924 11.371-109.385 11.891-115.53 9.9-116.986-4.135-3.024-25.054-13.273-39.086-19.15-47.244-19.786-97.576-32.17-158.928-39.105-26.75-3.023-100.774-3.013-129.096.019-24.927 2.667-45.3 5.631-67.127 9.764l-16.763 3.175-.677 4.938c-2.761 20.122-25.65 226.992-25.376 229.34.296 2.531 2.763 4.19 16.42 11.041C351.133 623.9 427.686 643.701 500 648.678c20.699 1.425 63.937 1.485 83.929.117z"/>
<path d="M441.221 506.496c-2.209-.959-9.779-7.098-16.821-13.644-7.043-6.545-13.208-11.9-13.7-11.9-.494 0-7.17 4.746-14.838 10.547-9.216 6.972-15.442 10.829-18.369 11.378-12.159 2.28-25.707-8.772-25.707-20.972 0-10.383 3.31-14.929 22.964-31.532 20.158-17.029 29.05-20.901 41.876-18.239 9.676 2.01 17.414 8.276 33.054 26.77 15.838 18.73 19.347 24.737 19.36 33.152.007 5.098-.483 6.196-4.344 9.734-6.791 6.223-15.813 8.032-23.475 4.706zm171.214 16.261c-2.91-1.89-9.834-8.05-15.385-13.69-5.55-5.642-10.54-10.257-11.088-10.257-.547 0-6.88 4.576-14.073 10.17-14.107 10.97-16.86 12.449-23.195 12.449-6.057 0-11.222-2.58-16.19-8.084-7.604-8.428-8.187-17.083-1.791-26.58 4.035-5.992 31.416-29.148 38.829-32.838 12.562-6.252 26.061-4.757 37.253 4.125 3.083 2.446 11.776 11.884 19.318 20.973 14.946 18.01 19.353 26.332 17.938 33.874-2.207 11.769-20.08 17.341-31.616 9.858z"/>
</symbol>
<use xlink:href="#a" xmlns:xlink="http://www.w3.org/1999/xlink"/>
</svg>

After

Width:  |  Height:  |  Size: 4.9 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 59 KiB

After

Width:  |  Height:  |  Size: 59 KiB

View File

@@ -0,0 +1,20 @@
<svg width="576" height="569" viewBox="0 0 576 569" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M464.493 260.334H359.255C357.022 260.334 354.236 261.878 353.078 263.765L290.011 366.435C288.854 368.323 286.969 368.313 285.812 366.435L223.411 263.786C222.264 261.898 219.488 260.344 217.255 260.344H111.526C109.293 260.344 108.473 261.838 109.723 263.675L234.392 446.992C235.641 448.819 236.655 452.129 236.655 454.33V564.377C236.655 566.577 238.489 568.383 240.722 568.383H335.255C337.488 568.383 339.322 566.577 339.322 564.377V454.33C339.322 452.129 340.346 448.819 341.586 446.992L466.285 263.675C467.535 261.848 466.715 260.344 464.482 260.344L464.493 260.334Z" fill="#3B5EDA"/>
<path d="M280.775 101.732C283.521 103.236 286.184 104.457 287.587 104.457C288.99 104.457 291.347 103.62 294.379 101.732C353.983 64.118 304.386 17.9556 287.587 0.566406C270.778 17.9556 221.181 64.118 280.775 101.732Z" fill="#3B5EDA"/>
<path d="M218.089 238.947C221.48 238.675 224.624 238.201 225.884 237.363C227.154 236.525 228.763 234.386 230.34 230.884C261.09 161.69 188.241 149.479 162.49 143.756C157.952 169.381 141.44 240.35 218.089 238.937V238.947Z" fill="#3B5EDA"/>
<path d="M120.44 223.836C123.308 222.029 125.858 220.172 126.585 218.85C127.313 217.528 127.722 214.884 127.456 211.069C121.812 135.739 51.6162 158.488 26.1416 165.3C34.2951 190.037 53.3678 260.39 120.44 223.836V223.836Z" fill="#3B5EDA"/>
<path d="M132.607 350.144C133.826 347.016 134.747 344.018 134.532 342.535C134.317 341.041 133.047 338.69 130.538 335.773C80.5514 278.509 37.8274 337.912 21.4487 358.309C42.9285 373.428 100.71 418.823 132.596 350.144H132.607Z" fill="#3B5EDA"/>
<path d="M287.578 120.822C274.426 135.446 235.615 174.241 282.242 205.86C284.393 207.122 286.472 208.151 287.578 208.151C288.684 208.151 290.518 207.445 292.895 205.86C339.532 174.241 300.73 135.436 287.578 120.822Z" fill="#3B5EDA"/>
<path d="M159.196 382.333C158.448 381.818 156.861 381.445 154.495 381.425C107.786 381.233 115.561 425.518 117.487 441.525C133.384 437.71 178.218 429.404 161.706 386.36C160.846 384.513 159.934 382.848 159.186 382.333H159.196Z" fill="#3B5EDA"/>
<path d="M282.242 306.502C284.393 307.763 286.472 308.793 287.578 308.793C288.684 308.793 290.518 308.086 292.894 306.502C339.531 274.882 300.73 236.077 287.578 221.463C274.426 236.087 235.615 274.882 282.242 306.502Z" fill="#3B5EDA"/>
<path d="M85.4788 282.937C86.9436 280.939 88.1727 278.991 88.2751 277.911C88.3776 276.831 87.8244 274.964 86.4416 272.492C58.6623 223.887 15.9587 258.494 0 270.09C13.6028 284.31 49.3517 325.87 85.4893 282.937H85.4788Z" fill="#3B5EDA"/>
<path d="M133.537 149.101C136.036 148.93 138.341 148.607 139.242 147.981C140.143 147.355 141.25 145.751 142.284 143.116C162.279 90.9288 107.939 80.8768 88.6822 76.2646C86.3468 95.6621 76.9434 149.353 133.547 149.101H133.537Z" fill="#3B5EDA"/>
<path d="M210.076 132.318C212.831 132.792 215.433 133.054 216.591 132.621C217.748 132.187 219.387 130.733 221.23 128.14C257.286 76.719 200.949 51.3166 181.262 41.1737C173.395 61.6511 148.453 117.522 210.076 132.318V132.318Z" fill="#3B5EDA"/>
<path d="M349.542 237.37C350.812 238.207 353.946 238.672 357.337 238.954C433.976 240.367 417.464 169.398 412.937 143.773C387.185 149.486 314.336 161.707 345.086 230.901C346.664 234.393 348.272 236.542 349.542 237.38V237.37Z" fill="#3B5EDA"/>
<path d="M448 211.065C447.734 214.879 448.143 217.524 448.871 218.846C449.598 220.168 452.148 222.035 455.016 223.832C522.098 260.376 541.171 190.032 549.314 165.296C523.839 158.494 453.644 135.735 448 211.065V211.065Z" fill="#3B5EDA"/>
<path d="M444.868 335.773C442.359 338.69 441.089 341.051 440.874 342.535C440.659 344.018 441.59 347.016 442.809 350.144C474.696 418.823 532.478 373.428 553.957 358.309C537.579 337.912 494.865 278.509 444.868 335.773V335.773Z" fill="#3B5EDA"/>
<path d="M420.923 381.408C418.557 381.428 416.969 381.811 416.222 382.316C415.474 382.821 414.562 384.486 413.702 386.343C397.2 429.387 442.024 437.693 457.921 441.508C459.847 425.511 467.621 381.216 420.913 381.408H420.923Z" fill="#3B5EDA"/>
<path d="M488.991 272.502C487.598 274.974 487.055 276.841 487.158 277.921C487.26 279.001 488.479 280.949 489.954 282.947C526.092 325.87 561.84 284.32 575.443 270.099C559.484 258.513 516.781 223.907 489.002 272.502H488.991Z" fill="#3B5EDA"/>
<path d="M436.185 147.981C437.086 148.596 439.391 148.919 441.89 149.101C498.493 149.353 489.091 95.6621 486.755 76.2646C467.498 80.8768 413.148 90.9389 433.153 143.116C434.177 145.751 435.283 147.365 436.195 147.981H436.185Z" fill="#3B5EDA"/>
<path d="M358.842 132.621C359.999 133.054 362.591 132.792 365.357 132.318C426.979 117.522 402.037 61.6411 394.171 41.1737C374.494 51.3166 318.156 76.719 354.202 128.14C356.046 130.733 357.684 132.187 358.842 132.621V132.621Z" fill="#3B5EDA"/>
</svg>

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 133 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 801 KiB

View File

@@ -6,35 +6,35 @@ PODS:
- ReachabilitySwift
- device_info_plus (0.0.1):
- Flutter
- DKImagePickerController/Core (4.3.4):
- DKImagePickerController/Core (4.3.9):
- DKImagePickerController/ImageDataManager
- DKImagePickerController/Resource
- DKImagePickerController/ImageDataManager (4.3.4)
- DKImagePickerController/PhotoGallery (4.3.4):
- DKImagePickerController/ImageDataManager (4.3.9)
- DKImagePickerController/PhotoGallery (4.3.9):
- DKImagePickerController/Core
- DKPhotoGallery
- DKImagePickerController/Resource (4.3.4)
- DKPhotoGallery (0.0.17):
- DKPhotoGallery/Core (= 0.0.17)
- DKPhotoGallery/Model (= 0.0.17)
- DKPhotoGallery/Preview (= 0.0.17)
- DKPhotoGallery/Resource (= 0.0.17)
- DKImagePickerController/Resource (4.3.9)
- DKPhotoGallery (0.0.19):
- DKPhotoGallery/Core (= 0.0.19)
- DKPhotoGallery/Model (= 0.0.19)
- DKPhotoGallery/Preview (= 0.0.19)
- DKPhotoGallery/Resource (= 0.0.19)
- SDWebImage
- SwiftyGif
- DKPhotoGallery/Core (0.0.17):
- DKPhotoGallery/Core (0.0.19):
- DKPhotoGallery/Model
- DKPhotoGallery/Preview
- SDWebImage
- SwiftyGif
- DKPhotoGallery/Model (0.0.17):
- DKPhotoGallery/Model (0.0.19):
- SDWebImage
- SwiftyGif
- DKPhotoGallery/Preview (0.0.17):
- DKPhotoGallery/Preview (0.0.19):
- DKPhotoGallery/Model
- DKPhotoGallery/Resource
- SDWebImage
- SwiftyGif
- DKPhotoGallery/Resource (0.0.17):
- DKPhotoGallery/Resource (0.0.19):
- SDWebImage
- SwiftyGif
- file_picker (0.0.1):
@@ -81,17 +81,15 @@ PODS:
- qr_code_scanner (0.2.0):
- Flutter
- MTBBarcodeScanner
- ReachabilitySwift (5.2.1)
- SDWebImage (5.19.0):
- SDWebImage/Core (= 5.19.0)
- SDWebImage/Core (5.19.0)
- Sentry/HybridSDK (8.21.0):
- SentryPrivate (= 8.21.0)
- sentry_flutter (7.19.0):
- ReachabilitySwift (5.2.2)
- SDWebImage (5.19.2):
- SDWebImage/Core (= 5.19.2)
- SDWebImage/Core (5.19.2)
- Sentry/HybridSDK (8.25.0)
- sentry_flutter (7.20.1):
- Flutter
- FlutterMacOS
- Sentry/HybridSDK (= 8.21.0)
- SentryPrivate (8.21.0)
- Sentry/HybridSDK (= 8.25.0)
- share_plus (0.0.1):
- Flutter
- shared_preferences_foundation (0.0.1):
@@ -102,23 +100,23 @@ PODS:
- sqflite (0.0.3):
- Flutter
- FlutterMacOS
- sqlite3 (3.45.1):
- sqlite3/common (= 3.45.1)
- sqlite3/common (3.45.1)
- sqlite3/fts5 (3.45.1):
- "sqlite3 (3.45.3+1)":
- "sqlite3/common (= 3.45.3+1)"
- "sqlite3/common (3.45.3+1)"
- "sqlite3/fts5 (3.45.3+1)":
- sqlite3/common
- sqlite3/perf-threadsafe (3.45.1):
- "sqlite3/perf-threadsafe (3.45.3+1)":
- sqlite3/common
- sqlite3/rtree (3.45.1):
- "sqlite3/rtree (3.45.3+1)":
- sqlite3/common
- sqlite3_flutter_libs (0.0.1):
- Flutter
- sqlite3 (~> 3.45.1)
- "sqlite3 (~> 3.45.3+1)"
- sqlite3/fts5
- sqlite3/perf-threadsafe
- sqlite3/rtree
- SwiftyGif (5.4.4)
- Toast (4.1.0)
- SwiftyGif (5.4.5)
- Toast (4.1.1)
- url_launcher_ios (0.0.1):
- Flutter
@@ -160,7 +158,6 @@ SPEC REPOS:
- ReachabilitySwift
- SDWebImage
- Sentry
- SentryPrivate
- sqlite3
- SwiftyGif
- Toast
@@ -225,19 +222,19 @@ SPEC CHECKSUMS:
app_links: e70ca16b4b0f88253b3b3660200d4a10b4ea9795
connectivity_plus: bf0076dd84a130856aa636df1c71ccaff908fa1d
device_info_plus: c6fb39579d0f423935b0c9ce7ee2f44b71b9fce6
DKImagePickerController: b512c28220a2b8ac7419f21c491fc8534b7601ac
DKPhotoGallery: fdfad5125a9fdda9cc57df834d49df790dbb4179
DKImagePickerController: 946cec48c7873164274ecc4624d19e3da4c1ef3c
DKPhotoGallery: b3834fecb755ee09a593d7c9e389d8b5d6deed60
file_picker: 15fd9539e4eb735dc54bae8c0534a7a9511a03de
file_saver: 503e386464dbe118f630e17b4c2e1190fa0cf808
fk_user_agent: 1f47ec39291e8372b1d692b50084b0d54103c545
Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
flutter_email_sender: 02d7443217d8c41483223627972bfdc09f74276b
flutter_email_sender: 10a22605f92809a11ef52b2f412db806c6082d40
flutter_inappwebview_ios: 97215cf7d4677db55df76782dbd2930c5e1c1ea0
flutter_local_authentication: 1172a4dd88f6306dadce067454e2c4caf07977bb
flutter_local_notifications: 4cde75091f6327eb8517fa068a0a5950212d2086
flutter_native_splash: edf599c81f74d093a4daf8e17bd7a018854bc778
flutter_secure_storage: 23fc622d89d073675f2eaa109381aefbcf5a49be
fluttertoast: 31b00dabfa7fb7bacd9e7dbee580d7a2ff4bf265
fluttertoast: 9f2f8e81bb5ce18facb9748d7855bf5a756fe3db
local_auth_darwin: c7e464000a6a89e952235699e32b329457608d98
move_to_background: 39a5b79b26d577b0372cbe8a8c55e7aa9fcd3a2d
MTBBarcodeScanner: f453b33c4b7dfe545d8c6484ed744d55671788cb
@@ -246,19 +243,18 @@ SPEC CHECKSUMS:
path_provider_foundation: 3784922295ac71e43754bd15e0653ccfd36a147c
privacy_screen: 1a131c052ceb3c3659934b003b0d397c2381a24e
qr_code_scanner: bb67d64904c3b9658ada8c402e8b4d406d5d796e
ReachabilitySwift: 5ae15e16814b5f9ef568963fb2c87aeb49158c66
SDWebImage: 981fd7e860af070920f249fd092420006014c3eb
Sentry: ebc12276bd17613a114ab359074096b6b3725203
sentry_flutter: 88ebea3f595b0bc16acc5bedacafe6d60c12dcd5
SentryPrivate: d651efb234cf385ec9a1cdd3eff94b5e78a0e0fe
ReachabilitySwift: 2128f3a8c9107e1ad33574c6e58e8285d460b149
SDWebImage: dfe95b2466a9823cf9f0c6d01217c06550d7b29a
Sentry: cd86fc55628f5b7c572cabe66cc8f95a9d2f165a
sentry_flutter: 4cb24c1055c556d7b27262ab2e179d1e5a0b9b0c
share_plus: c3fef564749587fc939ef86ffb283ceac0baf9f5
shared_preferences_foundation: b4c3b4cddf1c21f02770737f147a3f5da9d39695
sodium_libs: 1faae17af662384acbd13e41867a0008cd2e2318
sqflite: 673a0e54cc04b7d6dba8d24fb8095b31c3a99eec
sqlite3: 73b7fc691fdc43277614250e04d183740cb15078
sqlite3_flutter_libs: af0e8fe9bce48abddd1ffdbbf839db0302d72d80
SwiftyGif: 93a1cc87bf3a51916001cf8f3d63835fb64c819f
Toast: ec33c32b8688982cecc6348adeae667c1b9938da
sqlite3: 02d1f07eaaa01f80a1c16b4b31dfcbb3345ee01a
sqlite3_flutter_libs: 9bfe005308998aeca155330bbc2ea6dddf834a3b
SwiftyGif: 706c60cf65fa2bc5ee0313beece843c8eb8194d4
Toast: 1f5ea13423a1e6674c4abdac5be53587ae481c4e
url_launcher_ios: 6116280ddcfe98ab8820085d8d76ae7449447586
PODFILE CHECKSUM: b4e3a7eabb03395b66e81fc061789f61526ee6bb

View File

@@ -20,7 +20,7 @@
<string>es</string>
</array>
<key>CFBundleName</key>
<string>auth</string>
<string>Auth</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>

View File

@@ -189,7 +189,7 @@ class _AppState extends State<App> with WindowListener, TrayListener {
windowManager.show();
break;
case 'exit_app':
windowManager.close();
windowManager.destroy();
break;
}
}

View File

@@ -20,6 +20,8 @@
"codeIssuerHint": "Émetteur",
"codeSecretKeyHint": "Clé secrète",
"codeAccountHint": "Compte (vous@exemple.com)",
"codeTagHint": "Tag",
"accountKeyType": "Type de clé",
"sessionExpired": "Session expirée",
"@sessionExpired": {
"description": "Title of the dialog when the users current session is invalid/expired"
@@ -77,12 +79,14 @@
"data": "Données",
"importCodes": "Importer les codes",
"importTypePlainText": "Texte brut",
"importTypeEnteEncrypted": "Export chiffré Ente",
"passwordForDecryptingExport": "Mot de passe pour déchiffrer l'exportation",
"passwordEmptyError": "Le mot de passe ne peut pas être vide",
"importFromApp": "Importer des codes depuis {appName}",
"importGoogleAuthGuide": "Exportez vos comptes depuis Google Authenticator vers un code QR en utilisant l'option \"Transférer des comptes\". Ensuite, en utilisant un autre appareil, scannez le code QR.\n\nAstuce : Vous pouvez utiliser la webcam de votre ordinateur portable pour prendre une photo du code QR.",
"importSelectJsonFile": "Sélectionnez un fichier JSON",
"importSelectAppExport": "Sélectionnez le fichier d'exportation {appName}",
"importEnteEncGuide": "Sélectionnez le fichier chiffré JSON exporté depuis Ente",
"importRaivoGuide": "Utilisez l'option \"Exporter les OTPs vers l'archive Zip\" dans les paramètres de Raivo.\n\nExtrayez le fichier zip et importez le fichier JSON.",
"importBitwardenGuide": "Utilisez l'option « Exporter le coffre » dans les outils Bitwarden et importez le fichier JSON non chiffré.",
"importAegisGuide": "Utilisez l'option \"Exporter le coffre-fort\" dans les paramètres d'Aegis.\n\nSi votre coffre-fort est crypté, vous devrez saisir le mot de passe du coffre-fort pour déchiffrer le coffre-fort.",
@@ -112,18 +116,22 @@
"copied": "Copié",
"pleaseTryAgain": "Veuillez réessayer",
"existingUser": "Utilisateur existant",
"newUser": "Nouveau dans Ente",
"delete": "Supprimer",
"enterYourPasswordHint": "Saisir votre mot de passe",
"forgotPassword": "Mot de passe oublié",
"oops": "Oups",
"suggestFeatures": "Suggérer des fonctionnalités",
"faq": "FAQ",
"faq_q_1": "Quelle est la sécurité de Auth?",
"faq_a_1": "Tous les codes que vous sauvegardez via ente sont chiffrés de bout en bout. Cela signifie que vous seul pouvez accéder à vos codes. Nos applications sont open source et notre cryptographie ont fait l'objet d'un audit externe.",
"faq_q_2": "Puis-je accéder à mes codes sur mon ordinateur ?",
"faq_a_2": "Vous pouvez accéder à vos codes sur le web via auth.ente.io.",
"faq_q_3": "Comment puis-je supprimer des codes ?",
"faq_a_3": "Vous pouvez supprimer un code en glissant vers la gauche.",
"faq_q_4": "Comment puis-je soutenir le projet ?",
"faq_a_4": "Vous pouvez soutenir le développement de ce projet en vous abonnant à notre application Photos, ente.io.",
"faq_q_5": "Comment puis-je activer le verrouillage FaceID dans Auth",
"faq_a_5": "Vous pouvez activer le verrouillage FaceID dans Paramètres → Sécurité → Écran de verrouillage.",
"somethingWentWrongMessage": "Quelque chose s'est mal passé, veuillez recommencer",
"leaveFamily": "Quitter le plan familial",
@@ -150,6 +158,7 @@
}
}
},
"invalidQRCode": "QR code non valide",
"noRecoveryKeyTitle": "Pas de clé de récupération ?",
"enterEmailHint": "Entrez votre adresse e-mail",
"invalidEmailTitle": "Adresse e-mail invalide",
@@ -343,6 +352,7 @@
"deleteCodeAuthMessage": "Authentification requise pour supprimer le code",
"showQRAuthMessage": "Authentification requise pour afficher le code QR",
"confirmAccountDeleteTitle": "Confirmer la suppression du compte",
"confirmAccountDeleteMessage": "Ce compte est lié à d'autres applications ente, si vous en utilisez une.\n\nVos données téléchargées, dans toutes les applications ente, seront planifiées pour suppression, et votre compte sera définitivement supprimé.",
"androidBiometricHint": "Vérifier lidentité",
"@androidBiometricHint": {
"description": "Hint message advising the user how to authenticate with biometrics. It is used on Android side. Maximum 60 characters."
@@ -413,5 +423,18 @@
"invalidEndpoint": "Point de terminaison non valide",
"invalidEndpointMessage": "Désolé, le point de terminaison que vous avez entré n'est pas valide. Veuillez en entrer un valide puis réessayez.",
"endpointUpdatedMessage": "Point de terminaison mis à jour avec succès",
"customEndpoint": "Connecté à {endpoint}"
"customEndpoint": "Connecté à {endpoint}",
"pinText": "Épingler",
"unpinText": "Désépingler",
"pinnedCodeMessage": "{code} a été épinglé",
"unpinnedCodeMessage": "{code} a été désépinglé",
"tags": "Tags",
"createNewTag": "Créer un nouveau tag",
"tag": "Tag",
"create": "Créer",
"editTag": "Modifier le tag",
"deleteTagTitle": "Supprimer le tag ?",
"deleteTagMessage": "Êtes-vous sûr de vouloir supprimer ce tag ? Cette action est irréversible.",
"somethingWentWrongParsingCode": "Impossible d'analyser les codes {x}.",
"updateNotAvailable": "Mise à jour non disponible"
}

View File

@@ -20,6 +20,8 @@
"codeIssuerHint": "発行者",
"codeSecretKeyHint": "秘密鍵",
"codeAccountHint": "アカウント (you@domain.com)",
"codeTagHint": "タグ",
"accountKeyType": "鍵の種類",
"sessionExpired": "セッションが失効しました",
"@sessionExpired": {
"description": "Title of the dialog when the users current session is invalid/expired"
@@ -77,6 +79,7 @@
"data": "データ",
"importCodes": "コードをインポート",
"importTypePlainText": "プレーンテキスト",
"importTypeEnteEncrypted": "Ente 暗号化されたエクスポート",
"passwordForDecryptingExport": "復号化用パスワード",
"passwordEmptyError": "パスワードは空欄にできません",
"importFromApp": "{appName} からコードをインポート",
@@ -121,6 +124,7 @@
"suggestFeatures": "機能を提案",
"faq": "FAQ",
"faq_q_1": "Authはどのくらい安全ですか",
"faq_a_1": "Ente Authでバックアップされたコードはすべてエンドツーエンドで暗号化されて保存されます。つまり、コードにアクセスできるのはあなただけです。当社のアプリはオープンソースであり、暗号化技術は外部監査を受けています。",
"faq_q_2": "パソコンから私のコードにアクセスできますか?",
"faq_a_2": "auth.ente.io で Web からコードにアクセス可能です。",
"faq_q_3": "コードを削除するにはどうすればいいですか?",
@@ -154,6 +158,7 @@
}
}
},
"invalidQRCode": "QRコードが無効です",
"noRecoveryKeyTitle": "回復キーがありませんか?",
"enterEmailHint": "メールアドレスを入力してください",
"invalidEmailTitle": "メールアドレスが無効です",
@@ -347,6 +352,7 @@
"deleteCodeAuthMessage": "コードを削除するためには認証が必要です",
"showQRAuthMessage": "QR コードを表示するためには認証が必要です",
"confirmAccountDeleteTitle": "アカウントの削除に同意",
"confirmAccountDeleteMessage": "このアカウントは他のEnteアプリも使用している場合はそれらにも紐づけされています。\nすべてのEnteアプリでアップロードされたデータは削除され、アカウントは完全に削除されます。",
"androidBiometricHint": "本人を確認する",
"@androidBiometricHint": {
"description": "Hint message advising the user how to authenticate with biometrics. It is used on Android side. Maximum 60 characters."
@@ -417,5 +423,18 @@
"invalidEndpoint": "無効なエンドポイントです",
"invalidEndpointMessage": "入力されたエンドポイントは無効です。有効なエンドポイントを入力して再試行してください。",
"endpointUpdatedMessage": "エンドポイントの更新に成功しました",
"customEndpoint": "{endpoint} に接続しました"
"customEndpoint": "{endpoint} に接続しました",
"pinText": "固定",
"unpinText": "固定を解除",
"pinnedCodeMessage": "{code} を固定しました",
"unpinnedCodeMessage": "{code} の固定が解除されました",
"tags": "タグ",
"createNewTag": "新しいタグの作成",
"tag": "タグ",
"create": "作成",
"editTag": "タグの編集",
"deleteTagTitle": "タグを削除しますか?",
"deleteTagMessage": "このタグを削除してもよろしいですか?この操作は取り消しできません。",
"somethingWentWrongParsingCode": "{x} のコードを解析できませんでした。",
"updateNotAvailable": "アップデートは利用できません"
}

View File

@@ -7,7 +7,7 @@
"description": "Text shown in the AppBar of the Counter Page"
},
"onBoardingBody": "Proteja seus códigos 2FA",
"onBoardingGetStarted": "Vamos Começar",
"onBoardingGetStarted": "Introdução",
"setupFirstAccount": "Configure sua primeira conta",
"importScanQrCode": "Escanear QR code",
"qrCode": "QR Code",
@@ -20,6 +20,8 @@
"codeIssuerHint": "Emissor",
"codeSecretKeyHint": "Chave secreta",
"codeAccountHint": "Conta (voce@dominio.com)",
"codeTagHint": "Etiqueta",
"accountKeyType": "Tipo de chave",
"sessionExpired": "Sessão expirada",
"@sessionExpired": {
"description": "Title of the dialog when the users current session is invalid/expired"
@@ -29,13 +31,13 @@
"timeBasedKeyType": "Baseado no horário (TOTP)",
"counterBasedKeyType": "Baseado em um contador (HOTP)",
"saveAction": "Salvar",
"nextTotpTitle": "próximo",
"deleteCodeTitle": "Excluir código?",
"nextTotpTitle": "avançar",
"deleteCodeTitle": "Apagar código?",
"deleteCodeMessage": "Tem certeza de que deseja excluir este código? Esta ação é irreversível.",
"viewLogsAction": "Ver logs",
"sendLogsDescription": "Isto irá compartilhar seus logs para nos ajudar a depurar seu problema. Embora tomemos precauções para garantir que informações sensíveis não sejam enviadas, encorajamos você a ver esses logs antes de compartilhá-los.",
"preparingLogsTitle": "Preparando logs...",
"emailLogsTitle": "Logs por e-mail",
"emailLogsTitle": "Logs (e-mail)",
"emailLogsMessage": "Por favor, envie os logs para {email}",
"@emailLogsMessage": {
"placeholders": {
@@ -46,9 +48,9 @@
},
"copyEmailAction": "Copiar e-mail",
"exportLogsAction": "Exportar logs",
"reportABug": "Reportar um problema",
"reportABug": "Informar um problema",
"crashAndErrorReporting": "Reporte de erros e falhas",
"reportBug": "Reportar problema",
"reportBug": "Informar problema",
"emailUsMessage": "Por favor, envie um e-mail para {email}",
"@emailUsMessage": {
"placeholders": {
@@ -103,14 +105,14 @@
"authToChangeYourPassword": "Por favor, autentique-se para alterar sua senha",
"authToViewSecrets": "Por favor, autentique-se para ver as suas chaves secretas",
"authToInitiateSignIn": "Por favor, autentique-se para iniciar o login para um backup.",
"ok": "Ok",
"ok": "OK",
"cancel": "Cancelar",
"yes": "Sim",
"no": "Não",
"email": "E-mail",
"support": "Suporte",
"general": "Geral",
"settings": "Configurações",
"settings": "Ajustes",
"copied": "Copiado",
"pleaseTryAgain": "Por favor, tente novamente",
"existingUser": "Usuário Existente",
@@ -118,7 +120,7 @@
"delete": "Excluir",
"enterYourPasswordHint": "Insira sua senha",
"forgotPassword": "Esqueci a senha",
"oops": "Oops",
"oops": "Opa",
"suggestFeatures": "Sugerir funcionalidades",
"faq": "Perguntas frequentes",
"faq_q_1": "Quão seguro é o Auth?",
@@ -137,7 +139,7 @@
"inFamilyPlanMessage": "Você está em um plano familiar!",
"swipeHint": "Deslize para a esquerda para editar ou remover os códigos",
"scan": "Escanear",
"scanACode": "Escanear um código",
"scanACode": "Escanear código",
"verify": "Verificar",
"verifyEmail": "Verificar e-mail",
"enterCodeHint": "Digite o código de 6 dígitos de\nseu aplicativo autenticador",
@@ -156,6 +158,7 @@
}
}
},
"invalidQRCode": "QR Code inválido",
"noRecoveryKeyTitle": "Sem chave de recuperação?",
"enterEmailHint": "Insira o seu endereço de e-mail",
"invalidEmailTitle": "Endereço de e-mail inválido",
@@ -182,7 +185,7 @@
"lockScreenEnablePreSteps": "Para ativar o bloqueio de tela, por favor ative um método de autenticação nas configurações do sistema do seu dispositivo.",
"viewActiveSessions": "Ver sessões ativas",
"authToViewYourActiveSessions": "Por favor, autentique-se para ver as sessões ativas",
"searchHint": "Pesquisar...",
"searchHint": "Buscar...",
"search": "Pesquisar",
"sorryUnableToGenCode": "Desculpe, não foi possível gerar um código para {issuerName}",
"noResult": "Nenhum resultado",
@@ -236,10 +239,10 @@
"howItWorks": "Como funciona",
"ackPasswordLostWarning": "Eu entendo que se eu perder minha senha, posso perder meus dados, já que meus dados são <underline>criptografados de ponta a ponta</underline>.",
"loginTerms": "Ao clicar em login, eu concordo com os <u-terms>termos de serviço</u-terms> e a <u-policy>política de privacidade</u-policy>",
"logInLabel": "Login",
"logout": "Encerrar sessão",
"logInLabel": "Entrar",
"logout": "Sair",
"areYouSureYouWantToLogout": "Você tem certeza que deseja encerrar a sessão?",
"yesLogout": "Sim, encerrar sessão",
"yesLogout": "Sim, sair",
"exit": "Sair",
"verifyingRecoveryKey": "Verificando chave de recuperação...",
"recoveryKeyVerified": "Chave de recuperação verificada",
@@ -279,7 +282,7 @@
"description": "Text for the button to confirm the user understands the warning"
},
"authToExportCodes": "Por favor, autentique-se para exportar seus códigos",
"importSuccessTitle": "Yay!",
"importSuccessTitle": "Oba!",
"importSuccessDesc": "Você importou {count} códigos!",
"@importSuccessDesc": {
"placeholders": {
@@ -314,7 +317,7 @@
"thisWillLogYouOutOfTheFollowingDevice": "Isso fará com que você saia do seguinte dispositivo:",
"terminateSession": "Encerrar sessão?",
"terminate": "Encerrar",
"thisDevice": "Este dispositivo",
"thisDevice": "Esse dispositivo",
"toResetVerifyEmail": "Para redefinir a sua senha, por favor verifique o seu email primeiro.",
"thisEmailIsAlreadyInUse": "Este e-mail já está em uso",
"verificationFailedPleaseTryAgain": "Falha na verificação. Por favor, tente novamente",
@@ -336,7 +339,7 @@
"export": "Exportar",
"useOffline": "Usar sem backups",
"signInToBackup": "Entre para fazer backup de seus códigos",
"singIn": "Iniciar sessão",
"singIn": "Entrar",
"sigInBackupReminder": "Por favor, exporte seus códigos para garantir que você tenha um backup do qual você possa restaurar.",
"offlineModeWarning": "Você escolheu prosseguir sem backups. Por favor, faça backups manuais para ter certeza de que seus códigos estão seguros.",
"showLargeIcons": "Mostrar ícones grandes",
@@ -358,7 +361,7 @@
"@androidBiometricNotRecognized": {
"description": "Message to let the user know that authentication was failed. It is used on Android side. Maximum 60 characters."
},
"androidBiometricSuccess": "Bem-sucedido",
"androidBiometricSuccess": "Êxito",
"@androidBiometricSuccess": {
"description": "Message to let the user know that authentication was successful. It is used on Android side. Maximum 60 characters."
},
@@ -398,7 +401,7 @@
"@iOSGoToSettingsDescription": {
"description": "Message advising the user to go to the settings and configure Biometrics for their device. It shows in a dialog on iOS side."
},
"iOSOkButton": "Ok",
"iOSOkButton": "OK",
"@iOSOkButton": {
"description": "Message showed on a button that the user can click to leave the current dialog. It is used on iOS side. Maximum 30 characters."
},
@@ -420,5 +423,18 @@
"invalidEndpoint": "Endpoint inválido",
"invalidEndpointMessage": "Desculpe, o endpoint que você inseriu é inválido. Por favor, insira um endpoint válido e tente novamente.",
"endpointUpdatedMessage": "Endpoint atualizado com sucesso",
"customEndpoint": "Conectado a {endpoint}"
"customEndpoint": "Conectado a {endpoint}",
"pinText": "Fixar",
"unpinText": "Desafixar",
"pinnedCodeMessage": "{code} foi fixado",
"unpinnedCodeMessage": "{code} foi desafixado",
"tags": "Etiquetas",
"createNewTag": "Criar etiqueta",
"tag": "Etiqueta",
"create": "Criar",
"editTag": "Editar etiqueta",
"deleteTagTitle": "Apagar etiqueta?",
"deleteTagMessage": "Tem certeza de que deseja excluir esta etiqueta? Essa ação é irreversível.",
"somethingWentWrongParsingCode": "Não foi possível analisar os códigos {x}.",
"updateNotAvailable": "Atualização não está disponível"
}

View File

@@ -20,6 +20,8 @@
"codeIssuerHint": "Эмитент",
"codeSecretKeyHint": "Секретный ключ",
"codeAccountHint": "Аккаунт (you@domain.com)",
"codeTagHint": "Метка",
"accountKeyType": "Тип ключа",
"sessionExpired": "Сеанс истек",
"@sessionExpired": {
"description": "Title of the dialog when the users current session is invalid/expired"
@@ -77,16 +79,19 @@
"data": "Данные",
"importCodes": "Импортировать коды",
"importTypePlainText": "Обычный текст",
"importTypeEnteEncrypted": "Ente Зашифрованный экспорт",
"passwordForDecryptingExport": "Пароль для расшифровки экспорта",
"passwordEmptyError": "Пароль не может быть пустым",
"importFromApp": "Импорт кодов из {appName}",
"importGoogleAuthGuide": "Экспортируйте учетные записи из Google Authenticator в QR-код, используя опцию «Перенести учетные записи». Затем с помощью другого устройства отсканируйте QR-код.\n\nСовет: Чтобы сфотографировать QR-код, можно воспользоваться веб-камерой ноутбука.",
"importSelectJsonFile": "Выбрать JSON-файл",
"importSelectAppExport": "Выбрать файл экспорта {appName}",
"importEnteEncGuide": "Выберите зашифрованный JSON файл, экспортированный из Ente",
"importRaivoGuide": "Используйте опцию «Export OTPs to Zip archive» в настройках Raivo.\n\nРаспакуйте zip-архив и импортируйте JSON-файл.",
"importBitwardenGuide": "Используйте опцию \"Экспортировать хранилище\" в Bitwarden Tools и импортируйте незашифрованный JSON файл.",
"importAegisGuide": "Используйте опцию «Экспортировать хранилище» в настройках Aegis.\n\nЕсли ваше хранилище зашифровано, то для его расшифровки потребуется ввести пароль хранилища.",
"import2FasGuide": "Используйте опцию \"Settings->Backup -Export\" в 2FAS.\n\nЕсли ваша резервная копия зашифрована, то для расшифровки резервной копии необходимо ввести пароль",
"importLastpassGuide": "Используйте опцию \"Перенести аккаунты\" в настройках Lastpass Authenticator и нажмите на \"Экспортировать учетные записи в файл\". Импортируйте загружённый JSON файл.",
"exportCodes": "Экспортировать коды",
"importLabel": "Импорт",
"importInstruction": "Пожалуйста, выберите файл, содержащий список ваших кодов в следующем формате",
@@ -99,6 +104,7 @@
"authToChangeYourEmail": "Пожалуйста, авторизуйтесь, чтобы изменить адрес электронной почты",
"authToChangeYourPassword": "Пожалуйста, авторизуйтесь, чтобы изменить пароль",
"authToViewSecrets": "Пожалуйста, авторизуйтесь для просмотра ваших секретов",
"authToInitiateSignIn": "Пожалуйста, авторизуйтесь, чтобы начать вход для резервного копирования.",
"ok": "Ок",
"cancel": "Отменить",
"yes": "Да",
@@ -110,18 +116,22 @@
"copied": "Скопировано",
"pleaseTryAgain": "Пожалуйста, попробуйте ещё раз",
"existingUser": "Существующий пользователь",
"newUser": "Впервые здесь, в Ente",
"delete": "Удалить",
"enterYourPasswordHint": "Введите пароль",
"forgotPassword": "Забыл пароль",
"oops": "Ой",
"suggestFeatures": "Предложить идеи",
"faq": "FAQ",
"faq_q_1": "Насколько безопасен Auth?",
"faq_a_1": "Все коды, которые вы резервируете с помощью Auth, хранятся в зашифрованном виде. Это означает, что только вы можете получить доступ к своим кодам. Наши приложения имеют открытый исходный код, а наша криптография прошла внешний аудит.",
"faq_q_2": "Могу ли я получить доступ к моим кодам на компьютере?",
"faq_a_2": "Вы можете получить доступ к своим кодам на сайте @ auth.ente.io.",
"faq_q_3": "Как я могу удалить коды?",
"faq_a_3": "Вы можете удалить код, проведя пальцем влево по этому элементу.",
"faq_q_4": "Как я могу поддержать этот проект?",
"faq_a_4": "Вы можете поддержать развитие этого проекта, подписавшись на наше приложение Photos @ ente.io.",
"faq_q_5": "Как мне включить FaceID в Auth",
"faq_a_5": "Вы можете включить блокировку FaceID в Настройки → Безопасность → Экран блокировки.",
"somethingWentWrongMessage": "Что-то пошло не так. Попробуйте еще раз",
"leaveFamily": "Покинуть семью",
@@ -135,6 +145,8 @@
"enterCodeHint": "Введите 6-значный код из\nвашего приложения-аутентификатора",
"lostDeviceTitle": "Потеряно устройство?",
"twoFactorAuthTitle": "Двухфакторная аутентификация",
"passkeyAuthTitle": "Проверка с помощью пароля",
"verifyPasskey": "Подтвердить пароль",
"recoverAccount": "Восстановить аккаунт",
"enterRecoveryKeyHint": "Введите свой ключ восстановления",
"recover": "Восстановить",
@@ -146,6 +158,7 @@
}
}
},
"invalidQRCode": "Неверный QR-код",
"noRecoveryKeyTitle": "Нет ключа восстановления?",
"enterEmailHint": "Введите свою почту",
"invalidEmailTitle": "Неверный адрес электронной почты",
@@ -188,6 +201,10 @@
"recoveryKeySaveDescription": "Мы не храним этот ключ, пожалуйста, сохраните этот ключ в безопасном месте.",
"doThisLater": "Сделать позже",
"saveKey": "Сохранить ключ",
"save": "Сохранить",
"send": "Отправить",
"saveOrSendDescription": "Вы хотите сохранить это в хранилище (папку загрузок по умолчанию) или отправить в другие приложения?",
"saveOnlyDescription": "Вы хотите сохранить это в хранилище (по умолчанию папка загрузок)?",
"back": "Вернуться",
"createAccount": "Создать аккаунт",
"passwordStrength": "Мощность пароля: {passwordStrengthValue}",
@@ -335,6 +352,7 @@
"deleteCodeAuthMessage": "Аутентификация для удаления кода",
"showQRAuthMessage": "Аутентификация для отображения QR-кода",
"confirmAccountDeleteTitle": "Подтвердить удаление аккаунта",
"confirmAccountDeleteMessage": "Эта учетная запись связана с другими приложениями Ente, если вы ими пользуетесь.\n\nЗагруженные вами данные во всех приложениях ente будут запланированы к удалению, а ваша учетная запись будет удалена без возможности восстановления.",
"androidBiometricHint": "Подтвердите личность",
"@androidBiometricHint": {
"description": "Hint message advising the user how to authenticate with biometrics. It is used on Android side. Maximum 60 characters."
@@ -394,5 +412,29 @@
"signOutOtherDevices": "Выйти из других устройств",
"doNotSignOut": "Не выходить",
"hearUsWhereTitle": "Как вы узнали о Ente? (необязательно)",
"hearUsExplanation": "Будет полезно, если вы укажете, где нашли нас, так как мы не отслеживаем установки приложения"
"hearUsExplanation": "Будет полезно, если вы укажете, где нашли нас, так как мы не отслеживаем установки приложения",
"recoveryKeySaved": "Ключ восстановления сохранён в папке Загрузки!",
"waitingForBrowserRequest": "Ожидание запроса браузера...",
"waitingForVerification": "Ожидание подтверждения...",
"passkey": "Ключ",
"developerSettingsWarning": "Вы уверены, что хотите изменить настройки разработчика?",
"developerSettings": "Настройки разработчика",
"serverEndpoint": "Конечная точка сервера",
"invalidEndpoint": "Неверная конечная точка",
"invalidEndpointMessage": "Извините, введенная вами конечная точка неверна. Пожалуйста, введите корректную конечную точку и повторите попытку.",
"endpointUpdatedMessage": "Конечная точка успешно обновлена",
"customEndpoint": "Подключено к {endpoint}",
"pinText": "Прикрепить",
"unpinText": "Открепить",
"pinnedCodeMessage": "{code} прикреплен",
"unpinnedCodeMessage": "{code} откреплен",
"tags": "Метки",
"createNewTag": "Создать новую метку",
"tag": "Метка",
"create": "Создать",
"editTag": "Изменить метку",
"deleteTagTitle": "Удалить метку?",
"deleteTagMessage": "Вы уверены, что хотите удалить эту метку? Это действие необратимо.",
"somethingWentWrongParsingCode": "Мы не смогли разобрать коды {x}.",
"updateNotAvailable": "Обновление недоступно"
}

View File

@@ -61,6 +61,7 @@
"welcomeBack": "Välkommen tillbaka!",
"changePassword": "Ändra lösenord",
"importCodes": "Importera koder",
"exportCodes": "Exportera koder",
"cancel": "Avbryt",
"yes": "Ja",
"no": "Nej",
@@ -76,6 +77,7 @@
"scan": "Skanna",
"twoFactorAuthTitle": "Tvåfaktorsautentisering",
"enterRecoveryKeyHint": "Ange din återställningsnyckel",
"invalidQRCode": "Ogiltig QR-kod",
"noRecoveryKeyTitle": "Ingen återställningsnyckel?",
"enterEmailHint": "Ange din e-postadress",
"invalidEmailTitle": "Ogiltig e-postadress",
@@ -143,6 +145,8 @@
},
"pendingSyncs": "Varning",
"activeSessions": "Aktiva sessioner",
"incorrectCode": "Felaktig kod",
"incorrectRecoveryKey": "Felaktig återställningsnyckel",
"enterPassword": "Ange lösenord",
"export": "Exportera",
"singIn": "Logga in",

View File

@@ -20,6 +20,8 @@
"codeIssuerHint": "Yayınlayan",
"codeSecretKeyHint": "Gizli Anahtar",
"codeAccountHint": "Hesap (ornek@domain.com)",
"codeTagHint": "Etiket",
"accountKeyType": "Anahtar türü",
"sessionExpired": "Oturum süresi doldu",
"@sessionExpired": {
"description": "Title of the dialog when the users current session is invalid/expired"
@@ -46,7 +48,7 @@
},
"copyEmailAction": "E-postayı Kopyala",
"exportLogsAction": "Günlüğü dışa aktar",
"reportABug": "Bir hata bildir",
"reportABug": "Hata bildirin",
"crashAndErrorReporting": "Çökme ve hata bildirimi",
"reportBug": "Hata bildir",
"emailUsMessage": "Lütfen bize {email} adresinden ulaşın",
@@ -77,12 +79,14 @@
"data": "Veri",
"importCodes": "Kodu içe aktar",
"importTypePlainText": "Salt metin",
"importTypeEnteEncrypted": "Ente Şifreli dışa aktarma",
"passwordForDecryptingExport": "Dışa aktarımın şifresini çözmek için parola",
"passwordEmptyError": "Şifre boş olamaz",
"importFromApp": "Kodları {appName} uygulamasından içe aktarın",
"importGoogleAuthGuide": "\"Hesapları Aktar\" seçeneğini kullanarak hesaplarınızı Google Authenticator'dan bir QR koduna aktarın. Ardından başka bir cihaz kullanarak QR kodunu tarayın.\n\nİpucu: QR kodunun fotoğrafını çekmek için dizüstü bilgisayarınızın kamerasını kullanabilirsiniz.",
"importSelectJsonFile": "JSON dosyasını seçin",
"importSelectAppExport": "{appName} dışarı aktarma dosyasını seçin",
"importEnteEncGuide": "Ente'den dışa aktarılan şifrelenmiş JSON dosyasını seçin",
"importRaivoGuide": "Raivo'nun ayarlarında \"OTP'leri Zip arşivine aktar\" seçeneğini kullanın.\n\nZip dosyasını çıkarın ve JSON dosyasını içe aktarın.",
"importBitwardenGuide": "Bitwarden Tools içindeki \"Kasayı dışa aktar\" seçeneğini kullanın ve şifrelenmemiş JSON dosyasını içe aktarın.",
"importAegisGuide": "Aegis'in Ayarlarında \"Kasayı dışa aktar\" seçeneğini kullanın.\n\nKasanız şifrelenmişse, kasanın şifresini çözmek için kasa parolasını girmeniz gerekecektir.",
@@ -112,18 +116,22 @@
"copied": "Kopyalandı",
"pleaseTryAgain": "Lütfen tekrar deneyin",
"existingUser": "Mevcut kullanıcı",
"newUser": "Ente'de Yeni",
"delete": "Sil",
"enterYourPasswordHint": "Parolanızı girin",
"forgotPassword": "Şifremi unuttum",
"oops": "Hay aksi",
"suggestFeatures": "Özellik önerin",
"faq": "SSS",
"faq_q_1": "Kimlik doğrulayıcı ne kadar güvenli?",
"faq_a_1": "Auth aracılığıyla yedeklediğiniz tüm kodlar uçtan uca şifrelenmiş olarak saklanır. Böylece kodlarınıza yalnızca siz erişebilirsiniz. Uygulamalarımız açık kaynaklıdır ve şifrelememiz dış denetimden geçmiştir.",
"faq_q_2": "Kodlarıma masaüstünden erişebilir miyim?",
"faq_a_2": "Kodlarınıza internet üzerinden @ auth.ente.io adresinden erişebilirsiniz.",
"faq_q_3": "Kodları nasıl silebilirim?",
"faq_a_3": "Bir kodu, o öğenin üzerinde sola kaydırarak silebilirsiniz.",
"faq_q_4": "Bu projeye nasıl destek olabilirim?",
"faq_a_4": "Fotoğraflar uygulamamıza @ ente.io abone olarak bu projenin geliştirilmesine destek olabilirsiniz.",
"faq_q_5": "Auth'ta FaceID kilidini nasıl etkinleştirebilirim",
"faq_a_5": "FaceID kilidini Ayarlar → Güvenlik → Kilit Ekranı altında etkinleştirebilirsiniz.",
"somethingWentWrongMessage": "Bir şeyler ters gitti, lütfen tekrar deneyin",
"leaveFamily": "Aile planından ayrıl",
@@ -137,6 +145,8 @@
"enterCodeHint": "Kimlik doğrulayıcı uygulamanızdaki 6 haneli doğrulama kodunu girin",
"lostDeviceTitle": "Cihazınızı mı kaybettiniz?",
"twoFactorAuthTitle": "İki faktörlü kimlik doğrulama",
"passkeyAuthTitle": "Geçiş anahtarı doğrulaması",
"verifyPasskey": "Geçiş anahtarını doğrula",
"recoverAccount": "Hesap kurtarma",
"enterRecoveryKeyHint": "Kurtarma anahtarınızı girin",
"recover": "Kurtar",
@@ -148,6 +158,7 @@
}
}
},
"invalidQRCode": "Geçersiz QR kodu",
"noRecoveryKeyTitle": "Kurtarma anahtarınız yok mu?",
"enterEmailHint": "E-posta adresinizi girin",
"invalidEmailTitle": "Geçersiz e-posta adresi",
@@ -190,6 +201,10 @@
"recoveryKeySaveDescription": "Biz bu anahtarı saklamıyoruz, lütfen. bu 24 kelimelik anahtarı güvenli bir yerde saklayın.",
"doThisLater": "Bunu daha sonra yap",
"saveKey": "Anahtarı kaydet",
"save": "Kaydet",
"send": "Gönder",
"saveOrSendDescription": "Bunu belleğinize mi kaydedeceksiniz (İndirilenler klasörü varsayılandır) yoksa diğer uygulamalara mı göndereceksiniz?",
"saveOnlyDescription": "Bunu belleğinize kaydetmek ister misiniz? (İndirilenler klasörü varsayılandır)",
"back": "Geri",
"createAccount": "Hesap oluştur",
"passwordStrength": "Şifre gücü: {passwordStrengthValue}",
@@ -337,6 +352,7 @@
"deleteCodeAuthMessage": "Kodu silmek için doğrulama yapın",
"showQRAuthMessage": "QR kodunu göstermek için doğrulama yapın",
"confirmAccountDeleteTitle": "Hesap silme işlemini onayla",
"confirmAccountDeleteMessage": "Kullandığınız Ente uygulamaları varsa bu hesap diğer Ente uygulamalarıyla bağlantılıdır.\n\nTüm Ente uygulamalarına yüklediğiniz veriler ve hesabınız kalıcı olarak silinecektir.",
"androidBiometricHint": "Kimliği doğrula",
"@androidBiometricHint": {
"description": "Hint message advising the user how to authenticate with biometrics. It is used on Android side. Maximum 60 characters."
@@ -396,5 +412,29 @@
"signOutOtherDevices": "Diğer cihazlardan çıkış yap",
"doNotSignOut": "Çıkış yapma",
"hearUsWhereTitle": "Ente'yi nereden duydunuz? (opsiyonel)",
"hearUsExplanation": "Biz uygulama kurulumlarını takip etmiyoruz. Bizi nereden duyduğunuzdan bahsetmeniz bize çok yardımcı olacak!"
"hearUsExplanation": "Biz uygulama kurulumlarını takip etmiyoruz. Bizi nereden duyduğunuzdan bahsetmeniz bize çok yardımcı olacak!",
"recoveryKeySaved": "Kurtarma anahtarı İndirilenler klasörüne kaydedildi!",
"waitingForBrowserRequest": "Tarayıcı isteği bekleniyor...",
"waitingForVerification": "Doğrulama bekleniyor...",
"passkey": "Geçiş anahtarı",
"developerSettingsWarning": "Geliştirici ayarlarını değiştirmekten emin misiniz?",
"developerSettings": "Geliştirici ayarları",
"serverEndpoint": "Sunucu uç noktası",
"invalidEndpoint": "Geçersiz uç nokta",
"invalidEndpointMessage": "Üzgünüz, girdiğiniz uç nokta geçersiz. Lütfen geçerli bir uç nokta girin ve tekrar deneyin.",
"endpointUpdatedMessage": "Uç nokta başarıyla güncellendi",
"customEndpoint": "Bağlandı: {endpoint}",
"pinText": "Sabitle",
"unpinText": "Sabitlemeyi kaldır",
"pinnedCodeMessage": "{code} sabitlendi",
"unpinnedCodeMessage": "{code} sabitlemesi kaldırıldı",
"tags": "Etiketler",
"createNewTag": "Yeni etiket oluştur",
"tag": "Etiket",
"create": "Oluştur",
"editTag": "Etiketi düzenle",
"deleteTagTitle": "Etiket silinsin mi?",
"deleteTagMessage": "Bu etiketi silmek istediğinizden emin misiniz? Bu işlem geri alınamaz.",
"somethingWentWrongParsingCode": "{x} kodu ayrıştıramadık.",
"updateNotAvailable": "Güncelleme mevcut değil"
}

View File

@@ -20,6 +20,8 @@
"codeIssuerHint": "发行人",
"codeSecretKeyHint": "私钥",
"codeAccountHint": "账户 (you@domain.com)",
"codeTagHint": "标签",
"accountKeyType": "密钥类型",
"sessionExpired": "会话已过期",
"@sessionExpired": {
"description": "Title of the dialog when the users current session is invalid/expired"
@@ -156,6 +158,7 @@
}
}
},
"invalidQRCode": "二维码无效",
"noRecoveryKeyTitle": "没有恢复密钥吗?",
"enterEmailHint": "请输入您的电子邮件地址",
"invalidEmailTitle": "无效的电子邮件地址",
@@ -420,5 +423,18 @@
"invalidEndpoint": "端点无效",
"invalidEndpointMessage": "抱歉,您输入的端点无效。请输入有效的端点,然后重试。",
"endpointUpdatedMessage": "端点更新成功",
"customEndpoint": "已连接至 {endpoint}"
"customEndpoint": "已连接至 {endpoint}",
"pinText": "置顶",
"unpinText": "取消置顶",
"pinnedCodeMessage": "{code} 已被置顶",
"unpinnedCodeMessage": "{code} 已被取消置顶",
"tags": "标签",
"createNewTag": "创建新标签",
"tag": "标签",
"create": "创建",
"editTag": "编辑标签",
"deleteTagTitle": "要删除标签吗?",
"deleteTagMessage": "您确定要删除此标签吗?此操作是不可逆的。",
"somethingWentWrongParsingCode": "我们无法解析 {x} 代码。",
"updateNotAvailable": "更新不可用"
}

View File

@@ -125,10 +125,10 @@ class Code {
final issuer = _getIssuer(uri);
try {
return Code(
final code = Code(
_getAccount(uri),
issuer,
_getDigits(uri, issuer),
_getDigits(uri),
_getPeriod(uri),
getSanitizedSecret(uri.queryParameters['secret']!),
_getAlgorithm(uri),
@@ -137,6 +137,7 @@ class Code {
rawData,
display: CodeDisplay.fromUri(uri) ?? CodeDisplay(),
);
return code;
} catch (e) {
// if account name contains # without encoding,
// rest of the url are treated as url fragment
@@ -174,12 +175,11 @@ class Code {
}
String toOTPAuthUrlFormat() {
final uri = Uri.parse(rawData);
final uri = Uri.parse(rawData.replaceAll("#", '%23'));
final query = {...uri.queryParameters};
query["codeDisplay"] = jsonEncode(display.toJson());
final newUri = uri.replace(queryParameters: query);
return jsonEncode(newUri.toString());
}
@@ -201,11 +201,11 @@ class Code {
}
}
static int _getDigits(Uri uri, String issuer) {
static int _getDigits(Uri uri) {
try {
return int.parse(uri.queryParameters['digits']!);
} catch (e) {
if (issuer.toLowerCase() == "steam") {
if (uri.host == "steam") {
return steamDigits;
}
return defaultDigits;

View File

@@ -1,6 +1,7 @@
import 'dart:convert';
import 'package:flutter/foundation.dart';
import 'package:logging/logging.dart';
/// Used to store the display settings of a code.
class CodeDisplay {
@@ -54,13 +55,34 @@ class CodeDisplay {
);
}
static CodeDisplay? fromUri(Uri uri) {
/// Converts the [CodeDisplay] to a json object.
/// When [safeParsing] is true, the json will be parsed safely.
/// If we fail to parse the json, we will return an empty [CodeDisplay].
static CodeDisplay? fromUri(Uri uri, {bool safeParsing = false}) {
if (!uri.queryParameters.containsKey("codeDisplay")) return null;
final String codeDisplay =
uri.queryParameters['codeDisplay']!.replaceAll('%2C', ',');
final decodedDisplay = jsonDecode(codeDisplay);
return _parseCodeDisplayJson(codeDisplay, safeParsing);
}
return CodeDisplay.fromJson(decodedDisplay);
static CodeDisplay _parseCodeDisplayJson(String json, bool safeParsing) {
try {
final decodedDisplay = jsonDecode(json);
return CodeDisplay.fromJson(decodedDisplay);
} catch (e, s) {
Logger("CodeDisplay")
.severe("Could not parse code display from json", e, s);
// (ng/prateek) Handle the case where we have fragment in the rawDataUrl
if (!json.endsWith("}") && json.contains("}#")) {
Logger("CodeDisplay").warning("ignoring code display as it's invalid");
return CodeDisplay();
}
if (safeParsing) {
return CodeDisplay();
} else {
rethrow;
}
}
}
Map<String, dynamic> toJson() {

View File

@@ -240,7 +240,7 @@ class _SetupEnterSecretKeyPageState extends State<SetupEnterSecretKeyPage> {
final account = _accountController.text.trim();
final issuer = _issuerController.text.trim();
final secret = _secretController.text.trim().replaceAll(' ', '');
final isStreamCode = issuer.toLowerCase() == "steam";
final isStreamCode = issuer.toLowerCase() == "steam" || issuer.toLowerCase().contains('steampowered.com');
if (widget.code != null && widget.code!.secret != secret) {
ButtonResult? result = await showChoiceActionSheet(
context,

View File

@@ -41,9 +41,9 @@ class CodeStore {
} else {
code = Code.fromExportJson(decodeJson);
}
} catch (e) {
} catch (e, s) {
code = Code.withError(e, entity.rawData);
_logger.severe("Could not parse code", code.err);
_logger.severe("Could not parse code", e, s);
}
code.generatedID = entity.generatedID;
code.hasSynced = entity.hasSynced;

View File

@@ -48,7 +48,6 @@ class _CodeWidgetState extends State<CodeWidget> {
late bool _shouldShowLargeIcon;
late bool _hideCode;
bool isMaskingEnabled = false;
late final colorScheme = getEnteColorScheme(context);
@override
void initState() {
@@ -78,6 +77,7 @@ class _CodeWidgetState extends State<CodeWidget> {
@override
Widget build(BuildContext context) {
final colorScheme = getEnteColorScheme(context);
if (isMaskingEnabled != PreferenceService.instance.shouldHideCodes()) {
isMaskingEnabled = PreferenceService.instance.shouldHideCodes();
_hideCode = isMaskingEnabled;
@@ -91,6 +91,100 @@ class _CodeWidgetState extends State<CodeWidget> {
_isInitialized = true;
}
final l10n = context.l10n;
Widget getCardContents(AppLocalizations l10n) {
return Stack(
children: [
if (widget.code.isPinned)
Align(
alignment: Alignment.topRight,
child: CustomPaint(
painter: PinBgPainter(
color: colorScheme.pinnedBgColor,
),
size: const Size(39, 39),
),
),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
if (widget.code.type.isTOTPCompatible)
CodeTimerProgress(
period: widget.code.period,
),
const SizedBox(height: 16),
Row(
children: [
_shouldShowLargeIcon ? _getIcon() : const SizedBox.shrink(),
Expanded(
child: Column(
children: [
_getTopRow(),
const SizedBox(height: 4),
_getBottomRow(l10n),
],
),
),
],
),
const SizedBox(
height: 20,
),
],
),
if (widget.code.isPinned) ...[
Align(
alignment: Alignment.topRight,
child: Padding(
padding: const EdgeInsets.only(right: 6, top: 6),
child: SvgPicture.asset("assets/svg/pin-card.svg"),
),
),
],
],
);
}
Widget clippedCard(AppLocalizations l10n) {
return Container(
height: 132,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(8),
color: Theme.of(context).colorScheme.codeCardBackgroundColor,
boxShadow:
widget.code.isPinned ? colorScheme.pinnedCardBoxShadow : [],
),
child: ClipRRect(
borderRadius: BorderRadius.circular(8),
child: Material(
color: Colors.transparent,
child: InkWell(
customBorder: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10),
),
onTap: () {
_copyCurrentOTPToClipboard();
},
onDoubleTap: isMaskingEnabled
? () {
setState(
() {
_hideCode = !_hideCode;
},
);
}
: null,
onLongPress: () {
_copyCurrentOTPToClipboard();
},
child: getCardContents(l10n),
),
),
),
);
}
return Container(
margin: const EdgeInsets.only(left: 16, right: 16, bottom: 8, top: 8),
child: Builder(
@@ -126,7 +220,7 @@ class _CodeWidgetState extends State<CodeWidget> {
],
padding: const EdgeInsets.all(8.0),
),
child: _clippedCard(l10n),
child: clippedCard(l10n),
);
}
@@ -216,7 +310,7 @@ class _CodeWidgetState extends State<CodeWidget> {
],
),
child: Builder(
builder: (context) => _clippedCard(l10n),
builder: (context) => clippedCard(l10n),
),
);
},
@@ -224,98 +318,6 @@ class _CodeWidgetState extends State<CodeWidget> {
);
}
Widget _clippedCard(AppLocalizations l10n) {
return Container(
height: 132,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(8),
color: Theme.of(context).colorScheme.codeCardBackgroundColor,
boxShadow: widget.code.isPinned ? colorScheme.pinnedCardBoxShadow : [],
),
child: ClipRRect(
borderRadius: BorderRadius.circular(8),
child: Material(
color: Colors.transparent,
child: InkWell(
customBorder: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10),
),
onTap: () {
_copyCurrentOTPToClipboard();
},
onDoubleTap: isMaskingEnabled
? () {
setState(
() {
_hideCode = !_hideCode;
},
);
}
: null,
onLongPress: () {
_copyCurrentOTPToClipboard();
},
child: _getCardContents(l10n),
),
),
),
);
}
Widget _getCardContents(AppLocalizations l10n) {
return Stack(
children: [
if (widget.code.isPinned)
Align(
alignment: Alignment.topRight,
child: CustomPaint(
painter: PinBgPainter(
color: colorScheme.pinnedBgColor,
),
size: const Size(39, 39),
),
),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
if (widget.code.type == Type.totp)
CodeTimerProgress(
period: widget.code.period,
),
const SizedBox(height: 16),
Row(
children: [
_shouldShowLargeIcon ? _getIcon() : const SizedBox.shrink(),
Expanded(
child: Column(
children: [
_getTopRow(),
const SizedBox(height: 4),
_getBottomRow(l10n),
],
),
),
],
),
const SizedBox(
height: 20,
),
],
),
if (widget.code.isPinned) ...[
Align(
alignment: Alignment.topRight,
child: Padding(
padding: const EdgeInsets.only(right: 6, top: 6),
child: SvgPicture.asset("assets/svg/pin-card.svg"),
),
),
],
],
);
}
Widget _getBottomRow(AppLocalizations l10n) {
return Container(
padding: const EdgeInsets.only(left: 16, right: 16),
@@ -585,7 +587,7 @@ class _CodeWidgetState extends State<CodeWidget> {
String _getFormattedCode(String code) {
if (_hideCode) {
// replace all digits with •
code = code.replaceAll(RegExp(r'\d'), '');
code = code.replaceAll(RegExp(r'\S'), '');
}
if (code.length == 6) {
return "${code.substring(0, 3)} ${code.substring(3, 6)}";

View File

@@ -1,8 +1,12 @@
import 'package:ente_auth/models/code.dart';
import 'package:flutter/foundation.dart';
import 'package:otp/otp.dart' as otp;
import 'package:steam_totp/steam_totp.dart';
String getOTP(Code code) {
if (code.type == Type.steam) {
return _getSteamCode(code);
}
if (code.type == Type.hotp) {
return _getHOTPCode(code);
}
@@ -26,7 +30,18 @@ String _getHOTPCode(Code code) {
);
}
String _getSteamCode(Code code, [bool isNext = false]) {
final SteamTOTP steamtotp = SteamTOTP(secret: code.secret);
return steamtotp.generate(
DateTime.now().millisecondsSinceEpoch ~/ 1000 + (isNext ? code.period : 0),
);
}
String getNextTotp(Code code) {
if (code.type == Type.steam) {
return _getSteamCode(code, true);
}
return otp.OTP.generateTOTPCodeString(
getSanitizedSecret(code.secret),
DateTime.now().millisecondsSinceEpoch + code.period * 1000,

View File

@@ -26,40 +26,36 @@ PODS:
- path_provider_foundation (0.0.1):
- Flutter
- FlutterMacOS
- ReachabilitySwift (5.0.0)
- ReachabilitySwift (5.2.2)
- screen_retriever (0.0.1):
- FlutterMacOS
- Sentry/HybridSDK (8.21.0):
- SentryPrivate (= 8.21.0)
- sentry_flutter (0.0.1):
- Sentry/HybridSDK (8.25.0)
- sentry_flutter (7.20.1):
- Flutter
- FlutterMacOS
- Sentry/HybridSDK (= 8.21.0)
- SentryPrivate (8.21.0)
- Sentry/HybridSDK (= 8.25.0)
- share_plus (0.0.1):
- FlutterMacOS
- shared_preferences_foundation (0.0.1):
- Flutter
- FlutterMacOS
- smart_auth (0.0.1):
- FlutterMacOS
- sodium_libs (2.2.1):
- FlutterMacOS
- sqflite (0.0.3):
- Flutter
- FlutterMacOS
- sqlite3 (3.45.1):
- sqlite3/common (= 3.45.1)
- sqlite3/common (3.45.1)
- sqlite3/fts5 (3.45.1):
- "sqlite3 (3.45.3+1)":
- "sqlite3/common (= 3.45.3+1)"
- "sqlite3/common (3.45.3+1)"
- "sqlite3/fts5 (3.45.3+1)":
- sqlite3/common
- sqlite3/perf-threadsafe (3.45.1):
- "sqlite3/perf-threadsafe (3.45.3+1)":
- sqlite3/common
- sqlite3/rtree (3.45.1):
- "sqlite3/rtree (3.45.3+1)":
- sqlite3/common
- sqlite3_flutter_libs (0.0.1):
- FlutterMacOS
- sqlite3 (~> 3.45.1)
- "sqlite3 (~> 3.45.3+1)"
- sqlite3/fts5
- sqlite3/perf-threadsafe
- sqlite3/rtree
@@ -87,7 +83,6 @@ DEPENDENCIES:
- sentry_flutter (from `Flutter/ephemeral/.symlinks/plugins/sentry_flutter/macos`)
- share_plus (from `Flutter/ephemeral/.symlinks/plugins/share_plus/macos`)
- shared_preferences_foundation (from `Flutter/ephemeral/.symlinks/plugins/shared_preferences_foundation/darwin`)
- smart_auth (from `Flutter/ephemeral/.symlinks/plugins/smart_auth/macos`)
- sodium_libs (from `Flutter/ephemeral/.symlinks/plugins/sodium_libs/macos`)
- sqflite (from `Flutter/ephemeral/.symlinks/plugins/sqflite/darwin`)
- sqlite3_flutter_libs (from `Flutter/ephemeral/.symlinks/plugins/sqlite3_flutter_libs/macos`)
@@ -100,7 +95,6 @@ SPEC REPOS:
- OrderedSet
- ReachabilitySwift
- Sentry
- SentryPrivate
- sqlite3
EXTERNAL SOURCES:
@@ -136,8 +130,6 @@ EXTERNAL SOURCES:
:path: Flutter/ephemeral/.symlinks/plugins/share_plus/macos
shared_preferences_foundation:
:path: Flutter/ephemeral/.symlinks/plugins/shared_preferences_foundation/darwin
smart_auth:
:path: Flutter/ephemeral/.symlinks/plugins/smart_auth/macos
sodium_libs:
:path: Flutter/ephemeral/.symlinks/plugins/sodium_libs/macos
sqflite:
@@ -165,22 +157,20 @@ SPEC CHECKSUMS:
OrderedSet: aaeb196f7fef5a9edf55d89760da9176ad40b93c
package_info_plus: 02d7a575e80f194102bef286361c6c326e4c29ce
path_provider_foundation: 3784922295ac71e43754bd15e0653ccfd36a147c
ReachabilitySwift: 985039c6f7b23a1da463388634119492ff86c825
ReachabilitySwift: 2128f3a8c9107e1ad33574c6e58e8285d460b149
screen_retriever: 59634572a57080243dd1bf715e55b6c54f241a38
Sentry: ebc12276bd17613a114ab359074096b6b3725203
sentry_flutter: dff1df05dc39c83d04f9330b36360fc374574c5e
SentryPrivate: d651efb234cf385ec9a1cdd3eff94b5e78a0e0fe
Sentry: cd86fc55628f5b7c572cabe66cc8f95a9d2f165a
sentry_flutter: 4cb24c1055c556d7b27262ab2e179d1e5a0b9b0c
share_plus: 76dd39142738f7a68dd57b05093b5e8193f220f7
shared_preferences_foundation: b4c3b4cddf1c21f02770737f147a3f5da9d39695
smart_auth: b38e3ab4bfe089eacb1e233aca1a2340f96c28e9
sodium_libs: d39bd76697736cb11ce4a0be73b9b4bc64466d6f
sqflite: 673a0e54cc04b7d6dba8d24fb8095b31c3a99eec
sqlite3: 73b7fc691fdc43277614250e04d183740cb15078
sqlite3_flutter_libs: 06a05802529659a272beac4ee1350bfec294f386
sqlite3: 02d1f07eaaa01f80a1c16b4b31dfcbb3345ee01a
sqlite3_flutter_libs: 8d204ef443cf0d5c1c8b058044eab53f3943a9c5
tray_manager: 9064e219c56d75c476e46b9a21182087930baf90
url_launcher_macos: d2691c7dd33ed713bf3544850a623080ec693d95
window_manager: 3a1844359a6295ab1e47659b1a777e36773cd6e8
PODFILE CHECKSUM: f401c31c8f7c5571f6f565c78915d54338812dab
COCOAPODS: 1.14.3
COCOAPODS: 1.15.2

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 240 B

After

Width:  |  Height:  |  Size: 324 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 628 B

After

Width:  |  Height:  |  Size: 780 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.6 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@@ -745,6 +745,22 @@ packages:
url: "https://pub.dev"
source: hosted
version: "2.1.0"
hashlib:
dependency: transitive
description:
name: hashlib
sha256: "67e640e19cc33070113acab3125cd48ebe480a0300e15554dec089b8878a729f"
url: "https://pub.dev"
source: hosted
version: "1.16.0"
hashlib_codecs:
dependency: transitive
description:
name: hashlib_codecs
sha256: "49e2a471f74b15f1854263e58c2ac11f2b631b5b12c836f9708a35397d36d626"
url: "https://pub.dev"
source: hosted
version: "2.2.0"
hex:
dependency: transitive
description:
@@ -1439,6 +1455,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.11.1"
steam_totp:
dependency: "direct main"
description:
name: steam_totp
sha256: "3c09143c983f6bb05bb53e9232f9d40bbcc01c596ba0273c3e6bb246729abfa1"
url: "https://pub.dev"
source: hosted
version: "0.0.1"
step_progress_indicator:
dependency: "direct main"
description:

View File

@@ -1,6 +1,6 @@
name: ente_auth
description: ente two-factor authenticator
version: 2.0.58+258
version: 3.0.4+304
publish_to: none
environment:
@@ -94,6 +94,7 @@ dependencies:
sqflite_common_ffi: ^2.3.0+4
sqlite3: ^2.1.0
sqlite3_flutter_libs: ^0.5.19+1
steam_totp: ^0.0.1
step_progress_indicator: ^1.0.2
styled_text: ^8.1.0
tray_manager: ^0.2.1

View File

@@ -113,3 +113,23 @@ func DecryptChaChaBase64(data string, key []byte, nonce string) (string, []byte,
}
return base64.StdEncoding.EncodeToString(decryptedData), decryptedData, nil
}
func DecryptChaChaBase64Auth(data string, key []byte, nonce string) (string, []byte, error) {
// Decode data from base64
dataBytes, err := base64.StdEncoding.DecodeString(data)
if err != nil {
// safe to log the encrypted data
return "", nil, fmt.Errorf("invalid base64 data %s: %v", data, err)
}
// Decode nonce from base64
nonceBytes, err := base64.StdEncoding.DecodeString(nonce)
if err != nil {
return "", nil, fmt.Errorf("invalid nonce: %v", err)
}
// Decrypt data
decryptedData, err := decryptChaCha20poly1305V2(dataBytes, key, nonceBytes)
if err != nil {
return "", nil, fmt.Errorf("failed to decrypt data: %v", err)
}
return base64.StdEncoding.EncodeToString(decryptedData), decryptedData, nil
}

View File

@@ -88,6 +88,23 @@ func decryptChaCha20poly1305(data []byte, key []byte, nonce []byte) ([]byte, err
return decoded, nil
}
// decryptChaCha20poly1305V2 is used only to decrypt Ente Auth data. Ente Auth use new version of LibSodium.
// In that version, the final tag value is 0x0 instead of TagFinal.
func decryptChaCha20poly1305V2(data []byte, key []byte, nonce []byte) ([]byte, error) {
decryptor, err := NewDecryptor(key, nonce)
if err != nil {
return nil, err
}
decoded, tag, err := decryptor.Pull(data)
if tag != TagFinal && tag != TagMessage {
return nil, errors.New("invalid tag")
}
if err != nil {
return nil, err
}
return decoded, nil
}
//func SecretBoxOpenLibSodium(c []byte, n []byte, k []byte) ([]byte, error) {
// var cp sodium.Bytes = c
// res, err := cp.SecretBoxOpen(sodium.SecretBoxNonce{Bytes: n}, sodium.SecretBoxKey{Bytes: k})

View File

@@ -15,7 +15,7 @@ import (
"strings"
)
var AppVersion = "0.1.13"
var AppVersion = "0.1.14"
func main() {
cliDBPath, err := GetCLIConfigPath()

View File

@@ -55,7 +55,7 @@ func DecryptExport(inputPath string, outputPath string) error {
return fmt.Errorf("error deriving key: %v", err)
}
_, decryptedData, err := eCrypto.DecryptChaChaBase64(export.EncryptedData, key, export.EncryptionNonce)
_, decryptedData, err := eCrypto.DecryptChaChaBase64Auth(export.EncryptedData, key, export.EncryptionNonce)
if err != nil {
fmt.Printf("\nerror decrypting data %v", err)
fmt.Println("\nPlease check your password and try again")

View File

@@ -1,36 +0,0 @@
/* eslint-env node */
module.exports = {
root: true,
extends: [
"eslint:recommended",
"plugin:@typescript-eslint/eslint-recommended",
"plugin:@typescript-eslint/strict-type-checked",
"plugin:@typescript-eslint/stylistic-type-checked",
],
plugins: ["@typescript-eslint"],
parser: "@typescript-eslint/parser",
parserOptions: {
project: true,
},
ignorePatterns: [".eslintrc.js", "app", "out", "dist"],
env: {
es2022: true,
node: true,
},
rules: {
/* Allow numbers to be used in template literals */
"@typescript-eslint/restrict-template-expressions": [
"error",
{
allowNumber: true,
},
],
/* Allow void expressions as the entire body of an arrow function */
"@typescript-eslint/no-confusing-void-expression": [
"error",
{
ignoreArrowShorthand: true,
},
],
},
};

View File

@@ -5,12 +5,19 @@ name: "Release"
# For more details, see `docs/release.md` in ente-io/ente.
on:
# Trigger manually or `gh workflow run desktop-release.yml`.
# Trigger manually or `gh workflow run desktop-release.yml --source=foo`.
workflow_dispatch:
inputs:
source:
description: "Branch (ente-io/ente) to build"
type: string
schedule:
# Run everyday at ~8:00 AM IST (except Sundays).
# See: [Note: Run workflow every 24 hours]
#
- cron: "45 2 * * 1-6"
push:
# Run when a tag matching the pattern "v*"" is pushed.
#
# See: [Note: Testing release workflows that are triggered by tags].
tags:
- "v*"
@@ -30,9 +37,13 @@ jobs:
- name: Checkout code
uses: actions/checkout@v4
with:
# Checkout the desktop/rc branch from the source repository.
# If triggered by a tag, checkout photosd-$tag from the source
# repository. Otherwise checkout $source (default: "main").
repository: ente-io/ente
ref: desktop/rc
ref:
"${{ startsWith(github.ref, 'refs/tags/v') &&
format('photosd-{0}', github.ref_name) || ( inputs.source
|| 'main' ) }}"
submodules: recursive
- name: Setup node
@@ -64,10 +75,8 @@ jobs:
# (No need to define this secret in the repo settings)
github_token: ${{ secrets.GITHUB_TOKEN }}
# If the commit is tagged with a version (e.g. "v1.0.0"),
# create a (draft) release after building. Otherwise upload
# assets to the existing draft named after the version.
release: ${{ startsWith(github.ref, 'refs/tags/v') }}
# Passes `--publish always` to electron-builder
release: true
mac_certs: ${{ secrets.MAC_CERTS }}
mac_certs_password: ${{ secrets.MAC_CERTS_PASSWORD }}
@@ -77,4 +86,13 @@ jobs:
APPLE_APP_SPECIFIC_PASSWORD:
${{ secrets.APPLE_APP_SPECIFIC_PASSWORD }}
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
# Default is "draft", but since our nightly builds update
# existing pre-releases, set this to "prerelease".
EP_PRE_RELEASE: true
# By default, electron-builder does not update releases that
# were more than 2 hours ago. Override this to allow us to
# continually update our nightly pre-releases.
EP_GH_IGNORE_TIME: true
# Workaround recommended in
# https://github.com/electron-userland/electron-builder/issues/3179
USE_HARD_LINKS: false

View File

@@ -1,6 +1,10 @@
# CHANGELOG
## v1.7.0 (Unreleased)
## v1.7.1 (Unreleased)
- Remember the window size across app restarts.
## v1.7.0
v1.7 is a major rewrite to improve the security of our app. In particular, the
UI and the native parts of the app now run isolated from each other and

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View File

@@ -1,65 +1,94 @@
## Releases
Conceptually, the release is straightforward: We trigger a GitHub workflow that
creates a draft release with artifacts built. When ready, we publish that
release. The download links on our website, and existing apps already check the
latest GitHub release and update accordingly.
Conceptually, the release is straightforward:
The complication comes by the fact that electron-builder's auto updaterr (the
1. We trigger a GitHub workflow that creates a (pre-)release with the build.
2. When ready, we make that release the latest.
3. The download links on our website, and existing apps already check the
latest GitHub release and update automatically.
The complication comes by the fact that electron-builder's auto updater (the
mechanism that we use for auto updates) doesn't work with monorepos. So we need
to keep a separate (non-mono) repository just for doing releases.
to keep a separate repository just for holding the releases.
- Source code lives here, in [ente-io/ente](https://github.com/ente-io/ente).
- Releases are done from
[ente-io/photos-desktop](https://github.com/ente-io/photos-desktop).
## Workflow - Release Candidates
## Workflow - Release candidates
Leading up to the release, we can make one or more draft releases that are not
intended to be published, but serve as test release candidates.
Nightly RC builds of `main` are published by a scheduled workflow automatically.
If needed, these builds can also be manually updated, and the branch of the
source repository to build (default "main") also specified:
The workflow for making such "rc" builds is:
```sh
gh workflow run desktop-release.yml --source=<branch>
```
1. Update `package.json` in the source repo to use version `1.x.x-rc`. Create a
new draft release in the release repo with title `1.x.x-rc`. In the tag
input enter `v1.x.x-rc` and select the option to "create a new tag on
publish".
2. Push code to the `desktop/rc` branch in the source repo.
3. Trigger the GitHub action in the release repo
```sh
gh workflow run desktop-release.yml
```
We can do steps 2 and 3 multiple times: each time it'll just update the
artifacts attached to the same draft.
Each such workflow run will update the artifacts attached to the same
(pre-existing) pre-release.
## Workflow - Release
1. Update source repo to set version `1.x.x` in `package.json` and finialize
the CHANGELOG.
1. Update source repo to set version `1.x.x` in `package.json` and finalize the
CHANGELOG.
2. Push code to the `desktop/rc` branch in the source repo.
2. Merge PR then tag the merge commit on `main` in the source repo:
3. In the release repo
```sh
git tag photosd-v1.x.x
git push origin photosd-v1.x.x
```
3. In the release repo:
```sh
./.github/trigger-release.sh v1.x.x
```
4. If the build is successful, tag `desktop/rc` in the source repo.
This'll trigger the workflow and create a new pre-release. We can edit this to
add the release notes, convert it to a release. Once it is marked as latest, the
release goes live.
We are done at this point, and can now create a new pre-release to host
subsequent nightly builds.
1. Update `package.json` in the source repo to use version `1.x.x-rc`, and
merge these changes into `main`.
2. In the release repo:
```sh
# Assuming we're on desktop/rc that just got build
git tag photosd-v1.x.x
git push origin photosd-v1.x.x
git tag 1.x.x-rc
git push origin 1.x.x-rc
```
## Post build
3. Once the workflow finishes and the pre-release is created, edit its
description to "Nightly builds".
4. Delete the pre-release for the previous (already released) version.
## Workflow - Extra pre-releases
To create extra one off pre-releases in addition to the nightly `1.x.x-rc` ones,
1. In your branch in the source repository, set the version in `package.json`
to something different, say `1.x.x-my-test`.
2. Create a new pre-release in the release repo with title `1.x.x-test`. In the
tag input enter `v1.x.x-test` and select the option to "create a new tag on
publish".
3. Trigger the workflow in the release repo:
```sh
gh workflow run desktop-release.yml --source=my-branch
```
## Details
The GitHub Action runs on Windows, Linux and macOS. It produces the artifacts
defined in the `build` value in `package.json`.
@@ -87,8 +116,3 @@ everything is automated:
now their maintainers automatically bump the SHA, version number and the
(derived from the version) URL in the formula when their tools notice a new
release on our GitHub.
We can also publish the draft releases by checking the "pre-release" option.
Such releases don't cause any of the channels (our website, or the desktop app
auto updater, or brew) to be notified, instead these are useful for giving links
to pre-release builds to customers.

43
desktop/eslint.config.mjs Normal file
View File

@@ -0,0 +1,43 @@
// @ts-check
import js from "@eslint/js";
import ts from "typescript-eslint";
export default ts.config(
js.configs.recommended,
...ts.configs.strictTypeChecked,
...ts.configs.stylisticTypeChecked,
{
// typescript-eslint needs this enabling type checked rules.
languageOptions: {
parserOptions: {
project: true,
tsconfigRootDir: import.meta.dirname,
},
},
},
{
// The list of (minimatch) globs to ignore. This needs to be the only
// key in this configuration object.
ignores: ["eslint.config.mjs", "app/", "out/", "dist/"],
},
{
// Rule customizations.
rules: {
// Allow numbers to be used in template literals.
"@typescript-eslint/restrict-template-expressions": [
"error",
{
allowNumber: true,
},
],
// Allow void expressions as the entire body of an arrow function.
"@typescript-eslint/no-confusing-void-expression": [
"error",
{
ignoreArrowShorthand: true,
},
],
},
},
);

View File

@@ -1,6 +1,6 @@
{
"name": "ente",
"version": "1.7.0-rc",
"version": "1.7.1-rc",
"private": true,
"description": "Desktop client for Ente Photos",
"repository": "github:ente-io/photos-desktop",
@@ -14,11 +14,11 @@
"build:ci": "yarn build-renderer && tsc",
"build:quick": "yarn build-renderer && yarn build-main:quick",
"dev": "concurrently --kill-others --success first --names 'main,rndr' \"yarn dev-main\" \"yarn dev-renderer\"",
"dev-main": "tsc && electron app/main.js",
"dev-main": "tsc && electron .",
"dev-renderer": "cd ../web && yarn install && yarn dev:photos",
"postinstall": "electron-builder install-app-deps",
"lint": "yarn prettier --check --log-level warn . && eslint --ext .ts src && yarn tsc",
"lint-fix": "yarn prettier --write --log-level warn . && eslint --fix --ext .ts src && yarn tsc"
"lint": "yarn prettier --check --log-level warn . && yarn eslint && yarn tsc",
"lint-fix": "yarn prettier --write --log-level warn . && yarn eslint && yarn tsc"
},
"resolutions": {
"jackspeak": "2.1.1"
@@ -30,29 +30,31 @@
"compare-versions": "^6.1",
"electron-log": "^5.1",
"electron-store": "^8.2",
"electron-updater": "^6.1",
"electron-updater": "^6.2",
"ffmpeg-static": "^5.2",
"html-entities": "^2.5",
"jpeg-js": "^0.4",
"next-electron-server": "^1",
"node-stream-zip": "^1.15",
"onnxruntime-node": "^1.17"
"onnxruntime-node": "^1.18"
},
"devDependencies": {
"@eslint/js": "^9.4.0",
"@tsconfig/node20": "^20.1.4",
"@types/auto-launch": "^5.0",
"@types/eslint__js": "^8.42.3",
"@types/ffmpeg-static": "^3.0",
"@typescript-eslint/eslint-plugin": "^7",
"@typescript-eslint/parser": "^7",
"concurrently": "^8",
"electron": "^30",
"electron-builder": "25.0.0-alpha.6",
"eslint": "^8",
"electron-builder": "25.0.0-alpha.8",
"eslint": "^9.4.0",
"prettier": "^3",
"prettier-plugin-organize-imports": "^3",
"prettier-plugin-packagejson": "^2",
"shx": "^0.3",
"typescript": "^5"
"typescript": "^5",
"typescript-eslint": "8.0.0-alpha.10"
},
"packageManager": "yarn@1.22.21",
"productName": "ente"
}

View File

@@ -143,12 +143,20 @@ const registerPrivilegedSchemes = () => {
* This window will show the HTML served from {@link rendererURL}.
*/
const createMainWindow = () => {
const bounds = windowBounds();
// Create the main window. This'll show our web content.
const window = new BrowserWindow({
webPreferences: {
preload: path.join(__dirname, "preload.js"),
sandbox: true,
},
// Set the window's position and size (if we have one saved).
...(bounds ?? {}),
// Enforce a minimum size
...minimumWindowSize(),
// (Maybe) fix the dock icon on Linux.
...windowIconOptions(),
// The color to show in the window until the web content gets loaded.
// See: https://www.electronjs.org/docs/latest/api/browser-window#setting-the-backgroundcolor-property
backgroundColor: "black",
@@ -162,8 +170,10 @@ const createMainWindow = () => {
// On macOS, also hide the dock icon on macOS.
if (process.platform == "darwin") app.dock.hide();
} else {
// Show our window (maximizing it) otherwise.
window.maximize();
// Show our window otherwise.
//
// If we did not give it an explicit size, maximize it
bounds ? window.show() : window.maximize();
}
// Open the DevTools automatically when running in dev mode
@@ -209,11 +219,90 @@ const createMainWindow = () => {
return window;
};
/**
* The position and size of the window the last time it was closed.
*
* The return value of `undefined` is taken to mean that the app's main window
* should be maximized.
*/
const windowBounds = () => userPreferences.get("windowBounds");
/**
* If for some reason {@link windowBounds} is outside the screen's bounds (e.g.
* if the user's screen resolution has changed), then the previously saved
* bounds might not be appropriate.
*
* Luckily, if we try to set an x/y position that is outside the screen's
* bounds, then Electron automatically clamps them to the screen's available
* space, and we do not need to tackle it specifically.
*
* However, there is no minimum window size the Electron enforces by default. As
* a safety valve, provide an (arbitrary) minimum size so that the user can
* resize it back to sanity if something I cannot currently anticipate happens.
*/
const minimumWindowSize = () => ({ minWidth: 200, minHeight: 200 });
/**
* Sibling of {@link windowBounds}, see that function's documentation for more
* details.
*/
const saveWindowBounds = (window: BrowserWindow) => {
if (window.isMaximized()) userPreferences.delete("windowBounds");
else userPreferences.set("windowBounds", window.getBounds());
};
/**
* On Linux the app does not show a dock icon by default, attempt to fix this by
* returning the path to an icon as the "icon" property that can be passed to
* the BrowserWindow during creation.
*/
const windowIconOptions = () => {
if (process.platform != "linux") return {};
// There are two, possibly three, different issues with icons on Linux.
//
// Firstly, the AppImage itself doesn't show an icon. There does not seem to
// be a reasonable workaround either currently. See:
// https://github.com/AppImage/AppImageKit/issues/346
//
// Secondly, and this is the problem we're trying to fix here, when the app
// is started it does not show a dock icon (Ubuntu 22) or shows the generic
// gear icon (Ubuntu 24). The issue possibly exists on other distributions
// too.
//
// Electron provides a `BrowserWindow.setIcon` function which should solve
// our issue, we could call it selectively on Linux. There is also an
// apparently undocumented "icon" option that can be passed when creating a
// new BrowserWindow, and that is what most of the other code I saw on
// GitHub seems to be doing.
//
// However, try what I may, I can't get either of these to work. Which leads
// me to believe there is a third issue: I can't get it to work because I'm
// testing on an Ubuntu 24 VM, where this might just not be working:
// https://askubuntu.com/questions/1511534/ubuntu-24-04-skype-logo-on-the-dock-not-showing-skype-logo
//
// 24 isn't likely the year of the Linux desktop either.
//
// For now, I'm adding a very specific incantation taken from
// https://github.com/arduino/arduino-ide/blob/main/arduino-ide-extension/src/electron-main/fix-app-image-icon.ts
//
// Possibly all this specific naming of the file etc is superstition, and
// just any name would do as long as the path is correct, but let me try it
// this way and see if this gets the icon to appear on Ubuntu 22 etc.
const icon = path.join(
isDev ? "build" : process.resourcesPath,
"icons/512x512.png",
);
return { icon };
};
/**
* Automatically set the save path for user initiated downloads to the system's
* "downloads" directory instead of asking the user to select a save location.
*/
export const setDownloadPath = (webContents: WebContents) => {
const setDownloadPath = (webContents: WebContents) => {
webContents.session.on("will-download", (_, item) => {
item.setSavePath(
uniqueSavePath(app.getPath("downloads"), item.getFilename()),
@@ -241,7 +330,7 @@ const uniqueSavePath = (dirPath: string, fileName: string) => {
*
* @param webContents The renderer to configure.
*/
export const allowExternalLinks = (webContents: WebContents) => {
const allowExternalLinks = (webContents: WebContents) =>
// By default, if the user were open a link, say
// https://github.com/ente-io/ente/discussions, then it would open a _new_
// BrowserWindow within our app.
@@ -253,13 +342,37 @@ export const allowExternalLinks = (webContents: WebContents) => {
// Returning `action` "deny" accomplishes this.
webContents.setWindowOpenHandler(({ url }) => {
if (!url.startsWith(rendererURL)) {
// This does not work in Ubuntu currently: mailto links seem to just
// get ignored, and HTTP links open in the text editor instead of in
// the browser.
// https://github.com/electron/electron/issues/31485
void shell.openExternal(url);
return { action: "deny" };
} else {
return { action: "allow" };
}
});
};
/**
* Allow uploading to arbitrary S3 buckets.
*
* The files in the desktop app are served over the ente:// protocol. During
* testing or self-hosting, we might be using a S3 bucket that does not allow
* whitelisting a custom URI scheme. To avoid requiring the bucket to set an
* "Access-Control-Allow-Origin: *" or do a echo-back of `Origin`, we add a
* workaround here instead, intercepting the ACAO header and allowing `*`.
*/
const allowAllCORSOrigins = (webContents: WebContents) =>
webContents.session.webRequest.onHeadersReceived(
({ responseHeaders }, callback) => {
const headers: NonNullable<typeof responseHeaders> = {};
for (const [key, value] of Object.entries(responseHeaders ?? {}))
if (key.toLowerCase() != "access-control-allow-origin")
headers[key] = value;
headers["Access-Control-Allow-Origin"] = ["*"];
callback({ responseHeaders: headers });
},
);
/**
* Add an icon for our app in the system tray.
@@ -291,19 +404,11 @@ const setupTrayItem = (mainWindow: BrowserWindow) => {
/**
* Older versions of our app used to maintain a cache dir using the main
* process. This has been removed in favor of cache on the web layer.
* process. This has been removed in favor of cache on the web layer. Delete the
* old cache dir if it exists.
*
* Delete the old cache dir if it exists.
*
* This will happen in two phases. The cache had three subdirectories:
*
* - Two of them, "thumbs" and "files", will be removed now (v1.7.0, May 2024).
*
* - The third one, "face-crops" will be removed once we finish the face search
* changes. See: [Note: Legacy face crops].
*
* This migration code can be removed after some time once most people have
* upgraded to newer versions.
* Added May 2024, v1.7.0. This migration code can be removed after some time
* once most people have upgraded to newer versions.
*/
const deleteLegacyDiskCacheDirIfExists = async () => {
const removeIfExists = async (dirPath: string) => {
@@ -312,11 +417,12 @@ const deleteLegacyDiskCacheDirIfExists = async () => {
await fs.rm(dirPath, { recursive: true });
}
};
// [Note: Getting the cache path]
//
// The existing code was passing "cache" as a parameter to getPath.
//
// However, "cache" is not a valid parameter to getPath. It works! (for
// However, "cache" is not a valid parameter to getPath. It works (for
// example, on macOS I get `~/Library/Caches`), but it is intentionally not
// documented as part of the public API:
//
@@ -328,9 +434,18 @@ const deleteLegacyDiskCacheDirIfExists = async () => {
//
// @ts-expect-error "cache" works but is not part of the public API.
const cacheDir = path.join(app.getPath("cache"), "ente");
if (existsSync(cacheDir)) {
if (process.platform == "win32") {
// On Windows the cache dir is the same as the app data (!). So deleting
// the ente subfolder of the cache dir is equivalent to deleting the
// user data dir.
//
// Obviously, that's not good. So instead of Windows we explicitly
// delete the named cache directories.
await removeIfExists(path.join(cacheDir, "thumbs"));
await removeIfExists(path.join(cacheDir, "files"));
await removeIfExists(path.join(cacheDir, "face-crops"));
} else {
await removeIfExists(cacheDir);
}
};
@@ -390,8 +505,10 @@ const main = () => {
registerStreamProtocol();
// Configure the renderer's environment.
setDownloadPath(mainWindow.webContents);
allowExternalLinks(mainWindow.webContents);
const webContents = mainWindow.webContents;
setDownloadPath(webContents);
allowExternalLinks(webContents);
allowAllCORSOrigins(webContents);
// Start loading the renderer.
void mainWindow.loadURL(rendererURL);
@@ -416,7 +533,10 @@ const main = () => {
// app, e.g. by clicking on its dock icon.
app.on("activate", () => mainWindow?.show());
app.on("before-quit", allowWindowClose);
app.on("before-quit", () => {
if (mainWindow) saveWindowBounds(mainWindow);
allowWindowClose();
});
};
main();

View File

@@ -24,7 +24,6 @@ import {
updateOnNextRestart,
} from "./services/app-update";
import {
legacyFaceCrop,
openDirectory,
openLogDirectory,
selectDirectory,
@@ -43,10 +42,10 @@ import {
import { convertToJPEG, generateImageThumbnail } from "./services/image";
import { logout } from "./services/logout";
import {
clipImageEmbedding,
clipTextEmbeddingIfAvailable,
computeCLIPImageEmbedding,
computeCLIPTextEmbeddingIfAvailable,
} from "./services/ml-clip";
import { detectFaces, faceEmbedding } from "./services/ml-face";
import { computeFaceEmbeddings, detectFaces } from "./services/ml-face";
import { encryptionKey, saveEncryptionKey } from "./services/store";
import {
clearPendingUploads,
@@ -170,24 +169,22 @@ export const attachIPCHandlers = () => {
// - ML
ipcMain.handle("clipImageEmbedding", (_, jpegImageData: Uint8Array) =>
clipImageEmbedding(jpegImageData),
ipcMain.handle(
"computeCLIPImageEmbedding",
(_, jpegImageData: Uint8Array) =>
computeCLIPImageEmbedding(jpegImageData),
);
ipcMain.handle("clipTextEmbeddingIfAvailable", (_, text: string) =>
clipTextEmbeddingIfAvailable(text),
ipcMain.handle("computeCLIPTextEmbeddingIfAvailable", (_, text: string) =>
computeCLIPTextEmbeddingIfAvailable(text),
);
ipcMain.handle("detectFaces", (_, input: Float32Array) =>
detectFaces(input),
);
ipcMain.handle("faceEmbedding", (_, input: Float32Array) =>
faceEmbedding(input),
);
ipcMain.handle("legacyFaceCrop", (_, faceID: string) =>
legacyFaceCrop(faceID),
ipcMain.handle("computeFaceEmbeddings", (_, input: Float32Array) =>
computeFaceEmbeddings(input),
);
// - Upload

View File

@@ -70,8 +70,9 @@ const logInfo = (...params: unknown[]) => {
const message = params
.map((p) => (typeof p == "string" ? p : util.inspect(p)))
.join(" ");
log.info(`[main] ${message}`);
if (isDev) console.log(`[info] ${message}`);
const m = `[info] ${message}`;
if (isDev) console.log(m);
log.info(`[main] ${m}`);
};
const logDebug = (param: () => unknown) => {

View File

@@ -11,6 +11,11 @@ import { isDev } from "../utils/electron";
export const setupAutoUpdater = (mainWindow: BrowserWindow) => {
autoUpdater.logger = electronLog;
autoUpdater.autoDownload = false;
// This is going to be the default at some point, right now if we don't
// explicitly set this to true then electron-builder prints a (harmless)
// warning when updating on Windows.
// See: https://github.com/electron-userland/electron-builder/pull/6575
autoUpdater.disableWebInstaller = true;
/**
* [Note: Testing auto updates]
@@ -158,7 +163,7 @@ const checkForUpdatesAndNotify = async (mainWindow: BrowserWindow) => {
};
/**
* Return the version of the desktop app
* Return the version of the desktop app.
*
* The return value is of the form `v1.2.3`.
*/

View File

@@ -1,7 +1,5 @@
import { shell } from "electron/common";
import { app, dialog } from "electron/main";
import { existsSync } from "fs";
import fs from "node:fs/promises";
import path from "node:path";
import { posixPath } from "../utils/electron";
@@ -53,14 +51,6 @@ export const openLogDirectory = () => openDirectory(logDirectoryPath());
* "userData" directory. This is the **primary** place applications are meant to
* store user's data, e.g. various configuration files and saved state.
*
* During development, our app name is "Electron", so this'd be, for example,
* `~/Library/Application Support/Electron` if we run using `yarn dev`. For the
* packaged production app, our app name is "ente", so this would be:
*
* - Windows: `%APPDATA%\ente`, e.g. `C:\Users\<username>\AppData\Local\ente`
* - Linux: `~/.config/ente`
* - macOS: `~/Library/Application Support/ente`
*
* Note that Chromium also stores the browser state, e.g. localStorage or disk
* caches, in userData.
*
@@ -73,21 +63,7 @@ export const openLogDirectory = () => openDirectory(logDirectoryPath());
* "ente.log", it can be found at:
*
* - macOS: ~/Library/Logs/ente/ente.log (production)
* - macOS: ~/Library/Logs/Electron/ente.log (dev)
* - Linux: ~/.config/ente/logs/ente.log
* - Windows: %USERPROFILE%\AppData\Roaming\ente\logs\ente.log
*/
const logDirectoryPath = () => app.getPath("logs");
/**
* See: [Note: Legacy face crops]
*/
export const legacyFaceCrop = async (
faceID: string,
): Promise<Uint8Array | undefined> => {
// See: [Note: Getting the cache path]
// @ts-expect-error "cache" works but is not part of the public API.
const cacheDir = path.join(app.getPath("cache"), "ente");
const filePath = path.join(cacheDir, "face-crops", faceID);
return existsSync(filePath) ? await fs.readFile(filePath) : undefined;
};

View File

@@ -3,7 +3,6 @@
import fs from "node:fs/promises";
import path from "node:path";
import { CustomErrorMessage, type ZipItem } from "../../types/ipc";
import log from "../log";
import { execAsync, isDev } from "../utils/electron";
import {
deleteTempFileIgnoringErrors,
@@ -93,9 +92,6 @@ export const generateImageThumbnail = async (
let thumbnail: Uint8Array;
do {
await execAsync(command);
// TODO(MR): release 1.7
// TODO(MR): imagemagick debugging. Remove me after verifying logs.
log.info(`Generated thumbnail using ${command.join(" ")}`);
thumbnail = new Uint8Array(await fs.readFile(outputFilePath));
quality -= 10;
command = generateImageThumbnailCommand(

View File

@@ -12,19 +12,22 @@ import { watchReset } from "./watch";
* See: [Note: Do not throw during logout].
*/
export const logout = (watcher: FSWatcher) => {
const ignoreError = (label: string, e: unknown) =>
log.error(`Ignoring error during logout (${label})`, e);
try {
watchReset(watcher);
} catch (e) {
log.error("Ignoring error during logout (FS watch)", e);
ignoreError("FS watch", e);
}
try {
clearConvertToMP4Results();
} catch (e) {
log.error("Ignoring error during logout (convert-to-mp4)", e);
ignoreError("convert-to-mp4", e);
}
try {
clearStores();
} catch (e) {
log.error("Ignoring error during logout (native stores)", e);
ignoreError("native stores", e);
}
};

View File

@@ -11,7 +11,7 @@ import * as ort from "onnxruntime-node";
import Tokenizer from "../../thirdparty/clip-bpe-ts/mod";
import log from "../log";
import { writeStream } from "../stream";
import { ensure } from "../utils/common";
import { ensure, wait } from "../utils/common";
import { deleteTempFile, makeTempFilePath } from "../utils/temp";
import { makeCachedInferenceSession } from "./ml";
@@ -20,7 +20,7 @@ const cachedCLIPImageSession = makeCachedInferenceSession(
351468764 /* 335.2 MB */,
);
export const clipImageEmbedding = async (jpegImageData: Uint8Array) => {
export const computeCLIPImageEmbedding = async (jpegImageData: Uint8Array) => {
const tempFilePath = await makeTempFilePath();
const imageStream = new Response(jpegImageData.buffer).body;
await writeStream(tempFilePath, ensure(imageStream));
@@ -42,7 +42,7 @@ const clipImageEmbedding_ = async (jpegFilePath: string) => {
const results = await session.run(feeds);
log.debug(
() =>
`onnx/clip image embedding took ${Date.now() - t1} ms (prep: ${t2 - t1} ms, inference: ${Date.now() - t2} ms)`,
`ONNX/CLIP image embedding took ${Date.now() - t1} ms (prep: ${t2 - t1} ms, inference: ${Date.now() - t2} ms)`,
);
/* Need these model specific casts to type the result */
const imageEmbedding = ensure(results.output).data as Float32Array;
@@ -140,21 +140,23 @@ const getTokenizer = () => {
return _tokenizer;
};
export const clipTextEmbeddingIfAvailable = async (text: string) => {
const sessionOrStatus = await Promise.race([
export const computeCLIPTextEmbeddingIfAvailable = async (text: string) => {
const sessionOrSkip = await Promise.race([
cachedCLIPTextSession(),
"downloading-model",
// Wait for a tick to get the session promise to resolved the first time
// this code runs on each app start (and the model has been downloaded).
wait(0).then(() => 1),
]);
// Don't wait for the download to complete
if (typeof sessionOrStatus == "string") {
// Don't wait for the download to complete.
if (typeof sessionOrSkip == "number") {
log.info(
"Ignoring CLIP text embedding request because model download is pending",
);
return undefined;
}
const session = sessionOrStatus;
const session = sessionOrSkip;
const t1 = Date.now();
const tokenizer = getTokenizer();
const tokenizedText = Int32Array.from(tokenizer.encodeForCLIP(text));
@@ -165,7 +167,7 @@ export const clipTextEmbeddingIfAvailable = async (text: string) => {
const results = await session.run(feeds);
log.debug(
() =>
`onnx/clip text embedding took ${Date.now() - t1} ms (prep: ${t2 - t1} ms, inference: ${Date.now() - t2} ms)`,
`ONNX/CLIP text embedding took ${Date.now() - t1} ms (prep: ${t2 - t1} ms, inference: ${Date.now() - t2} ms)`,
);
const textEmbedding = ensure(results.output).data as Float32Array;
return normalizeEmbedding(textEmbedding);

View File

@@ -23,7 +23,7 @@ export const detectFaces = async (input: Float32Array) => {
input: new ort.Tensor("float32", input, [1, 3, 640, 640]),
};
const results = await session.run(feeds);
log.debug(() => `onnx/yolo face detection took ${Date.now() - t} ms`);
log.debug(() => `ONNX/YOLO face detection took ${Date.now() - t} ms`);
return ensure(results.output).data;
};
@@ -32,7 +32,7 @@ const cachedFaceEmbeddingSession = makeCachedInferenceSession(
5286998 /* 5 MB */,
);
export const faceEmbedding = async (input: Float32Array) => {
export const computeFaceEmbeddings = async (input: Float32Array) => {
// Dimension of each face (alias)
const mobileFaceNetFaceSize = 112;
// Smaller alias
@@ -45,7 +45,7 @@ export const faceEmbedding = async (input: Float32Array) => {
const t = Date.now();
const feeds = { img_inputs: inputTensor };
const results = await session.run(feeds);
log.debug(() => `onnx/yolo face embedding took ${Date.now() - t} ms`);
log.debug(() => `ONNX/MFNT face embedding took ${Date.now() - t} ms`);
/* Need these model specific casts to extract and type the result */
return (results.embeddings as unknown as Record<string, unknown>)
.cpuData as Float32Array;

View File

@@ -18,10 +18,7 @@ export const clearStores = () => {
* [Note: Safe storage keys]
*
* On macOS, `safeStorage` stores our data under a Keychain entry named
* "<app-name> Safe Storage". Which resolves to:
*
* - Electron Safe Storage (dev)
* - ente Safe Storage (prod)
* "<app-name> Safe Storage". In our case, "ente Safe Storage".
*/
export const saveEncryptionKey = (encryptionKey: string) => {
const encryptedKey = safeStorage.encryptString(encryptionKey);

View File

@@ -1,20 +1,43 @@
import Store, { Schema } from "electron-store";
interface UserPreferences {
/**
* If true, then the user has set a preference to also hide the dock icon on
* macOS whenever the app is hidden. The tray icon is always visible and can
* then be used to reopen the app when needed.
*/
hideDockIcon?: boolean;
skipAppVersion?: string;
muteUpdateNotificationVersion?: string;
/**
* The last position and size of our app's window.
*
* This value is saved when the app is about to quit, and is used to restore
* the window to the previous state when it restarts.
*
* If the user maximizes the window then this value is cleared and instead
* we just re-maximize the window on restart. This is also the behaviour if
* no previously saved `windowRect` is found.
*/
windowBounds?: {
x: number;
y: number;
width: number;
height: number;
};
}
const userPreferencesSchema: Schema<UserPreferences> = {
hideDockIcon: {
type: "boolean",
},
skipAppVersion: {
type: "string",
},
muteUpdateNotificationVersion: {
type: "string",
hideDockIcon: { type: "boolean" },
skipAppVersion: { type: "string" },
muteUpdateNotificationVersion: { type: "string" },
windowBounds: {
properties: {
x: { type: "number" },
y: { type: "number" },
width: { type: "number" },
height: { type: "number" },
},
},
};

View File

@@ -106,7 +106,7 @@ const handleRead = async (path: string) => {
res.headers.set("Content-Length", `${fileSize}`);
// Add the file's last modified time (as epoch milliseconds).
const mtimeMs = stat.mtimeMs;
const mtimeMs = stat.mtime.getTime();
res.headers.set("X-Last-Modified-Ms", `${mtimeMs}`);
}
return res;
@@ -132,6 +132,13 @@ const handleReadZip = async (zipPath: string, entryName: string) => {
// Close the zip handle when the underlying stream closes.
stream.on("end", () => void zip.close());
// While it is documented that entry.time is the modification time,
// the units are not mentioned. By seeing the source code, we can
// verify that it is indeed epoch milliseconds. See `parseZipTime`
// in the node-stream-zip source,
// https://github.com/antelle/node-stream-zip/blob/master/node_stream_zip.js
const modifiedMs = entry.time;
return new Response(webReadableStream, {
headers: {
// We don't know the exact type, but it doesn't really matter, just
@@ -139,12 +146,7 @@ const handleReadZip = async (zipPath: string, entryName: string) => {
// doesn't tinker with it thinking of it as text.
"Content-Type": "application/octet-stream",
"Content-Length": `${entry.size}`,
// While it is documented that entry.time is the modification time,
// the units are not mentioned. By seeing the source code, we can
// verify that it is indeed epoch milliseconds. See `parseZipTime`
// in the node-stream-zip source,
// https://github.com/antelle/node-stream-zip/blob/master/node_stream_zip.js
"X-Last-Modified-Ms": `${entry.time}`,
"X-Last-Modified-Ms": `${modifiedMs}`,
},
});
};

View File

@@ -19,7 +19,6 @@
* curl -v -H "Location;" -H "User-Agent: FooBar's so-called ""Browser""" "http://www.daveeddy.com/?name=dave&age=24"
Which is suitable for being executed by the shell.
*/
/* eslint-disable no-unused-vars */
declare module "any-shell-escape" {
declare const shellescape: (args: readonly string | string[]) => string;
export default shellescape;

View File

@@ -13,3 +13,12 @@ export const ensure = <T>(v: T | null | undefined): T => {
if (v === undefined) throw new Error("Required value was not found");
return v;
};
/**
* Wait for {@link ms} milliseconds
*
* This function is a promisified `setTimeout`. It returns a promise that
* resolves after {@link ms} milliseconds.
*/
export const wait = (ms: number) =>
new Promise((resolve) => setTimeout(resolve, ms));

View File

@@ -55,9 +55,7 @@ export const execAsync = async (command: string | string[]) => {
: command;
const startTime = Date.now();
const result = await execAsync_(escapedCommand);
log.debug(
() => `${escapedCommand} (${Math.round(Date.now() - startTime)} ms)`,
);
log.debug(() => `${escapedCommand} (${Date.now() - startTime} ms)`);
return result;
};

View File

@@ -1,4 +1,3 @@
/* eslint-disable no-unused-vars */
/**
* @file The preload script
*
@@ -65,7 +64,7 @@ const selectDirectory = () => ipcRenderer.invoke("selectDirectory");
const logout = () => {
watchRemoveListeners();
ipcRenderer.send("logout");
return ipcRenderer.invoke("logout");
};
const encryptionKey = () => ipcRenderer.invoke("encryptionKey");
@@ -153,20 +152,17 @@ const ffmpegExec = (
// - ML
const clipImageEmbedding = (jpegImageData: Uint8Array) =>
ipcRenderer.invoke("clipImageEmbedding", jpegImageData);
const computeCLIPImageEmbedding = (jpegImageData: Uint8Array) =>
ipcRenderer.invoke("computeCLIPImageEmbedding", jpegImageData);
const clipTextEmbeddingIfAvailable = (text: string) =>
ipcRenderer.invoke("clipTextEmbeddingIfAvailable", text);
const computeCLIPTextEmbeddingIfAvailable = (text: string) =>
ipcRenderer.invoke("computeCLIPTextEmbeddingIfAvailable", text);
const detectFaces = (input: Float32Array) =>
ipcRenderer.invoke("detectFaces", input);
const faceEmbedding = (input: Float32Array) =>
ipcRenderer.invoke("faceEmbedding", input);
const legacyFaceCrop = (faceID: string) =>
ipcRenderer.invoke("legacyFaceCrop", faceID);
const computeFaceEmbeddings = (input: Float32Array) =>
ipcRenderer.invoke("computeFaceEmbeddings", input);
// - Watch
@@ -340,11 +336,10 @@ contextBridge.exposeInMainWorld("electron", {
// - ML
clipImageEmbedding,
clipTextEmbeddingIfAvailable,
computeCLIPImageEmbedding,
computeCLIPTextEmbeddingIfAvailable,
detectFaces,
faceEmbedding,
legacyFaceCrop,
computeFaceEmbeddings,
// - Watch

View File

@@ -373,7 +373,6 @@ export default class {
return token + "</w>";
}
// eslint-disable-next-line no-constant-condition
while (1) {
let bigram: [string, string] | null = null;
let minRank = Infinity;

View File

@@ -32,6 +32,6 @@
"noUncheckedIndexedAccess": true,
"exactOptionalPropertyTypes": true
},
/* Transpile all `.ts` files in `src/` */
"include": ["src/**/*.ts"]
/* Include all `.ts` files in `src/` */
"include": ["src"]
}

View File

@@ -65,10 +65,10 @@
fs-extra "^9.0.1"
promise-retry "^2.0.1"
"@electron/osx-sign@1.0.5":
version "1.0.5"
resolved "https://registry.yarnpkg.com/@electron/osx-sign/-/osx-sign-1.0.5.tgz#0af7149f2fce44d1a8215660fd25a9fb610454d8"
integrity sha512-k9ZzUQtamSoweGQDV2jILiRIHUu7lYlJ3c6IEmjv1hC17rclE+eb9U+f6UFlOOETo0JzY1HNlXy4YOlCvl+Lww==
"@electron/osx-sign@1.3.0":
version "1.3.0"
resolved "https://registry.yarnpkg.com/@electron/osx-sign/-/osx-sign-1.3.0.tgz#bd6fb60c519b76ca8a000e5801f5685690e8adad"
integrity sha512-TEXhxlYSDRr9JWK5nWdOv5MtuUdaZ412uxIIEQ0hLt80o0HYWtQJBlW5QmrQDMtebzATaOjKG9UfCzLyA90zWQ==
dependencies:
compare-version "^0.1.2"
debug "^4.3.4"
@@ -122,49 +122,54 @@
resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.0.tgz#548f6de556857c8bb73bbee70c35dc82a2e74d63"
integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==
"@eslint/eslintrc@^2.1.4":
version "2.1.4"
resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad"
integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==
"@eslint/config-array@^0.15.1":
version "0.15.1"
resolved "https://registry.yarnpkg.com/@eslint/config-array/-/config-array-0.15.1.tgz#1fa78b422d98f4e7979f2211a1fde137e26c7d61"
integrity sha512-K4gzNq+yymn/EVsXYmf+SBcBro8MTf+aXJZUphM96CdzUEr+ClGDvAbpmaEK+cGVigVXIgs9gNmvHAlrzzY5JQ==
dependencies:
"@eslint/object-schema" "^2.1.3"
debug "^4.3.1"
minimatch "^3.0.5"
"@eslint/eslintrc@^3.1.0":
version "3.1.0"
resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-3.1.0.tgz#dbd3482bfd91efa663cbe7aa1f506839868207b6"
integrity sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==
dependencies:
ajv "^6.12.4"
debug "^4.3.2"
espree "^9.6.0"
globals "^13.19.0"
espree "^10.0.1"
globals "^14.0.0"
ignore "^5.2.0"
import-fresh "^3.2.1"
js-yaml "^4.1.0"
minimatch "^3.1.2"
strip-json-comments "^3.1.1"
"@eslint/js@8.57.0":
version "8.57.0"
resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.0.tgz#a5417ae8427873f1dd08b70b3574b453e67b5f7f"
integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==
"@eslint/js@9.4.0", "@eslint/js@^9.4.0":
version "9.4.0"
resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.4.0.tgz#96a2edd37ec0551ce5f9540705be23951c008a0c"
integrity sha512-fdI7VJjP3Rvc70lC4xkFXHB0fiPeojiL1PxVG6t1ZvXQrarj893PweuBTujxDUFk0Fxj4R7PIIAZ/aiiyZPZcg==
"@eslint/object-schema@^2.1.3":
version "2.1.3"
resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.3.tgz#e65ae80ee2927b4fd8c5c26b15ecacc2b2a6cc2a"
integrity sha512-HAbhAYKfsAC2EkTqve00ibWIZlaU74Z1EHwAjYr4PXF0YU2VEA1zSIKSSpKszRLRWwHzzRZXvK632u+uXzvsvw==
"@gar/promisify@^1.1.3":
version "1.1.3"
resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6"
integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==
"@humanwhocodes/config-array@^0.11.14":
version "0.11.14"
resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.14.tgz#d78e481a039f7566ecc9660b4ea7fe6b1fec442b"
integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==
dependencies:
"@humanwhocodes/object-schema" "^2.0.2"
debug "^4.3.1"
minimatch "^3.0.5"
"@humanwhocodes/module-importer@^1.0.1":
version "1.0.1"
resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c"
integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==
"@humanwhocodes/object-schema@^2.0.2":
version "2.0.3"
resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3"
integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==
"@humanwhocodes/retry@^0.3.0":
version "0.3.0"
resolved "https://registry.yarnpkg.com/@humanwhocodes/retry/-/retry-0.3.0.tgz#6d86b8cb322660f03d3f0aa94b99bdd8e172d570"
integrity sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==
"@isaacs/fs-minipass@^4.0.0":
version "4.0.1"
@@ -281,6 +286,26 @@
dependencies:
"@types/ms" "*"
"@types/eslint@*":
version "8.56.10"
resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.56.10.tgz#eb2370a73bf04a901eeba8f22595c7ee0f7eb58d"
integrity sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==
dependencies:
"@types/estree" "*"
"@types/json-schema" "*"
"@types/eslint__js@^8.42.3":
version "8.42.3"
resolved "https://registry.yarnpkg.com/@types/eslint__js/-/eslint__js-8.42.3.tgz#d1fa13e5c1be63a10b4e3afe992779f81c1179a0"
integrity sha512-alfG737uhmPdnvkrLdZLcEKJ/B8s9Y4hrZ+YAdzUeoArBlSUERA2E87ROfOaS4jd/C45fzOoZzidLc1IPwLqOw==
dependencies:
"@types/eslint" "*"
"@types/estree@*":
version "1.0.5"
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4"
integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==
"@types/ffmpeg-static@^3.0":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@types/ffmpeg-static/-/ffmpeg-static-3.0.3.tgz#605358ac6304507a75c2fd5fd861534837b19e2f"
@@ -298,7 +323,7 @@
resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz#b979ebad3919799c979b17c72621c0bc0a31c6c4"
integrity sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==
"@types/json-schema@^7.0.15":
"@types/json-schema@*", "@types/json-schema@^7.0.15":
version "7.0.15"
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841"
integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==
@@ -316,9 +341,9 @@
integrity sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==
"@types/node@*", "@types/node@^20.9.0":
version "20.12.12"
resolved "https://registry.yarnpkg.com/@types/node/-/node-20.12.12.tgz#7cbecdf902085cec634fdb362172dfe12b8f2050"
integrity sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==
version "20.13.0"
resolved "https://registry.yarnpkg.com/@types/node/-/node-20.13.0.tgz#011a76bc1e71ae9a026dddcfd7039084f752c4b6"
integrity sha512-FM6AOb3khNkNIXPnHFDYaHerSv8uN22C91z098AnGccVu+Pcdhi+pNUFDi0iLmPIsVE0JBD0KVS7mzUYt4nRzQ==
dependencies:
undici-types "~5.26.4"
@@ -359,16 +384,16 @@
dependencies:
"@types/node" "*"
"@typescript-eslint/eslint-plugin@^7":
version "7.8.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.8.0.tgz#c78e309fe967cb4de05b85cdc876fb95f8e01b6f"
integrity sha512-gFTT+ezJmkwutUPmB0skOj3GZJtlEGnlssems4AjkVweUPGj7jRwwqg0Hhg7++kPGJqKtTYx+R05Ftww372aIg==
"@typescript-eslint/eslint-plugin@8.0.0-alpha.10":
version "8.0.0-alpha.10"
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.0.0-alpha.10.tgz#a102e40da7b72a2981cb2da43064d9b3c865ca58"
integrity sha512-jsNKqn41nIS8jz5Li5xsueGEBBmRYLaflUKlclEkj8cWrO1tMK1/7xITeiVz7ZlNFZF2nop2NlXrbLtRpLEzhg==
dependencies:
"@eslint-community/regexpp" "^4.10.0"
"@typescript-eslint/scope-manager" "7.8.0"
"@typescript-eslint/type-utils" "7.8.0"
"@typescript-eslint/utils" "7.8.0"
"@typescript-eslint/visitor-keys" "7.8.0"
"@typescript-eslint/scope-manager" "8.0.0-alpha.10"
"@typescript-eslint/type-utils" "8.0.0-alpha.10"
"@typescript-eslint/utils" "8.0.0-alpha.10"
"@typescript-eslint/visitor-keys" "8.0.0-alpha.10"
debug "^4.3.4"
graphemer "^1.4.0"
ignore "^5.3.1"
@@ -376,47 +401,47 @@
semver "^7.6.0"
ts-api-utils "^1.3.0"
"@typescript-eslint/parser@^7":
version "7.8.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-7.8.0.tgz#1e1db30c8ab832caffee5f37e677dbcb9357ddc8"
integrity sha512-KgKQly1pv0l4ltcftP59uQZCi4HUYswCLbTqVZEJu7uLX8CTLyswqMLqLN+2QFz4jCptqWVV4SB7vdxcH2+0kQ==
"@typescript-eslint/parser@8.0.0-alpha.10":
version "8.0.0-alpha.10"
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.0.0-alpha.10.tgz#fbefd39da010d65407b985f2b5c6e0a79bc8a6f4"
integrity sha512-4EerPviLfBKgExHARehJgWrCtX2a7+PXBc0LBPlH93ypSgj0LU1ejMgjrB0gcfd6bJ7LN/UGNAAy3B7/Y785sA==
dependencies:
"@typescript-eslint/scope-manager" "7.8.0"
"@typescript-eslint/types" "7.8.0"
"@typescript-eslint/typescript-estree" "7.8.0"
"@typescript-eslint/visitor-keys" "7.8.0"
"@typescript-eslint/scope-manager" "8.0.0-alpha.10"
"@typescript-eslint/types" "8.0.0-alpha.10"
"@typescript-eslint/typescript-estree" "8.0.0-alpha.10"
"@typescript-eslint/visitor-keys" "8.0.0-alpha.10"
debug "^4.3.4"
"@typescript-eslint/scope-manager@7.8.0":
version "7.8.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-7.8.0.tgz#bb19096d11ec6b87fb6640d921df19b813e02047"
integrity sha512-viEmZ1LmwsGcnr85gIq+FCYI7nO90DVbE37/ll51hjv9aG+YZMb4WDE2fyWpUR4O/UrhGRpYXK/XajcGTk2B8g==
"@typescript-eslint/scope-manager@8.0.0-alpha.10":
version "8.0.0-alpha.10"
resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.0.0-alpha.10.tgz#25506ce51ab64e99f2bc0b7d3f0f82656e14a794"
integrity sha512-SUU0yhqehjuWilWRJWfhcxf6eMKVrZ3bpV2w6NF6GmBHR3FJo6oWZYLVXP04s6//INxpC2ynvKSglo4LRzWVTw==
dependencies:
"@typescript-eslint/types" "7.8.0"
"@typescript-eslint/visitor-keys" "7.8.0"
"@typescript-eslint/types" "8.0.0-alpha.10"
"@typescript-eslint/visitor-keys" "8.0.0-alpha.10"
"@typescript-eslint/type-utils@7.8.0":
version "7.8.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-7.8.0.tgz#9de166f182a6e4d1c5da76e94880e91831e3e26f"
integrity sha512-H70R3AefQDQpz9mGv13Uhi121FNMh+WEaRqcXTX09YEDky21km4dV1ZXJIp8QjXc4ZaVkXVdohvWDzbnbHDS+A==
"@typescript-eslint/type-utils@8.0.0-alpha.10":
version "8.0.0-alpha.10"
resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.0.0-alpha.10.tgz#d27f0fdd81450380887b3a07297440ba3588a70e"
integrity sha512-6aTcbnDZWKgKr3gquECJSFyvXWLSKtUHrk2ZXDP4DEzmzTDjrkY7tIQpqv4SczPQJ+3/aky3ArPhtnQYJbAMzg==
dependencies:
"@typescript-eslint/typescript-estree" "7.8.0"
"@typescript-eslint/utils" "7.8.0"
"@typescript-eslint/typescript-estree" "8.0.0-alpha.10"
"@typescript-eslint/utils" "8.0.0-alpha.10"
debug "^4.3.4"
ts-api-utils "^1.3.0"
"@typescript-eslint/types@7.8.0":
version "7.8.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.8.0.tgz#1fd2577b3ad883b769546e2d1ef379f929a7091d"
integrity sha512-wf0peJ+ZGlcH+2ZS23aJbOv+ztjeeP8uQ9GgwMJGVLx/Nj9CJt17GWgWWoSmoRVKAX2X+7fzEnAjxdvK2gqCLw==
"@typescript-eslint/types@8.0.0-alpha.10":
version "8.0.0-alpha.10"
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.0.0-alpha.10.tgz#89be400c6a1751fe86f5917ed8087ec100e002da"
integrity sha512-prbN+b/I4yH6H43WmyenMz8K5e34Hs73BQuWXR4wwij3Cg2xNGLPcpjr2cKWKlH4dZQPTz6R6oBeC+LfaoKi8g==
"@typescript-eslint/typescript-estree@7.8.0":
version "7.8.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-7.8.0.tgz#b028a9226860b66e623c1ee55cc2464b95d2987c"
integrity sha512-5pfUCOwK5yjPaJQNy44prjCwtr981dO8Qo9J9PwYXZ0MosgAbfEMB008dJ5sNo3+/BN6ytBPuSvXUg9SAqB0dg==
"@typescript-eslint/typescript-estree@8.0.0-alpha.10":
version "8.0.0-alpha.10"
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.0.0-alpha.10.tgz#e850056d2a5029688269a60206dec3bbd7beb953"
integrity sha512-8wBUIhu6IRa440hv5/0ZEnb5JLp/UsfzIXYKRwICUOMTVj2ss1n+w3m1CtT5ghVWy5Z05qkscsbhlKFmZguU8w==
dependencies:
"@typescript-eslint/types" "7.8.0"
"@typescript-eslint/visitor-keys" "7.8.0"
"@typescript-eslint/types" "8.0.0-alpha.10"
"@typescript-eslint/visitor-keys" "8.0.0-alpha.10"
debug "^4.3.4"
globby "^11.1.0"
is-glob "^4.0.3"
@@ -424,32 +449,27 @@
semver "^7.6.0"
ts-api-utils "^1.3.0"
"@typescript-eslint/utils@7.8.0":
version "7.8.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-7.8.0.tgz#57a79f9c0c0740ead2f622e444cfaeeb9fd047cd"
integrity sha512-L0yFqOCflVqXxiZyXrDr80lnahQfSOfc9ELAAZ75sqicqp2i36kEZZGuUymHNFoYOqxRT05up760b4iGsl02nQ==
"@typescript-eslint/utils@8.0.0-alpha.10":
version "8.0.0-alpha.10"
resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.0.0-alpha.10.tgz#b77f743227353bfa493e95409c0e079044c9258e"
integrity sha512-WZyNf49CuvaW/whz/B8XjYwXE/wm/EQAXq+Vqgp6BrJb8SC3bMCwGuUxReNDN1o+dNdOC96ofVSvqa8NUQ65Jg==
dependencies:
"@eslint-community/eslint-utils" "^4.4.0"
"@types/json-schema" "^7.0.15"
"@types/semver" "^7.5.8"
"@typescript-eslint/scope-manager" "7.8.0"
"@typescript-eslint/types" "7.8.0"
"@typescript-eslint/typescript-estree" "7.8.0"
"@typescript-eslint/scope-manager" "8.0.0-alpha.10"
"@typescript-eslint/types" "8.0.0-alpha.10"
"@typescript-eslint/typescript-estree" "8.0.0-alpha.10"
semver "^7.6.0"
"@typescript-eslint/visitor-keys@7.8.0":
version "7.8.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-7.8.0.tgz#7285aab991da8bee411a42edbd5db760d22fdd91"
integrity sha512-q4/gibTNBQNA0lGyYQCmWRS5D15n8rXh4QjK3KV+MBPlTYHpfBUT3D3PaPR/HeNiI9W6R7FvlkcGhNyAoP+caA==
"@typescript-eslint/visitor-keys@8.0.0-alpha.10":
version "8.0.0-alpha.10"
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.0.0-alpha.10.tgz#d0a9250c69cc2f73c7f423c36183d222a329e260"
integrity sha512-UohTNnT7S29uQgXsGZY489nWmoBBSJucNdRvog62R1QX9pQQb2pKVV1kHepUxoY2vd+M4tb9SQwZQ3gPNgqQ6w==
dependencies:
"@typescript-eslint/types" "7.8.0"
"@typescript-eslint/types" "8.0.0-alpha.10"
eslint-visitor-keys "^3.4.3"
"@ungap/structured-clone@^1.2.0":
version "1.2.0"
resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406"
integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==
"@xmldom/xmldom@^0.8.8":
version "0.8.10"
resolved "https://registry.yarnpkg.com/@xmldom/xmldom/-/xmldom-0.8.10.tgz#a1337ca426aa61cef9fe15b5b28e340a72f6fa99"
@@ -465,7 +485,7 @@ acorn-jsx@^5.3.2:
resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
acorn@^8.9.0:
acorn@^8.11.3:
version "8.11.3"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a"
integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==
@@ -554,14 +574,14 @@ app-builder-bin@4.0.0:
resolved "https://registry.yarnpkg.com/app-builder-bin/-/app-builder-bin-4.0.0.tgz#1df8e654bd1395e4a319d82545c98667d7eed2f0"
integrity sha512-xwdG0FJPQMe0M0UA4Tz0zEB8rBJTRA5a476ZawAqiBkMv16GRK5xpXThOjMaEOFnZ6zabejjG4J3da0SXG63KA==
app-builder-lib@25.0.0-alpha.6:
version "25.0.0-alpha.6"
resolved "https://registry.yarnpkg.com/app-builder-lib/-/app-builder-lib-25.0.0-alpha.6.tgz#3edb49843b249a1dd52b32a80f9787677bc5a32b"
integrity sha512-kXveR7MFTJXBwb2xB2geKWeWP+YGcJ3IzWRgTEV96zwyo4IxzE5xRXcndSQQglmlzw/VoM5Mx322E9ErYbMCVg==
app-builder-lib@25.0.0-alpha.8:
version "25.0.0-alpha.8"
resolved "https://registry.yarnpkg.com/app-builder-lib/-/app-builder-lib-25.0.0-alpha.8.tgz#e8065005b0b5d43f22153ac72101f71bf4e1022b"
integrity sha512-d/pcaTcDv3gfdl9AGGP/DKvc+A+TdJmG15f+vqPeEGKOoqLE0ukReaEevXAtH3wOOs5CqgX6QgNPdszeeqFn3Q==
dependencies:
"@develar/schema-utils" "~2.6.5"
"@electron/notarize" "2.3.0"
"@electron/osx-sign" "1.0.5"
"@electron/osx-sign" "1.3.0"
"@electron/rebuild" "3.6.0"
"@electron/universal" "2.0.1"
"@malept/flatpak-bundler" "^0.4.0"
@@ -573,7 +593,7 @@ app-builder-lib@25.0.0-alpha.6:
chromium-pickle-js "^0.2.0"
debug "^4.3.4"
ejs "^3.1.8"
electron-publish "25.0.0-alpha.6"
electron-publish "25.0.0-alpha.7"
form-data "^4.0.0"
fs-extra "^10.1.0"
hosted-git-info "^4.1.0"
@@ -582,7 +602,7 @@ app-builder-lib@25.0.0-alpha.6:
js-yaml "^4.1.0"
lazy-val "^1.0.5"
minimatch "^5.1.1"
read-config-file "6.3.2"
read-config-file "6.4.0"
sanitize-filename "^1.6.3"
semver "^7.3.8"
tar "^6.1.12"
@@ -718,7 +738,14 @@ brace-expansion@^2.0.1:
dependencies:
balanced-match "^1.0.0"
braces@^3.0.2, braces@~3.0.2:
braces@^3.0.3:
version "3.0.3"
resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789"
integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==
dependencies:
fill-range "^7.1.1"
braces@~3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
@@ -743,10 +770,10 @@ buffer@^5.1.0, buffer@^5.5.0:
base64-js "^1.3.1"
ieee754 "^1.1.13"
builder-util-runtime@9.2.3:
version "9.2.3"
resolved "https://registry.yarnpkg.com/builder-util-runtime/-/builder-util-runtime-9.2.3.tgz#0a82c7aca8eadef46d67b353c638f052c206b83c"
integrity sha512-FGhkqXdFFZ5dNC4C+yuQB9ak311rpGAw+/ASz8ZdxwODCv1GGMWgLDeofRkdi0F3VCHQEWy/aXcJQozx2nOPiw==
builder-util-runtime@9.2.4:
version "9.2.4"
resolved "https://registry.yarnpkg.com/builder-util-runtime/-/builder-util-runtime-9.2.4.tgz#13cd1763da621e53458739a1e63f7fcba673c42a"
integrity sha512-upp+biKpN/XZMLim7aguUyW8s0FUpDvOtK6sbanMFDAMBzpHDqdhgVYm6zc9HJ6nWo7u2Lxk60i2M6Jd3aiNrA==
dependencies:
debug "^4.3.4"
sax "^1.2.4"
@@ -1007,6 +1034,14 @@ conf@^10.2.0:
pkg-up "^3.1.0"
semver "^7.3.5"
config-file-ts@0.2.8-rc1:
version "0.2.8-rc1"
resolved "https://registry.yarnpkg.com/config-file-ts/-/config-file-ts-0.2.8-rc1.tgz#fb7fc6ccb2e313f69dbeb78f1db0b00038049de0"
integrity sha512-GtNECbVI82bT4RiDIzBSVuTKoSHufnU7Ce7/42bkWZJZFLjmDF2WBpVsvRkhKCfKBnTBb3qZrBwPpFBU/Myvhg==
dependencies:
glob "^10.3.12"
typescript "^5.4.3"
config-file-ts@^0.2.4:
version "0.2.6"
resolved "https://registry.yarnpkg.com/config-file-ts/-/config-file-ts-0.2.6.tgz#b424ff74612fb37f626d6528f08f92ddf5d22027"
@@ -1055,13 +1090,20 @@ debounce-fn@^4.0.0:
dependencies:
mimic-fn "^3.0.0"
debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4:
debug@4, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3:
version "4.3.4"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
dependencies:
ms "2.1.2"
debug@^4.1.0, debug@^4.1.1, debug@^4.3.4:
version "4.3.5"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.5.tgz#e83444eceb9fedd4a1da56d671ae2446a01a6e1e"
integrity sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==
dependencies:
ms "2.1.2"
decompress-response@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc"
@@ -1149,12 +1191,12 @@ dir-glob@^3.0.1:
dependencies:
path-type "^4.0.0"
dmg-builder@25.0.0-alpha.6:
version "25.0.0-alpha.6"
resolved "https://registry.yarnpkg.com/dmg-builder/-/dmg-builder-25.0.0-alpha.6.tgz#1a13008de0543c3080595534ab294cde2a5e57e8"
integrity sha512-GStVExwsuumGN6rPGJksA5bLN5n5QEQd5iQrGKyBSxuwR1+LWidFkM+anroXnANIyTwbppk2S7+808vHjT/Eyw==
dmg-builder@25.0.0-alpha.8:
version "25.0.0-alpha.8"
resolved "https://registry.yarnpkg.com/dmg-builder/-/dmg-builder-25.0.0-alpha.8.tgz#fe887023ffc9ce72dfd2472303a76ec008a156d2"
integrity sha512-1/Sfl1sQugHkHEobFafyx1HcmgkFj8pV7HFEK0NQ8bH5K2qsGvknjAeHjtYhV2sBoSNGod4P0SfbScS6p6h4eg==
dependencies:
app-builder-lib "25.0.0-alpha.6"
app-builder-lib "25.0.0-alpha.8"
builder-util "25.0.0-alpha.6"
builder-util-runtime "9.2.5-alpha.2"
fs-extra "^10.1.0"
@@ -1177,13 +1219,6 @@ dmg-license@^1.0.11:
smart-buffer "^4.0.2"
verror "^1.10.0"
doctrine@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961"
integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==
dependencies:
esutils "^2.0.2"
dot-prop@^6.0.1:
version "6.0.1"
resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-6.0.1.tgz#fc26b3cf142b9e59b74dbd39ed66ce620c681083"
@@ -1191,11 +1226,23 @@ dot-prop@^6.0.1:
dependencies:
is-obj "^2.0.0"
dotenv-expand@^11.0.6:
version "11.0.6"
resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-11.0.6.tgz#f2c840fd924d7c77a94eff98f153331d876882d3"
integrity sha512-8NHi73otpWsZGBSZwwknTXS5pqMOrk9+Ssrna8xCaxkzEpU9OTf9R5ArQGVw03//Zmk9MOwLPng9WwndvpAJ5g==
dependencies:
dotenv "^16.4.4"
dotenv-expand@^5.1.0:
version "5.1.0"
resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0"
integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==
dotenv@^16.4.4, dotenv@^16.4.5:
version "16.4.5"
resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.5.tgz#cdd3b3b604cb327e286b4762e13502f717cb099f"
integrity sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==
dotenv@^9.0.2:
version "9.0.2"
resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-9.0.2.tgz#dacc20160935a37dea6364aa1bef819fb9b6ab05"
@@ -1208,16 +1255,16 @@ ejs@^3.1.8:
dependencies:
jake "^10.8.5"
electron-builder@25.0.0-alpha.6:
version "25.0.0-alpha.6"
resolved "https://registry.yarnpkg.com/electron-builder/-/electron-builder-25.0.0-alpha.6.tgz#a72f96f7029539ac28f92ce5c83f872ba3b6e7c1"
integrity sha512-qXzzdID2W9hhx3TXddwXv1C5HsqjF6bKnftUtywAB/gtDwu+neifPZvnXDNHI4ZamRrZpJJH59esfkqkc2KNSQ==
electron-builder@25.0.0-alpha.8:
version "25.0.0-alpha.8"
resolved "https://registry.yarnpkg.com/electron-builder/-/electron-builder-25.0.0-alpha.8.tgz#7238623cf7a753d0da31f16daea8767d0ef6d572"
integrity sha512-nfrtTljEZackbhJE1BcK+RFXrPvrkrBo0TgR0gH2GxNhPiRTwj/S24K3zHbYj6vBaDVtnqlS6Mqm8tMUrRU4tA==
dependencies:
app-builder-lib "25.0.0-alpha.6"
app-builder-lib "25.0.0-alpha.8"
builder-util "25.0.0-alpha.6"
builder-util-runtime "9.2.5-alpha.2"
chalk "^4.1.2"
dmg-builder "25.0.0-alpha.6"
dmg-builder "25.0.0-alpha.8"
fs-extra "^10.1.0"
is-ci "^3.0.0"
lazy-val "^1.0.5"
@@ -1226,14 +1273,14 @@ electron-builder@25.0.0-alpha.6:
yargs "^17.6.2"
electron-log@^5.1:
version "5.1.2"
resolved "https://registry.yarnpkg.com/electron-log/-/electron-log-5.1.2.tgz#fb40ad7f4ae694dd0e4c02c662d1a65c03e1243e"
integrity sha512-Cpg4hAZ27yM9wzE77c4TvgzxzavZ+dVltCczParXN+Vb3jocojCSAuSMCVOI9fhFuuOR+iuu3tZLX1cu0y0kgQ==
version "5.1.5"
resolved "https://registry.yarnpkg.com/electron-log/-/electron-log-5.1.5.tgz#70d5051fc5ab7669b2592f53f72034867269c96e"
integrity sha512-vuq10faUAxRbILgQx7yHoMObKZDEfj7hMSZrJPsVrDNeCpV/HN11dU7QuY4UDUe055pzBxhSCB3m0+6D3Aktjw==
electron-publish@25.0.0-alpha.6:
version "25.0.0-alpha.6"
resolved "https://registry.yarnpkg.com/electron-publish/-/electron-publish-25.0.0-alpha.6.tgz#8af3cb6e2435c00b8c71de43c330483808df5924"
integrity sha512-Hin+6j+jiXBc5g6Wlv9JB5Xu7MADBHxZAndt4WE7luCw7b3+OJdQeDvD/uYiCLpiG8cc2NLxu4MyBSVu86MrJA==
electron-publish@25.0.0-alpha.7:
version "25.0.0-alpha.7"
resolved "https://registry.yarnpkg.com/electron-publish/-/electron-publish-25.0.0-alpha.7.tgz#3c1944c8890b22d5f674772bf16c5382da248861"
integrity sha512-d9R6Jnds3PjzBM4Wt3nRn9ramkbM3kBzt9a6WHQL4/09ByyZGZ1Cu9GS9atRCkH3tBJlOIotUYVhVO36lk3sAA==
dependencies:
"@types/fs-extra" "^9.0.11"
builder-util "25.0.0-alpha.6"
@@ -1251,12 +1298,12 @@ electron-store@^8.2:
conf "^10.2.0"
type-fest "^2.17.0"
electron-updater@^6.1:
version "6.1.8"
resolved "https://registry.yarnpkg.com/electron-updater/-/electron-updater-6.1.8.tgz#17637bca165322f4e526b13c99165f43e6f697d8"
integrity sha512-hhOTfaFAd6wRHAfUaBhnAOYc+ymSGCWJLtFkw4xJqOvtpHmIdNHnXDV9m1MHC+A6q08Abx4Ykgyz/R5DGKNAMQ==
electron-updater@^6.2:
version "6.2.1"
resolved "https://registry.yarnpkg.com/electron-updater/-/electron-updater-6.2.1.tgz#1c9adb9ba2a21a5dc50a8c434c45360d5e9fe6c9"
integrity sha512-83eKIPW14qwZqUUM6wdsIRwVKZyjmHxQ4/8G+1C6iS5PdDt7b1umYQyj1/qPpH510GmHEQe4q0kCPe3qmb3a0Q==
dependencies:
builder-util-runtime "9.2.3"
builder-util-runtime "9.2.4"
fs-extra "^10.1.0"
js-yaml "^4.1.0"
lazy-val "^1.0.5"
@@ -1266,9 +1313,9 @@ electron-updater@^6.1:
tiny-typed-emitter "^2.1.0"
electron@^30:
version "30.0.5"
resolved "https://registry.yarnpkg.com/electron/-/electron-30.0.5.tgz#cbd28681b974f9d8ada987bf7070cde232d01a91"
integrity sha512-+a7PjcAq2HrfF1l+Ez8n0W9YeZIam7E9ERHEGs+L2dqKu7qxk8GNSEFoBEPCpLI00p/fc0d76L9IcLCQJdNFqA==
version "30.0.9"
resolved "https://registry.yarnpkg.com/electron/-/electron-30.0.9.tgz#b11400e4642a4b635e79244ba365f1d401ee60b5"
integrity sha512-ArxgdGHVu3o5uaP+Tqj8cJDvU03R6vrGrOqiMs7JXLnvQHMqXJIIxmFKQAIdJW8VoT3ac3hD21tA7cPO10RLow==
dependencies:
"@electron/get" "^2.0.0"
"@types/node" "^20.9.0"
@@ -1330,54 +1377,55 @@ escape-string-regexp@^4.0.0:
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
eslint-scope@^7.2.2:
version "7.2.2"
resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f"
integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==
eslint-scope@^8.0.1:
version "8.0.1"
resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-8.0.1.tgz#a9601e4b81a0b9171657c343fb13111688963cfc"
integrity sha512-pL8XjgP4ZOmmwfFE8mEhSxA7ZY4C+LWyqjQ3o4yWkkmD0qcMT9kkW3zWHOczhWcjTSgqycYAgwSlXvZltv65og==
dependencies:
esrecurse "^4.3.0"
estraverse "^5.2.0"
eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3:
eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.3:
version "3.4.3"
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800"
integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==
eslint@^8:
version "8.57.0"
resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.0.tgz#c786a6fd0e0b68941aaf624596fb987089195668"
integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==
eslint-visitor-keys@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz#e3adc021aa038a2a8e0b2f8b0ce8f66b9483b1fb"
integrity sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==
eslint@^9.4.0:
version "9.4.0"
resolved "https://registry.yarnpkg.com/eslint/-/eslint-9.4.0.tgz#79150c3610ae606eb131f1d648d5f43b3d45f3cd"
integrity sha512-sjc7Y8cUD1IlwYcTS9qPSvGjAC8Ne9LctpxKKu3x/1IC9bnOg98Zy6GxEJUfr1NojMgVPlyANXYns8oE2c1TAA==
dependencies:
"@eslint-community/eslint-utils" "^4.2.0"
"@eslint-community/regexpp" "^4.6.1"
"@eslint/eslintrc" "^2.1.4"
"@eslint/js" "8.57.0"
"@humanwhocodes/config-array" "^0.11.14"
"@eslint/config-array" "^0.15.1"
"@eslint/eslintrc" "^3.1.0"
"@eslint/js" "9.4.0"
"@humanwhocodes/module-importer" "^1.0.1"
"@humanwhocodes/retry" "^0.3.0"
"@nodelib/fs.walk" "^1.2.8"
"@ungap/structured-clone" "^1.2.0"
ajv "^6.12.4"
chalk "^4.0.0"
cross-spawn "^7.0.2"
debug "^4.3.2"
doctrine "^3.0.0"
escape-string-regexp "^4.0.0"
eslint-scope "^7.2.2"
eslint-visitor-keys "^3.4.3"
espree "^9.6.1"
eslint-scope "^8.0.1"
eslint-visitor-keys "^4.0.0"
espree "^10.0.1"
esquery "^1.4.2"
esutils "^2.0.2"
fast-deep-equal "^3.1.3"
file-entry-cache "^6.0.1"
file-entry-cache "^8.0.0"
find-up "^5.0.0"
glob-parent "^6.0.2"
globals "^13.19.0"
graphemer "^1.4.0"
ignore "^5.2.0"
imurmurhash "^0.1.4"
is-glob "^4.0.0"
is-path-inside "^3.0.3"
js-yaml "^4.1.0"
json-stable-stringify-without-jsonify "^1.0.1"
levn "^0.4.1"
lodash.merge "^4.6.2"
@@ -1387,14 +1435,14 @@ eslint@^8:
strip-ansi "^6.0.1"
text-table "^0.2.0"
espree@^9.6.0, espree@^9.6.1:
version "9.6.1"
resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f"
integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==
espree@^10.0.1:
version "10.0.1"
resolved "https://registry.yarnpkg.com/espree/-/espree-10.0.1.tgz#600e60404157412751ba4a6f3a2ee1a42433139f"
integrity sha512-MWkrWZbJsL2UwnjxTX3gG8FneachS/Mwg7tdGXce011sJd5b0JG54vat5KHnfSBODZ3Wvzd2WnjxyzsRoVv+ww==
dependencies:
acorn "^8.9.0"
acorn "^8.11.3"
acorn-jsx "^5.3.2"
eslint-visitor-keys "^3.4.1"
eslint-visitor-keys "^4.0.0"
esquery@^1.4.2:
version "1.5.0"
@@ -1491,12 +1539,12 @@ ffmpeg-static@^5.2:
https-proxy-agent "^5.0.0"
progress "^2.0.3"
file-entry-cache@^6.0.1:
version "6.0.1"
resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027"
integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==
file-entry-cache@^8.0.0:
version "8.0.0"
resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-8.0.0.tgz#7787bddcf1131bffb92636c69457bbc0edd6d81f"
integrity sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==
dependencies:
flat-cache "^3.0.4"
flat-cache "^4.0.0"
filelist@^1.0.4:
version "1.0.4"
@@ -1505,10 +1553,10 @@ filelist@^1.0.4:
dependencies:
minimatch "^5.0.1"
fill-range@^7.0.1:
version "7.0.1"
resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
fill-range@^7.0.1, fill-range@^7.1.1:
version "7.1.1"
resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292"
integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==
dependencies:
to-regex-range "^5.0.1"
@@ -1527,14 +1575,13 @@ find-up@^5.0.0:
locate-path "^6.0.0"
path-exists "^4.0.0"
flat-cache@^3.0.4:
version "3.2.0"
resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee"
integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==
flat-cache@^4.0.0:
version "4.0.1"
resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-4.0.1.tgz#0ece39fcb14ee012f4b0410bd33dd9c1f011127c"
integrity sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==
dependencies:
flatted "^3.2.9"
keyv "^4.5.3"
rimraf "^3.0.2"
keyv "^4.5.4"
flatted@^3.2.9:
version "3.3.1"
@@ -1678,7 +1725,7 @@ glob-parent@^6.0.2:
dependencies:
is-glob "^4.0.3"
glob@^10.3.10, glob@^10.3.7:
glob@^10.3.10:
version "10.3.12"
resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.12.tgz#3a65c363c2e9998d220338e88a5f6ac97302960b"
integrity sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==
@@ -1689,6 +1736,17 @@ glob@^10.3.10, glob@^10.3.7:
minipass "^7.0.4"
path-scurry "^1.10.2"
glob@^10.3.12, glob@^10.3.7:
version "10.4.1"
resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.1.tgz#0cfb01ab6a6b438177bfe6a58e2576f6efe909c2"
integrity sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw==
dependencies:
foreground-child "^3.1.0"
jackspeak "^3.1.2"
minimatch "^9.0.4"
minipass "^7.1.2"
path-scurry "^1.11.1"
glob@^7.0.0, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6:
version "7.2.3"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
@@ -1724,12 +1782,10 @@ global-agent@^3.0.0:
semver "^7.3.2"
serialize-error "^7.0.1"
globals@^13.19.0:
version "13.24.0"
resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171"
integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==
dependencies:
type-fest "^0.20.2"
globals@^14.0.0:
version "14.0.0"
resolved "https://registry.yarnpkg.com/globals/-/globals-14.0.0.tgz#898d7413c29babcf6bafe56fcadded858ada724e"
integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==
globalthis@^1.0.1:
version "1.0.4"
@@ -2048,7 +2104,7 @@ isexe@^2.0.0:
resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
jackspeak@2.1.1, jackspeak@^2.3.6:
jackspeak@2.1.1, jackspeak@^2.3.6, jackspeak@^3.1.2:
version "2.1.1"
resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.1.1.tgz#2a42db4cfbb7e55433c28b6f75d8b796af9669cd"
integrity sha512-juf9stUEwUaILepraGOWIJTLwg48bUnBmRqd2ln2Os1sW987zeoj/hzhbvRB95oMuS2ZTpjULmdwHNX4rzZIZw==
@@ -2114,7 +2170,7 @@ json-stringify-safe@^5.0.1:
resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==
json5@^2.2.0:
json5@^2.2.0, json5@^2.2.3:
version "2.2.3"
resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283"
integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==
@@ -2135,7 +2191,7 @@ jsonfile@^6.0.1:
optionalDependencies:
graceful-fs "^4.1.6"
keyv@^4.0.0, keyv@^4.5.3:
keyv@^4.0.0, keyv@^4.5.4:
version "4.5.4"
resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93"
integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==
@@ -2255,11 +2311,11 @@ merge2@^1.3.0, merge2@^1.4.1:
integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
micromatch@^4.0.4:
version "4.0.5"
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6"
integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==
version "4.0.7"
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.7.tgz#33e8190d9fe474a9895525f5618eee136d46c2e5"
integrity sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==
dependencies:
braces "^3.0.2"
braces "^3.0.3"
picomatch "^2.3.1"
mime-db@1.52.0:
@@ -2376,10 +2432,10 @@ minipass@^5.0.0:
resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d"
integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==
"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.0.4:
version "7.0.4"
resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.4.tgz#dbce03740f50a4786ba994c1fb908844d27b038c"
integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==
"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.0.4, minipass@^7.1.0, minipass@^7.1.2:
version "7.1.2"
resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707"
integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==
minizlib@^2.1.1, minizlib@^2.1.2:
version "2.1.2"
@@ -2526,17 +2582,17 @@ onetime@^5.1.0, onetime@^5.1.2:
dependencies:
mimic-fn "^2.1.0"
onnxruntime-common@1.17.3:
version "1.17.3"
resolved "https://registry.yarnpkg.com/onnxruntime-common/-/onnxruntime-common-1.17.3.tgz#aadc456477873a540ee3d611ae9cd4f3de7c43e5"
integrity sha512-IkbaDelNVX8cBfHFgsNADRIq2TlXMFWW+nG55mwWvQT4i0NZb32Jf35Pf6h9yjrnK78RjcnlNYaI37w394ovMw==
onnxruntime-common@1.18.0:
version "1.18.0"
resolved "https://registry.yarnpkg.com/onnxruntime-common/-/onnxruntime-common-1.18.0.tgz#b904dc6ff134e7f21a3eab702fac17538f59e116"
integrity sha512-lufrSzX6QdKrktAELG5x5VkBpapbCeS3dQwrXbN0eD9rHvU0yAWl7Ztju9FvgAKWvwd/teEKJNj3OwM6eTZh3Q==
onnxruntime-node@^1.17:
version "1.17.3"
resolved "https://registry.yarnpkg.com/onnxruntime-node/-/onnxruntime-node-1.17.3.tgz#53b8b7ef68bf3834bba9d7be592e4c2d718d2018"
integrity sha512-NtbN1pfApTSEjVq46LrJ396aPP2Gjhy+oYZi5Bu1leDXAEvVap/BQ8CZELiLs7z0UnXy3xjJW23HiB4P3//FIw==
onnxruntime-node@^1.18:
version "1.18.0"
resolved "https://registry.yarnpkg.com/onnxruntime-node/-/onnxruntime-node-1.18.0.tgz#ad3947365ca038ec3a16fa4c48972708ccd294e9"
integrity sha512-iTnFcxKpmywCatx8ov4GTbECe3tJk2Bp1OA2mWRJde78q+7tpPYBhKMnwhlaoKy9oKQcy4UoEuuhoy2PSD13ww==
dependencies:
onnxruntime-common "1.17.3"
onnxruntime-common "1.18.0"
tar "^7.0.1"
optionator@^0.9.3:
@@ -2648,10 +2704,10 @@ path-parse@^1.0.7:
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
path-scurry@^1.10.2:
version "1.10.2"
resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.10.2.tgz#8f6357eb1239d5fa1da8b9f70e9c080675458ba7"
integrity sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==
path-scurry@^1.10.2, path-scurry@^1.11.1:
version "1.11.1"
resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2"
integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==
dependencies:
lru-cache "^10.2.0"
minipass "^5.0.0 || ^6.0.2 || ^7.0.0"
@@ -2706,9 +2762,9 @@ prettier-plugin-packagejson@^2:
synckit "0.9.0"
prettier@^3:
version "3.2.5"
resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.2.5.tgz#e52bc3090586e824964a8813b09aba6233b28368"
integrity sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==
version "3.3.0"
resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.3.0.tgz#d173ea0524a691d4c0b1181752f2b46724328cdf"
integrity sha512-J9odKxERhCQ10OC2yb93583f6UnYutOeiV5i0zEDS7UGTdUt0u+y8erxl3lBKvwo/JHyyoEdXjwp4dke9oyZ/g==
progress@^2.0.3:
version "2.0.3"
@@ -2770,6 +2826,18 @@ read-config-file@6.3.2:
json5 "^2.2.0"
lazy-val "^1.0.4"
read-config-file@6.4.0:
version "6.4.0"
resolved "https://registry.yarnpkg.com/read-config-file/-/read-config-file-6.4.0.tgz#970542833216cccff6b1d83320495003dcf85a45"
integrity sha512-uB5QOBeF84PT61GlV11OTV4jUGHAO3iDEOP6v9ygxhG6Bs9PLg7WsjNT6mtIX2G+x8lJTr4ZWNeG6LDTKkNf2Q==
dependencies:
config-file-ts "0.2.8-rc1"
dotenv "^16.4.5"
dotenv-expand "^11.0.6"
js-yaml "^4.1.0"
json5 "^2.2.3"
lazy-val "^1.0.5"
readable-stream@^3.0.2, readable-stream@^3.4.0, readable-stream@^3.6.0:
version "3.6.2"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967"
@@ -2860,9 +2928,9 @@ rimraf@^3.0.2:
glob "^7.1.3"
rimraf@^5.0.5:
version "5.0.5"
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-5.0.5.tgz#9be65d2d6e683447d2e9013da2bf451139a61ccf"
integrity sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==
version "5.0.7"
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-5.0.7.tgz#27bddf202e7d89cb2e0381656380d1734a854a74"
integrity sha512-nV6YcJo5wbLW77m+8KjH8aB/7/rxQy9SZ0HY5shnwULfS+9nmTtVXAJET5NdZmCzA4fPI/Hm1wo/Po/4mopOdg==
dependencies:
glob "^10.3.7"
@@ -2924,12 +2992,12 @@ semver@^6.2.0:
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4"
integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
semver@^7.3.2:
semver@^7.3.2, semver@^7.6.0:
version "7.6.2"
resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.2.tgz#1e3b34759f896e8f14d6134732ce798aeb0c6e13"
integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==
semver@^7.3.5, semver@^7.3.8, semver@^7.5.3, semver@^7.6.0:
semver@^7.3.5, semver@^7.3.8, semver@^7.5.3:
version "7.6.0"
resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.0.tgz#1a46a4db4bffcccd97b743b5005c8325f23d4e2d"
integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==
@@ -3169,13 +3237,13 @@ tar@^6.0.5, tar@^6.1.11, tar@^6.1.12, tar@^6.1.2:
yallist "^4.0.0"
tar@^7.0.1:
version "7.0.1"
resolved "https://registry.yarnpkg.com/tar/-/tar-7.0.1.tgz#8f6ccebcd91b69e9767a6fc4892799e8b0e606d5"
integrity sha512-IjMhdQMZFpKsHEQT3woZVxBtCQY+0wk3CVxdRkGXEgyGa0dNS/ehPvOMr2nmfC7x5Zj2N+l6yZUpmICjLGS35w==
version "7.2.0"
resolved "https://registry.yarnpkg.com/tar/-/tar-7.2.0.tgz#f03ae6ecd2e2bab880f2ef33450f502e761d7548"
integrity sha512-hctwP0Nb4AB60bj8WQgRYaMOuJYRAPMGiQUAotms5igN8ppfQM+IvjQ5HcKu1MaZh2Wy2KWVTe563Yj8dfc14w==
dependencies:
"@isaacs/fs-minipass" "^4.0.0"
chownr "^3.0.0"
minipass "^5.0.0"
minipass "^7.1.0"
minizlib "^3.0.1"
mkdirp "^3.0.1"
yallist "^5.0.0"
@@ -3251,11 +3319,6 @@ type-fest@^0.13.1:
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.13.1.tgz#0172cb5bce80b0bd542ea348db50c7e21834d934"
integrity sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==
type-fest@^0.20.2:
version "0.20.2"
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4"
integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==
type-fest@^2.17.0:
version "2.19.0"
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.19.0.tgz#88068015bb33036a598b952e55e9311a60fd3a9b"
@@ -3266,7 +3329,16 @@ typedarray@^0.0.6:
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==
typescript@^5, typescript@^5.3.3:
typescript-eslint@8.0.0-alpha.10:
version "8.0.0-alpha.10"
resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-8.0.0-alpha.10.tgz#2172d41ab30c8447927c3823c5a549b9c09be89f"
integrity sha512-iMbN7boDtUmcSDor/J022+H4G018W3r3RSUUr7yoghMTmFuKVIkI89xJHDg82DBGYkA0xOoDNPBr7XfRFbEXKQ==
dependencies:
"@typescript-eslint/eslint-plugin" "8.0.0-alpha.10"
"@typescript-eslint/parser" "8.0.0-alpha.10"
"@typescript-eslint/utils" "8.0.0-alpha.10"
typescript@^5, typescript@^5.3.3, typescript@^5.4.3:
version "5.4.5"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.5.tgz#42ccef2c571fdbd0f6718b1d1f5e6e5ef006f611"
integrity sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==

View File

@@ -163,6 +163,10 @@ export const sidebar = [
text: "From Authy",
link: "/auth/migration-guides/authy/",
},
{
text: "From Steam",
link: "/auth/migration-guides/steam/",
},
{
text: "Exporting your data",
link: "/auth/migration-guides/export",

View File

@@ -7,4 +7,5 @@ description:
# Migrating to/from Ente Auth
- [Migrating from Authy](authy/)
- [Importing codes from Steam](steam/)
- [Exporting your data out of Ente Auth](export)

View File

@@ -0,0 +1,77 @@
---
title: Migrating from Steam Authenticator
description: Guide for importing from Steam Authenticator to Ente Auth
---
# Migrating from Steam Authenticator
> [!WARNING]
>
> Steam Authenticator code is only supported after auth-v3.0.3, check the app's
> version number before migration.
One way to migrate is to
[use this tool by dyc3](https://github.com/dyc3/steamguard-cli/releases/latest)
to simplify the process and skip directly to generating a qr code to Ente
Authenticator.
## Download/Install steamguard-cli
### Windows
1. Download `steamguard.exe` from the [releases page][releases].
2. Place `steamguard.exe` in a folder of your choice. For this example, we will
use `%USERPROFILE%\Desktop`.
3. Open Powershell or Command Prompt. The prompt should be at `%USERPROFILE%`
(eg. `C:\Users\<username>`).
4. Use `cd` to change directory into the folder where you placed
`steamguard.exe`. For this example, it would be `cd Desktop`.
5. You should now be able to run `steamguard.exe` by typing
`.\steamguard.exe --help` and pressing enter.
### Linux
#### Ubuntu/Debian
1. Download the `.deb` from the [releases page][releases].
2. Open a terminal and run this to install it:
```bash
sudo dpkg -i ./steamguard-cli_<version>_amd64.deb
```
#### Other Linux
1. Download `steamguard` from the [releases page][releases]
2. Make it executable, and move `steamguard` to `/usr/local/bin` or any other
directory in your `$PATH`.
```bash
chmod +x ./steamguard
sudo mv ./steamguard /usr/local/bin
```
3. You should now be able to run `steamguard` by typing `steamguard --help` and
pressing enter.
## Login to Steam account
Set up a new account with steamguard-cli
```bash
steamguard setup # set up a new account with steamguard-cli
```
## Generate & importing QR codes
steamguard-cli can then generate a QR code for your 2FA secret.
```bash
steamguard qr # print QR code for the first account in your maFiles
steamguard -u <account name> qr # print QR code for a specific account
```
Open Ente Auth, press the '+' button, select `Scan a QR code`, and scan the qr
code.
You should now have your steam code inside Ente Auth

View File

@@ -78,3 +78,23 @@ To summarize:
Set the S3 bucket `endpoint` in `credentials.yaml` to a `yourserverip:3200` or
some such IP/hostname that accessible from both where you are running the Ente
clients (e.g. the mobile app) and also from within the Docker compose cluster.
### 403 Forbidden
If museum (`2`) is able to make a network connection to your S3 bucket (`3`) but
uploads are still failing, it could be a credentials or permissions issue. A
telltale sign of this is that in the museum logs you can see `403 Forbidden`
errors about it not able to find the size of a file even though the
corresponding object exists in the S3 bucket.
To fix these, you should ensure the following:
1. The bucket CORS rules do not allow museum to access these objects.
> For uploading files from the browser, you will need to currently set
> allowedOrigins to "\*", and allow the "X-Auth-Token", "X-Client-Package"
> headers configuration too.
> [Here is an example of a working configuration](https://github.com/ente-io/ente/discussions/1764#discussioncomment-9478204).
2. The credentials are not being picked up (you might be setting the correct
creds, but not in the place where museum picks them from).

View File

@@ -37,7 +37,7 @@ endpoint:
(Another
[example](https://github.com/ente-io/ente/blob/main/cli/config.yaml.example))
## Web appps and Photos desktop app
## Web apps and Photos desktop app
You will need to build the app from source and use the
`NEXT_PUBLIC_ENTE_ENDPOINT` environment variable to tell it which server to

View File

@@ -164,6 +164,27 @@ EOF
RUN chmod +x /docker-entrypoint.d/replace_ente_endpoints.sh
```
This runs nginx inside to handle both the web & album URLs so we don't have to
make two web images with different port.
- `DOCKER_RUNTIME_REPLACE_ENDPOINT` this is your public museum API URL.
- `DOCKER_RUNTIME_REPLACE_ALBUMS_ENDPOINT` this is the shared albums URL (for
more details about configuring shared albums, see
[faq/sharing](/self-hosting/faq/sharing)).
Note how above we had updated the `compose.yaml` file for the server with
```yaml
web:
build:
context: web
ports:
- 8081:80
- 8082:80
```
so that web and album both point to the same container and nginx will handle it.
## 2. Set up the `.credentials.env` file
Create a `.credentials.env` file at the root of the project with the following

View File

@@ -41,7 +41,7 @@ NEXT_PUBLIC_ENTE_ENDPOINT=http://localhost:8080 yarn dev
That's about it. If you open http://localhost:3000, you will be able to create
an account on a Ente Photos web app running on your machine, and this web app
will be connecting to the server running on your local machine at
localhost:8080.
`localhost:8080`.
For the mobile apps, you don't even need to build, and can install normal Ente
apps and configure them to use your

View File

@@ -8,3 +8,6 @@ description: Fixing yarn install errors when trying to self host Ente
If your `yarn install` is failing, make sure you are using Yarn Classic
- https://classic.yarnpkg.com/lang/en/docs/install
For more details, see the
[getting started instructions](https://github.com/ente-io/ente/blob/main/web/docs/new.md).

View File

@@ -10,5 +10,6 @@
"devDependencies": {
"prettier": "^3",
"vitepress": "^1.0.0-rc.45"
}
},
"packageManager": "yarn@1.22.21"
}

View File

@@ -46,7 +46,7 @@ You can alternatively install the build from PlayStore or F-Droid.
## 🧑‍💻 Building from source
1. [Install Flutter v3.19.3](https://flutter.dev/docs/get-started/install).
1. [Install Flutter v3.22.0](https://flutter.dev/docs/get-started/install).
2. Pull in all submodules with `git submodule update --init --recursive`

View File

@@ -43,7 +43,7 @@ android {
defaultConfig {
applicationId "io.ente.photos"
minSdkVersion 21
minSdkVersion 26
targetSdkVersion 33
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
@@ -70,6 +70,10 @@ android {
dimension "default"
applicationIdSuffix ".dev"
}
face {
dimension "default"
applicationIdSuffix ".face"
}
playstore {
dimension "default"
}

View File

@@ -0,0 +1,10 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="io.ente.photos">
<!-- Flutter needs it to communicate with the running application
to allow setting breakpoints, to provide hot reload, etc.
-->
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
</manifest>

View File

@@ -0,0 +1,4 @@
<resources>
<string name="app_name">ente face</string>
<string name="backup">backup face</string>
</resources>

View File

@@ -7,17 +7,14 @@ allprojects {
google()
jcenter()
mavenCentral()
// mavenLocal() // for FDroid
maven {
url "${project(':background_fetch').projectDir}/libs"
}
mavenLocal() /merge/ for FDroid
}
}
rootProject.buildDir = '../build'
subprojects {
project.buildDir = "${rootProject.buildDir}/${project.name}"
project.buildDir = "${mobile/lib/main.dartrootProject.buildDir}/${project.name}"
project.evaluationDependsOn(':app')
}

View File

@@ -1,4 +1,4 @@
org.gradle.jvmargs=-Xmx4608m
org.gradle.jvmargs=-Xmx6144m
android.enableR8=true
android.useAndroidX=true
android.enableJetifier=true

View File

@@ -1,91 +0,0 @@
unknown
person
bicycle
car
motorcycle
airplane
bus
train
truck
boat
traffic light
fire hydrant
unknown
stop sign
parking meter
bench
bird
cat
dog
horse
sheep
cow
elephant
bear
zebra
giraffe
unknown
backpack
umbrella
unknown
unknown
handbag
tie
suitcase
frisbee
skis
snowboard
sports ball
kite
baseball bat
baseball glove
skateboard
surfboard
tennis racket
bottle
unknown
wine glass
cup
fork
knife
spoon
bowl
banana
apple
sandwich
orange
broccoli
carrot
hot dog
pizza
donut
cake
chair
couch
potted plant
bed
unknown
dining table
unknown
unknown
toilet
unknown
tv
laptop
mouse
remote
keyboard
cell phone
microwave
oven
toaster
sink
refrigerator
unknown
book
clock
vase
scissors
teddy bear
hair drier
toothbrush

View File

@@ -1,30 +0,0 @@
waterfall
snow
landscape
underwater
architecture
sunset / sunrise
blue sky
cloudy sky
greenery
autumn leaves
portrait
flower
night shot
stage concert
fireworks
candle light
neon lights
indoor
backlight
text documents
qr images
group portrait
computer screens
kids
dog
cat
macro
food
beach
mountain

View File

@@ -1,30 +1,30 @@
Entre est une application simple qui sauvegarde et organisé vos photos et vidéos.
Entre est une application simple qui sauvegarde et organise vos photos et vidéos.
Si vous recherchez une alternative respectueuse de la vie privée pour préserver vos souvenirs, vous êtes au bon endroit. Avec Ente, ils sont stockés chiffrés de bout-en-bout (e2ee). Cela signifie que vous-seul pouvez les voir.
Si vous recherchez une alternative respectueuse de votre vie privée pour préserver vos souvenirs, vous êtes au bon endroit. Avec Ente, ils sont stockés chiffrés de bout-en-bout (e2ee). Cela signifie que vous-seul pouvez les voir.
Nous avons des applications sur Android, iOS, Web et Ordinateur, et vos photos seront synchronisées de manière transparente entre tous vos appareils chiffrée de bout en bout (e2ee).
Nous avons des applications pour Android, iOS, Web et Ordinateur, et vos photos seront synchronisées de manière transparente entre tous vos appareils avec une méthode de chiffrement de bout en bout (e2ee).
Ente vous permet également de partager vos albums avec vos proches. Vous pouvez soit les partager directement avec d'autres utilisateurs Ente, chiffrés de bout en bout ou avec des liens visibles publiquement.
Vos données chiffrées sont stockées à travers de multiples endroits, dont un abri antiatomique à Paris. Nous prenons la postérité au sérieux et facilitons la conservation de vos souvenirs.
Vos données chiffrées sont stockées dans de multiples endroits, dont un abri antiatomique à Paris. Nous prenons la postérité au sérieux et facilitons la conservation de vos souvenirs.
Nous sommes là pour faire l'application photo la plus sûre de tous les temps, rejoignez-nous !
✨ CARACTÉRISTIQUES
- Sauvegardes de qualité originales, car chaque pixel est important
- Sauvegardes en qualité originale, car chaque pixel est important
- Abonnement familiaux, pour que vous puissiez partager l'espace de stockage avec votre famille
- Dossiers partagés, si vous voulez que votre partenaire profite de vos clichés
- Liens ves les albums qui peuvent être protégés par un mot de passe et être configurés pour expirer
- Liens vers les albums, qui peuvent être protégés par un mot de passe et être configurés pour expirer
- Possibilité de libérer de l'espace en supprimant les fichiers qui ont été sauvegardés en toute sécurité
- Éditeur d'images, pour ajouter des touches de finition
- Favoriser, cacher et revivre vos souvenirs, car ils sont précieux
- Favoris, cacher et revivre vos souvenirs, car ils sont précieux
- Importation en un clic depuis Google, Apple, votre disque dur et plus encore
- Thème sombre, parce que vos photos y sont jolies
- 2FA, 3FA, authentification biométrique
- et beaucoup de choses encore !
💲 PRIX
Nous ne proposons pas d'abonnement gratuits pour toujours, car il est important pour nous de rester durables et de résister à l'épreuve du temps. Au lieu de cela, nous vous proposons des abonnements abordables que vous pouvez partager librement avec votre famille. Vous pouvez trouver plus d'informations sur ente.io.
Nous ne proposons pas d'abonnements gratuits à vie, car il est important pour nous de rester pérenne et de résister à l'épreuve du temps. Au lieu de cela, nous vous proposons des abonnements abordables que vous pouvez partager librement avec votre famille. Vous pouvez trouver plus d'informations sur ente.io.
🙋 ASSISTANCE
Nous sommes fiers d'offrir un support humain. Si vous êtes un abonné, vous pouvez contacter team@ente.io et vous recevrez une réponse de notre équipe dans les 24 heures.

View File

@@ -6,6 +6,8 @@ PODS:
- connectivity_plus (0.0.1):
- Flutter
- FlutterMacOS
- dart_ui_isolate (0.0.1):
- Flutter
- device_info_plus (0.0.1):
- Flutter
- file_saver (0.0.1):
@@ -226,6 +228,7 @@ DEPENDENCIES:
- background_fetch (from `.symlinks/plugins/background_fetch/ios`)
- battery_info (from `.symlinks/plugins/battery_info/ios`)
- connectivity_plus (from `.symlinks/plugins/connectivity_plus/darwin`)
- dart_ui_isolate (from `.symlinks/plugins/dart_ui_isolate/ios`)
- device_info_plus (from `.symlinks/plugins/device_info_plus/ios`)
- file_saver (from `.symlinks/plugins/file_saver/ios`)
- firebase_core (from `.symlinks/plugins/firebase_core/ios`)
@@ -302,6 +305,8 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/battery_info/ios"
connectivity_plus:
:path: ".symlinks/plugins/connectivity_plus/darwin"
dart_ui_isolate:
:path: ".symlinks/plugins/dart_ui_isolate/ios"
device_info_plus:
:path: ".symlinks/plugins/device_info_plus/ios"
file_saver:
@@ -397,6 +402,7 @@ SPEC CHECKSUMS:
background_fetch: 2319bf7e18237b4b269430b7f14d177c0df09c5a
battery_info: 09f5c9ee65394f2291c8c6227bedff345b8a730c
connectivity_plus: ddd7f30999e1faaef5967c23d5b6d503d10434db
dart_ui_isolate: d5bcda83ca4b04f129d70eb90110b7a567aece14
device_info_plus: c6fb39579d0f423935b0c9ce7ee2f44b71b9fce6
file_saver: 503e386464dbe118f630e17b4c2e1190fa0cf808
Firebase: 91fefd38712feb9186ea8996af6cbdef41473442
@@ -421,7 +427,7 @@ SPEC CHECKSUMS:
home_widget: 0434835a4c9a75704264feff6be17ea40e0f0d57
image_editor_common: d6f6644ae4a6de80481e89fe6d0a8c49e30b4b43
in_app_purchase_storekit: 0e4b3c2e43ba1e1281f4f46dd71b0593ce529892
integration_test: 13825b8a9334a850581300559b8839134b124670
integration_test: ce0a3ffa1de96d1a89ca0ac26fca7ea18a749ef4
libwebp: 1786c9f4ff8a279e4dac1e8f385004d5fc253009
local_auth_darwin: c7e464000a6a89e952235699e32b329457608d98
local_auth_ios: 5046a18c018dd973247a0564496c8898dbb5adf9

Some files were not shown because too many files have changed in this diff Show More