Compare commits

...

1349 Commits

Author SHA1 Message Date
Neeraj Gupta
16817eceac [photos] Update bundle name from ente Photos -> Ente Photos (#2141)
## Description

## Tests
2024-06-14 16:02:15 +05:30
Neeraj Gupta
500e40035f [photos] Update bundle name from ente Photos -> Ente Photos 2024-06-14 15:59:44 +05:30
Neeraj Gupta
366da2c328 [photos] Bump version v0.9.0 (#2140)
## Description

## Tests
2024-06-14 15:59:21 +05:30
Neeraj Gupta
203d46b2cf [photos] Bump version v0.9.0 2024-06-14 15:56:15 +05:30
Manav Rathi
0e772fcfb7 [desktop] Fix duplicate file uploads when initializing a folder watch (#2138)
This didn't happen always, it was a race condition dependending on when
the `this.eventQueue = []` in `syncWithDisk` happened.
2024-06-14 15:25:58 +05:30
Manav Rathi
bbd6745372 Add CHANGELOG entries 2024-06-14 15:18:57 +05:30
Manav Rathi
dd1e0a9b1d Fix duplicate file uploads when initializing a folder watch
This didn't happen always, it was a race condition dependending on when the
`this.eventQueue = []` in `syncWithDisk` happened.
2024-06-14 15:11:36 +05:30
Neeraj Gupta
940231e38d [mob][auth] Fix handling of passkey when email verification is turned on (#2137)
## Description

## Tests
2024-06-14 14:41:39 +05:30
Neeraj Gupta
4c8db02de5 [auth] Bump version to v3.0.12 2024-06-14 14:39:51 +05:30
Neeraj Gupta
8af5aadd1b [mob] Bump photos version to v0.8.139 2024-06-14 14:39:25 +05:30
Neeraj Gupta
205feab4c2 [mob][auth] Fix passkey authn flow when emailVerification is enabled 2024-06-14 14:38:44 +05:30
Manav Rathi
60ab2b4427 [web] New translations (#2128)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2024-06-14 14:37:35 +05:30
Crowdin Bot
612329f584 New Crowdin translations by GitHub Action 2024-06-14 09:06:18 +00:00
Manav Rathi
a5f4a676a7 [web] Passkeys misc loose ends (#2136) 2024-06-14 14:35:32 +05:30
Manav Rathi
9608cfaa4e Don't show retry button if trying to use an already claimed session 2024-06-14 14:30:10 +05:30
Manav Rathi
ddd4d3e16c "Scripts may only close windows that were opened by them" 2024-06-14 14:04:42 +05:30
Manav Rathi
df0d48af73 [desktop] Add a check status button to the passkey waiting page (#2132) 2024-06-14 13:55:54 +05:30
Manav Rathi
c82193cae6 Enable passkeys for everyone 2024-06-14 13:51:21 +05:30
Manav Rathi
2c0928bd02 Change to photos favicon
he accounts favicon does not show on a white background (second image is the
hover state showing that the icon is actually there). For now, changing it to
the photos favicon, until we have an app neutral favicon.
2024-06-14 13:49:45 +05:30
Manav Rathi
8c8ffa9397 Add a hint to retry on other devices 2024-06-14 13:42:30 +05:30
Manav Rathi
3689ecb6e7 Add a message 2024-06-14 13:26:05 +05:30
Manav Rathi
ca080ad6b2 Split the flow 2024-06-14 13:07:00 +05:30
Neeraj Gupta
48d9ac63bb [auth] Bump version to v3.0.11 (#2135)
## Description

## Tests
2024-06-14 12:58:28 +05:30
Neeraj Gupta
887066962f [auth] Bump version to v3.0.11 2024-06-14 12:57:54 +05:30
Neeraj Gupta
cb2615b083 [auth] Fix url scheme for auth windows app (#2134)
## Description

## Tests
2024-06-14 12:57:07 +05:30
Neeraj Gupta
de459e68eb [auth] Fix url scheme for auth windows app 2024-06-14 12:42:41 +05:30
Neeraj Gupta
9cc559870c [auth] New translations (#2129)
New translations from
[Crowdin](https://crowdin.com/project/ente-authenticator-app)
2024-06-14 12:29:53 +05:30
Neeraj Gupta
395774c0e4 [auth] Fix twoFas import with missing issuerName (#2133)
## Description

## Tests
2024-06-14 12:29:32 +05:30
Neeraj Gupta
b3a7aebf95 [auth] Fix twoFas import with missing issuerName 2024-06-14 12:25:47 +05:30
Manav Rathi
b2e56fc01e Lint fix 2024-06-14 12:23:09 +05:30
Neeraj Gupta
0e0761bac7 Change log (#2131)
## Description

## Tests
2024-06-14 12:22:58 +05:30
Neeraj Gupta
79d7fe18ea [photos] Add change log for release 2024-06-14 12:20:34 +05:30
Manav Rathi
228dd90bce Make the retry code (almost) exactly the same as it was before
in an attempt at superstition (since rationality doesn't seem to work with
Safari).
2024-06-14 12:11:43 +05:30
Manav Rathi
93380d05b4 Add TODO 2024-06-14 12:04:34 +05:30
Manav Rathi
4123197c6d Use 2024-06-14 11:46:55 +05:30
Manav Rathi
cc3f398a78 Happy path 2024-06-14 11:41:50 +05:30
Neeraj Gupta
48155692ff Extract string 2024-06-14 11:37:30 +05:30
Manav Rathi
dd0f7d3142 Handle errors 2024-06-14 11:17:51 +05:30
Manav Rathi
325c963b7a Mix 2024-06-14 11:03:13 +05:30
Manav Rathi
fbf29585eb UI 2024-06-14 10:51:58 +05:30
Manav Rathi
8a2cc858ae API method 2024-06-14 10:10:09 +05:30
Crowdin Bot
b931825d3b New Crowdin translations by GitHub Action 2024-06-14 02:09:16 +00:00
Neeraj Gupta
2dc9b015a6 Add monochrome icon support for android (#2118)
## Description
Add monochrome icon support for android

## Tests
not tested
2024-06-14 06:04:55 +05:30
Neeraj Gupta
32c2456f03 [Passkey] Add check status option + other fixes (#2123)
## Description

## Tests
2024-06-14 06:03:51 +05:30
Neeraj Gupta
084027df31 Bump version for auth and photo 2024-06-13 18:15:58 +05:30
Neeraj Gupta
852878e3f4 [server] Reduce passkey JWT duration + API to get token via sessionID (#2111)
## Description

## Tests
Monkey tested locally
2024-06-13 18:07:37 +05:30
Neeraj Gupta
f07e88b2dc [mob] Lint fixes 2024-06-13 18:06:33 +05:30
Neeraj Gupta
d2e526769d Reject passkey verification for already claimed session 2024-06-13 17:52:27 +05:30
Neeraj Gupta
867fdb7e2c [passkey][mob] Validate sessionID 2024-06-13 17:50:02 +05:30
Neeraj Gupta
a830b771f8 Merge branch 'main' into auth_testing 2024-06-13 17:16:22 +05:30
Manav Rathi
cc21f1a36d [passkeys] Add a passkeySessionID check (#2125) 2024-06-13 17:07:17 +05:30
Manav Rathi
9ff8469a54 Pass as a query param instead
Mobile prefers it this way
2024-06-13 16:51:04 +05:30
Neeraj Gupta
cfafcf8278 make linter happy 2024-06-13 16:44:16 +05:30
Neeraj Gupta
1829bcfdcf [passkey] Enable for all users on mobile 2024-06-13 16:42:31 +05:30
Manav Rathi
608fec9129 logSet the inflight session 2024-06-13 16:41:09 +05:30
Neeraj Gupta
f5c9fa3d6c [passkey][mob] Minor fixes 2024-06-13 16:39:16 +05:30
Manav Rathi
4a21ee0fa9 Add a sessionID check 2024-06-13 16:29:30 +05:30
Manav Rathi
da853fdfde Rename 2024-06-13 16:21:13 +05:30
Manav Rathi
f2928c8ab8 Return the passkey session id in the redirect data 2024-06-13 16:18:01 +05:30
Manav Rathi
d34bcffafd [photosd] Add a "What's new" dialog (#2124) 2024-06-13 16:13:06 +05:30
Manav Rathi
67028a072c Fix 2024-06-13 16:05:53 +05:30
Manav Rathi
2bbf33287b Handle nightly builds (or versions without changelogs) 2024-06-13 16:00:57 +05:30
Neeraj Gupta
e60df5c54a Merge branch 'main' into auth_testing 2024-06-13 15:25:00 +05:30
Neeraj Gupta
b100392d7e [photos] Passkey changes 2024-06-13 15:24:29 +05:30
Manav Rathi
b2154429f3 Mention pk 2024-06-13 14:49:16 +05:30
Manav Rathi
e9f10f77d9 Fix condition 2024-06-13 14:39:36 +05:30
Neeraj Gupta
1d3452a1f0 [auth] Update copy 2024-06-13 14:35:46 +05:30
Manav Rathi
4e9ff3024c Hook it up 2024-06-13 14:26:53 +05:30
Neeraj Gupta
c193377640 [auth] Add endpoint to check passkey status 2024-06-13 13:54:31 +05:30
Manav Rathi
6f4b20ad6f Link 2024-06-13 13:44:26 +05:30
Manav Rathi
ee86de6b30 Move to gallery
Doesn't make much sense to show it to logged out users
2024-06-13 13:28:01 +05:30
Neeraj Gupta
7930e95f4a [auth] Update copy 2024-06-13 13:16:01 +05:30
Manav Rathi
2c3f82023c [mob] Passkeys: Don't show recover option on accounts page (#2122)
Mobile app shows it on the waiting screen instead (accounts web app
shows the recover option only when the recover query param is passed to
it).

(Did not verify by running on mobile)

/cc @ua741
2024-06-13 13:16:00 +05:30
Neeraj Gupta
1f6c5d9782 [auth] Change primary button color 2024-06-13 13:14:44 +05:30
Manav Rathi
b4640935a8 [mob] Passkeys: Don't show recover option on accounts page
Mobile app shows it on the waiting screen instead (accounts web app shows the
recover option only when the recover query param is passed to it).
2024-06-13 13:11:24 +05:30
Manav Rathi
e64ef1a7d8 [web] New translations (#2114)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2024-06-13 13:08:53 +05:30
Crowdin Bot
346e205001 New Crowdin translations by GitHub Action 2024-06-13 07:36:17 +00:00
Manav Rathi
8193379fad [web] Passkey verification waiting screen (#2121) 2024-06-13 13:05:40 +05:30
Manav Rathi
d3b589e622 Comment out for now 2024-06-13 12:56:01 +05:30
Manav Rathi
ec68a11ec3 Accomodate (future) check status button 2024-06-13 12:54:24 +05:30
Manav Rathi
ca949ac077 Sigh
It happens even without the console
2024-06-13 12:47:27 +05:30
Neeraj Gupta
54092c8fba [auth] update flutter submodule v3.22.2 2024-06-13 12:37:23 +05:30
Ashil
4b3f5e4cca [mob][photos] Remove internal user flag (#2120) 2024-06-13 12:35:09 +05:30
ashilkn
aebe483d80 [mob][photos] Remove internal user flag 2024-06-13 12:33:44 +05:30
Manav Rathi
ea5cd4a7d0 Use correct app name 2024-06-13 12:24:20 +05:30
Manav Rathi
15a745266d Use 2024-06-13 12:19:18 +05:30
Manav Rathi
fdde16e76c Update key 2024-06-13 12:18:29 +05:30
Ashil
39adba94dd [Mobile] Add Video Editor (#1748)
## Description

Add the much demanded video editor for photos mobile app, made with the
help of [video_editor](https://pub.dev/packages/video_editor) package
with features like Trim, Crop and Rotate.
2024-06-13 12:02:55 +05:30
Manav Rathi
ef33065c5b Fix URL (again) 2024-06-13 12:00:11 +05:30
Manav Rathi
dab15b2429 Conditional recover 2024-06-13 11:51:38 +05:30
Neeraj Gupta
c0367729a7 Merge branch 'main' into mobile-videoeditor 2024-06-13 11:46:06 +05:30
Neeraj Gupta
fa3d3bceed Added multiple custom icons to Ente Auth (#2117)
Icons added:

- Bitstamp
- ChangeNOW
- Itch.io
- Migros
- Name.com
2024-06-13 11:42:44 +05:30
Manav Rathi
26051985d5 Redirect to correct page 2024-06-13 11:38:56 +05:30
Manav Rathi
fe2f30a92c Improve more 2024-06-13 11:33:34 +05:30
Manav Rathi
af3f2280d6 Improve UX on web 2024-06-13 11:30:20 +05:30
Manav Rathi
d513019e1b Reuse 2024-06-13 11:25:31 +05:30
Manav Rathi
c611d43204 Allow reuse 2024-06-13 11:20:34 +05:30
Manav Rathi
cd76da836d Handle retrying redirects 2024-06-13 11:17:04 +05:30
Manav Rathi
9086d37a7c wip 2024-06-13 11:04:44 +05:30
Ashil
7234aef6c7 [mob][photos] Bump up to v0.8.137 (#2119) 2024-06-13 11:02:55 +05:30
ashilkn
20a4e78998 [mob][photos] Bump up to v0.8.137 2024-06-13 10:48:04 +05:30
Ashil
280fa9a171 [mob][photos] Discovery (behind feature flag) (#2115)
Show Magic search examples on search tab for internal users.
2024-06-13 10:20:37 +05:30
Prateek Sunal
13e0cf1826 fix(mobile): 9:16 crop ratio svg size 2024-06-12 20:15:56 +05:30
Prateek Sunal
498e651d6d fix(mobile): 9:16 crop ratio svg size 2024-06-12 20:06:18 +05:30
Prateek Sunal
66d58d1538 Merge branch 'main' into mobile-videoeditor 2024-06-12 19:57:50 +05:30
Prateek Sunal
27f95e433a chore(mobile): update locals 2024-06-12 19:56:54 +05:30
Prateek Sunal
9053717699 chore(mobile): update locals 2024-06-12 19:55:57 +05:30
Bl4ckspell7
82b6187e26 Add monochrome icon support for android 2024-06-12 15:59:06 +02:00
Christopher Romano
b7bf4e7015 Added Ubuntu One icon 2024-06-12 16:40:36 +03:00
Christopher Romano
fbd572f23a Added Name.com icon 2024-06-12 16:40:36 +03:00
Christopher Romano
92d017a701 Added Migros icon 2024-06-12 16:40:36 +03:00
Christopher Romano
422adf0a62 Added Itch.io icon 2024-06-12 16:40:36 +03:00
Christopher Romano
f85a1da9c2 Added ChangeNOW icon 2024-06-12 16:40:36 +03:00
Christopher Romano
afffcec3f2 Added Bitstamp icon 2024-06-12 16:40:10 +03:00
Prateek Sunal
77715e4d05 chore(mobile): bump version 2024-06-12 17:35:27 +05:30
Prateek Sunal
34eb9d7fba fix(mobile): 9:16 crop ratio svg 2024-06-12 17:21:54 +05:30
Prateek Sunal
01c3308019 [Auth] Disable search suggestions and sort tags (#2112)
## Description

Same as title.

## Tests
2024-06-12 17:09:44 +05:30
Manav Rathi
2f699365fb [web] Passkey - Show a redirect again option on passkeys (#2113) 2024-06-12 16:54:27 +05:30
Manav Rathi
622c4e7258 Fix the check (protocol includes colon) 2024-06-12 16:50:45 +05:30
Ashil
68003e203b [mob][photos] Add logs for debugging stuck at splash screen issue (#2099) 2024-06-12 16:46:10 +05:30
Prateek Sunal
b273ac3cf0 fix(auth): disable autocorrect and it's suggestions 2024-06-12 16:45:20 +05:30
Prateek Sunal
3d46b015e1 fix(auth): sort tags 2024-06-12 16:44:22 +05:30
Manav Rathi
523317eb71 Separate handling for web / app 2024-06-12 16:43:49 +05:30
ashilkn
4ce913cda6 Merge branch 'main' into discovery-3 2024-06-12 16:41:54 +05:30
ashilkn
7fdf52309a [mob][photos] Keep showing of magic examples on search tab behind feature flag 2024-06-12 16:40:39 +05:30
Neeraj Gupta
186981014e Fix typo 2024-06-12 16:40:12 +05:30
Manav Rathi
0bde1ab22d L11n keys 2024-06-12 16:35:55 +05:30
Prateek Sunal
b2f9c6ff6b [Auth] Bump flutter to 3.22 (#2108)
## Description

Black screen issue was caused by
https://github.com/leanflutter/window_manager/issues/460, till then I
have used a workaround from
https://github.com/leanflutter/window_manager/issues/460#issuecomment-2110180143.

Also update plugins.

## Tests
2024-06-12 16:34:51 +05:30
Manav Rathi
6aa810b500 [web] Redirect again button 2024-06-12 16:25:07 +05:30
Neeraj Gupta
cf4d407f39 Add API to get token data for given passkey session 2024-06-12 16:16:48 +05:30
ashilkn
ac05f085c1 [mob][photos] Get magic prompt data from remote 2024-06-12 16:14:09 +05:30
Neeraj Gupta
7e48953b6a Store token data on passkey auth 2024-06-12 15:56:54 +05:30
Manav Rathi
6f4bb6bf95 Update README 2024-06-12 15:37:38 +05:30
Neeraj Gupta
0666fc0ac2 [auth] Register url scheme for macos (#2107)
## Description

## Tests
2024-06-12 15:34:17 +05:30
Manav Rathi
6f304cb7a1 [docs] Add a note about AppImage desktop integration (#2110) 2024-06-12 15:15:30 +05:30
Manav Rathi
30c368d99f [docs] Add a note about AppImage desktop integration 2024-06-12 15:13:32 +05:30
Manav Rathi
adaa81f50c [photosd] Handle passkey deeplinks on Linux and Windows (#2109)
Tested on an Ubuntu 24 VM, with deb it works out of the box, with
AppImage I needed to install `appimaged` as recommended by
https://docs.appimage.org/user-guide/run-appimages.html#integrating-appimages-into-the-desktop.
2024-06-12 15:02:44 +05:30
Prateek Sunal
c8a5ca41a2 fix(workflow/auth): bump flutter versito 3.22 2024-06-12 14:59:09 +05:30
Prateek Sunal
dce84c4262 fix(auth): update for flutter 3.22 2024-06-12 14:57:39 +05:30
Manav Rathi
f529460eda Handle deeplinks on Linux 2024-06-12 14:33:07 +05:30
Neeraj Gupta
ae170acb30 Schema update to enable tokenData fetch for passkey session 2024-06-12 14:27:37 +05:30
Manav Rathi
bfca0730b2 Rearrange in reading order 2024-06-12 14:25:36 +05:30
Neeraj Gupta
c95260a228 Reduce account jwt token validity to 30mins 2024-06-12 14:13:52 +05:30
Prateek Sunal
da43e27688 fix(mobile): update locals for video editor 2024-06-12 14:05:11 +05:30
Neeraj Gupta
2e442c2152 Handle case when account is already logged in 2024-06-12 14:02:17 +05:30
Neeraj Gupta
d15d2437fb Minor refactor 2024-06-12 14:00:58 +05:30
Neeraj Gupta
860ca9852b Show dialog when passkey verification response is processed 2024-06-12 12:23:11 +05:30
Neeraj Gupta
eb8ce32acb Register enteauth url for macos 2024-06-12 12:22:41 +05:30
Prateek Sunal
05327bb028 fix(mobile): background of video editor on light theme 2024-06-12 12:00:20 +05:30
Manav Rathi
47a965f0a1 [web] Passkeys - Fix exhaustive-deps lints (#2106)
Refs: https://legacy.reactjs.org/docs/hooks-reference.html#usestate

> React guarantees that setState function identity is stable and won't
change on
rerenders. This is why it's safe to omit from the useEffect or
useCallback
  dependency list.
2024-06-12 11:31:41 +05:30
Manav Rathi
f7a500b811 [web] Fix exhaustive-deps lints
Refs: https://legacy.reactjs.org/docs/hooks-reference.html#usestate

> React guarantees that setState function identity is stable and won't change on
  rerenders. This is why it's safe to omit from the useEffect or useCallback
  dependency list.
2024-06-12 11:16:24 +05:30
Manav Rathi
0ce25916e6 [docs] Passkeys (#2105) 2024-06-12 10:47:09 +05:30
Manav Rathi
504bae5dd8 [docs] Passkeys 2024-06-12 10:45:25 +05:30
Manav Rathi
8bb748ae22 doc-add link to delete page (#2104) 2024-06-12 10:15:10 +05:30
Jay
e5bc7b218d doc-addlink 2024-06-12 10:12:38 +05:30
Manav Rathi
29ea968408 [docs] Mention yarn pretty (#2103) 2024-06-12 09:47:55 +05:30
Manav Rathi
07cd9be3f4 [docs] Mention yarn pretty 2024-06-12 09:46:45 +05:30
Prateek Sunal
946605554c fix(mobile): sync edited video properly 2024-06-11 23:23:08 +05:30
Prateek Sunal
2b00418695 fix(mobile): move all colors to theme data 2024-06-11 21:27:42 +05:30
Manav Rathi
1a43c0feb2 [web] Upgrade eslint ruleset for accounts app (#2102)
Only one workaround remains.
2024-06-11 21:24:30 +05:30
Manav Rathi
309d3321b9 Fix lint 2024-06-11 21:21:01 +05:30
Manav Rathi
25f2fc46a9 Fix 2024-06-11 20:59:47 +05:30
Manav Rathi
48fc966457 Fix 2024-06-11 20:52:43 +05:30
Manav Rathi
d2fd7dea97 Add an exception 2024-06-11 20:40:36 +05:30
Manav Rathi
a2e93489f2 Fix lints 2024-06-11 20:28:31 +05:30
Manav Rathi
5150dc00e1 Fix lint 2024-06-11 20:25:53 +05:30
Manav Rathi
68ebd1ef69 Fix more lints 2024-06-11 20:24:23 +05:30
Manav Rathi
1d1fa29239 Fix lint 2024-06-11 20:17:02 +05:30
ashilkn
04b3e0c7fb Merge branch 'main' into discovery-3 2024-06-11 18:06:14 +05:30
Neeraj Gupta
624a8bf6a9 [mobile] New translations (#2089)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-app)
2024-06-11 17:47:31 +05:30
Neeraj Gupta
2bebd2ead7 [auth] New translations (#2090)
New translations from
[Crowdin](https://crowdin.com/project/ente-authenticator-app)
2024-06-11 17:47:17 +05:30
Neeraj Gupta
e7deb0fb94 [mobile] Update passkeys URLs (#2101)
We now explicitly pass a recover URL to the accounts app, and I've added
some placeholder values. This URL will be opened when the user selects
the "Recover passkey" option on the authentication failure screen.
2024-06-11 17:46:47 +05:30
Manav Rathi
d37cb971aa [mobile] Update passkeys URLs
We now explicitly pass a recover URL to the accounts app, and I've added some
placeholder values. This URL will be opened when the user selects the "Recover
passkey" option on the authentication failure screen.
2024-06-11 17:00:00 +05:30
ashilkn
4470e039eb [mob][photos] Add more logs for debugging 2024-06-11 16:48:44 +05:30
ashilkn
564222b3f0 [mob][photos] Remove delay added for testing 2024-06-11 16:43:02 +05:30
Manav Rathi
2e1c5d7684 [web] Make the accounts pages stateless (#2100)
This allows user to copy paste the URLs if their passkeys are in a
different browser than the one which got opened when we asked the system
to open the browser (from the desktop / mobile apps).
2024-06-11 16:42:19 +05:30
Manav Rathi
b5e3bf8d4b Lint fix 2024-06-11 16:38:52 +05:30
Manav Rathi
fbff908c90 Remove unused header setting 2024-06-11 16:36:27 +05:30
ashilkn
3cb9b12f26 [mob][photos] Log heartbeats on app init for debugging 2024-06-11 16:34:26 +05:30
Manav Rathi
c4d5bc5aa7 Add a note 2024-06-11 16:31:25 +05:30
Manav Rathi
237fc3cdb1 Dear React, 2024-06-11 16:10:58 +05:30
Manav Rathi
96386e8f9e Clean 2024-06-11 16:04:02 +05:30
Manav Rathi
8df19efc1a Trim 2024-06-11 15:57:17 +05:30
Manav Rathi
a0f7c6f302 Pass token 2024-06-11 15:55:18 +05:30
ashilkn
fdef3dc439 [mob][photos] Add logs for debugging 2024-06-11 15:45:00 +05:30
Manav Rathi
3285ccdb3a Directly 2024-06-11 15:39:40 +05:30
Manav Rathi
a27da1de31 Towards a stateless accounts 2024-06-11 15:26:56 +05:30
Ashil
d6885d66c3 [mob][photos] Mention OS with subject of logs sent when app is stuck on lockscreen for more than 15 seconds. This will let us identify OS when logs are not attached (#2077)
Tested if this breaks logs from getting sent. Good to go.
2024-06-11 15:23:38 +05:30
Manav Rathi
15b2b05487 [desktop] Fix passkey recovery redirect (#2097) 2024-06-11 15:21:59 +05:30
Manav Rathi
03c4d42a03 [auth] Add icons: BitSkins, DMarket, Marketplace.tf & Skinport (#2055) 2024-06-11 15:19:22 +05:30
Manav Rathi
621d58ec0e Pass recovery URL explicitly instead of trying various string mainps 2024-06-11 15:13:58 +05:30
Manav Rathi
e51f9f1e08 Allow /passkeys/recover redirect 2024-06-11 14:46:53 +05:30
Vishnu Mohandas
3517050c23 Increase grace period of Stripe subscriptions to 14 days (#2096)
SEPA in certain instances is taking 10+ days to go through.
2024-06-11 14:28:29 +05:30
vishnukvmd
4561c8f85c Increase grace period of Stripe subscriptions to 14 days 2024-06-11 14:09:57 +05:30
Manav Rathi
48d0e250c6 [desktop] Handle passkey redirect (#2095)
Tested on macOS
2024-06-11 13:06:13 +05:30
Manav Rathi
632224b94c Ignore query params in comparison 2024-06-11 12:58:52 +05:30
Manav Rathi
8ecb88cbb4 Don't reload the app, use the router 2024-06-11 12:53:39 +05:30
Manav Rathi
330600543e window.location.origin will be in the correct place 2024-06-11 12:28:32 +05:30
Manav Rathi
4a9fe006d5 Forward 2024-06-11 12:20:29 +05:30
Ashil
e50ae02dbb [mob][photos] Modify the code to use XFile.fromData(bytes) instead of saving the image to a file for share link placeholder (#2073)
1. Modified the` _createPlaceholder` function to return the image bytes
instead of the image path, changed the return type to
`Future<Uint8List?>`
2. Remove the call to `saveImage` on saving the image to a temporary
directory
3. Modified the `shareImageAndUrl` function:
4. Replaced the usage of XFile(imagePath) with
XFile.fromData(imageBytes).
5. Added metadata to the `XFile.fromData` method call, specifying the
name and mimeType for better file identification during sharing.
2024-06-11 12:04:57 +05:30
Neeraj Gupta
bc7075f81a [cli] Fix: Retry on all 5xx errors (#2094)
## Description

## Tests
2024-06-11 11:59:14 +05:30
Manav Rathi
f8d2fda602 iso 2024-06-11 11:58:15 +05:30
Neeraj Gupta
896d7402b4 [cli] Bump version 2024-06-11 11:58:01 +05:30
Neeraj Gupta
55a16d053a [cli] Inc wait time for retry 2024-06-11 11:57:37 +05:30
Neeraj Gupta
9a1254b745 [cli] Log selected headers on download failure 2024-06-11 11:57:22 +05:30
Manav Rathi
afe5809cb2 Take 1 2024-06-11 11:51:17 +05:30
Neeraj Gupta
d6c4d5f87f [cli] Fix: retry download on 500 2024-06-11 11:37:17 +05:30
Manav Rathi
9de5f01727 Add protocol 2024-06-11 11:33:48 +05:30
Manav Rathi
4569ae01df Outline 2024-06-11 10:58:04 +05:30
Manav Rathi
896001100c [desktop][docs] Remove outdated desktop/rc branch name (#2093) 2024-06-11 10:42:07 +05:30
Manav Rathi
332c8d9695 [desktop][docs] Remove outdated desktop/rc branch name 2024-06-11 10:41:28 +05:30
Ashil
6df8a2204f Upgrade to flutter 3.22.2 (#2076) 2024-06-11 10:38:08 +05:30
Manav Rathi
4a16fa8701 [photosd] Fix automatic move to uncategorized on watch folder deletions (#2092)
This was a regression introduced in 1.7.0. On deleting a file on disk,
the corresponding items are supposed to move to uncategorized.

> And if a file is deleted locally, then the corresponding Ente file
will also be automatically moved to uncategorized.
>
> https://help.ente.io/photos/features/watch-folders
2024-06-11 10:14:54 +05:30
Manav Rathi
92dc6cacfa Add a CHANGELOG entry 2024-06-11 10:09:09 +05:30
Manav Rathi
b40419bcea [photosd] Fix automatic move to uncategorized on watch folder deletions
This was a regression introduced in 1.7.0. On deleting a file on disk, the
corresponding items are supposed to move to uncategorized.

> And if a file is deleted locally, then the corresponding Ente file will also
> be automatically moved to uncategorized.
>
> https://help.ente.io/photos/features/watch-folders
2024-06-11 09:54:25 +05:30
Manav Rathi
f84b2b5ad3 Update SECURITY.md (#2091)
Format using prettier (same config as used by docs/web etc).
2024-06-11 08:52:34 +05:30
Manav Rathi
2da32c3193 Update SECURITY.md 2024-06-11 08:51:09 +05:30
Manav Rathi
3011248017 Update SECURITY.md (#2086)
I made these changes:
- Corrected grammar and punctuation errors.
- Formatted headings, links, and lists properly using Markdown.
- Simplified wording for clarity.
2024-06-11 08:49:05 +05:30
Manav Rathi
54be100830 [web] New translations (#2088)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2024-06-11 08:47:46 +05:30
Crowdin Bot
c37b6e0441 New Crowdin translations by GitHub Action 2024-06-11 02:09:20 +00:00
Crowdin Bot
c113e09204 New Crowdin translations by GitHub Action 2024-06-11 01:59:36 +00:00
Crowdin Bot
19f93087db New Crowdin translations by GitHub Action 2024-06-11 01:43:38 +00:00
Prateek Sunal
3f736e82ae fix(mobile): dispose dialog correctly 2024-06-11 02:24:12 +05:30
Prateek Sunal
4f6e97eafd fix(mobile): create dialog at start of exporting video 2024-06-11 02:21:06 +05:30
Prateek Sunal
8c75a2324c fix(mobile): update light mode ui 2024-06-11 02:14:38 +05:30
Sooraj Sathyanarayanan
91a4b1143f Update SECURITY.md
I made these changes:
- Corrected grammar and punctuation errors.
- Formatted headings, links, and lists properly using Markdown.
- Simplified wording for clarity.
2024-06-10 15:55:06 -04:00
Prateek Sunal
79b37f16f5 [Auth] Update windows icon (#2067)
## Description

## Tests
2024-06-10 22:35:25 +05:30
Manav Rathi
e45792ad09 Passkeys: mobile and server changes (#2082)
Tests
- [x] Create passkey on localhost using web app
- [x] Verify passkey on localhost using web app
- [x] Test running on the default configuration.

The third test is pending on the library update which makes the RPID
optional.
2024-06-10 21:33:48 +05:30
Manav Rathi
00769bdd7a Use 2 min timeout, no need to override on the client 2024-06-10 21:26:38 +05:30
Manav Rathi
89f58236fc Use the default of yarn dev:accounts 2024-06-10 20:48:38 +05:30
Manav Rathi
eca48a4cc3 [server] Update go [1.20 -> 1.21] & passkey dependencies (#2084)
## Description

## Tests
2024-06-10 20:25:48 +05:30
Neeraj Gupta
a46c8a4579 [Auth] Updated Notesnook icon (#2064)
Replaced the old Notesnook icon with the new one.
2024-06-10 18:27:54 +05:30
Neeraj Gupta
fe324c3124 Add rpi id and origin for localhost 2024-06-10 18:25:44 +05:30
Neeraj Gupta
c0ac43b6c8 Upgrade webauthn + go from 1.20 -> 1.21 2024-06-10 18:25:18 +05:30
Manav Rathi
eb1f0a31a8 [staff] Fix lint (#2083) 2024-06-10 17:22:04 +05:30
Manav Rathi
ec67437273 [staff] Fix lint 2024-06-10 17:20:02 +05:30
Manav Rathi
c10bce3767 [staff] Remove .env.local and rename the env var to match main photos apps (#2078) 2024-06-10 17:19:35 +05:30
Manav Rathi
af60ae46c1 Fix qp name 2024-06-10 16:52:00 +05:30
Manav Rathi
d47287095d Document webauthn keys 2024-06-10 16:44:15 +05:30
Manav Rathi
b9d4f9ff10 /passkeys/registration/begin GET => POST 2024-06-10 16:35:10 +05:30
Manav Rathi
fc826e8acb Pass the X-Client-Package explicitly for the endpoint which needs it 2024-06-10 16:33:29 +05:30
Manav Rathi
f6377b98cb Update mobile URLs 2024-06-10 16:18:42 +05:30
Manav Rathi
6f487f0478 [web] More passkey fixes (#2080) 2024-06-10 16:04:31 +05:30
Aman Raj Singh Mourya
b8c6a67faa [mob][photos] remove null check from non-nullabe variables 2024-06-10 16:00:57 +05:30
Manav Rathi
27536676f1 Clean 2024-06-10 16:00:27 +05:30
Manav Rathi
0b4d479337 Move towards new ruleset 2024-06-10 15:58:17 +05:30
Manav Rathi
4893684cf1 Fix empty 2024-06-10 15:39:33 +05:30
Aman Raj Singh Mourya
e18c79c895 [mob][photos] removed unnecessary delay 2024-06-10 15:33:19 +05:30
Manav Rathi
a036d7c2b0 Fix 2024-06-10 15:28:31 +05:30
Manav Rathi
5c175c75df Fix recovery 2024-06-10 15:16:25 +05:30
Manav Rathi
389401adc9 Add TODO 2024-06-10 14:46:33 +05:30
Manav Rathi
ae4f1df76c Use the transport from the original credential 2024-06-10 14:42:20 +05:30
Manav Rathi
03d90515a4 [web] Use the preferred null coalescing operator for env override (#2079) 2024-06-10 14:37:01 +05:30
Manav Rathi
e23ac45fb3 [web] Use the preferred null coalescing operator for env override 2024-06-10 14:29:44 +05:30
Manav Rathi
f5a90abbaf [staff] Remove .env.local and rename the env var to match main photos apps 2024-06-10 14:12:23 +05:30
ashilkn
f9c6151482 Mention OS with subject of logs sent when app is stuck on lockscreen for more than 15 seconds. This will let us identify OS when logs are not attached 2024-06-10 11:59:22 +05:30
ashilkn
fb28b4ca28 [mob][photos] Bump up version to 0.8.135 2024-06-10 11:33:02 +05:30
ashilkn
a10f278d44 [mob][photos] Upgrade to flutter v3.22.2 to potentially fix the blank screen issue when resuming app from BG 2024-06-10 11:29:08 +05:30
Manav Rathi
99833e287c [web] Passkeys: Towards new casing for l11n keys (#2074) 2024-06-10 11:25:08 +05:30
Manav Rathi
1bf0676034 [web] Passkeys: Towards new casing for l11n keys 2024-06-10 11:19:37 +05:30
Aman Raj Singh Mourya
9c1ae27a21 [mob][photos] increased delay form 100ms to 200ms for widget to image 2024-06-10 11:05:47 +05:30
Manav Rathi
bd9dacfaa9 [web] New translations (#2072)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2024-06-10 11:05:30 +05:30
Crowdin Bot
951d797fce New Crowdin translations by GitHub Action 2024-06-10 05:33:44 +00:00
Manav Rathi
a30f9b9977 [web] Passkey improvements (#2071) 2024-06-10 11:03:10 +05:30
Manav Rathi
6a8cb8d149 Retain original transports 2024-06-10 10:54:33 +05:30
Manav Rathi
d814511dae Named params
Reduces accidental order of param errors
2024-06-10 10:42:18 +05:30
Manav Rathi
055cada5ed Show error when pk fetch fails 2024-06-10 10:16:44 +05:30
Manav Rathi
f40da137cd Use 2024-06-10 09:42:12 +05:30
Manav Rathi
d9e6379020 Better JSON urlencode 2024-06-10 09:34:29 +05:30
Manav Rathi
39396a520c Add some user visible strings to localization table 2024-06-10 09:20:30 +05:30
Prateek Sunal
37fa4ba7b6 fix(auth): update icon on windows 2024-06-09 22:47:05 +05:30
Manav Rathi
1c4684596a [web] Passkey changes (#2066) 2024-06-09 21:34:09 +05:30
Manav Rathi
1aea5a9cdd Minor tweaks 2024-06-09 21:27:02 +05:30
Manav Rathi
6c56ae1bd5 Catch errors during signChallenge 2024-06-09 20:58:04 +05:30
Manav Rathi
a2b7786ed4 Fix 2024-06-09 20:47:35 +05:30
Manav Rathi
6137dd923c Fix 2024-06-09 19:23:46 +05:30
Manav Rathi
c1aa8f3777 Fix 2024-06-09 19:21:16 +05:30
Manav Rathi
55fdf23188 Res type 2024-06-09 19:07:21 +05:30
Manav Rathi
9a6e553a53 Request casts 2024-06-09 18:49:01 +05:30
Manav Rathi
e1f36b8f8c Split 2024-06-09 18:15:14 +05:30
Manav Rathi
858f6c3a8d Cleanup 2024-06-09 17:54:25 +05:30
Brogio
e8ab08f3ca Delete auth/assets/custom-icons/icons/Notesnook.svg 2024-06-09 12:59:19 +02:00
Brogio
dff7a59801 Added Notesnook icon 2024-06-09 12:55:55 +02:00
Manav Rathi
2a26cc5afd Doc a bit 2024-06-09 11:22:19 +05:30
Manav Rathi
5adf10dcbb Shuffle 2024-06-09 10:59:56 +05:30
Manav Rathi
81e274babd Move to service layer 2024-06-08 22:10:27 +05:30
Manav Rathi
b6761bd5b2 Inline 2024-06-08 22:01:03 +05:30
Manav Rathi
b37e6cfa12 Generic error 2024-06-08 21:59:16 +05:30
Manav Rathi
6108a20036 Tinker 2024-06-08 21:22:45 +05:30
Manav Rathi
ef2039e681 [web] Improve the UI for the passkeys authentication flow (#2058) 2024-06-08 20:48:23 +05:30
Manav Rathi
ab4939b931 [docs] Add sharable URL configuration (#2048)
This PR adds a configuration option needed if you want sharable urls to
work
2024-06-08 20:47:14 +05:30
Manav Rathi
7b45d689db Remove alert 2024-06-08 20:36:53 +05:30
Manav Rathi
34d85df2ee Reuse 2024-06-08 20:29:13 +05:30
Manav Rathi
9e1553aeb6 Tweak style 2024-06-08 20:21:38 +05:30
Manav Rathi
ea0396954d Reuse 2024-06-08 20:19:09 +05:30
Aman Raj Singh Mourya
6bd307a2cd Optimize image upload by using XFile.fromData instead of saving to file 2024-06-08 14:09:00 +05:30
Manav Rathi
e85fb9df0e Style 2024-06-08 11:43:11 +05:30
Manav Rathi
baf9c02bc8 Paper 2024-06-08 11:39:23 +05:30
Manav Rathi
36596683f2 Style 2024-06-08 11:29:00 +05:30
Manav Rathi
01925952b2 Extract components 2024-06-08 10:38:45 +05:30
Manav Rathi
e8d5863c82 Rename 2024-06-08 09:10:54 +05:30
dunny1g
2b34cfc688 Optimized SVG icon for BitSkins 2024-06-08 02:24:41 +01:00
dunny1g
bb957685b3 Update custom-icons.json 2024-06-08 01:43:00 +01:00
dunny1g
445f8c4635 Add files via upload 2024-06-08 01:30:31 +01:00
dunny1g
f2bb1430fe Add files via upload 2024-06-08 00:35:14 +01:00
Prateek Sunal
eddb774b19 Merge remote-tracking branch 'origin' into mobile-videoeditor 2024-06-08 01:21:51 +05:30
Neeraj Gupta
7abfe633c6 [photos] Enable l10n for Russian, Turkish, & Portuguese(Brazilian) (#2051)
## Description

Ref: https://crowdin.com/project/ente-photos-app

## Tests
2024-06-07 17:45:27 +05:30
ashilkn
fabd6351d9 [mob][photos] SectionType.content -> SectionType.magic 2024-06-07 17:28:13 +05:30
Manav Rathi
2bd538624c [web] Cleanup passkeys manage page (#2049)
Tested on localhost
2024-06-07 16:34:13 +05:30
Manav Rathi
2dca9f1758 Lint fix 2024-06-07 16:31:30 +05:30
Manav Rathi
cbdca9851c Get 2024-06-07 16:28:56 +05:30
Manav Rathi
8a5c3a3262 Delete 2024-06-07 15:59:14 +05:30
Manav Rathi
076d62a22b Rearrange 2024-06-07 15:54:45 +05:30
Manav Rathi
56b1365747 Rename 2024-06-07 15:52:46 +05:30
Manav Rathi
9d2441d255 The other direction 2024-06-07 15:44:50 +05:30
Neeraj Gupta
ffde4c2bb8 [photos] Enable l10n for Russian, Turkish, & Portuguese(Brazilian) 2024-06-07 15:10:43 +05:30
Manav Rathi
06ee928aac Acknowledge that we're not taking care of excludedCredentials currently 2024-06-07 15:06:01 +05:30
Manav Rathi
a4799a2909 Ignore cancels 2024-06-07 14:55:54 +05:30
Manav Rathi
a0ca3f2c5a Begin 2024-06-07 14:32:13 +05:30
atyabbin
62297d1fe6 Dashboard improvement (#2015)
The dashboard now consists of 2 input fields: token and, email id, the token gets stored in the local storage when you enter it for the first time and if we reload, the input field automatically retrieves the values from the local storage. The host (http://localhost:8080) is passed through ENV variable to generate the URL: http://localhost:8080/admin/user?email=YOUR_EMAIL&token=YOUR_TOKEN and
fetch data from the API
2024-06-07 14:10:59 +05:30
Audun
f73a044cc9 Remove typo 2024-06-07 10:40:55 +02:00
Audun
26b8456dee Update information about sharable urls 2024-06-07 10:37:30 +02:00
Manav Rathi
b16bce7f04 Document what we're intending to do 2024-06-07 13:43:52 +05:30
Manav Rathi
a8834f5d7e Fix 2024-06-07 13:15:29 +05:30
Manav Rathi
b07841f972 Create a separate variant for accounts 2024-06-07 12:49:56 +05:30
Manav Rathi
e68a968255 Use fetch 2024-06-07 12:38:48 +05:30
Manav Rathi
9d670db89c Pass the package explicitly 2024-06-07 12:23:01 +05:30
Manav Rathi
0da1337921 Naming 2024-06-07 12:16:10 +05:30
Manav Rathi
1e8ec0e814 Set for accounts headers 2024-06-07 12:11:02 +05:30
Manav Rathi
242c669de4 XCP 2024-06-07 12:00:29 +05:30
Manav Rathi
dd6f36e037 Unnest 2024-06-07 11:34:08 +05:30
Manav Rathi
6d4e434a8d Rearrange 2024-06-07 11:29:01 +05:30
Neeraj Gupta
17025a24f4 [mobile] New translations (#2040)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-app)
2024-06-07 11:25:39 +05:30
Neeraj Gupta
849adb8a0b [photos] Hide Archived collections from on Ente section (#2045)
## Description

## Tests
2024-06-07 11:21:00 +05:30
Neeraj Gupta
4ca5f80241 [photos] Hide Archived collections from on Ente section 2024-06-07 11:20:27 +05:30
Manav Rathi
bde9903b1d [auth] Update download links (#2044) 2024-06-07 11:14:05 +05:30
Manav Rathi
c9bf449521 [auth] Update download links 2024-06-07 11:13:24 +05:30
Manav Rathi
332168af1a Update README.md (#2036)
## Description
Updated broken link (Ente Auth: Download for desktop).
2024-06-07 11:12:36 +05:30
Manav Rathi
73cebcdb54 [web] New translations (#2039)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2024-06-07 11:08:58 +05:30
Manav Rathi
33be371d85 [web] Passkey related changes on the photos web app (#2043) 2024-06-07 11:07:45 +05:30
Manav Rathi
897f3d074d Update the name 2024-06-07 11:06:23 +05:30
Manav Rathi
8f77318e88 Tweak 2024-06-07 11:04:16 +05:30
Manav Rathi
9660a1c32a Remove old deployment shortcuts 2024-06-07 10:59:45 +05:30
Manav Rathi
b43d626653 Tweak 2024-06-07 10:59:28 +05:30
Manav Rathi
964215bbc9 Rearrange 2024-06-07 10:53:44 +05:30
Manav Rathi
3a97f16435 Reuse 2024-06-07 10:33:01 +05:30
Manav Rathi
5297156229 Do the same as the totp 2fa flow 2024-06-07 10:32:34 +05:30
Manav Rathi
9bdf316683 Directly go to app home after passkey finish 2024-06-07 10:19:31 +05:30
Manav Rathi
2ba4177f8a Remove double redirect 2024-06-07 10:13:48 +05:30
Manav Rathi
7356522c6f Extract 2024-06-07 10:06:41 +05:30
Manav Rathi
cafead44d4 [web] Passkeys - Various code tweaks (#2042) 2024-06-07 09:38:46 +05:30
Manav Rathi
28ba02a2ef Fix 2024-06-07 09:32:20 +05:30
Manav Rathi
8854807f09 Log 2024-06-07 09:31:07 +05:30
Manav Rathi
cb01c6d5ce Clear state 2024-06-07 09:25:02 +05:30
Neeraj Gupta
772a9e38dd [auth] New translations (#2041)
New translations from
[Crowdin](https://crowdin.com/project/ente-authenticator-app)
2024-06-07 09:20:05 +05:30
Manav Rathi
3b2f72459d Refresh 2024-06-07 09:18:20 +05:30
Manav Rathi
645a7f32e1 Nested 2024-06-07 09:05:31 +05:30
Manav Rathi
2afc424f62 Fix 2024-06-07 08:57:05 +05:30
Crowdin Bot
20b23422e2 New Crowdin translations by GitHub Action 2024-06-07 02:10:24 +00:00
Crowdin Bot
06d6cd10ba New Crowdin translations by GitHub Action 2024-06-07 01:59:25 +00:00
Crowdin Bot
9cdd184ee1 New Crowdin translations by GitHub Action 2024-06-07 01:43:36 +00:00
Manav Rathi
c983c43ba1 Rename again 2024-06-06 21:32:10 +05:30
Manav Rathi
0e284752d1 Tweak 2024-06-06 21:21:31 +05:30
Manav Rathi
e9129473ed Edit 2024-06-06 21:13:02 +05:30
Akash A
a1fd652ce0 Update README.md
Updated broken link (Ente Auth: Download for desktop).
2024-06-06 20:26:31 +05:30
Manav Rathi
5494b2a20e Edit 2024-06-06 19:56:35 +05:30
ashilkn
637f3522a9 [mob][photos] Polish magic section UI 2024-06-06 19:16:20 +05:30
ashilkn
5dda37a192 [mob][photos] Use correct naming + remove unnecessary field 2024-06-06 18:10:50 +05:30
ashilkn
6b3c9ee19c [mob][photos] Surface magic section results in UI, using moments section's widget 2024-06-06 17:34:48 +05:30
Ashil
9634c1e291 [mob][photos] bump up to v0.8.134 (#2035)
## Description

## Tests
2024-06-06 17:16:27 +05:30
ashilkn
13bc758dde [mob][photos] bump up to v0.8.134 2024-06-06 17:13:36 +05:30
Vishnu Mohandas
7b299c5a42 Revert "[mob][photos] Fix BG task not getting killed" (#2034)
Reverts ente-io/ente#1608
2024-06-06 17:10:38 +05:30
Ashil
0969ded02a Revert "[mob][photos] Fix BG task not getting killed" 2024-06-06 17:09:29 +05:30
Vishnu Mohandas
655ed91980 [mob][photos] Bump up to v0.8.133 (#2033) 2024-06-06 16:52:34 +05:30
ashilkn
e398db0c10 [mob][photos] Bump up to v0.8.133 2024-06-06 16:48:57 +05:30
Manav Rathi
405e452eee Simplify 2024-06-06 16:45:43 +05:30
Manav Rathi
09d05b0d04 Inline 2024-06-06 16:28:35 +05:30
Manav Rathi
ca42feffe6 Resurrect 2024-06-06 16:25:35 +05:30
Manav Rathi
229f7cc676 Remove indirection and rename 2024-06-06 15:51:25 +05:30
atyabbin
6f1c52d548 Removed the code to retrieve the host from local storage 2024-06-06 15:42:29 +05:30
Manav Rathi
633e006b73 [web] Get passkeys working on localhost too (#2031) 2024-06-06 15:38:49 +05:30
Manav Rathi
144ebca203 Untab 2024-06-06 15:38:35 +05:30
Manav Rathi
7f08b31771 Fix 2024-06-06 15:29:05 +05:30
Neeraj Gupta
386e2846e7 [server] Prefer wasabi for downloading files via CLI (#2030)
## Description

## Tests
Tested locally.
Verified that the CLI client tried to download the file from pref Wasabi
bucket flow,while the web client downloaded the file from B2
2024-06-06 15:26:55 +05:30
Neeraj Gupta
3389acd42b Lint fix 2024-06-06 15:20:21 +05:30
atyabbin
57629f26c0 Using ENV variables to pass the host 2024-06-06 15:17:00 +05:30
Manav Rathi
aed516988f Inline 2024-06-06 15:04:59 +05:30
Manav Rathi
ba20fd4763 Document 2024-06-06 14:57:09 +05:30
Manav Rathi
0d3db76cb0 Remove unused styles 2024-06-06 14:44:25 +05:30
Neeraj Gupta
985659ea56 Prefer wasabi objects for CLI requets 2024-06-06 14:38:05 +05:30
Manav Rathi
54884a7dd2 Dev notes 2024-06-06 14:37:57 +05:30
Manav Rathi
a0393bc2b6 README 2024-06-06 14:31:24 +05:30
Manav Rathi
76c684b25e Notes from discussion 2024-06-06 14:15:28 +05:30
Manav Rathi
e96eeb2315 Allow localhost in development 2024-06-06 13:48:05 +05:30
Manav Rathi
4d2e4f0194 Fix 2024-06-06 12:41:50 +05:30
Manav Rathi
4bdca0f09f Add a smaller sample 2024-06-06 12:40:02 +05:30
Manav Rathi
c51edddb53 Clarify 2024-06-06 12:31:35 +05:30
Manav Rathi
71e908c3a2 Separate 2024-06-06 12:24:17 +05:30
Manav Rathi
836712c020 Ren 2024-06-06 12:19:19 +05:30
Manav Rathi
c035d5cafa Ren 2024-06-06 12:16:07 +05:30
Manav Rathi
d247cc6cad Reword template 2024-06-06 12:13:28 +05:30
Aman Raj Singh Mourya
8e54da8026 [mob][photos] share with placeholder and changed share link button (#1969) 2024-06-06 11:44:43 +05:30
ashilkn
a3ebd4c062 [mob][photos] Make score threshold configurable 2024-06-06 11:32:33 +05:30
ashilkn
3d3588e64e Merge branch 'main' into rediscovery-3 2024-06-06 10:59:59 +05:30
Manav Rathi
d5eb850503 [docs] Add auth's migration-from-other guide to sidebar (#2029)
And a few minor tweaks.

Ref: https://github.com/ente-io/ente/pull/2022
2024-06-06 10:51:09 +05:30
Manav Rathi
07a137ea74 [docs] Add auth's migration-from-other guide to sidebar
And a few minor tweaks.

Ref: https://github.com/ente-io/ente/pull/2022
2024-06-06 10:48:26 +05:30
Ashil
5f9a466178 Add more startup logs (#2028)
## Description

## Tests
2024-06-06 10:45:02 +05:30
Neeraj Gupta
725478b0da Add more startup logs 2024-06-06 10:42:29 +05:30
Manav Rathi
ab893bc274 Created instructions to import from most providers (#2022)
## Description
Added detail to docs on what's able to be imported via the app

Give me a shout if anything needs updating!
2024-06-06 10:40:43 +05:30
Ashil
ee30dc3e91 [photos][mob] Enhance quick links section UI/UX (#2019)
## Description




https://github.com/ente-io/ente/assets/77285023/5656205b-e0c6-484b-a20b-24ed5294fd18
2024-06-06 10:00:49 +05:30
Neeraj Gupta
08340b124b [cli] Update README (#2026)
## Description

## Tests
2024-06-06 08:56:40 +05:30
Neeraj Gupta
f4d44e484d [cli] Update README 2024-06-06 08:51:12 +05:30
Tom
015f761866 Created instructions to import from most providers 2024-06-05 19:16:57 +01:00
Manav Rathi
d7926e05bb [web] Use our standard crypto layer in accounts app (#2021) 2024-06-05 20:28:11 +05:30
Manav Rathi
2d621b9879 Add TODOs 2024-06-05 20:17:14 +05:30
Manav Rathi
19e1bd51c8 Use our layer in cast 2024-06-05 19:59:15 +05:30
Manav Rathi
afc4a007db Use 2024-06-05 19:51:50 +05:30
Manav Rathi
02e8923e77 Use 2024-06-05 19:48:01 +05:30
Manav Rathi
485614166d The other way 2024-06-05 19:43:39 +05:30
Manav Rathi
b49e829cc5 New variant 2024-06-05 19:30:48 +05:30
Manav Rathi
d3ddf92849 Namespace in prep for a new method for unpadded 2024-06-05 19:28:38 +05:30
Manav Rathi
3e09fda76c [web] New translations (#2017)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2024-06-05 17:12:14 +05:30
ashilkn
0e028fa9d1 [photos][mob] Imporve UI/UX of quick link by only showing max 6 in shared tab + expand all in a different screen 2024-06-05 16:36:22 +05:30
Crowdin Bot
263f207995 New Crowdin translations by GitHub Action 2024-06-05 10:09:14 +00:00
Manav Rathi
85bfa826b2 [web] Surface level cleanup of the accounts app (#2016) 2024-06-05 15:38:30 +05:30
Manav Rathi
2a0a7675a3 README 2024-06-05 15:33:41 +05:30
ashilkn
9fef6ae662 [mob][photos] Redesign QuickLinkAlbumItem 2024-06-05 15:05:52 +05:30
Manav Rathi
b602e68c5b Same 2024-06-05 15:04:28 +05:30
Manav Rathi
7a2168a7b7 Ren 2024-06-05 15:03:27 +05:30
Manav Rathi
9ee4ab4cc0 type 2024-06-05 15:00:08 +05:30
Manav Rathi
b987f80ee5 Only pages in pages 2024-06-05 14:55:05 +05:30
Manav Rathi
ecaba3fb78 R 2024-06-05 14:47:04 +05:30
Manav Rathi
c83172f552 Rename and case 2024-06-05 14:46:39 +05:30
Manav Rathi
1ff6a53131 type 2024-06-05 14:38:16 +05:30
Manav Rathi
b0ce1c971b Remu 2024-06-05 14:26:25 +05:30
Manav Rathi
33fc86cff7 Inline 2024-06-05 14:25:10 +05:30
atyabbin
674907cd2a Added the required lint formatting and email input field 2024-06-05 14:18:19 +05:30
Manav Rathi
50b032654c Prune 2024-06-05 14:16:27 +05:30
Manav Rathi
62c413959e Mig 2024-06-05 14:15:47 +05:30
Manav Rathi
1d182d4ed6 Rem 2024-06-05 14:13:20 +05:30
Manav Rathi
6c4d2e8a9e Fin 2024-06-05 14:03:00 +05:30
Manav Rathi
7b3a66a117 Fix 2024-06-05 14:00:39 +05:30
Manav Rathi
0f5f488fc7 Prune 2024-06-05 13:58:17 +05:30
Ashil
26a0796efe [mob][photos] Fix: sharing to outside ente doesn't work on iPad (#2014) 2024-06-05 13:51:56 +05:30
Manav Rathi
a65ebacfbd Fix 2024-06-05 13:51:12 +05:30
Manav Rathi
2213b7c39f Prune 2024-06-05 13:47:03 +05:30
ashilkn
78ce353069 Merge branch 'send_link_button_change' into fix_broken_share_ipad 2024-06-05 13:46:52 +05:30
ashilkn
b62e5a5f82 Merge branch 'main' into send_link_button_change 2024-06-05 13:45:57 +05:30
Manav Rathi
bad51eaab0 Prune 2024-06-05 13:42:46 +05:30
Manav Rathi
c1134c9b0c Disentangle 2024-06-05 13:41:03 +05:30
Manav Rathi
e65ea1a8c5 Remove unused 2024-06-05 13:30:57 +05:30
Manav Rathi
af8c9a686e Fix 2024-06-05 13:28:43 +05:30
Manav Rathi
29cd3a69d0 Fix 2024-06-05 13:26:37 +05:30
Manav Rathi
88d51c3746 Add to tr 2024-06-05 13:24:31 +05:30
Manav Rathi
0dcec4cb9d Similar 2024-06-05 13:20:14 +05:30
Manav Rathi
608a4e00bb Be consistent with the current name 2024-06-05 12:59:57 +05:30
ashilkn
419a4a78cf [mob][photos] Fix share outside of ente not working at multiple places on iPad
For the ios share sheet to be shown properly on iPad, the position of the button that triggered it needs to be known, which requires BuildContext and GlobalKey of the button, which is difficult to pass from some parts of code. So to make it work, we pass a default point on the screen so that the share sheet at least shows up
2024-06-05 12:54:53 +05:30
Manav Rathi
7281827981 Tinker 2024-06-05 12:40:24 +05:30
Manav Rathi
ade74be871 Prune
We don't use next/image
2024-06-05 12:32:41 +05:30
Neeraj Gupta
017cb7eb96 [photos] Bump version to 0.8.133+653 2024-06-05 12:30:50 +05:30
Neeraj Gupta
bf36f415db Enable video editor for internal users 2024-06-05 12:30:11 +05:30
Manav Rathi
5c9990e0a6 Remove template assets 2024-06-05 12:29:35 +05:30
Neeraj Gupta
24ea4374cf Merge branch 'main' into mobile-videoeditor 2024-06-05 12:28:50 +05:30
ashilkn
79838bd49d [mob][photos] fix shareText not working (regression) 2024-06-05 11:46:51 +05:30
Manav Rathi
35a290f221 [desktop] [WIP] What's New (#2013)
This does nothing currently, this is the WIP ability to show what's new
dialog on desktop app updates. The UI is done, need to hook this up to
logic to trigger it.
2024-06-05 11:41:43 +05:30
Manav Rathi
4d3674f6a5 Disable 2024-06-05 11:38:13 +05:30
Manav Rathi
068c01a4d4 Cleanp 2024-06-05 11:36:54 +05:30
Manav Rathi
13584c6137 The open prop is necessary to get the animation to work 2024-06-05 11:36:54 +05:30
Manav Rathi
d68da33bb4 Tweak visual positioning 2024-06-05 11:36:53 +05:30
Manav Rathi
7d9a28a394 Limit size 2024-06-05 11:36:53 +05:30
Manav Rathi
010b6e873d Text 2024-06-05 11:36:53 +05:30
Manav Rathi
13665d9ff4 Comment 2024-06-05 11:36:53 +05:30
Manav Rathi
7999c6432c Focus visible 2024-06-05 11:36:53 +05:30
Manav Rathi
b96a8ed59e Buttons 2024-06-05 11:36:53 +05:30
Manav Rathi
df3a37b55e hier 2024-06-05 11:36:53 +05:30
Manav Rathi
c04e6a2eae Move 2024-06-05 11:36:53 +05:30
Manav Rathi
e29908f8b3 Inline 2024-06-05 11:36:53 +05:30
Manav Rathi
d0640a094b Tinker 2024-06-05 11:36:53 +05:30
Manav Rathi
82fbbd427e Scaffold 2024-06-05 11:35:54 +05:30
Manav Rathi
69b1602f9c scaffold 2024-06-05 11:35:54 +05:30
Manav Rathi
a90275f491 [docs] Self hosting public albums (#2012)
More improvements suggested by Dylanger in Discord
2024-06-05 11:31:10 +05:30
Manav Rathi
1b6995fc78 [docs] Self hosting public albums
More improvements suggested by Dylanger in Discord
2024-06-05 11:28:25 +05:30
ashilkn
5723654ee0 [mob][photos] Fix send link not working on iPad 2024-06-05 11:19:10 +05:30
Manav Rathi
120642850e [web] Enable TypeScript's strict mode on the accounts app and package (#2011) 2024-06-05 11:13:10 +05:30
Manav Rathi
551f4a848e Fix 2024-06-05 11:09:34 +05:30
Manav Rathi
cfbba44bc1 lint-fix 2024-06-05 11:07:02 +05:30
Manav Rathi
e490487788 Fix 2024-06-05 11:03:20 +05:30
Neeraj Gupta
93bcb279ef [auth] Fix handling of no username during bitwarden import (#2010)
## Description

## Tests
2024-06-05 10:35:29 +05:30
Neeraj Gupta
598be87e61 [auth] Bump version 3.0.8 2024-06-05 10:27:22 +05:30
Neeraj Gupta
bd86951d12 Add icons: DirectAdmin, Hivelocity, Registro.br (#2009) 2024-06-05 10:15:03 +05:30
Victor Benincasa
d6f4eb69d1 Add icons: DirectAdmin, Hivelocity, Registro.br 2024-06-05 01:37:42 -03:00
Neeraj Gupta
11304d9093 Fix: Handle null account name during bitwarden import 2024-06-05 10:01:11 +05:30
Victor Benincasa
2eb7d4639a Add icons: DirectAdmin, Hivelocity, Registro.br 2024-06-05 01:29:37 -03:00
Neeraj Gupta
4e45867994 [photos] Bump version 0.8.132+652 (#2008)
## Description

## Tests
2024-06-05 09:13:49 +05:30
Neeraj Gupta
9d156daf3a [photos] Bump version 0.8.132+652 2024-06-05 09:13:31 +05:30
Neeraj Gupta
129fd98fcc [mobile] New translations (#2007)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-app)
2024-06-05 08:47:51 +05:30
Crowdin Bot
c94bc25811 New Crowdin translations by GitHub Action 2024-06-05 03:15:56 +00:00
Neeraj Gupta
f06b7a4b71 [mob][gallery] Refactor grouping to enable week/month/year wise groups (#1610)
## Description
I haven't added any UI hook to change this GroupType. Tested it locally
to verify that the functionality work as expected.

## Tests
Tested locally
2024-06-05 08:45:14 +05:30
Neeraj Gupta
a65e2333ae Thumbnail duration (#2001)
## Description

Puts a bottom right overlay on video thumbnails, displaying the duration
of the video.
2024-06-05 08:44:58 +05:30
Neeraj Gupta
9dac3bf51b [mob] Group by size (#1886)
## Description

## Tests
2024-06-05 08:42:02 +05:30
atyabbin
0c29e408f9 dashboard 2024-06-05 01:17:41 +05:30
Manav Rathi
2a7f2ac292 one remains 2024-06-04 22:09:33 +05:30
Manav Rathi
fe6492009b Fix 2024-06-04 22:02:53 +05:30
Manav Rathi
447fa5afad Fix 2024-06-04 22:00:01 +05:30
Manav Rathi
0a7af5b26d Fix 2024-06-04 21:57:14 +05:30
Manav Rathi
6a0126926d Fix 2024-06-04 21:26:04 +05:30
Manav Rathi
d14c7cf4c9 Fix 2024-06-04 21:12:09 +05:30
Manav Rathi
834660bee4 Fix 2024-06-04 21:10:12 +05:30
Manav Rathi
47e2c1bbc7 Fix 2024-06-04 21:06:09 +05:30
Manav Rathi
48a03ae0b0 Dedup 2024-06-04 20:56:32 +05:30
Manav Rathi
3734a50713 fix 2024-06-04 20:41:17 +05:30
Manav Rathi
5b6a1198b1 Move 2024-06-04 20:38:08 +05:30
Manav Rathi
c69fe2a979 Fix 2024-06-04 20:30:35 +05:30
Manav Rathi
d582f79f42 new tsc 2024-06-04 20:09:52 +05:30
laurenspriem
85449fad70 [mob][photos] Horizontal padding 2024-06-04 19:51:31 +05:30
Manav Rathi
5c35fe785c new tsc 2024-06-04 19:47:44 +05:30
laurenspriem
1af5008ed8 [mob][photos] Always use video overlay 2024-06-04 18:48:59 +05:30
laurenspriem
8841ef9dc1 Merge branch 'face_cooldown' into thumbnail_duration 2024-06-04 18:33:32 +05:30
laurenspriem
b56a093052 Merge branch 'main' into thumbnail_duration 2024-06-04 18:33:23 +05:30
Laurens Priem
75dee19c62 Face cooldown (#2000)
## Description

- User interaction pause in iOS
- Face indexing cooldown
- Pause indexing instantly
- Increase file download limit

## Tests

Tested in debug mode on my pixel phone.
2024-06-04 18:33:22 +05:30
laurenspriem
465760e329 [mob][photos] Increase file download limit to 10 2024-06-04 18:11:54 +05:30
laurenspriem
04048b20fe [mob][photos] Make sure indexing is paused instantly 2024-06-04 18:11:15 +05:30
laurenspriem
6743aa3db4 [mob][photos] Cooldown in indexing to prevent OS killing app 2024-06-04 17:53:25 +05:30
Neeraj Gupta
e3bbd7f536 Remove shared files from large files list 2024-06-04 17:43:14 +05:30
Neeraj Gupta
e5a71da00a Revert "Rename Backed up folder -> Automatic backups'"
This reverts commit 0f99fa2ba7.
2024-06-04 17:40:12 +05:30
Neeraj Gupta
f47fc2c27c Add view large file option 2024-06-04 17:40:08 +05:30
laurenspriem
a24d8f94d3 [mob][photos] Wait on interaction in iOS 2024-06-04 17:02:45 +05:30
Neeraj Gupta
f8b933a08f Add descriptions to sections 2024-06-04 16:59:14 +05:30
Neeraj Gupta
943dceb993 Move free up space options into separate page 2024-06-04 16:44:58 +05:30
Neeraj Gupta
0f99fa2ba7 Rename Backed up folder -> Automatic backups' 2024-06-04 16:33:00 +05:30
Neeraj Gupta
8a81c0e66c generated strings 2024-06-04 16:10:09 +05:30
Manav Rathi
9faa75e7aa [web] New translations (#1997)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2024-06-04 15:41:23 +05:30
Crowdin Bot
1e420fce74 New Crowdin translations by GitHub Action 2024-06-04 10:08:32 +00:00
Manav Rathi
04a41e278d [web] Localized string fixes (#1996)
- Add missing string
- Rename
- Reuse
2024-06-04 15:37:39 +05:30
Manav Rathi
3735c0ba4f Rename 2024-06-04 15:34:57 +05:30
Manav Rathi
e49a7abe6d rename and reuse 2024-06-04 15:32:47 +05:30
Manav Rathi
a9c368fa0c Rename 2024-06-04 15:28:25 +05:30
Manav Rathi
1fcb26453a Add missing string 2024-06-04 15:25:47 +05:30
Manav Rathi
d863797f34 [web] Improve self hosted file fetch security (#1994) 2024-06-04 14:52:29 +05:30
Manav Rathi
13c64e0cce publ albums 2024-06-04 14:46:50 +05:30
Manav Rathi
21d3d55bf5 cast 2024-06-04 14:27:02 +05:30
Manav Rathi
895ab1764e Thumbs 2024-06-04 14:09:47 +05:30
Manav Rathi
d44b951f0d Retain older behaviour for default fetches 2024-06-04 13:58:07 +05:30
Manav Rathi
515c28530e Thumb 2024-06-04 13:40:49 +05:30
Manav Rathi
9edbdfdd49 File URL 2024-06-04 13:39:08 +05:30
Manav Rathi
efcf36ea4e files origin 2024-06-04 13:32:35 +05:30
Manav Rathi
471df817ac Thumbs 2024-06-04 13:28:03 +05:30
Manav Rathi
dcc599d856 Use for file 2024-06-04 13:22:34 +05:30
Ashil
f2283edb79 [mob][photos] Bump up version + use latest flutter version (v3.22.1) (#1993) 2024-06-04 13:07:17 +05:30
Manav Rathi
89b703498c [web] Pass the auth token as a query param when fetching files 2024-06-04 12:58:21 +05:30
Neeraj Gupta
72f4ebfe42 Merge branch 'generic_group_by' into group_by_size 2024-06-04 12:45:32 +05:30
Neeraj Gupta
f876ba627e Merge branch 'main' into generic_group_by 2024-06-04 12:44:00 +05:30
Neeraj Gupta
358761f267 [auth] Fix existing steam entry handling (#1992)
## Description
Fixes #1980 #1982 
## Tests
2024-06-04 12:35:23 +05:30
Neeraj Gupta
efcf304194 Merge remote-tracking branch 'origin/main' into fix_hide_for_steam 2024-06-04 12:33:13 +05:30
Manav Rathi
d839be5a76 [desktop] Revert to 1.6.63 Linux icon behaviour (#1991)
Ref: https://github.com/ente-io/ente/issues/1909

The code I deleted was an experiment which was not working anyway
(tested on Ubuntu 22 and 24).
2024-06-04 12:31:30 +05:30
Neeraj Gupta
6808bdb9e3 [auth] Downgrade to flutter v3.19.3 (#1990)
This reverts commit b753c47e01.

## Description

## Tests
2024-06-04 12:30:42 +05:30
Manav Rathi
e4bc206d6a [desktop] Revert to 1.6.63 Linux icon behaviour
https://github.com/ente-io/ente/issues/1909
2024-06-04 12:30:05 +05:30
Neeraj Gupta
2d9b95f950 [auth] Bump version v3.0.7 2024-06-04 12:30:02 +05:30
Neeraj Gupta
9a921c314a Handle steam code generation 2024-06-04 12:29:34 +05:30
Neeraj Gupta
0b626fc781 Update icon 2024-06-04 12:29:23 +05:30
Manav Rathi
feeebea75b [docs] Add a delete account FAQ (#1989) 2024-06-04 12:13:41 +05:30
Manav Rathi
e8dcd3d742 [docs] Add a delete account FAQ 2024-06-04 12:12:31 +05:30
ashilkn
3d0a810f26 [mob][photos] Upgrade share_plus 2024-06-04 12:11:04 +05:30
Neeraj Gupta
1a10e2da4f Revert "Update flutter version"
This reverts commit b753c47e01.
2024-06-04 11:58:19 +05:30
Neeraj Gupta
6aabeb3e7e [mobile] New translations (#1983)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-app)
2024-06-04 11:57:53 +05:30
Neeraj Gupta
8be2746d65 [auth] Add GMX, Real-Debrid & Surfshark icons (#1963)
## Description
This PR adds custom icons for GMX, Real-Debrid and Surfshark. Also
sorted the JSON on alphabetical order again.
2024-06-04 11:53:02 +05:30
Neeraj Gupta
9151821f05 [auth] New translations (#1984)
New translations from
[Crowdin](https://crowdin.com/project/ente-authenticator-app)
2024-06-04 11:51:48 +05:30
Neeraj Gupta
1ab9c31a51 [auth] Add new custom icons in auth (#1981)
Added new icons that were not appearing in the app

- ConfigCat
- Mercado Livre
- SendGrid
- Habbo
- Local

Added new icon

- WorkOS
Updated some altNames

Fix: Issue #1627
2024-06-04 11:46:28 +05:30
Laurens Priem
ac3f9f7ea1 Face improvements (#1988)
## Description

- Minimum cluster size of 10
- Suggestions instant undo button
- Sort names alphabetically in naming sheet
- Remove ripple effect in suggestions
- Don't pause ML in ML settings page (unless device is unhealthy)

## Tests

Tested in debug mode on my pixel phone.
2024-06-04 11:42:39 +05:30
laurenspriem
4133764cb0 [mob][photos] Don't pause ML when in ML settings page 2024-06-04 11:33:13 +05:30
Manav Rathi
8f773be4b6 [docs] Add an example working Dockerfile for public albums (#1986)
Credits: Dylanger in #self-hosting on our community Discord

(https://discord.com/channels/948937918347608085/1215252276911018014/1247207784806613123)
2024-06-04 10:13:12 +05:30
Manav Rathi
aa25174fbe [docs] Add an example working Dockerfile for public albums
Credits: Dylanger in #self-hosting on our community Discord
(https://discord.com/channels/948937918347608085/1215252276911018014/1247207784806613123)
2024-06-04 10:11:15 +05:30
Crowdin Bot
1d825f2f89 New Crowdin translations by GitHub Action 2024-06-04 02:08:05 +00:00
Crowdin Bot
d9f33379f2 New Crowdin translations by GitHub Action 2024-06-04 01:58:50 +00:00
ialexanderbrito
31a63447d6 feat: add new icons svg 2024-06-03 16:21:00 -03:00
laurenspriem
9db9a18e3e [mob][photos] Forgot 2024-06-03 20:36:27 +05:30
laurenspriem
e61d9886dc [mob][photos] Fix translation for available space 2024-06-03 20:36:08 +05:30
laurenspriem
11d9529496 [mob][photos] Get rid of ripple effect 2024-06-03 20:30:21 +05:30
laurenspriem
9916032e23 [mob][photos] Sort persons alphabetically in naming sheet 2024-06-03 20:16:20 +05:30
laurenspriem
22d468836c [mob][photos] suggestions undo button 2024-06-03 20:12:06 +05:30
ashilkn
8b44165b77 [mob][photos] Fix shadows in send link icon 2024-06-03 18:35:58 +05:30
ashilkn
482239ce8d [mob][photos] Change names and copy 2024-06-03 18:04:58 +05:30
ashilkn
ee602e63d2 [mob][photos] Show loading dialog after clicking on send link till the native share sheet comes up 2024-06-03 17:58:45 +05:30
ashilkn
5367e90ecf [mob][photos] Stop showing redundant toast 2024-06-03 17:49:37 +05:30
ashilkn
7204d3471f [mob][photos] Do not show fav icon on placeholder elements 2024-06-03 16:36:22 +05:30
ashilkn
f7e24287ba [mob][photos] Tweak stroke of elements in placeholder to match figma design 2024-06-03 16:30:50 +05:30
Manav Rathi
810fd2a51a [desktop] Add a default window size (#1977) 2024-06-03 16:26:07 +05:30
Manav Rathi
0784dc926b Update doc 2024-06-03 16:24:27 +05:30
Manav Rathi
ee5448b5c6 [desktop] Add a default window size 2024-06-03 16:22:24 +05:30
ashilkn
8367e4d4e1 [mob][photos] Fix UI of element depicting extra photos in placeholder shared with link 2024-06-03 16:22:22 +05:30
ashilkn
7ee9d8efdd [mob][photos] Upgrade dependency to work with flutter 3.22.x 2024-06-03 15:41:57 +05:30
Ashil
88e8f997ef [mob][photos] bump up to v0.8.130 (#1974)
## Description

Bumping up version for internal release.
2024-06-03 15:39:12 +05:30
ashilkn
4f2dd7ccdf Merge branch 'main' into send_link_button_change 2024-06-03 15:21:59 +05:30
Manav Rathi
b22733692a [staff] Don't need submodules (#1975) 2024-06-03 15:17:50 +05:30
Manav Rathi
8b83975edf Rename 2024-06-03 15:17:29 +05:30
Manav Rathi
a63a6fc1c2 Separate the actions 2024-06-03 15:16:56 +05:30
Manav Rathi
08a60d827f [staff] Don't need submodules 2024-06-03 15:13:56 +05:30
Manav Rathi
c9340ed383 [infra] Move staff to infra (#1973) 2024-06-03 15:12:36 +05:30
Manav Rathi
ea476b9c96 lf 2024-06-03 15:10:08 +05:30
Manav Rathi
c8c19972d9 lint on PR 2024-06-03 15:09:16 +05:30
Manav Rathi
ac32a33358 lf 2024-06-03 15:06:23 +05:30
Manav Rathi
6b6a81b6a8 Need yarn.lock for caching 2024-06-03 15:05:58 +05:30
Manav Rathi
16272dc7b0 README 2024-06-03 15:05:58 +05:30
Manav Rathi
9a47135209 gi yarn.lock 2024-06-03 15:05:58 +05:30
Manav Rathi
c91b0e4d3e lint 2024-06-03 15:05:58 +05:30
Manav Rathi
ff29bda5ac gitig 2024-06-03 15:05:58 +05:30
Manav Rathi
78b82e774d tsconfig 2024-06-03 15:05:58 +05:30
Manav Rathi
2d8b16ca99 Move files 2024-06-03 15:05:54 +05:30
Neeraj Gupta
493153dce1 [AegisImport] Fix Steam code import & parse groups and fav flag (#1972)
## Description

## Tests
Tested locally
2024-06-03 15:03:33 +05:30
Neeraj Gupta
d6b6e691c4 [auth] Bump version 3.0.6+306 2024-06-03 15:01:51 +05:30
Neeraj Gupta
6a266d86a6 [Aegis Import] Import fav as pinned entry 2024-06-03 14:59:23 +05:30
Neeraj Gupta
187dc0e280 [Aegis Import]Import group as tags 2024-06-03 14:58:38 +05:30
laurenspriem
08c8e11924 [mob][photos] Copy change 2024-06-03 14:56:50 +05:30
laurenspriem
dd7d082ca3 [mob][photos] Set minimum cluster size to 10 2024-06-03 14:54:49 +05:30
Neeraj Gupta
6aeb69bdde [Aegis Import] Enable steam import 2024-06-03 14:54:38 +05:30
Neeraj Gupta
81c2a5c94b [Bitwarden Import] Fix steam import & add folder as tag (#1970)
## Description
Also added additional logs on import failure

## Tests
Tested locally
2024-06-03 14:43:09 +05:30
Neeraj Gupta
7cd998ba3e [auth] Add bitwarden folder as tag 2024-06-03 14:30:27 +05:30
Neeraj Gupta
ad0069087f [auth] Support for importing auth code from steam 2024-06-03 14:19:30 +05:30
Neeraj Gupta
741018b802 Merge branch 'main' into steam_import_fix 2024-06-03 14:15:51 +05:30
Neeraj Gupta
b753c47e01 Update flutter version 2024-06-03 13:26:03 +05:30
Aman Raj Singh Mourya
0d99d3e037 [mob][photos] removed commented code 2024-06-03 13:20:05 +05:30
Aman Raj Singh Mourya
39d50d24f0 [mob][photos] send link button changed 2024-06-03 13:15:09 +05:30
Aman Raj Singh Mourya
ebf83b7bba [mob][photos] merge placeholder_for_link2 2024-06-03 12:15:43 +05:30
Neeraj Gupta
555f987511 [auth] Surface more information about importError on UI (#1954)
## Description
Surfacing error information on UI. 
This is to reduce the to and fro between customer and support as error
logging isn't enabled by default. Also, added missing logs at certain
places.
## Tests
2024-06-03 11:37:00 +05:30
Neeraj Gupta
122a84c818 [auth] Handle steam import from bitwarden 2024-06-03 11:09:41 +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
Sven
ae6e17c200 Add GMX, Real-Debrid & Surfshark 2024-06-02 11:21:06 +02:00
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
laurenspriem
1fdbf4f5f5 [mob][photos] Correct dynamic size of duration 2024-06-01 17:27:49 +05:30
Vishnu Mohandas
87f53177c0 Update index.md 2024-06-01 15:27:23 +05:30
ashilkn
33656c8206 [mob][photos] perf improvement when computing score on magic search 2024-06-01 13:12:29 +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
ebc3f53fe3 Auth Bump version: 3.0.5+305 2024-06-01 11:32:51 +05:30
Neeraj Gupta
1f33df7147 [auth] Surface more information about importError on UI 2024-06-01 11:31:31 +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
laurenspriem
354762eb72 Merge branch 'main' into thumbnail_duration 2024-05-31 18:27:58 +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
laurenspriem
054dd58435 Merge branch 'main' into thumbnail_duration 2024-05-31 15:30:33 +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
laurenspriem
ce7451dbb4 Merge remote-tracking branch 'origin/main' into thumbnail_duration 2024-05-31 13:59:43 +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
laurenspriem
e99da59699 Merge remote-tracking branch 'origin/main' into thumbnail_duration 2024-05-30 23:08:02 +05:30
laurenspriem
6635f4c9a4 [mob][photos] Play icon fallback for duration 2024-05-30 22:59:41 +05:30
Prateek Sunal
5448ca116c fix(mobile): update video editor trimmer color 2024-05-30 22:40:48 +05:30
Prateek Sunal
bfa652df36 feat(mobile): add all pages for video editor 2024-05-30 22:38:05 +05:30
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
laurenspriem
f71dd32400 [mob][photos] Add dark transparent background 2024-05-30 20:36:01 +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
Aman Raj Singh Mourya
3c5ba5b94e [mob][photos] changed variable and function name 2024-05-30 19:18:00 +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
laurenspriem
5a76df7f62 [mob][photos] Also show duration for less than 10 second videos 2024-05-30 17:30:10 +05:30
laurenspriem
12d9bc7bce Merge remote-tracking branch 'origin/main' into thumbnail_duration 2024-05-30 17:08:15 +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
Aman Raj Singh Mourya
5099dfdd74 [mob][photos] added delete function for placeholder image 2024-05-30 14:03:40 +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
Aman Raj Singh Mourya
7f816e80a2 [mob][photos] share placeholder with link when sharing 2nd draft 2024-05-30 12:48:07 +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
Aman Raj Singh Mourya
b5eae21ae7 [mob][photos] send placeholder with link when sharing 2024-05-29 13:02:45 +05:30
Manav Rathi
431cd39358 Save 2024-05-29 13:00:02 +05:30
Aman Raj Singh Mourya
25d13d531d Merge branch 'main' into placeholder_for_link2 2024-05-29 12:44:03 +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
Neeraj Gupta
f9b3a931a5 [mob] Use same flutter version in all workflows (#1903)
## Description

## Tests
2024-05-28 12:35:15 +05:30
Neeraj Gupta
dd83edf0e3 [mob] Use same flutter version in all workflows 2024-05-28 12:33:33 +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
laurenspriem
5e50d80547 [mob][photos] Remove code 2024-05-27 22:09:20 +05:30
laurenspriem
65201d2b57 [mob][photos] Show video duration on thumbnails 2024-05-27 22:07:06 +05:30
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
Neeraj Gupta
f5093ddf63 Stick to old grouping behaviour for magicsearch 2024-05-27 18:07:07 +05:30
Neeraj Gupta
ac3c6b10a5 Gallery: Support for group by size 2024-05-27 18:03:26 +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
Neeraj Gupta
95bb363aba Add widget to show fileSize overlay 2024-05-27 15:33:29 +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
Aman Raj Singh Mourya
acf7b3a865 Merge branch 'main' into placeholder_for_link 2024-05-27 14:39:37 +05:30
Aman Raj Singh Mourya
8f1119525b [mob][photos] placeholder for link 1st draft 2024-05-27 14:38:48 +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
Neeraj Gupta
bcf3084d97 Merge branch 'main' into generic_group_by 2024-05-27 11:54:37 +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
Prateek Sunal
fae54faffc fix(icons): update dev flavor icon 2024-05-26 17:29:04 +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
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
Neeraj Gupta
5e4d530b93 [mob] Fix range calculation while refresh lazy gallery group 2024-05-23 15:18:02 +05:30
Neeraj Gupta
22ff318249 [mob] Fix bug in daysInSameWeek check 2024-05-23 15:11:41 +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
Neeraj Gupta
643b77e81e Fix title for month 2024-05-23 14:18:37 +05:30
Ashil
a41f705dad Upgrade to flutter 3.22.0 (#1804) 2024-05-23 14:17:47 +05:30
Neeraj Gupta
3ce8a09e39 Merge branch 'main' into generic_group_by 2024-05-23 14:13:35 +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
Neeraj Gupta
ce6160a06a Merge branch 'main' into generic_group_by 2024-05-22 15:18:44 +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
Neeraj Gupta
c21a0cfdb4 [mob] Lint fix 2024-05-21 17:46:23 +05:30
Neeraj Gupta
241c755446 Merge branch 'main' into generic_group_by 2024-05-21 17:45:27 +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
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
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
Prateek Sunal
d4f781bf35 fix(auth): update video editor 2024-05-20 20:57:44 +05:30
ashilkn
a7e0f3df7b [mob][photos] Remove sqflite import in filesDB 2024-05-17 17:05:58 +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
ashilkn
16178b6f09 [mob][photos] Add missing paranthesis 2024-05-17 15:09:10 +05:30
ashilkn
c2b6032b6f [mob][photos] Fix broken query 2024-05-17 13:40:38 +05:30
ashilkn
a44e5f9505 [mob][photos] Migrate to sqlite_async(12): Migrate entities 2024-05-17 11:47:32 +05:30
Prateek Sunal
9c4e72aa0f feat(mobile): init video editor 2024-05-17 01:32:13 +05:30
ashilkn
28ddb93747 [mob][photos] Add missing parameters for query 2024-05-16 20:17:58 +05:30
ashilkn
2b0fa9bae6 [mob][photos] Migrate to sqlite_async(11) 2024-05-16 19:34:59 +05:30
ashilkn
16d54645bc [mob][photos] Migrate to sqlite_async(10) 2024-05-16 18:02:39 +05:30
ashilkn
dec7c45310 [mob][photos] Migrate to sqlite_async(9) 2024-05-16 16:41:57 +05:30
ashilkn
1a360d3ee7 [mob][photos] Migrate to sqlite_async(8): Migrate insert() + rearrange + clean up 2024-05-16 15:37:00 +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
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
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
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
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
ashilkn
ff14eb1d5a [mob][photos] Migrate to sqlite_async (4) 2024-05-14 14:59:03 +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
ashilkn
5bd845d32b [mob][photos] Migrate to sqlite_async (1) 2024-05-13 15:39:35 +05:30
Neeraj Gupta
cff695dd02 [mob] Fix title for month grouping 2024-05-04 12:35:33 +05:30
Neeraj Gupta
5f9b0d11f2 [mob] Gallery: Support grouping by day/week/month/year 2024-05-04 12:31:08 +05:30
Neeraj Gupta
e75be714d9 [mob] Refactor groupHeader to use groupType 2024-05-04 12:07:58 +05:30
Neeraj Gupta
da329c498c [mob] Add groupType in Gallery context state 2024-05-04 12:00:16 +05:30
Neeraj Gupta
cc74e08155 [mob] Add groupType with common extn methods 2024-05-04 11:56:29 +05:30
737 changed files with 24701 additions and 13043 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

@@ -9,7 +9,7 @@ on:
- ".github/workflows/auth-lint.yml"
env:
FLUTTER_VERSION: "3.19.3"
FLUTTER_VERSION: "3.22.2"
jobs:
lint:

View File

@@ -29,7 +29,7 @@ on:
- "auth-v*"
env:
FLUTTER_VERSION: "3.19.3"
FLUTTER_VERSION: "3.22.2"
jobs:
build-ubuntu:

View File

@@ -1,45 +1,43 @@
name: "Deploy (staff)"
on:
# Run on every push to main that changes web/apps/staff/
# Run on every push to main that changes infra/staff/
push:
branches: [main]
paths:
- "web/apps/staff/**"
- ".github/workflows/web-deploy-staff.yml"
- "infra/staff/**"
- ".github/workflows/infra-deploy-staff.yml"
# Also allow manually running the workflow
workflow_dispatch:
jobs:
deploy:
lint:
runs-on: ubuntu-latest
defaults:
run:
working-directory: web
working-directory: infra/staff
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
submodules: recursive
- name: Setup node and enable yarn caching
uses: actions/setup-node@v4
with:
node-version: 20
cache: "yarn"
cache-dependency-path: "web/yarn.lock"
cache-dependency-path: "infra/staff/yarn.lock"
- name: Install dependencies
run: yarn install
- name: Build staff
run: yarn build:staff
- name: Build
run: yarn build
- name: Publish staff
- name: Publish
uses: cloudflare/wrangler-action@v3
with:
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
command: pages deploy --project-name=ente --commit-dirty=true --branch=deploy/staff web/apps/staff/dist
command: pages deploy --project-name=ente --commit-dirty=true --branch=deploy/staff infra/staff/dist

34
.github/workflows/infra-lint-staff.yml vendored Normal file
View File

@@ -0,0 +1,34 @@
name: "Lint (staff)"
on:
# Run on every push to a branch other than main that changes infra/staff/
push:
branches-ignore: [main]
paths:
- "infra/staff/**"
- ".github/workflows/infra-deploy-staff.yml"
jobs:
deploy:
runs-on: ubuntu-latest
defaults:
run:
working-directory: infra/staff
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup node and enable yarn caching
uses: actions/setup-node@v4
with:
node-version: 20
cache: "yarn"
cache-dependency-path: "infra/staff/yarn.lock"
- name: Install dependencies
run: yarn install
- name: Lint
run: yarn lint

View File

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

View File

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

View File

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

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 />
@@ -70,7 +70,7 @@ existing users will be grandfathered in.
[<img height="42" src=".github/assets/app-store-badge.svg">](https://apps.apple.com/app/id6444121398)
[<img height="42" src=".github/assets/play-store-badge.png">](https://play.google.com/store/apps/details?id=io.ente.auth)
[<img height="42" src=".github/assets/f-droid-badge.png">](https://f-droid.org/packages/io.ente.auth/)
[<img height="42" src=".github/assets/desktop-badge.png">](https://github.com/ente-io/ente/releases?q=tag%3Aauth-v2)
[<img height="42" src=".github/assets/desktop-badge.png">](https://github.com/ente-io/ente/releases?q=tag%3Aauth-v3)
[<img height="42" src=".github/assets/web-badge.svg">](https://auth.ente.io)
</div>

View File

@@ -1,51 +1,54 @@
# Security Policy
Ente believes that working with security researchers across the globe is crucial
to keeping our users safe. If you believe you've found a security issue in our
product or service, we encourage you to notify us, by email (security@ente.io)
or by [filling this
form](https://github.com/ente-io/ente/security/advisories/new) We welcome
working with you to resolve the issue promptly. Thanks in advance!
product or service, we encourage you to notify us by email at security@ente.io
or by
[filling out this form](https://github.com/ente-io/ente/security/advisories/new).
We welcome working with you to resolve the issue promptly. Thanks in advance!
## Disclosure Policy
- Let us know as soon as possible upon discovery of a potential security issue,
and we'll make every effort to quickly resolve the issue.
- Provide us a reasonable amount of time to resolve the issue before any
disclosure to the public or a third-party. We may publicly disclose the issue
before resolving it, if appropriate.
- Make a good faith effort to avoid privacy violations, destruction of data, and
interruption or degradation of our service. Only interact with accounts you
own or with explicit permission of the account holder.
- If you would like to encrypt your report, please use the PGP key with long ID
`E273695C0403F34F74171932DF6DDDE98EBD2394` (available in the public keyserver
pool).
- Let us know as soon as possible upon discovery of a potential security
issue, and we'll make every effort to quickly resolve the issue.
- Provide us with a reasonable amount of time to resolve the issue before any
disclosure to the public or a third party. We may publicly disclose the
issue before resolving it if appropriate.
- Make a good faith effort to avoid privacy violations, destruction of data,
and interruption or degradation of our service. Only interact with accounts
you own or with the explicit permission of the account holder.
- If you would like to encrypt your report, please use the PGP key with long
ID `E273695C0403F34F74171932DF6DDDE98EBD2394` (available in the public
keyserver pool).
## In-scope
- Security issues in any current release of Ente's services. Product downloads
are available at https://ente.io. Source code is available at
https://github.com/ente-io.
- Security issues in any current release of Ente's services. Product downloads
are available at [https://ente.io](https://ente.io). Source code is
available at [https://github.com/ente-io](https://github.com/ente-io).
## Exclusions
The following bug classes are out-of scope:
The following bug classes are out of scope:
- Bugs that are already reported on any of [Ente's issue
trackers](https://github.com/ente-io), or that we already know of (Note that
some of our issue tracking is private)
- Issues in an upstream software dependency (ex: Flutter, Next.js etc) which are
already reported to the upstream maintainer
- Attacks requiring physical access to a user's device
- Self-XSS
- Issues related to software or protocols not under ente's control
- Vulnerabilities in outdated versions of ente
- Missing security best practices that do not directly lead to a vulnerability
- Issues that do not have any impact on the general public
- Bugs that are already reported on any of
[Ente's issue trackers](https://github.com/ente-io) or that we already know
of (note that some of our issue tracking is private).
- Issues in an upstream software dependency (e.g., Flutter, Next.js, etc.)
that are already reported to the upstream maintainer.
- Attacks requiring physical access to a user's device.
- Self-XSS.
- Issues related to software or protocols not under Ente's control.
- Vulnerabilities in outdated versions of Ente.
- Missing security best practices that do not directly lead to a
vulnerability.
- Issues that do not have any impact on the general public.
While researching, we'd like to ask you to refrain from:
- Denial of service
- Spamming
- Social engineering (including phishing) of Ente staff or contractors
- Any physical attempts against Ente property or data centers
- Denial of service
- Spamming
- Social engineering (including phishing) of Ente staff or contractors
- Any physical attempts against Ente property or data centers
Thank you for helping keep Ente and our users safe!

View File

@@ -12,7 +12,7 @@ multi-device sync.
### Android
This repository's [GitHub
releases](https://github.com/ente-io/ente/releases?q=tag%3Aauth-v2)
releases](https://github.com/ente-io/ente/releases?q=tag%3Aauth-v3)
contains APKs, built straight from source. These builds keep themselves updated,
without relying on third party stores.
@@ -33,7 +33,7 @@ You can alternatively install the build from PlayStore or F-Droid.
### Desktop
You can [**download**](https://github.com/ente-io/ente/releases?q=tag%3Aauth-v2)
You can [**download**](https://github.com/ente-io/ente/releases?q=tag%3Aauth-v3)
a native desktop app from this repository's GitHub releases. The desktop app
works on Windows, Linux and macOS.
@@ -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

@@ -2,4 +2,5 @@
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background"/>
<foreground android:drawable="@drawable/ic_launcher_foreground"/>
<monochrome android:drawable="@drawable/ic_launcher_foreground"/>
</adaptive-icon>

View File

@@ -17,11 +17,17 @@
{
"title": "AscendEX"
},
{
"title": "Bitfinex"
},
{
"title": "BitMEX"
},
{
"title": "Bitfinex"
"title": "BitSkins"
},
{
"title": "Bitstamp"
},
{
"title": "Bitvavo",
@@ -32,13 +38,12 @@
},
{
"title": "Bloom Host",
"slug": "bloom_host"
"slug": "bloom_host",
"altNames": ["Bloom Host Billing"]
},
{
"title": "BorgBase",
"altNames": [
"borg"
],
"altNames": ["borg"],
"slug": "BorgBase"
},
{
@@ -51,16 +56,19 @@
{
"title": "CERN"
},
{
"title": "ChangeNOW"
},
{
"title": "Channel Island Hosting",
"slug": "cih",
"hex": "D14633"
},
{
"title": "ConfigCat"
"title": "Cloudflare"
},
{
"title": "Cloudflare"
"title": "ConfigCat"
},
{
"title": "Control D",
@@ -72,17 +80,24 @@
},
{
"title": "DCS",
"altNames": [
"Digital Combat Simulator"
],
"altNames": ["Digital Combat Simulator"],
"slug": "dcs"
},
{
"title": "DEGIRO"
},
{
"title": "DirectAdmin"
},
{
"title": "Discourse"
},
{
"title": "DMarket"
},
{
"title": "Doppler"
},
{
"title": "dus.net",
"slug": "dusnet"
@@ -117,14 +132,15 @@
{
"title": "GitLab"
},
{
"title": "GMX"
},
{
"title": "Google"
},
{
"title": "Gosuslugi",
"altNames": [
"Госуслуги"
],
"altNames": ["Госуслуги"],
"slug": "Gosuslugi"
},
{
@@ -135,21 +151,28 @@
"slug": "healthchecks"
},
{
"title": "ING"
"title": "Hivelocity"
},
{
"title": "INWX"
"title": "IceDrive",
"slug": "Icedrive"
},
{
"title": "ING"
},
{
"title": "Instagram"
},
{
"title": "IVPN",
"slug": "IVPN"
"title": "INWX"
},
{
"title": "IceDrive",
"slug": "Icedrive"
"title": "Itch.io",
"slug": "itch_io"
},
{
"title": "IVPN",
"slug": "IVPN"
},
{
"title": "Jagex",
@@ -158,10 +181,6 @@
{
"title": "Kagi"
},
{
"title": "KPN",
"color": "00CC00"
},
{
"title": "Kick",
"hex": "53FC19"
@@ -172,6 +191,10 @@
{
"title": "Koofr"
},
{
"title": "KPN",
"color": "00CC00"
},
{
"title": "Kraken",
"hex": "5848D5"
@@ -190,41 +213,51 @@
{
"title": "Letterboxd"
},
{
"title": "Local",
"slug": "local_wp",
"altNames": ["LocalWP", "Local WP", "Local Wordpress"]
},
{
"title": "Marketplace.tf",
"slug": "marketplacedottf"
},
{
"title": "Mastodon",
"altNames": [
"mstdn",
"fediscience",
"mathstodon",
"fosstodon"
],
"altNames": ["mstdn", "fediscience", "mathstodon", "fosstodon"],
"slug": "mastodon",
"hex": "6364FF"
},
{
"title": "Mercado Livre",
"slug": "mercado_livre"
},
{
"title": "Murena",
"altNames": [
"eCloud"
],
"slug": "ecloud"
"slug": "mercado_livre",
"altNames": ["Mercado Libre", "MercadoLibre", "MercadoLivre"]
},
{
"title": "Microsoft"
},
{
"title": "Migros"
},
{
"title": "Mintos"
},
{
"title": "Mozilla"
},
{
"title": "Murena",
"altNames": ["eCloud"],
"slug": "ecloud"
},
{
"title": "MyFRITZ!Net",
"slug": "myfritz"
},
{
"title": "Name.com",
"slug": "name_com"
},
{
"title": "NextDNS"
},
@@ -294,6 +327,14 @@
{
"title": "Proxmox"
},
{
"title": "Real-Debrid",
"slug": "real_debrid"
},
{
"title": "Registro.br",
"slug": "registro_br"
},
{
"title": "Revolt",
"hex": "858585"
@@ -302,6 +343,10 @@
"title": "Rockstar Games",
"slug": "rockstar_games"
},
{
"title": "RuneMate",
"hex": "2ECC71"
},
{
"title": "Rust Language Forum",
"slug": "rust_language_forum",
@@ -323,6 +368,9 @@
"title": "Skiff",
"hex": "EF5A3C"
},
{
"title": "Skinport"
},
{
"title": "Snapchat"
},
@@ -331,6 +379,9 @@
"slug": "standardnotes",
"hex": "2173E6"
},
{
"title": "Surfshark"
},
{
"title": "Synology DSM",
"slug": "synology_dsm"
@@ -341,7 +392,8 @@
"hex": "FFFFFF"
},
{
"title": "Techlore"
"title": "Techlore",
"altNames": ["Techlore Courses", "Techlore Forums"]
},
{
"title": "Termius",
@@ -375,6 +427,10 @@
"title": "Ubisoft",
"hex": "4285f4"
},
{
"title": "Ubuntu One",
"slug": "ubuntu_one"
},
{
"title": "Unity",
"hex": "858585"
@@ -398,20 +454,26 @@
"title": "WYZE",
"slug": "wyze"
},
{
"title": "WorkOS",
"slug": "workos",
"altNames": ["Work OS"]
},
{
"title": "X",
"altNames": [
"twitter"
],
"altNames": ["twitter"],
"slug": "x"
},
{
"title": "Yandex",
"altNames": [
"Ya",
"Яндекс"
],
"altNames": ["Ya", "Яндекс"],
"slug": "Yandex"
},
{
"title": "YNAB",
"altNames": ["You Need A Budget"],
"slug": "ynab",
"hex": "3B5EDA"
}
]
}
}

View File

@@ -1,20 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 339 339">
<defs />
<defs>
<linearGradient id="b" x1="193.9" x2="198.7" y1="166.8" y2="223.3" gradientTransform="rotate(5 4448 -4204) scale(2.93671)" gradientUnits="userSpaceOnUse" xlink:href="#a" />
<linearGradient id="a">
<stop offset="0" />
<stop offset="1" stop-color="#fff9f9" stop-opacity="0" />
</linearGradient>
<linearGradient id="c" x1="167.8" x2="270.6" y1="76.9" y2="64.2" gradientTransform="rotate(5 465 -2050) scale(1.50082)" gradientUnits="userSpaceOnUse" xlink:href="#a" />
</defs>
<g transform="translate(0 42)">
<path fill="url(#b)" d="M160 205l154 42-141 44-155-42z" />
<path fill="url(#c)" d="M160-35v240l154 42 1-253z" />
<path fill="none" stroke-width="1.2" d="M160 205V-35m0 240L18 249m142-44l154 41" />
<path d="M84 109l35 54V98l21-7v91l-27 9-35-54v65l-21 6v-91z" />
<rect width="86.1" height="12.6" x="185" y="97" fill="#bebebe" ry="2.3" transform="skewY(15) scale(.9669 1)" />
<path fill="#bebebe" d="M181 169l99 26 2 3v8c0 1-1 2-2 1l-99-26-2-3v-7c0-2 1-2 2-2zm0-47l99 27 2 2v8l-2 2-99-27c-1 0-2-1-2-3v-7l2-2z" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.2 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 19 KiB

View File

@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.2.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="layer" xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 652 652" style="enable-background:new 0 0 652 652;" xml:space="preserve">
<style type="text/css">
.st0{fill:#003B2F;}
</style>
<path class="st0" d="M108.8,331.4c0-11.4-6.6-20.5-17.3-24.2c8.1-3.7,13.7-11.4,13.7-21.3c0-15.5-13-26.3-31.5-26.3H21v13.2
c8.3,0,15,6.7,15,15s-6.7,15-15,15v11.9c8.3,0,15,6.7,15,15s-6.7,15-15,15V359h55c18.9,0,32.6-11.2,32.6-27.5 M49.3,273.9H71
c8.9,0,15.2,5.8,15.2,13.9s-6.3,13.7-15.2,13.7H49.3C49.3,301.5,49.3,273.9,49.3,273.9z M49.3,344.5v-30H73
c9.8,0,16.4,6.1,16.4,14.9s-6.6,15.1-16.4,15.1C73,344.5,49.3,344.5,49.3,344.5z M130.2,254.4c6.6,0,11.4,4.7,11.4,11.4
s-4.7,11.4-11.4,11.4c-6.6,0-11.2-4.7-11.2-11.4S123.7,254.4,130.2,254.4 M120.7,286.5h18.9v72.4h-18.9V286.5L120.7,286.5z
M176.2,286.4h20.1v14.4h-20.1v34.6c0,5.5,4.4,10.1,9.9,10.2c2.9,0,6.1-0.4,9.6-1.3l2.5,14.2c-5.8,1.5-11.2,2.2-16.4,2.2
c-14.5,0-24.6-9.5-24.6-23.4v-67.4c0-2.6,2.1-4.7,4.7-4.7h14.2V286.4L176.2,286.4z M234.6,284.7c8.4,0,17.4,1.7,26.6,5l-4.1,13.6
c-7.3-2.8-14.5-4.6-21-4.6c-6.5,0-11.2,3.1-11.2,7.8c0,13.1,38.7,3.6,38.7,31.6c0,13.2-11.9,22.5-29,22.5c-8.9,0-18.6-2-28.8-5.8
l4-13.5c8.4,3.4,16.4,5.2,23.4,5.2c7,0,11.9-3.4,11.9-8.4c0-13.7-38.6-4.1-38.6-31.6c0-12.7,11.5-21.9,28.3-21.9 M293.7,286.4h20.1
v14.4h-20.1v34.6c0,5.5,4.4,10.1,9.9,10.2c2.9,0,6.1-0.4,9.6-1.3l2.5,14.2c-5.8,1.5-11.2,2.2-16.4,2.2c-14.5,0-24.6-9.5-24.6-23.4
v-67.4c0-2.7,2.2-4.7,4.7-4.7h14.2V286.4z M413.8,286.4h15.1l2.4,9.9c5.8-7.5,14.2-11.6,23.8-11.6c10.5,0,19,5,23.2,13.3
c6.6-8.6,15.7-13.3,26.2-13.3c15.8,0,27.1,11,27.1,26.4v47.7h-18.9v-44.8c0-8.1-5.8-13.9-14-13.9c-9.6,0-16.4,7.3-16.4,17.6v41.1
h-18.9v-44.8c0-8.1-5.8-13.9-13.9-13.9c-9.8,0-16.5,7.3-16.5,17.6v41.1h-18.9v-72.4H413.8z M547.1,286.4h15.1l2.4,9.3
c5.3-7.1,13.6-11.1,23.2-11.1c19.5,0,33.3,15.7,33.3,38c0,22.3-13.7,37.9-33.3,37.9c-8.9,0-16.5-3.6-21.8-10v32.2
c0,2.6-2.1,4.7-4.7,4.7H547L547.1,286.4L547.1,286.4z M582.8,299.6c-10,0-17.2,7.5-17.2,18.2v9.8c0,10.5,7.1,18.2,17.2,18.2
c11.1,0,18.9-9.6,18.9-23C601.8,309.4,593.9,299.7,582.8,299.6 M378.1,327.5c0,10.5-7.1,18.2-17.2,18.2c-11.1,0-18.9-9.6-18.9-23
c0-13.4,7.8-23.1,18.9-23.1c10,0,17.2,7.5,17.2,18.2V327.5L378.1,327.5z M396.7,323.3L396.7,323.3v-36.9h-15.1l-2.4,9.3
c-5.3-7.1-13.6-11.1-23.2-11.1c-19.5,0-33.3,15.7-33.3,38c0,22.3,13.7,37.9,33.3,37.9c1.1,0,2.2,0,3.3-0.2
c8.2-0.8,15.1-4.7,19.9-10.9l2.4,9.3h15.1L396.7,323.3L396.7,323.3z"/>
</svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 9.8 KiB

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,8 @@
<svg width="100" height="100" version="1.1" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
<g transform="rotate(-45 57.071 32.929)">
<path fill="#31B7E9" d="m20 0v20h-20v18h40v-38z"/>
<rect fill="#0682B4" y="36" width="40" height="4"/>
<path fill="#31B7E9" d="m50 0v50h-50v18h70v-68z"/>
<rect fill="#0682B4" y="66" width="70" height="4"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 378 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 2000 1948.02"><defs><style>.cls-1,.cls-2{opacity:0.25;isolation:isolate;}.cls-1{fill:url(#linear-gradient);}.cls-2{fill:url(#linear-gradient-2);}.cls-3{fill:url(#linear-gradient-3);}.cls-4{fill:url(#linear-gradient-4);}</style><linearGradient id="linear-gradient" x1="83.62" y1="947.07" x2="878.54" y2="947.07" gradientTransform="matrix(1, 0, 0, -1, 0, 1923)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#00ba96"/><stop offset="0.52" stop-color="#00d9af"/><stop offset="1" stop-color="#00d9af"/></linearGradient><linearGradient id="linear-gradient-2" x1="1144.49" y1="948.99" x2="2001.4" y2="948.99" gradientTransform="matrix(1, 0, 0, -1, 0, 1923)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#008d85"/><stop offset="1" stop-color="#00ffe0"/></linearGradient><linearGradient id="linear-gradient-3" x1="250.91" y1="949" x2="1904.03" y2="949" gradientTransform="matrix(1, 0, 0, -1, 0, 1923)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#008d94"/><stop offset="1" stop-color="#00ffe0"/></linearGradient><linearGradient id="linear-gradient-4" y1="947.06" x2="794.89" y2="947.06" gradientTransform="matrix(1, 0, 0, -1, 0, 1923)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#00ba96"/><stop offset="0.52" stop-color="#00d9af"/><stop offset="1" stop-color="#00faaf"/></linearGradient></defs><title>dmt</title><g id="Layer_2" data-name="Layer 2"><g id="Layer_1-2" data-name="Layer 1"><path class="cls-1" d="M857,890.24,625.08,489,389.28,83.76a168.38,168.38,0,0,0-54.57-56.49h-1.95a148.49,148.49,0,0,0-56.52,58.44L100.85,389.6a138.94,138.94,0,0,0,0,140.26L311.32,894.13c15.59,25.32,21.44,54.54,21.44,83.76h0a178.34,178.34,0,0,1-21.44,83.76L102.8,1422a138.94,138.94,0,0,0,0,140.26l175.39,303.89c13.64,23.38,33.13,44.8,56.52,58.44h2c23.39-13.64,40.93-33.12,54.57-56.49l233.86-405.18L857,1057.76A171,171,0,0,0,857,890.24Z"/><path class="cls-2" d="M1975.62,878.55,1741.76,475.31,1502.06,60.39a171.53,171.53,0,0,0-42.87-48.7C1449.44,3.9,1439.69,0,1428,0c-122.78,0-206.58,3.9-268.94,3.9-9.74,0-15.59,11.69-13.64,21.43l60.41,339c0,3.9,0,7.79-1.95,11.69-23.39,42.86-21.44,95.45,3.9,138.31l214.37,374c15.59,27.27,23.39,56.49,23.39,85.71s-7.8,58.44-23.39,85.71l-216.32,374c-25.33,42.86-25.33,95.45-3.9,138.31,2,3.9,2,7.79,2,11.69l-60.41,337c-2,9.74,3.9,21.43,13.64,21.43,56.52,0-23.39,5.84,276.73,5.84,5.85,0,13.64-2,19.49-3.9,21.44-7.79,35.08-33.12,46.77-54.54l239.71-416.87,231.91-403.24c37-58.47,37-130.53,3.9-190.92"/><path class="cls-3" d="M1880.13,890.24,1414.36,83.76C1385.13,33.12,1330.56,0,1270.15,0H338.61c-31.18,0-60.41,9.74-87.7,25.32v1.95a168.38,168.38,0,0,1,54.57,56.49L539.34,489c21.44-9.74,46.77-15.58,70.16-15.58H995.36c60.41,0,115,31.17,144.21,83.76L1332.5,890.24c29.23,50.65,29.23,114.93,0,167.53l-192.93,333.11c-29.23,50.65-85.75,83.76-144.21,83.76H611.44a168.21,168.21,0,0,1-70.16-15.58L307.43,1864.24a168.38,168.38,0,0,1-54.57,56.49v2c25.33,15.58,56.52,25.32,87.7,25.32H1274c60.41,0,115-31.17,144.21-83.76L1884,1057.76c27.31-52.59,27.31-114.93-3.87-167.52"/><path class="cls-4" d="M771.25,890.24,539.34,489,305.48,83.76a168.38,168.38,0,0,0-54.57-56.49H249a148.49,148.49,0,0,0-56.52,58.44L19,387.65a138.94,138.94,0,0,0,0,140.26L229.47,892.18c15.59,25.32,21.44,54.54,21.44,83.76h0a178.34,178.34,0,0,1-21.44,83.76L19,1422a138.94,138.94,0,0,0,0,140.26l175.4,303.92c13.64,23.38,33.13,44.8,56.52,58.44h2c23.39-13.64,40.93-33.12,54.57-56.49L541.3,1463l231.9-401.29C802.43,1005.17,802.43,942.83,771.25,890.24Z"/></g></g></svg>

After

Width:  |  Height:  |  Size: 3.5 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

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg">
<circle cx="512" cy="512" r="512" style="fill:#004788"/>
<path d="m736.6 506.6 50.1-83.3h-51.1L709 465.6l-28.6-42.3h-56l59 83.2-59 93.9h56l31.9-53.4 37.8 53.4h50l-63.5-93.8zm-185.1-83.4-38 94.8-36-94.8h-45.4L402 600.6h45.9l14.8-102.2h.5l40.7 102.2h18.4l42.6-102.2h.6l12.9 102.2h46.1l-26.9-177.4h-46.1zm-233.8 78.5v36.1h37.6c-2 20.2-17.3 30.6-37.1 30.6-30.1 0-46.4-27.7-46.4-55.2s15.6-55.6 45.7-55.6c18.5 0 31.7 11.2 38.1 27.9l43.5-18.2c-15.2-32.9-43.2-49.2-79.5-49.2-56.8 0-95.5 37.6-95.5 94.8 0 55.4 38.5 93 93.9 93 29.4 0 55.4-10.5 72.6-34.6 15.4-21.8 17.6-43.9 18-69.7h-90.9z" style="fill:#fff"/>
</svg>

After

Width:  |  Height:  |  Size: 825 B

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 8.0 KiB

View File

@@ -0,0 +1 @@
<svg id="logosandtypes_com" data-name="logosandtypes com" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 150 150"><defs><style>.cls-1{fill:none;}.cls-2{fill:#e31937;}</style></defs><g id="Layer_2" data-name="Layer 2"><path id="Layer_3" data-name="Layer 3" class="cls-1" d="M0,0H150V150H0Z" transform="translate(0 0)"/></g><rect class="cls-2" x="13.34" y="14.37" width="15.01" height="123.08"/><rect class="cls-2" x="122.92" y="14.37" width="15.01" height="123.08"/><rect class="cls-2" x="43.36" y="54.9" width="64.54" height="15.01"/><rect class="cls-2" x="43.36" y="83.42" width="64.54" height="15.01"/></svg>

After

Width:  |  Height:  |  Size: 611 B

View File

@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" height="235.452" width="261.728"
viewBox="0 0 245.371 220.736">
<path
d="M31.99 1.365C21.287 7.72.2 31.945 0 38.298v10.516C0 62.144 12.46 73.86 23.773 73.86c13.584 0 24.902-11.258 24.903-24.62 0 13.362 10.93 24.62 24.515 24.62 13.586 0 24.165-11.258 24.165-24.62 0 13.362 11.622 24.62 25.207 24.62h.246c13.586 0 25.208-11.258 25.208-24.62 0 13.362 10.58 24.62 24.164 24.62 13.585 0 24.515-11.258 24.515-24.62 0 13.362 11.32 24.62 24.903 24.62 11.313 0 23.773-11.714 23.773-25.046V38.298c-.2-6.354-21.287-30.58-31.988-36.933C180.118.197 157.056-.005 122.685 0c-34.37.003-81.228.54-90.697 1.365zm65.194 66.217a28.025 28.025 0 0 1-4.78 6.155c-5.128 5.014-12.157 8.122-19.906 8.122a28.482 28.482 0 0 1-19.948-8.126c-1.858-1.82-3.27-3.766-4.563-6.032l-.006.004c-1.292 2.27-3.092 4.215-4.954 6.037a28.5 28.5 0 0 1-19.948 8.12c-.934 0-1.906-.258-2.692-.528-1.092 11.372-1.553 22.24-1.716 30.164l-.002.045c-.02 4.024-.04 7.333-.06 11.93.21 23.86-2.363 77.334 10.52 90.473 19.964 4.655 56.7 6.775 93.555 6.788h.006c36.854-.013 73.59-2.133 93.554-6.788 12.883-13.14 10.31-66.614 10.52-90.474-.022-4.596-.04-7.905-.06-11.93l-.003-.045c-.162-7.926-.623-18.793-1.715-30.165-.786.27-1.757.528-2.692.528a28.5 28.5 0 0 1-19.948-8.12c-1.862-1.822-3.662-3.766-4.955-6.037l-.006-.004c-1.294 2.266-2.705 4.213-4.563 6.032a28.48 28.48 0 0 1-19.947 8.125c-7.748 0-14.778-3.11-19.906-8.123a28.025 28.025 0 0 1-4.78-6.155 27.99 27.99 0 0 1-4.736 6.155 28.49 28.49 0 0 1-19.95 8.124c-.27 0-.54-.012-.81-.02h-.007c-.27.008-.54.02-.813.02a28.49 28.49 0 0 1-19.95-8.123 27.992 27.992 0 0 1-4.736-6.155zm-20.486 26.49l-.002.01h.015c8.113.017 15.32 0 24.25 9.746 7.028-.737 14.372-1.105 21.722-1.094h.006c7.35-.01 14.694.357 21.723 1.094 8.93-9.747 16.137-9.73 24.25-9.746h.014l-.002-.01c3.833 0 19.166 0 29.85 30.007L210 165.244c8.504 30.624-2.723 31.373-16.727 31.4-20.768-.773-32.267-15.855-32.267-30.935-11.496 1.884-24.907 2.826-38.318 2.827h-.006c-13.412 0-26.823-.943-38.318-2.827 0 15.08-11.5 30.162-32.267 30.935-14.004-.027-25.23-.775-16.726-31.4L46.85 124.08C57.534 94.073 72.867 94.073 76.7 94.073zm45.985 23.582v.006c-.02.02-21.863 20.08-25.79 27.215l14.304-.573v12.474c0 .584 5.74.346 11.486.08h.006c5.744.266 11.485.504 11.485-.08v-12.474l14.304.573c-3.928-7.135-25.79-27.215-25.79-27.215v-.006l-.003.002z"
color="#000" />
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="320px" height="320px" style="shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd; clip-rule:evenodd" xmlns:xlink="http://www.w3.org/1999/xlink">
<g><path style="opacity:0.992" fill="#52bb7b" d="M 146.5,-0.5 C 155.167,-0.5 163.833,-0.5 172.5,-0.5C 183.052,2.2756 192.719,6.94227 201.5,13.5C 234.5,46.5 267.5,79.5 300.5,112.5C 318.79,135.86 322.456,161.527 311.5,189.5C 308.11,195.357 304.443,201.023 300.5,206.5C 268.052,239.07 235.385,271.404 202.5,303.5C 201.614,304.325 201.281,305.325 201.5,306.5C 197.68,307.84 194.347,310.006 191.5,313C 185.322,315.892 178.989,318.059 172.5,319.5C 163.833,319.5 155.167,319.5 146.5,319.5C 139.355,317.751 132.355,315.418 125.5,312.5C 125.5,311.5 125.5,310.5 125.5,309.5C 122.643,308.667 119.977,307.334 117.5,305.5C 84.5,272.5 51.5,239.5 18.5,206.5C 0.210219,183.14 -3.45645,157.473 7.5,129.5C 10.89,123.643 14.5567,117.977 18.5,112.5C 51.5,79.5 84.5,46.5 117.5,13.5C 126.281,6.94227 135.948,2.2756 146.5,-0.5 Z"/></g>
<g><path style="opacity:1" fill="#fafdfb" d="M 151.5,41.5 C 152.47,57.4524 152.803,73.4524 152.5,89.5C 129.661,112.506 106.994,135.672 84.5,159C 105.661,180.994 126.994,202.828 148.5,224.5C 149.031,226.544 150.198,228.211 152,229.5C 152.5,244.496 152.667,259.496 152.5,274.5C 152.141,276.371 151.141,277.871 149.5,279C 146.833,279.667 144.167,279.667 141.5,279C 111.333,248.833 81.1667,218.667 51,188.5C 47.074,183.63 43.4073,178.63 40,173.5C 34.8493,157.438 38.1826,143.438 50,131.5C 80.1667,101.333 110.333,71.1667 140.5,41C 143.702,39.5167 147.036,39.1834 150.5,40C 151.056,40.3826 151.389,40.8826 151.5,41.5 Z"/></g>
<g><path style="opacity:1" fill="#fbfdfc" d="M 279.5,148.5 C 280.903,153.387 281.569,158.387 281.5,163.5C 279.693,171.198 276.193,178.198 271,184.5C 239.5,216 208,247.5 176.5,279C 173.833,279.667 171.167,279.667 168.5,279C 167.177,278.184 166.511,277.017 166.5,275.5C 166.197,259.786 166.531,244.119 167.5,228.5C 189.951,205.881 212.284,183.048 234.5,160C 212.374,136.874 189.874,114.04 167,91.5C 166.536,90.9056 166.369,90.2389 166.5,89.5C 166.212,73.4649 166.545,57.4649 167.5,41.5C 167.611,40.8826 167.944,40.3826 168.5,40C 171.964,39.1834 175.298,39.5167 178.5,41C 208.667,71.1667 238.833,101.333 269,131.5C 271.667,134.833 274.333,138.167 277,141.5C 278.411,143.65 279.245,145.984 279.5,148.5 Z"/></g>
<g><path style="opacity:1" fill="#cfecdb" d="M 151.5,41.5 C 152.117,41.6107 152.617,41.944 153,42.5C 153.828,58.3388 153.661,74.0054 152.5,89.5C 152.803,73.4524 152.47,57.4524 151.5,41.5 Z"/></g>
<g><path style="opacity:1" fill="#cfecda" d="M 167.5,41.5 C 166.545,57.4649 166.212,73.4649 166.5,89.5C 165.339,74.0054 165.172,58.3388 166,42.5C 166.383,41.944 166.883,41.6107 167.5,41.5 Z"/></g>
<g><path style="opacity:1" fill="#57bd7e" d="M 138.5,63.5 C 139.654,69.987 139.821,76.6536 139,83.5C 114.597,107.948 90.0967,132.281 65.5,156.5C 62.1667,161.167 58.8333,165.833 55.5,170.5C 50.2141,162.481 50.3807,154.481 56,146.5C 83.2852,118.477 110.785,90.8102 138.5,63.5 Z"/></g>
<g><path style="opacity:1" fill="#59be80" d="M 179.5,63.5 C 180.473,63.9867 181.473,64.4867 182.5,65C 203.99,87.4562 225.823,109.623 248,131.5C 250.67,138.156 249.67,144.156 245,149.5C 223.333,127.833 201.667,106.167 180,84.5C 179.5,77.5079 179.334,70.5079 179.5,63.5 Z"/></g>
<g><path style="opacity:1" fill="#fafdfb" d="M 144.5,113.5 C 153.839,113.334 163.173,113.5 172.5,114C 173.416,114.374 174.25,114.874 175,115.5C 175.667,118.167 175.667,120.833 175,123.5C 164.243,124.653 153.41,124.82 142.5,124C 140.522,121.503 140.022,118.669 141,115.5C 142.302,114.915 143.469,114.249 144.5,113.5 Z"/></g>
<g><path style="opacity:1" fill="#f2faf4" d="M 122.5,142.5 C 122.287,139.549 122.954,136.882 124.5,134.5C 147.094,133.345 169.761,133.178 192.5,134C 193.416,134.374 194.25,134.874 195,135.5C 195.667,137.833 195.667,140.167 195,142.5C 194.5,143.667 193.667,144.5 192.5,145C 170.167,145.667 147.833,145.667 125.5,145C 124.309,144.302 123.309,143.469 122.5,142.5 Z"/></g>
<g><path style="opacity:1" fill="#addfc0" d="M 124.5,134.5 C 122.954,136.882 122.287,139.549 122.5,142.5C 120.816,139.282 121.483,136.615 124.5,134.5 Z"/></g>
<g><path style="opacity:1" fill="#57bd7f" d="M 265.5,151.5 C 267.083,157.318 266.75,162.985 264.5,168.5C 262.887,171.286 261.054,173.953 259,176.5C 232.986,202.68 206.82,228.68 180.5,254.5C 179.167,247.833 179.167,241.167 180.5,234.5C 206.181,209.652 231.348,184.319 256,158.5C 258.478,155.71 260.312,152.544 261.5,149C 263.615,148.464 264.948,149.297 265.5,151.5 Z"/></g>
<g><path style="opacity:1" fill="#f1f9f4" d="M 105.5,153.5 C 141.168,153.333 176.835,153.5 212.5,154C 215.57,156.569 216.237,159.736 214.5,163.5C 213.975,164.192 213.308,164.692 212.5,165C 176.833,165.667 141.167,165.667 105.5,165C 100.193,161.036 100.193,157.202 105.5,153.5 Z"/></g>
<g><path style="opacity:1" fill="#94d5ad" d="M 279.5,148.5 C 281.13,150.026 281.963,152.026 282,154.5C 282.805,157.696 282.638,160.696 281.5,163.5C 281.569,158.387 280.903,153.387 279.5,148.5 Z"/></g>
<g><path style="opacity:1" fill="#a5dcba" d="M 265.5,151.5 C 266.117,151.611 266.617,151.944 267,152.5C 269.288,158.528 268.454,163.861 264.5,168.5C 266.75,162.985 267.083,157.318 265.5,151.5 Z"/></g>
<g><path style="opacity:1" fill="#5abe80" d="M 73.5,169.5 C 95.4114,190.911 117.245,212.577 139,234.5C 139.667,241.5 139.667,248.5 139,255.5C 115.895,233.306 93.2279,210.64 71,187.5C 69.4661,183.289 69.1327,178.956 70,174.5C 70.6972,172.416 71.8639,170.749 73.5,169.5 Z"/></g>
<g><path style="opacity:1" fill="#fefefe" d="M 122.5,182.5 C 122.448,180.097 122.781,177.764 123.5,175.5C 146.761,174.345 170.094,174.178 193.5,175C 196.167,178.333 196.167,181.667 193.5,185C 170.5,185.667 147.5,185.667 124.5,185C 123.619,184.292 122.953,183.458 122.5,182.5 Z"/></g>
<g><path style="opacity:1" fill="#a0dab7" d="M 123.5,175.5 C 122.781,177.764 122.448,180.097 122.5,182.5C 121.853,181.726 121.52,180.726 121.5,179.5C 121.34,177.645 122.007,176.312 123.5,175.5 Z"/></g>
<g><path style="opacity:1" fill="#fbfdfc" d="M 143.5,194.5 C 153.506,194.334 163.506,194.5 173.5,195C 176.936,198.06 177.269,201.393 174.5,205C 164.167,205.667 153.833,205.667 143.5,205C 141.09,204.242 140.09,202.575 140.5,200C 140.12,197.297 141.12,195.463 143.5,194.5 Z"/></g>
<g><path style="opacity:1" fill="#d2eddd" d="M 148.5,224.5 C 150.129,225.625 151.629,226.959 153,228.5C 153.828,244.006 153.661,259.339 152.5,274.5C 152.667,259.496 152.5,244.496 152,229.5C 150.198,228.211 149.031,226.544 148.5,224.5 Z"/></g>
<g><path style="opacity:1" fill="#d1eddc" d="M 167.5,228.5 C 166.531,244.119 166.197,259.786 166.5,275.5C 165.339,260.339 165.172,245.006 166,229.5C 166.383,228.944 166.883,228.611 167.5,228.5 Z"/></g>
</svg>

After

Width:  |  Height:  |  Size: 6.8 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 22 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 57 KiB

After

Width:  |  Height:  |  Size: 5.0 KiB

View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
version="1.0"
width="602.36218"
height="139.53543"
id="svg3058">
<defs
id="defs3060" />
<g
id="layer1">
<path
d="M 106.369,119.88512 L 106.369,62.018665 L 81.544594,119.88512 L 67.772114,119.88512 L 43.359087,62.018665 L 43.359087,119.88512 L 17.716529,119.88512 L 17.716529,19.650275 L 52.045504,19.650275 L 75.627274,76.245395 L 100.30782,19.650275 L 132.00731,19.650275 L 132.00731,119.88512 L 106.369,119.88512 z M 151.74424,119.88514 L 151.74424,19.650295 L 173.67129,19.650295 C 175.59247,19.650295 177.51259,21.571475 177.51259,23.661675 L 177.51259,119.88514 L 151.74424,119.88514 z M 248.65971,62.160065 L 281.25389,62.160065 C 283.82526,62.160065 285.27873,64.264785 285.27873,66.736595 L 285.27873,118.51459 C 276.11148,120.56404 261.78448,121.82085 251.13365,121.82085 C 213.76593,121.82085 194.05842,104.00581 194.05842,69.633955 C 194.05948,38.962025 213.76593,17.714585 246.61239,17.714585 C 261.08007,17.714585 273.76688,21.571475 281.93349,27.080965 L 271.83223,44.330845 C 264.76546,41.165965 255.25983,38.962025 248.53357,38.962025 C 229.64739,38.962025 220.81534,51.492935 220.81534,69.633955 C 220.81534,89.002025 231.04275,100.96814 249.90412,100.96814 C 253.35105,100.96814 257.64767,100.84093 261.08007,100.30377 L 261.08007,82.644625 L 248.65971,82.644625 L 248.65971,62.160065 z M 342.46983,38.962025 L 329.85459,38.962025 L 329.85459,64.094705 L 342.46983,64.094705 C 349.99971,64.094705 355.91916,60.082975 355.91916,50.546515 C 355.92022,40.883215 349.99865,38.962025 342.46983,38.962025 z M 361.45735,119.88514 L 349.56211,92.294115 C 347.1314,86.671595 345.43451,83.888325 340.27794,83.888325 L 329.85459,83.888325 L 329.85459,119.88514 L 304.66452,119.88514 L 304.66452,23.661675 C 304.66452,21.571475 306.95349,19.650295 308.59192,19.650295 L 344.15113,19.650295 C 363.47597,19.650295 380.04625,23.661675 380.04625,48.611165 C 380.04625,59.785695 373.86247,71.230215 362.26026,73.547185 C 368.0401,75.510535 373.86247,82.913205 377.01176,90.951915 L 388.47046,119.88514 L 361.45735,119.88514 z M 444.16061,38.962025 C 430.64148,38.962025 421.01998,48.611165 421.01998,69.633955 C 421.02105,90.951915 430.64042,100.57341 444.15991,100.57341 C 455.75892,100.57341 465.25215,90.951915 465.25215,69.633955 C 465.25321,48.611165 455.75892,38.962025 444.16061,38.962025 z M 444.16061,121.82085 C 411.34321,121.82085 393.97817,98.638055 393.97817,69.633955 C 393.97817,40.883215 411.34215,17.714585 444.15991,17.714585 C 474.90235,17.714585 492.29396,40.883215 492.29396,69.633955 C 492.29502,98.636985 474.90128,121.82085 444.16061,121.82085 z M 541.64053,121.82085 C 524.689,121.82085 508.94892,115.74656 501.92857,110.91455 L 513.3575,90.655685 C 519.73014,94.512575 532.13207,100.4455 543.56101,100.4455 C 550.03179,100.4455 558.21187,99.202855 558.21187,92.012065 C 558.21187,85.258875 549.07227,83.196315 537.08986,79.762855 C 522.62431,75.623205 505.78439,69.859315 505.78439,50.405135 C 505.7851,29.439745 524.41723,17.714585 548.66337,17.714585 C 564.66778,17.714585 577.07254,23.378915 583.4023,29.439745 L 569.48526,45.277265 C 562.60593,41.165965 555.57104,37.973445 547.68719,37.973445 C 538.19396,37.973445 532.82585,41.576285 532.82585,46.816835 C 532.82691,52.015925 539.70518,54.671985 548.37813,57.285175 C 563.71002,62.018685 584.64565,66.850335 584.64565,86.926005 C 584.64671,107.60829 568.11435,121.82085 541.64053,121.82085 z "
style="fill:#f60;fill-opacity:1;fill-rule:evenodd"
id="polygon3036" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.6 KiB

View File

@@ -0,0 +1,25 @@
<svg enable-background="new 0 0 1510.1 240.3" viewBox="0 0 1510.1 240.3"
xmlns="http://www.w3.org/2000/svg">
<path
d="m873.5 203.7c0 16.2-11.9 29.1-28.9 29.1-16.4 0-28.6-12.9-28.6-29.1s12.2-30 28.6-30c17 0 28.9 13.7 28.9 30z"
fill="#6eda78" />
<g fill="#282828">
<path
d="m9.7 229v-135.4l38.7-9.4-5.9 43.6h4.2c2.4-10.1 6.2-18.6 11.3-25.7 5.2-7 11.8-12.4 19.8-16 8.2-3.8 17.6-5.7 28.4-5.7 14 0 26.1 3.2 36.3 9.7 10.1 6.3 17.9 15.5 23.3 27.7 5.6 12 8.3 26.3 8.3 43.1v68.1h-38.5v-57.9c0-11.2-1.7-20.7-5.1-28.5-3.4-8-8.4-14-14.9-18-6.5-4.2-14.4-6.3-23.5-6.3-13.7 0-24.4 4.6-32.1 13.7s-11.5 22.1-11.5 39.1v57.9z" />
<path clip-rule="evenodd"
d="m252.4 232.7c-19.6 0-36.4-3.9-45.7-11.7-9.3-8-14-18.7-14-32.2 0-13.1 4.7-23.6 14-31.4 25.1-21.6 103.6-13.3 108.6-11.6 0-3.3-.2-8.9-3.5-14.4-7.9-13.8-24.3-19.7-39-19.7-12.3 0-25.3 6.1-32.9 15.4-3 3.7-5.5 9.1-5.5 9.1h-36.8c.6-7 4.6-18.4 10.7-27 6-8.7 15.4-16.1 27-21.2 11.8-5.3 20.7-7.6 38-7.6 18 0 31.8 3 43.9 9.1s21.1 14.6 26.9 25.7c5.9 11 8.8 24 8.8 38.8v23.3 52h-37.7l6-30.9h-4.1c-1.9 8.5-5.4 14.9-9.6 19.6-4.3 4.7-9.8 7.6-19.5 10.5-9.5 2.8-21.4 4.2-35.6 4.2zm-23.2-46.4c-2-32.9 77-23.3 86.1-22.2 0 4.8-.3 9.5-1.4 14-5.8 23.3-38.1 28.4-58 26.6-14.5-1.3-26-6.6-26.7-18.4z"
fill-rule="evenodd" />
<path
d="m375.3 94.7v134.3h38.7v-71.9c0-12.2 2.8-21.7 8.3-28.5 5.6-6.8 13.1-10.3 22.5-10.3 6.4 0 11.8 1.5 16.4 4.6 4.7 3 8.3 7.5 10.8 13.4 2.6 5.7 3.9 12.6 3.9 20.8v71.9h38.5v-71.9c0-12.2 2.8-21.7 8.3-28.5 5.7-6.8 13.3-10.3 22.8-10.3 6.4 0 11.8 1.5 16.4 4.6 4.7 3 8.3 7.5 10.8 13.4 2.4 5.7 3.7 12.6 3.7 20.8v71.9h38.7v-82.1c0-14.1-2.2-26-6.6-35.9-4.2-10.1-10.3-17.7-18.1-22.8s-17.1-7.7-27.9-7.7c-13.1 0-23.8 3.5-32.1 10.6-8.2 6.8-14 17.1-17.4 30.8h-3.4c-1.1-7.8-3.8-14.7-7.8-20.8-4.1-6.3-9.6-11.2-16.4-14.8-6.7-3.8-14.7-5.7-24-5.7-12.7 0-23.1 3.4-31.1 10.3-8 6.7-13.7 16.5-17.1 29.7h-4.2l5.1-36.2z" />
<path clip-rule="evenodd"
d="m718.3 232.7c-18 0-33.4-3.3-46.3-10-12.7-6.8-22.4-16-28.9-27.4-6.5-11.6-9.8-24.5-9.8-38.8s3.3-27.1 9.8-38.5c6.5-11.6 16.2-20.7 29.1-27.4 12.9-6.8 28.4-10.3 46.5-10.3s33.6 3.4 46.3 10.3c12.9 6.7 22.6 15.8 29.2 27.4 6.5 11.6 9.8 24.6 9.8 39.1 0 4-.7 10.2-.7 10.2h-133.4c.9 4.3 2.4 8.3 4.5 12.1 3.8 6.5 9.3 11.6 16.7 15.4 7.5 3.6 16.8 5.4 27.9 5.4 12.6 0 22.2-1.7 28.9-5.1 5.2-2.7 9.5-5.9 13-9.5h39.1c-2.6 6.7-6.7 13.4-12.2 20-6.4 7.6-15.4 14.1-27.2 19.4-11.5 5.2-25.6 7.7-42.3 7.7zm-43.8-98.3c-1.4 2.4-2.9 6.1-3.4 8.8h47.6 47.6c-.6-2.7-2-6.4-3.4-8.8-3.8-6.7-9.3-11.8-16.7-15.4-7.3-3.8-16.5-5.7-27.4-5.7-11.1 0-20.3 1.9-27.7 5.7-7.3 3.6-12.9 8.7-16.6 15.4z"
fill-rule="evenodd" />
<path
d="m896.2 195.4c6.5 11.4 16.1 20.5 28.7 27.4 12.7 6.7 28.1 10 46.1 10 16 0 30.1-2.8 42.4-8.3 12.2-5.5 22-13.2 29.2-23.1s11.4-21.1 12.7-33.6h-38.7c-1.5 8.4-6.1 15.4-14 21.1-7.8 5.7-18.4 8.6-31.6 8.6-9.8 0-18.1-1.8-25-5.4-6.9-3.8-12.1-8.7-15.7-14.8s-5.4-12.9-5.4-20.5c0-7.4 1.8-14.2 5.4-20.2 3.6-6.3 8.8-11.2 15.7-14.8s15.2-5.4 25-5.4c8.8 0 16.5 1.4 23 4.3 6.5 2.7 11.7 6.2 15.4 10.6 3.8 4.4 6.1 9.3 7.1 14.8h38.7c-1.3-12.7-5.6-24-12.7-33.6-7.2-9.9-16.9-17.6-29.2-23.1-12.2-5.7-26.4-8.6-42.4-8.6-18 0-33.3 3.4-46.1 10.3-12.6 6.7-22.1 15.8-28.7 27.4-6.5 11.6-9.8 24.4-9.8 38.5.1 13.9 3.4 26.8 9.9 38.4z" />
<path clip-rule="evenodd"
d="m1159.2 232.7c-18.6 0-34.5-3.3-47.5-10-13.1-6.8-22.9-16-29.6-27.4-6.5-11.6-9.8-24.5-9.8-38.8s3.3-27.1 9.8-38.5c6.7-11.6 16.6-20.7 29.6-27.4 13.1-6.8 28.9-10.3 47.5-10.3 18.5 0 34.2 3.4 47.3 10.3 13.1 6.7 22.9 15.8 29.4 27.4 6.7 11.4 10 24.2 10 38.5s-3.3 27.2-10 38.8c-6.5 11.4-16.3 20.5-29.4 27.4-13 6.7-28.8 10-47.3 10zm0-35.3c10.3 0 19-1.8 26.2-5.4 7.3-3.6 12.8-8.5 16.4-14.5 3.8-6.1 5.6-13 5.6-20.8 0-7.4-1.9-14.2-5.6-20.2-3.6-6.3-9.1-11.2-16.4-14.8-7.2-3.6-15.9-5.4-26.2-5.4-10.5 0-19.4 1.8-26.7 5.4-7.2 3.6-12.7 8.6-16.4 14.8-3.6 6.1-5.4 12.8-5.4 20.2 0 7.8 1.8 14.7 5.4 20.8 3.8 6.1 9.2 10.9 16.4 14.5 7.4 3.6 16.3 5.4 26.7 5.4z"
fill-rule="evenodd" />
<path
d="m1265.3 93.6v135.4h38.7v-71.9c0-12.2 2.8-21.7 8.3-28.5 5.6-6.8 13.1-10.3 22.5-10.3 6.4 0 11.8 1.5 16.4 4.6 4.7 3 8.3 7.5 10.8 13.4 2.6 5.7 3.9 12.6 3.9 20.8v71.9h38.5v-71.9c0-12.2 2.8-21.7 8.3-28.5 5.7-6.8 13.3-10.3 22.8-10.3 6.4 0 11.8 1.5 16.4 4.6 4.7 3 8.3 7.5 10.8 13.4 2.4 5.7 3.7 12.6 3.7 20.8v71.9h38.7v-82.1c0-14.1-2.2-26-6.6-35.9-4.2-10.1-10.3-17.7-18.1-22.8s-17.1-7.7-27.9-7.7c-13.1 0-23.8 3.5-32.1 10.6-8.2 6.8-14 17.1-17.4 30.8h-3.4c-1.1-7.8-3.8-14.7-7.8-20.8-4.1-6.3-9.6-11.2-16.4-14.8-6.7-3.8-14.7-5.7-24-5.7-12.7 0-23.1 3.4-31.1 10.3-8 6.7-13.7 16.5-17.1 29.7h-4.2l5.1-36.2z" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.5 KiB

View File

@@ -0,0 +1,12 @@
<svg width="1024" height="1024" viewBox="0 0 1024 1024" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_24_33)">
<path d="M1024 0H0V1024H1024V0Z" fill="black"/>
<path d="M724.985 682.919C707.73 733.33 673.15 775.984 627.397 803.291C581.645 830.598 527.687 840.787 475.128 832.044C422.568 823.301 374.814 796.194 340.365 755.546C305.916 714.898 287.006 663.347 287 610.064V499.814L366.121 532.867V610.019C366.114 630.798 370.555 651.337 379.145 670.256C387.735 689.176 400.276 706.037 415.925 719.707C418.895 722.294 421.978 724.814 425.161 727.166C448.518 744.554 476.563 754.518 505.655 755.763C506.645 755.763 507.601 755.842 508.58 755.864C509.559 755.887 510.83 755.864 511.955 755.864C513.08 755.864 514.205 755.864 515.33 755.864C516.455 755.864 517.265 755.864 518.255 755.763C547.336 754.515 575.371 744.56 598.726 727.188C601.899 724.837 604.981 722.328 607.963 719.741C628.519 701.761 643.619 678.375 651.545 652.241L724.985 682.919Z" fill="white"/>
<path d="M737 414V610.065C737 612.596 737 615.139 736.842 617.67L657.879 584.651V414C657.866 376.316 643.272 340.099 617.154 312.934C591.035 285.77 555.419 269.766 517.765 268.274C480.11 266.782 443.339 279.918 415.154 304.931C386.968 329.944 369.554 364.893 366.56 402.457C366.279 406.26 366.121 410.119 366.121 414V462.712L287 429.637V189H512C571.674 189 628.903 212.705 671.099 254.901C713.295 297.097 737 354.326 737 414Z" fill="white"/>
</g>
<defs>
<clipPath id="clip0_24_33">
<rect width="1024" height="1024" rx="200" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@@ -0,0 +1 @@
<svg viewBox="0 0 90 90" xmlns="http://www.w3.org/2000/svg"><g fill="none"><path d="M45.155.025c-.033.034-1.094.1-2.34.167-1.245.05-2.49.134-2.776.168-.27.05-1.077.167-1.767.267-3.282.468-7.49 1.656-10.738 3.043A45.529 45.529 0 0 0 3.787 27.014C1.867 31.28.52 36.462.117 41.027-.1 43.57 0 48.97.304 50.56c.033.167.117.736.168 1.237.084.753.522 2.793 1.027 4.766.05.184.134.585.185.87.05.3.151.552.219.552.067 0 .134.1.134.234 0 .518.943 3.093 1.111 2.993.1-.05.118-.017.067.067-.151.25.286 1.254.472 1.103.067-.083.084-.033.016.084-.084.134.085.72.421 1.421.572 1.238 2.541 4.816 2.844 5.184.101.117.489.686.859 1.271.64 1.003 2.827 3.78 3.787 4.833 6.547 7.04 14.39 11.655 23.293 13.729 1.161.267 2.474.535 2.911.602.455.05.993.133 1.178.184 2.188.418 11.075.418 12.74-.017.136-.05.523-.117.842-.167 2.794-.435 7.204-1.64 9.257-2.525.32-.15.74-.318.926-.385.185-.067 1.094-.485 2.02-.92 7.304-3.444 13.598-8.88 18.193-15.735 1.8-2.659 2.912-4.816 4.207-8.16.556-1.422 1.549-4.633 1.7-5.469.034-.234.135-.685.22-1.003.083-.318.201-.853.252-1.17.05-.318.117-.77.168-1.004.505-2.642.64-8.31.27-11.12-.203-1.555-.809-4.348-1.01-4.732-.068-.117-.455.953-.876 2.458-.404 1.455-.757 2.642-.774 2.625-.017-.016-.084-.485-.135-1.02-.185-1.923-.269-2.525-.673-4.515-.437-2.19-1.313-5.05-2.053-6.772-.572-1.304-1.767-3.512-1.902-3.512-.067 0-.118 1.305-.118 2.876-.05 8.78-1.144 16.455-3.231 22.558-1.094 3.228-3.333 8.01-4.965 10.652-3.905 6.271-9.863 11.187-16.763 13.846-1.464.552-4.746 1.472-5.975 1.656-4.948.769-8.87.685-13.33-.268-12.942-2.76-23.377-13.36-25.868-26.32-.387-1.99-.42-2.174-.555-3.997-.168-2.408-.084-5.802.202-7.124.034-.217.118-.685.168-1.02.05-.334.286-1.354.522-2.257.236-.92.438-1.773.471-1.906.354-1.505 2.44-5.987 3.67-7.943 2.558-4.014 6.479-7.927 10.586-10.552 3.786-2.408 9.054-4.33 13.784-5.017 1.211-.167 6.361-.217 7.657-.05 3.3.385 3.753.452 5.89.836 7.71 1.405 15.4 4.716 24.455 10.569 1.212.802 2.222 1.354 2.222 1.237 0-.334-1.633-3.06-2.66-4.448-1.834-2.508-4.291-5.033-6.832-7.023-.808-.652-1.448-1.187-1.38-1.187.05 0 .387.1.723.234 1.515.568 4.46 1.455 4.612 1.404.1-.033-.522-.769-1.397-1.622-4.208-4.197-9.678-7.441-15.905-9.43C56.465 1.63 53.587.91 52.325.726c-.37-.066-1.28-.2-2.02-.317-.757-.117-2.154-.234-3.113-.268-.976-.017-1.801-.067-1.868-.117-.05-.033-.135-.033-.169 0Z" fill="#B8D995"/><path d="m44.845 89.975.048-.012.296-.031.676-.048 1.32-.076 1.47-.073 1.167-.08.14-.015.195-.033.803-.122.768-.112c3.282-.468 7.49-1.656 10.738-3.043a45.525 45.525 0 0 0 23.747-23.344c1.92-4.265 3.266-9.448 3.67-14.013.023-.276.043-.585.06-.92l.027-.699.019-.751.01-.788c-.01-1.452-.079-2.806-.21-3.8l-.056-.396-.068-.432-.08-.456-.133-.708-.192-.926-.143-.634-.09-.372-.084-.319-.075-.254a1.629 1.629 0 0 0-.089-.236c-.012-.022-.035-.004-.066.05l-.054.104-.066.153-.119.314-.138.404-.154.483-.164.55-.606 2.13-.222.731-.056.16c-.002.003-.003.005-.004.004l-.014-.051-.021-.128-.041-.302-.045-.395-.116-1.16-.065-.567-.069-.521-.079-.516a28.33 28.33 0 0 0-.045-.267l-.106-.579-.207-1.049c-.437-2.19-1.313-5.05-2.053-6.772l-.142-.316-.245-.515-.178-.358-.368-.716-.27-.502-.248-.44-.144-.246-.124-.196c-.092-.141-.157-.223-.183-.223-.01 0-.018.024-.026.07l-.017.12-.015.173-.026.486-.023.822-.01.993v.212c-.051 8.78-1.145 16.455-3.232 22.558a44.95 44.95 0 0 1-1.008 2.655l-.403.954c-1.108 2.57-2.466 5.282-3.554 7.043-3.905 6.271-9.863 11.187-16.763 13.846l-.233.086-.536.184-.297.097-.638.2-.678.201-.346.1-.694.193-.34.091-.657.17-.603.144c-.38.087-.707.153-.953.19-4.767.74-8.58.69-12.841-.167l-.862-.122-.822-.132-.938-.164-.365-.065c-7.708-1.405-15.4-4.716-24.454-10.569l-.505-.327-.466-.29-.412-.244-.346-.191-.186-.095a3.307 3.307 0 0 0-.078-.036l-.125-.051c-.067-.023-.104-.025-.104-.003 0 .048.033.144.094.279l.109.229.145.277.175.318.309.536.35.58.374.6.382.59.25.373.243.35.228.316c1.72 2.351 3.987 4.718 6.358 6.644l.616.493.734.603.336.289.107.098c.055.054.078.083.062.083l-.072-.014-.14-.04-.185-.06-.214-.076-.274-.104-.536-.19-.59-.2-.823-.265-.993-.305-.833-.238-.369-.095-.174-.038-.106-.015a.08.08 0 0 0-.026.002c-.028.009 0 .072.074.178l.11.145.149.18.185.211.218.237.247.257.27.273.144.14c4.067 4.058 9.314 7.225 15.285 9.229l.62.203c.198.065.408.131.625.198l.673.2.702.198.714.191.356.092.696.173.662.155.61.133.538.106c.165.03.316.056.449.076l.584.095 1.436.222.245.035.58.068c.209.022.43.043.656.062l.68.052c.337.023.664.04.952.05l.53.014.745.033.327.025.153.018.092.019.021.009c.05.033.135.033.169 0Z" fill="#9FD3EE"/></g></svg>

After

Width:  |  Height:  |  Size: 4.4 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 9.5 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: 1.5 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 34 KiB

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg">
<circle cx="512" cy="512" r="512" style="fill:#178a9e"/>
<path d="M706 356.3v-.3c-.3-4.3-.6-9.3-.9-14.6-.6-10-1.3-20.8-1.9-29-1-5.7-2.4-10.8-4-15.4-10.2-22.6-30.1-33.5-51.1-38.7-9.6-1.7-21.3-2-33.8-2.3H493.7c-77.7 4.2-110.3 49.2-119.1 73.1-34 101.7-55.2 233.5-70.5 328.6-.3 1.9-.6 3.7-.9 5.5l-5 45.2c-.3 7.1.4 14.9 2.3 22.4 9.5 27.6 38.3 50.8 101.7 27.7 59.9-26 130.6-58.4 203.7-94.7 41.6-24 102.6-79.2 105.8-148.9-.5-51.6-2.2-105.8-5.7-158.6zm-96.3 38.2c0 6-4.9 10.9-10.9 10.9-36.3 0-65.6 29.4-65.6 65.6v40.2c0 67.5-54.7 122.1-122.1 122.1-5.9 0-10.6-4.8-10.6-10.6v-33.3c0-6 4.9-10.9 10.9-10.9 36.3 0 65.6-29.4 65.6-65.6v-40.2c0-67.4 54.7-122.1 122.1-122.1 5.9 0 10.6 4.8 10.6 10.6v33.3z" style="fill:#fff"/>
</svg>

After

Width:  |  Height:  |  Size: 934 B

View File

@@ -0,0 +1,113 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg3039"
version="1.1"
inkscape:version="0.48.2 r9819"
width="240.20215"
height="98.041267"
sodipodi:docname="U1_logo.svg">
<metadata
id="metadata3045">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs3043" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1022"
inkscape:window-height="529"
id="namedview3041"
showgrid="false"
showguides="true"
inkscape:guide-bbox="true"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:zoom="3.5580214"
inkscape:cx="188.39168"
inkscape:cy="46.745142"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-maximized="1"
inkscape:current-layer="svg3039" />
<path
style="fill:#dd4713;fill-opacity:1;stroke:none"
d="m 0,13.135439 0.31287126,55.797305 c 0,0 -0.29397798,23.453759 25.17115774,28.396822 14.646306,2.843004 42.347094,-3.749492 42.347094,-3.749492 l -0.220563,-80.503585 -22.276334,0 0,62.638417 -20.95299,0 0,-41.464863 -9.04287,0 10.586775,-21.394113 z"
id="path3049"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccsccccccccc" />
<g
id="g3898"
transform="scale(2.2196062,2.2196062)">
<path
d="m 47.937238,17.527712 c -0.49137,0.12284 -1.143956,0.253358 -1.95776,0.391552 -0.798468,0.138195 -1.727443,0.207292 -2.786929,0.207293 -0.921305,-10e-7 -1.696731,-0.130518 -2.32628,-0.391552 -0.629558,-0.27639 -1.136272,-0.660264 -1.520143,-1.151624 -0.383877,-0.491358 -0.660267,-1.067169 -0.829169,-1.727435 -0.168907,-0.675616 -0.253359,-1.420332 -0.253358,-2.23415 l 0,-6.7254823 2.14202,0 0,6.2648323 c -3e-6,1.458728 0.230321,2.502865 0.690975,3.132417 0.460644,0.629556 1.23607,0.944333 2.326279,0.944331 0.230318,2e-6 0.46832,-0.0077 0.714007,-0.02303 0.245672,-0.01535 0.475996,-0.03071 0.690974,-0.04606 0.214961,-0.03071 0.406898,-0.05374 0.575812,-0.0691 0.184251,-0.03071 0.314768,-0.06142 0.391552,-0.09213 l 0,-10.1112553 2.14202,0 0,11.6313983"
style="font-size:23.03247261px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#dd4713;fill-opacity:1;stroke:none;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
id="path3871"
inkscape:connector-curvature="0" />
<path
d="m 53.207382,6.4260606 c 0.26103,-0.1688932 0.652582,-0.3454753 1.174656,-0.5297469 0.537419,-0.1842476 1.151617,-0.2763774 1.842598,-0.2763897 0.859871,1.23e-5 1.619942,0.153562 2.280214,0.4606495 0.67561,0.3071111 1.243743,0.7370502 1.704403,1.2898185 0.460638,0.5527892 0.806125,1.2130528 1.036462,1.9807926 0.245667,0.7677564 0.368507,1.6122804 0.368519,2.5335724 -1.2e-5,0.967368 -0.145884,1.842602 -0.437617,2.625701 -0.276401,0.767752 -0.67563,1.420338 -1.197688,1.957761 -0.52208,0.537425 -1.151634,0.952009 -1.888663,1.243753 -0.737047,0.291745 -1.566215,0.437617 -2.487507,0.437617 -0.998079,0 -1.88099,-0.0691 -2.648734,-0.207292 -0.767752,-0.138195 -1.397306,-0.27639 -1.888663,-0.414585 l 0,-17.15919172 2.14202,-0.36851956283681 0,6.42605988283681 m 0,9.5815084 c 0.214965,0.06142 0.514387,0.122842 0.898266,0.18426 0.399224,0.04607 0.890583,0.0691 1.474078,0.0691 1.151617,2e-6 2.072915,-0.376195 2.763897,-1.128591 0.690965,-0.767745 1.036451,-1.85027 1.036461,-3.247578 -10e-6,-0.614193 -0.06143,-1.190004 -0.184259,-1.727436 C 59.072975,9.619905 58.87336,9.159256 58.59698,8.7753728 58.320582,8.3761528 57.95974,8.0690534 57.514454,7.8540739 57.084507,7.6237594 56.562438,7.5085972 55.948246,7.5085868 c -0.583495,1.04e-5 -1.120919,0.099818 -1.612273,0.2994221 -0.491364,0.1996247 -0.867561,0.4069167 -1.128591,0.6218768 l 0,7.5776833"
style="font-size:23.03247261px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#dd4713;fill-opacity:1;stroke:none;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
id="path3873"
inkscape:connector-curvature="0" />
<path
d="m 73.905311,17.527712 c -0.49137,0.12284 -1.143957,0.253358 -1.95776,0.391552 -0.798468,0.138195 -1.727443,0.207292 -2.78693,0.207293 -0.921304,-10e-7 -1.69673,-0.130518 -2.326279,-0.391552 -0.629558,-0.27639 -1.136272,-0.660264 -1.520143,-1.151624 -0.383877,-0.491358 -0.660267,-1.067169 -0.829169,-1.727435 -0.168907,-0.675616 -0.253359,-1.420332 -0.253358,-2.23415 l 0,-6.7254823 2.14202,0 0,6.2648323 c -4e-6,1.458728 0.230321,2.502865 0.690974,3.132417 0.460645,0.629556 1.236071,0.944333 2.32628,0.944331 0.230318,2e-6 0.46832,-0.0077 0.714007,-0.02303 0.245672,-0.01535 0.475996,-0.03071 0.690974,-0.04606 0.214961,-0.03071 0.406898,-0.05374 0.575812,-0.0691 0.184251,-0.03071 0.314768,-0.06142 0.391552,-0.09213 l 0,-10.1112553 2.14202,0 0,11.6313983"
style="font-size:23.03247261px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#dd4713;fill-opacity:1;stroke:none;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
id="path3875"
inkscape:connector-curvature="0" />
<path
d="m 77.314487,6.2418008 c 0.491357,-0.1228281 1.143943,-0.2533453 1.95776,-0.391552 0.81381,-0.1381827 1.750463,-0.2072801 2.809962,-0.2072923 0.952001,1.22e-5 1.742782,0.1382069 2.372345,0.4145845 0.629544,0.2610463 1.128581,0.6372429 1.497111,1.1285912 0.383863,0.4760146 0.652575,1.0518259 0.806136,1.7274354 0.153538,0.6756275 0.230313,1.4203434 0.230325,2.2341494 l 0,6.725482 -2.14202,0 0,-6.264832 c -1e-5,-0.737032 -0.05375,-1.366586 -0.161227,-1.8886628 C 84.59274,9.1976435 84.431512,8.7753819 84.201197,8.4529182 83.970863,8.1304733 83.663764,7.9001488 83.279898,7.761944 82.896016,7.6084044 82.420012,7.5316296 81.851884,7.5316193 c -0.23033,1.03e-5 -0.468332,0.00769 -0.714006,0.023032 -0.245685,0.015365 -0.483687,0.038398 -0.714007,0.069097 -0.214974,0.015365 -0.414589,0.038398 -0.598844,0.069097 -0.168909,0.03072 -0.291749,0.053752 -0.36852,0.069097 l 0,10.1112547 -2.14202,0 0,-11.6313979"
style="font-size:23.03247261px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#dd4713;fill-opacity:1;stroke:none;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
id="path3877"
inkscape:connector-curvature="0" />
<path
d="m 91.700827,5.8963137 4.537397,0 0,1.7965329 -4.537397,0 0,5.5277934 c -3e-6,0.598848 0.04606,1.097885 0.138195,1.497111 0.09213,0.383877 0.230321,0.690976 0.414585,0.921299 0.184255,0.214971 0.414579,0.368521 0.690974,0.460649 0.276384,0.09213 0.598838,0.138197 0.967364,0.138195 0.644902,2e-6 1.159294,-0.0691 1.543175,-0.207292 0.399222,-0.153548 0.675611,-0.261033 0.829169,-0.322455 l 0.414585,1.7735 c -0.214978,0.107486 -0.591175,0.238003 -1.128591,0.391552 -0.537432,0.168905 -1.15163,0.253357 -1.842598,0.253358 -0.813819,-10e-7 -1.489438,-0.09981 -2.026858,-0.299422 -0.522072,-0.21497 -0.944334,-0.529747 -1.266786,-0.944332 -0.322456,-0.414583 -0.552781,-0.921297 -0.690974,-1.520143 -0.122841,-0.614196 -0.184261,-1.320525 -0.18426,-2.118988 l 0,-10.6870668 2.14202,-0.3685196 0,3.7082281"
style="font-size:23.03247261px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#dd4713;fill-opacity:1;stroke:none;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
id="path3879"
inkscape:connector-curvature="0" />
<path
d="m 108.21836,17.527712 c -0.49137,0.12284 -1.14395,0.253358 -1.95776,0.391552 -0.79847,0.138195 -1.72744,0.207292 -2.78693,0.207293 -0.9213,-10e-7 -1.69673,-0.130518 -2.32628,-0.391552 -0.62955,-0.27639 -1.13627,-0.660264 -1.52014,-1.151624 -0.383877,-0.491358 -0.660267,-1.067169 -0.829169,-1.727435 -0.168907,-0.675616 -0.253359,-1.420332 -0.253357,-2.23415 l 0,-6.7254823 2.142016,0 0,6.2648323 c 0,1.458728 0.23032,2.502865 0.69098,3.132417 0.46064,0.629556 1.23607,0.944333 2.32628,0.944331 0.23032,2e-6 0.46832,-0.0077 0.714,-0.02303 0.24568,-0.01535 0.476,-0.03071 0.69098,-0.04606 0.21496,-0.03071 0.4069,-0.05374 0.57581,-0.0691 0.18425,-0.03071 0.31477,-0.06142 0.39155,-0.09213 l 0,-10.1112553 2.14202,0 0,11.6313983"
style="font-size:23.03247261px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#dd4713;fill-opacity:1;stroke:none;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
id="path3881"
inkscape:connector-curvature="0" />
<path
d="m 48.692644,28.027864 c -1.2e-5,0.952013 -0.138207,1.811892 -0.414584,2.579636 -0.276402,0.767752 -0.667953,1.428016 -1.174656,1.980793 -0.49137,0.55278 -1.082536,0.982719 -1.773501,1.289819 -0.690982,0.291744 -1.443376,0.437616 -2.257182,0.437617 -0.81382,-10e-7 -1.566214,-0.145873 -2.257183,-0.437617 -0.690978,-0.3071 -1.289821,-0.737039 -1.796532,-1.289819 -0.491362,-0.552777 -0.875236,-1.213041 -1.151624,-1.980793 -0.276391,-0.767744 -0.414586,-1.627623 -0.414585,-2.579636 -10e-7,-0.936647 0.138194,-1.788848 0.414585,-2.556605 0.276388,-0.783095 0.660262,-1.451036 1.151624,-2.003825 0.506711,-0.552768 1.105554,-0.97503 1.796532,-1.266786 0.690969,-0.307088 1.443363,-0.460637 2.257183,-0.46065 0.813806,1.3e-5 1.5662,0.153562 2.257182,0.46065 0.690965,0.291756 1.282131,0.714018 1.773501,1.266786 0.506703,0.552789 0.898254,1.22073 1.174656,2.003825 0.276377,0.767757 0.414572,1.619958 0.414584,2.556605 m -2.23415,0 c -1e-5,-1.351232 -0.307109,-2.418402 -0.921299,-3.201514 -0.598853,-0.798449 -1.420343,-1.197678 -2.464474,-1.197689 -1.044145,1.1e-5 -1.873313,0.39924 -2.487507,1.197689 -0.598848,0.783112 -0.89827,1.850282 -0.898267,3.201514 -3e-6,1.351243 0.299419,2.42609 0.898267,3.224546 0.614194,0.783106 1.443362,1.174657 2.487507,1.174656 1.044131,10e-7 1.865621,-0.39155 2.464474,-1.174656 0.61419,-0.798456 0.921289,-1.873303 0.921299,-3.224546"
style="font-size:23.03247261px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#333333;fill-opacity:1;stroke:none;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
id="path3883"
inkscape:connector-curvature="0" />
<path
d="m 51.144189,22.384908 c 0.491357,-0.122828 1.143943,-0.253346 1.95776,-0.391552 0.813809,-0.138183 1.750462,-0.20728 2.809962,-0.207293 0.952001,1.3e-5 1.742782,0.138207 2.372344,0.414585 0.629545,0.261046 1.128581,0.637243 1.497111,1.128591 0.383864,0.476015 0.652576,1.051826 0.806136,1.727436 0.153539,0.675627 0.230314,1.420343 0.230325,2.234149 l 0,6.725482 -2.14202,0 0,-6.264832 c -9e-6,-0.737032 -0.05375,-1.366586 -0.161227,-1.888663 -0.09214,-0.522061 -0.253366,-0.944322 -0.483682,-1.266786 -0.230333,-0.322445 -0.537433,-0.552769 -0.921299,-0.690974 -0.383882,-0.15354 -0.859886,-0.230314 -1.428013,-0.230325 -0.230331,1.1e-5 -0.468333,0.0077 -0.714007,0.02303 -0.245685,0.01536 -0.483687,0.0384 -0.714006,0.0691 -0.214975,0.01536 -0.41459,0.0384 -0.598845,0.0691 -0.168909,0.03072 -0.291748,0.05375 -0.368519,0.0691 l 0,10.111255 -2.14202,0 0,-11.631398"
style="font-size:23.03247261px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#333333;fill-opacity:1;stroke:none;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
id="path3885"
inkscape:connector-curvature="0" />
<path
d="m 63.139815,28.050896 c -2e-6,-1.059487 0.153548,-1.980785 0.460649,-2.763897 0.307098,-0.798449 0.714004,-1.458713 1.220721,-1.980792 0.506711,-0.522059 1.0902,-0.91361 1.750468,-1.174656 0.660259,-0.261023 1.335877,-0.39154 2.026858,-0.391553 1.612264,1.3e-5 2.848339,0.506727 3.708228,1.520144 0.859867,0.998083 1.289806,2.525902 1.289818,4.583462 -1.2e-5,0.09214 -1.2e-5,0.214975 0,0.368519 -1.2e-5,0.138201 -0.0077,0.268718 -0.02303,0.391552 l -8.199561,0 c 0.09213,1.243758 0.452969,2.188088 1.082527,2.832994 0.629549,0.644912 1.612267,0.967366 2.948156,0.967364 0.752386,2e-6 1.38194,-0.06142 1.888663,-0.184259 0.522059,-0.138193 0.913611,-0.268711 1.174656,-0.391552 l 0.299422,1.796532 c -0.261045,0.138195 -0.721694,0.284068 -1.381948,0.437617 -0.644918,0.15355 -1.381957,0.230325 -2.211118,0.230325 -1.044145,0 -1.950088,-0.15355 -2.717831,-0.460649 -0.752398,-0.322454 -1.374274,-0.760071 -1.865631,-1.312851 -0.491361,-0.552778 -0.85988,-1.205364 -1.105558,-1.95776 -0.230326,-0.767745 -0.345489,-1.604591 -0.345487,-2.51054 m 8.222592,-1.174656 c 0.01535,-0.967356 -0.230334,-1.758137 -0.737039,-2.372345 -0.491367,-0.629544 -1.174663,-0.944321 -2.04989,-0.944331 -0.491365,10e-6 -0.928982,0.09982 -1.312851,0.299422 -0.368524,0.18427 -0.683301,0.429949 -0.944331,0.737039 -0.261039,0.307109 -0.468331,0.660273 -0.621877,1.059494 -0.138198,0.399237 -0.230328,0.806144 -0.27639,1.220721 l 5.942378,0"
style="font-size:23.03247261px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#333333;fill-opacity:1;stroke:none;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
id="path3887"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 14 KiB

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="300px" height="260px" style="shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd; clip-rule:evenodd" xmlns:xlink="http://www.w3.org/1999/xlink">
<g><path style="opacity:0.989" fill="#6262f1" d="M 81.5,-0.5 C 112.5,-0.5 143.5,-0.5 174.5,-0.5C 169.154,3.68235 164.654,8.68235 161,14.5C 138.96,52.7486 116.793,90.9152 94.5,129C 111.174,158.016 127.84,187.016 144.5,216C 139.386,225.729 133.886,235.229 128,244.5C 121.475,251.672 113.642,256.672 104.5,259.5C 97.5,259.5 90.5,259.5 83.5,259.5C 73.8126,256.222 65.6459,250.556 59,242.5C 38.6208,208.399 18.7875,174.065 -0.5,139.5C -0.5,132.833 -0.5,126.167 -0.5,119.5C 19.3711,84.4302 39.5378,49.4302 60,14.5C 65.987,7.65895 73.1537,2.65895 81.5,-0.5 Z"/></g>
<g><path style="opacity:0.989" fill="#6262f1" d="M 193.5,-0.5 C 200.833,-0.5 208.167,-0.5 215.5,-0.5C 225.781,2.8978 234.281,8.8978 241,17.5C 260.794,51.4318 280.294,85.4318 299.5,119.5C 299.5,125.833 299.5,132.167 299.5,138.5C 279.641,173.869 259.475,209.203 239,244.5C 232.912,251.778 225.412,256.778 216.5,259.5C 185.833,259.5 155.167,259.5 124.5,259.5C 129.821,254.339 134.654,248.672 139,242.5C 160.081,205.337 181.414,168.337 203,131.5C 203.635,129.365 203.301,127.365 202,125.5C 185.781,98.2288 169.947,70.7288 154.5,43C 159.614,33.2707 165.114,23.7707 171,14.5C 177.343,7.59119 184.843,2.59119 193.5,-0.5 Z"/></g>
</svg>

After

Width:  |  Height:  |  Size: 1.6 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

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

@@ -42,3 +42,7 @@ class InvalidStateError extends AssertionError {
class SrpSetupNotCompleteError extends Error {}
class AuthenticatorKeyNotFound extends Error {}
class PassKeySessionNotVerifiedError extends Error {}
class PassKeySessionExpiredError extends Error {}

View File

@@ -20,6 +20,8 @@
"codeIssuerHint": "Aussteller",
"codeSecretKeyHint": "Geheimer Schlüssel",
"codeAccountHint": "Konto (you@domain.com)",
"codeTagHint": "Tag",
"accountKeyType": "Art des Keys",
"sessionExpired": "Sitzung abgelaufen",
"@sessionExpired": {
"description": "Title of the dialog when the users current session is invalid/expired"
@@ -156,6 +158,7 @@
}
}
},
"invalidQRCode": "Ungültiger QR-Code",
"noRecoveryKeyTitle": "Kein Wiederherstellungsschlüssel?",
"enterEmailHint": "Geben Sie Ihre E-Mail Adresse ein",
"invalidEmailTitle": "Ungültige E-Mail Adresse",
@@ -420,5 +423,18 @@
"invalidEndpoint": "Ungültiger Endpunkt",
"invalidEndpointMessage": "Der eingegebene Endpunkt ist ungültig. Bitte geben Sie einen gültigen Endpunkt ein und versuchen Sie es erneut.",
"endpointUpdatedMessage": "Endpunkt erfolgreich aktualisiert",
"customEndpoint": "Mit {endpoint} verbunden"
"customEndpoint": "Mit {endpoint} verbunden",
"pinText": "Anpinnen",
"unpinText": "Lösen",
"pinnedCodeMessage": "{code} wurde angepinnt",
"unpinnedCodeMessage": "{code} wurde Losgelöst",
"tags": "Tags",
"createNewTag": "Neuen Tag erstellen",
"tag": "Tag",
"create": "Erstellen",
"editTag": "Tag bearbeiten",
"deleteTagTitle": "Tag löschen?",
"deleteTagMessage": "Sind Sie sicher, dass Sie diesen Code löschen wollen? Diese Aktion ist unumkehrbar.",
"somethingWentWrongParsingCode": "Wir konnten {x} Codes nicht parsen.",
"updateNotAvailable": "Update ist nicht verfügbar"
}

View File

@@ -269,6 +269,7 @@
"privacy": "Privacy",
"terms": "Terms",
"checkForUpdates": "Check for updates",
"checkStatus": "Check status",
"downloadUpdate": "Download",
"criticalUpdateAvailable": "Critical update available",
"updateAvailable": "Update available",
@@ -417,6 +418,9 @@
"waitingForBrowserRequest": "Waiting for browser request...",
"waitingForVerification": "Waiting for verification...",
"passkey": "Passkey",
"passKeyPendingVerification": "Verification is still pending",
"loginSessionExpired" : "Session expired",
"loginSessionExpiredDetails": "Your session has expired. Please login again.",
"developerSettingsWarning":"Are you sure that you want to modify Developer settings?",
"developerSettings": "Developer settings",
"serverEndpoint": "Server endpoint",

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

@@ -0,0 +1,39 @@
{
"setupFirstAccount": "Siapkan akun pertama kamu",
"importScanQrCode": "Pindai Kode QR",
"reportABug": "Laporkan bug",
"rateUsOnStore": "Nilai kami di {storeName}",
"blog": "Blog",
"welcomeBack": "Selamat datang kembali!",
"supportDiscount": "Gunakan kode kupon \"AUTH\" untuk mendapatkan potongan 10% pada tahun pertamamu",
"data": "Data",
"ok": "Oke",
"cancel": "Batal",
"email": "Email",
"support": "Dukungan",
"general": "Umum",
"settings": "Pengaturan",
"suggestFeatures": "Sarankan fitur",
"faq": "Tanya Jawab Umum",
"scan": "Pindai",
"scanACode": "Pindai kode",
"createNewAccount": "Buat akun baru",
"confirmPassword": "Konfirmasi sandi",
"selectLanguage": "Pilih bahasa",
"language": "Bahasa",
"social": "Sosial",
"security": "Keamanan",
"searchHint": "Cari...",
"scanAQrCode": "Pindai kode QR",
"createAccount": "Buat akun",
"password": "Sandi",
"signUpTerms": "Saya menyetujui <u-terms>ketentuan layanan</u-terms> dan <u-policy>kebijakan privasi</u-policy> Ente",
"ackPasswordLostWarning": "Saya mengerti bahwa jika saya lupa sandi saya, data saya bisa hilang karena <underline>dienkripsi secara end-to-end</underline>.",
"loginTerms": "Dengan mengklik masuk akun, saya menyetujui <u-terms>ketentuan layanan</u-terms> dan <u-policy>kebijakan privasi</u-policy> Ente",
"warning": "Peringatan",
"androidCancelButton": "Batal",
"@androidCancelButton": {
"description": "Message showed on a button that the user can click to leave the current dialog. It is used on Android side. Maximum 30 characters."
},
"hearUsWhereTitle": "Dari mana Anda menemukan Ente? (opsional)"
}

View File

@@ -20,6 +20,8 @@
"codeIssuerHint": "Emittente",
"codeSecretKeyHint": "Codice segreto",
"codeAccountHint": "Account (username@dominio.it)",
"codeTagHint": "Tag",
"accountKeyType": "Tipo di chiave",
"sessionExpired": "Sessione scaduta",
"@sessionExpired": {
"description": "Title of the dialog when the users current session is invalid/expired"
@@ -77,16 +79,19 @@
"data": "Dati",
"importCodes": "Importa codici",
"importTypePlainText": "Testo in chiaro",
"importTypeEnteEncrypted": "Esportazione Ente criptata",
"passwordForDecryptingExport": "Password per decriptare il file esportato",
"passwordEmptyError": "La password è obbligatoria",
"importFromApp": "Importa codici da {appName}",
"importGoogleAuthGuide": "Esporta i tuoi account da Google Authenticator in un codice QR utilizzando l'opzione \"Trasferisci Account\". Quindi, usando un altro dispositivo, scansiona il codice QR.\n\nSuggerimento: Puoi usare la webcam del tuo computer portatile per scattare una foto del codice QR.",
"importSelectJsonFile": "Seleziona file JSON",
"importSelectAppExport": "Seleziona il file di esportazione {appName}",
"importEnteEncGuide": "Seleziona il file JSON criptato esportato da Ente",
"importRaivoGuide": "Utilizza l'opzione \"Esporta i codici OTP in archivio Zip\" nelle impostazioni di Raivo.\n\nEstrai il file zip e importa il file JSON.",
"importBitwardenGuide": "Utilizzare l'opzione \"Esporta vault\" all'interno di Bitwarden Tools e importa il file JSON non crittografato.",
"importAegisGuide": "Usa l'opzione \"Esporta la cassaforte\" nelle impostazioni di Aegis.\n\nSe la tua cassaforte è criptata, dovrai inserire la password della cassaforte per decriptarla.",
"import2FasGuide": "Utilizza l'opzione \"Impostazioni->Backup -Export\" in 2FAS.\n\nSe il backup è crittografato, è necessario inserire la password per decriptare il backup",
"importLastpassGuide": "Usa l'opzione \"Trasferisci account\" all'interno delle impostazioni di Lastpass Authenticator e premi \"Esporta account su file\". Importa il JSON scaricato.",
"exportCodes": "Esporta codici",
"importLabel": "Importa",
"importInstruction": "Per favore seleziona un file contenente una lista dei tuoi codici nel seguente formato",
@@ -111,18 +116,22 @@
"copied": "Copiato",
"pleaseTryAgain": "Per favore riprova",
"existingUser": "Accedi",
"newUser": "Nuovo utente",
"delete": "Cancella",
"enterYourPasswordHint": "Inserisci la tua password",
"forgotPassword": "Password dimenticata",
"oops": "Oops",
"suggestFeatures": "Suggerisci funzionalità",
"faq": "FAQ",
"faq_q_1": "Quanto è sicuro Auth?",
"faq_a_1": "Tutti i codici di cui fai il backup tramite Auth sono memorizzati con crittografia end-to-end. Ciò significa che solo tu puoi accedere ai tuoi codici. Le nostre app sono open source e la nostra crittografia è stata verificata esternamente.",
"faq_q_2": "Posso accedere ai miei codici sul desktop?",
"faq_a_2": "Puoi accedere ai tuoi codici sul web @ auth.ente.io.",
"faq_q_3": "Come posso cancellare i codici?",
"faq_a_3": "Puoi eliminare un codice scorrendo il dito a sinistra sul codice in questione.",
"faq_q_4": "Come posso supportare questo progetto?",
"faq_a_4": "Puoi supportare lo sviluppo di questo progetto abbonandoti alla nostra app Photos @ ente.io.",
"faq_q_5": "Come posso abilitare il blocco FaceID in Auth",
"faq_a_5": "Puoi abilitare il blocco FaceID in Impostazioni → Sicurezza → Schermata di blocco.",
"somethingWentWrongMessage": "Qualcosa è andato storto, per favore riprova",
"leaveFamily": "Abbandona il piano famiglia",
@@ -136,6 +145,8 @@
"enterCodeHint": "Inserisci il codice di 6 cifre dalla tua app di autenticazione",
"lostDeviceTitle": "Dispositivo perso?",
"twoFactorAuthTitle": "Autenticazione a due fattori",
"passkeyAuthTitle": "Verifica della passkey",
"verifyPasskey": "Verifica passkey",
"recoverAccount": "Recupera account",
"enterRecoveryKeyHint": "Inserisci la tua chiave di recupero",
"recover": "Recupera",
@@ -147,6 +158,7 @@
}
}
},
"invalidQRCode": "Codice QR non valido",
"noRecoveryKeyTitle": "Nessuna chiave di recupero?",
"enterEmailHint": "Inserisci il tuo indirizzo email",
"invalidEmailTitle": "Indirizzo email non valido",
@@ -190,6 +202,9 @@
"doThisLater": "Fallo più tardi",
"saveKey": "Salva chiave",
"save": "Salva",
"send": "Invia",
"saveOrSendDescription": "Vuoi salvarlo nel tuo spazio di archiviazione (cartella Download per impostazione predefinita) o inviarlo ad altre applicazioni?",
"saveOnlyDescription": "Vuoi salvarlo nel tuo spazio di archiviazione (cartella Download per impostazione predefinita)?",
"back": "Indietro",
"createAccount": "Crea account",
"passwordStrength": "Forza password: {passwordStrengthValue}",
@@ -337,6 +352,7 @@
"deleteCodeAuthMessage": "Autenticarsi per cancellare il codice",
"showQRAuthMessage": "Autenticarsi per mostrare il codice QR",
"confirmAccountDeleteTitle": "Conferma l'eliminazione dell'account",
"confirmAccountDeleteMessage": "Questo account è collegato ad altre app di Ente, se ne utilizzi.\n\nI tuoi dati caricati, su tutte le app di Ente, saranno pianificati per la cancellazione e il tuo account verrà eliminato definitivamente.",
"androidBiometricHint": "Verifica l'identità",
"@androidBiometricHint": {
"description": "Hint message advising the user how to authenticate with biometrics. It is used on Android side. Maximum 60 characters."
@@ -397,5 +413,28 @@
"doNotSignOut": "Non uscire",
"hearUsWhereTitle": "Dove hai sentito parlare di Ente? (opzionale)",
"hearUsExplanation": "Non teniamo traccia delle installazioni dell'app. Sarebbe utile se ci dicessi dove ci hai trovato!",
"passkey": "Passkey"
"recoveryKeySaved": "Chiave di recupero salvata nella cartella Download!",
"waitingForBrowserRequest": "In attesa della richiesta del browser...",
"waitingForVerification": "In attesa di verifica...",
"passkey": "Passkey",
"developerSettingsWarning": "Siete sicuri di voler modificare le impostazioni sviluppatore?",
"developerSettings": "Impostazioni sviluppatore",
"serverEndpoint": "Endpoint del server",
"invalidEndpoint": "Endpoint invalido",
"invalidEndpointMessage": "Spiacenti, l'endpoint inserito non è valido. Inserisci un endpoint valido e riprova.",
"endpointUpdatedMessage": "Endpoint aggiornato con successo",
"customEndpoint": "Connesso a {endpoint}",
"pinText": "Fissa",
"unpinText": "Sgancia",
"pinnedCodeMessage": "{code} è stato fissato",
"unpinnedCodeMessage": "{code} è stato sganciato",
"tags": "Tag",
"createNewTag": "Crea un nuovo tag",
"tag": "Tag",
"create": "Crea",
"editTag": "Modifica tag",
"deleteTagTitle": "Eliminare il tag?",
"deleteTagMessage": "Sei sicuro di voler eliminare questo tag? Questa azione è irreversibile.",
"somethingWentWrongParsingCode": "Non siamo riusciti ad analizzare i codici {x}.",
"updateNotAvailable": "Aggiornamento non disponibile"
}

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

@@ -20,6 +20,8 @@
"codeIssuerHint": "Uitgever",
"codeSecretKeyHint": "Geheime sleutel",
"codeAccountHint": "Account (jij@domein.nl)",
"codeTagHint": "Label",
"accountKeyType": "Type sleutel",
"sessionExpired": "Sessie verlopen",
"@sessionExpired": {
"description": "Title of the dialog when the users current session is invalid/expired"
@@ -156,6 +158,7 @@
}
}
},
"invalidQRCode": "Ongeldige QR-code",
"noRecoveryKeyTitle": "Geen herstelsleutel?",
"enterEmailHint": "Voer je e-mailadres in",
"invalidEmailTitle": "Ongeldig e-mailadres",
@@ -420,5 +423,18 @@
"invalidEndpoint": "Ongeldig eindpunt",
"invalidEndpointMessage": "Sorry, het eindpunt dat u hebt ingevoerd is ongeldig. Voer een geldig eindpunt in en probeer het opnieuw.",
"endpointUpdatedMessage": "Eindpunt met succes bijgewerkt",
"customEndpoint": "Verbonden met {endpoint}"
"customEndpoint": "Verbonden met {endpoint}",
"pinText": "Vastzetten",
"unpinText": "Losmaken",
"pinnedCodeMessage": "{code} is vastgezet",
"unpinnedCodeMessage": "{code} is losgemaakt",
"tags": "Labels",
"createNewTag": "Nieuw label maken",
"tag": "Label",
"create": "Creëren",
"editTag": "Bewerk label",
"deleteTagTitle": "Label verwijderen?",
"deleteTagMessage": "Weet je zeker dat je deze label wilt verwijderen? Deze actie is onomkeerbaar.",
"somethingWentWrongParsingCode": "We konden {x} codes niet verwerken.",
"updateNotAvailable": "Update niet beschikbaar"
}

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",
@@ -19,23 +19,25 @@
"pleaseVerifyDetails": "Por favor, verifique os detalhes e tente novamente",
"codeIssuerHint": "Emissor",
"codeSecretKeyHint": "Chave secreta",
"codeAccountHint": "Conta (voce@dominio.com)",
"codeAccountHint": "Conta (você@domínio.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"
},
"pleaseLoginAgain": "Por favor, faça login novamente",
"loggingOut": "Desconectando...",
"loggingOut": "Saindo...",
"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,10 +48,10 @@
},
"copyEmailAction": "Copiar e-mail",
"exportLogsAction": "Exportar logs",
"reportABug": "Reportar um problema",
"reportABug": "Informar um problema",
"crashAndErrorReporting": "Reporte de erros e falhas",
"reportBug": "Reportar problema",
"emailUsMessage": "Por favor, envie um e-mail para {email}",
"reportBug": "Informar problema",
"emailUsMessage": "Envie um e-mail para {email}",
"@emailUsMessage": {
"placeholders": {
"email": {
@@ -57,12 +59,12 @@
}
}
},
"contactSupport": "Falar com o suporte",
"contactSupport": "Falar com o Suporte",
"rateUsOnStore": "Avalie-nos na {storeName}",
"blog": "Blog",
"merchandise": "Produtos",
"verifyPassword": "Verificar senha",
"pleaseWait": "Por favor, aguarde...",
"pleaseWait": "Aguarde...",
"generatingEncryptionKeysTitle": "Gerando chaves de criptografia...",
"recreatePassword": "Recriar senha",
"recreatePasswordMessage": "O dispositivo atual não é poderoso o suficiente para verificar sua senha, mas podemos regenerar de uma forma que funcione com todos os dispositivos.\n\nPor favor, faça o login usando sua chave de recuperação e recrie sua senha (você pode usar o mesmo novamente se desejar).",
@@ -79,10 +81,10 @@
"importTypePlainText": "Texto simples",
"importTypeEnteEncrypted": "Exportação Ente criptografada",
"passwordForDecryptingExport": "Senha para descriptografar a exportação",
"passwordEmptyError": "O campo senha não pode estar vazio",
"passwordEmptyError": "A senha não pode estar vazia",
"importFromApp": "Importar códigos do {appName}",
"importGoogleAuthGuide": "Exporte suas contas do Google Authenticator para um QR code usando a opção \"Transferir contas\". Então, usando outro dispositivo, escaneie o QR code.\n\nDica: Você pode usar a câmera do seu notebook para fotografar o QR code.",
"importSelectJsonFile": "Selecione o arquivo JSON",
"importSelectJsonFile": "Selecionar arquivo JSON",
"importSelectAppExport": "Selecione o arquivo de exportação do aplicativo {appName}",
"importEnteEncGuide": "Selecione o arquivo JSON criptografado exportado do Ente",
"importRaivoGuide": "Use a opção \"Exportar OTPs para arquivo Zip\" nas configurações do Raivo.\n\nExtraia o arquivo zip e importe o arquivo JSON.",
@@ -90,7 +92,7 @@
"importAegisGuide": "Use a opção \"Exportar cofre\" nas Configurações do Aegis.\n\nSe o seu cofre estiver criptografado, você precisará inserir a senha do cofre para descriptografá-lo.",
"import2FasGuide": "Use a opção \"Configurações->Exportar cópia de segurança\" no aplicativo 2FAS.\n\nSe a cópia de segurança estiver criptografada, será necessário inserir a senha para descriptografá-la",
"importLastpassGuide": "Use a opção \"Transferir contas\" nas configurações do LastPass Authenticator e pressione \"Exportar contas para arquivo\". Importe o arquivo JSON baixado.",
"exportCodes": "Exportar Códigos",
"exportCodes": "Exportar códigos",
"importLabel": "Importar",
"importInstruction": "Por favor, selecione um arquivo que contenha uma lista de códigos no seguinte formato",
"importCodeDelimiterInfo": "Os códigos podem ser separados por uma vírgula ou uma nova linha",
@@ -103,23 +105,23 @@
"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",
"pleaseTryAgain": "Tente de novo",
"existingUser": "Usuário existente",
"newUser": "Novo no Ente",
"delete": "Excluir",
"enterYourPasswordHint": "Insira sua senha",
"forgotPassword": "Esqueci a senha",
"oops": "Oops",
"suggestFeatures": "Sugerir funcionalidades",
"oops": "Opa",
"suggestFeatures": "Sugerir recursos",
"faq": "Perguntas frequentes",
"faq_q_1": "Quão seguro é o Auth?",
"faq_a_1": "Todos os códigos que você faz backup via Auth são armazenados criptografados de ponta a ponta. Isso significa que somente você pode acessar seus códigos. Nossos aplicativos são de código aberto e nossa criptografia foi auditada externamente.",
@@ -137,16 +139,16 @@
"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",
"lostDeviceTitle": "Perdeu seu dispositivo?",
"lostDeviceTitle": "Perdeu um dispositivo?",
"twoFactorAuthTitle": "Autenticação de dois fatores",
"passkeyAuthTitle": "Autenticação via Chave de acesso",
"verifyPasskey": "Verificar chave de acesso",
"verifyPasskey": "Verificar senha-mestra",
"recoverAccount": "Recuperar conta",
"enterRecoveryKeyHint": "Digite sua chave de recuperação",
"enterRecoveryKeyHint": "Digite a chave de recuperação",
"recover": "Recuperar",
"contactSupportViaEmailMessage": "Por favor, envie um e-mail para {email} a partir do seu endereço de e-mail registrado",
"@contactSupportViaEmailMessage": {
@@ -156,8 +158,9 @@
}
}
},
"invalidQRCode": "QR Code inválido",
"noRecoveryKeyTitle": "Sem chave de recuperação?",
"enterEmailHint": "Insira o seu endereço de e-mail",
"enterEmailHint": "Insira o endereço de e-mail",
"invalidEmailTitle": "Endereço de e-mail inválido",
"invalidEmailMessage": "Por favor, insira um endereço de e-mail válido.",
"deleteAccount": "Excluir conta",
@@ -172,8 +175,8 @@
"moderateStrength": "Moderada",
"confirmPassword": "Confirme sua senha",
"close": "Fechar",
"oopsSomethingWentWrong": "Oops, Algo deu errado.",
"selectLanguage": "Selecionar idioma",
"oopsSomethingWentWrong": "Opa. Algo deu errado.",
"selectLanguage": "Trocar idioma",
"language": "Idioma",
"social": "Redes sociais",
"security": "Segurança",
@@ -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",
@@ -196,14 +199,14 @@
"recoveryKeyCopiedToClipboard": "A chave de recuperação foi copiada para a área de transferência",
"recoveryKeyOnForgotPassword": "Caso você esqueça sua senha, a única maneira de recuperar seus dados é com essa chave.",
"recoveryKeySaveDescription": "Não armazenamos essa chave, por favor, salve essa chave de 24 palavras em um lugar seguro.",
"doThisLater": "Fazer isso mais tarde",
"doThisLater": "Fazer isso depois",
"saveKey": "Salvar chave",
"save": "Salvar",
"send": "Enviar",
"saveOrSendDescription": "Você deseja salvar isso no seu armazenamento (pasta de downloads por padrão) ou enviá-lo para outros aplicativos?",
"saveOnlyDescription": "Você deseja salvar isto no seu armazenamento (pasta de downloads por padrão)?",
"back": "Voltar",
"createAccount": "Criar uma conta",
"createAccount": "Criar conta",
"passwordStrength": "Força da senha: {passwordStrengthValue}",
"@passwordStrength": {
"description": "Text to indicate the password strength",
@@ -231,15 +234,15 @@
"passwordChangedSuccessfully": "Senha alterada com sucesso",
"generatingEncryptionKeys": "Gerando chaves de criptografia...",
"continueLabel": "Continuar",
"insecureDevice": "Dispositivo não seguro",
"insecureDevice": "Dispositivo inseguro",
"sorryWeCouldNotGenerateSecureKeysOnThisDevicennplease": "Desculpe, não foi possível gerar chaves seguras neste dispositivo.\n\npor favor, faça o login com um dispositivo diferente.",
"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",
@@ -254,11 +257,11 @@
"recoveryKeyVerifyReason": "Sua chave de recuperação é a única maneira de recuperar suas fotos se você esquecer sua senha. Você pode encontrar sua chave de recuperação em Configurações > Conta.\n\nDigite sua chave de recuperação aqui para verificar se você a salvou corretamente.",
"confirmYourRecoveryKey": "Confirme sua chave de recuperação",
"confirm": "Confirmar",
"emailYourLogs": "Enviar por email seus logs",
"emailYourLogs": "Enviar logs por e-mail",
"pleaseSendTheLogsTo": "Por favor, envie os logs para \n{toEmail}",
"copyEmailAddress": "Copiar endereço de e-mail",
"exportLogs": "Exportar logs",
"enterYourRecoveryKey": "Digite sua chave de recuperação",
"enterYourRecoveryKey": "Digite a chave de recuperação",
"tempErrorContactSupportIfPersists": "Parece que algo deu errado. Por favor, tente novamente mais tarde. Se o erro persistir, entre em contato com nossa equipe de suporte.",
"itLooksLikeSomethingWentWrongPleaseRetryAfterSome": "Parece que algo deu errado. Por favor, tente novamente mais tarde. Se o erro persistir, entre em contato com nossa equipe de suporte.",
"about": "Sobre",
@@ -274,12 +277,12 @@
"youAreOnTheLatestVersion": "Você está na versão mais recente",
"warning": "Atenção",
"exportWarningDesc": "O arquivo exportado contém informações confidenciais. Por favor, armazene-o com segurança.",
"iUnderStand": "Eu entendo",
"iUnderStand": "Entendo",
"@iUnderStand": {
"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",
@@ -323,11 +326,11 @@
"sorryTheCodeYouveEnteredIsIncorrect": "Desculpe, o código que você inseriu está incorreto",
"emailChangedTo": "E-mail alterado para {newEmail}",
"authenticationFailedPleaseTryAgain": "Falha na autenticação. Por favor, tente novamente",
"authenticationSuccessful": "Autenticação bem-sucedida!",
"authenticationSuccessful": "Autenticado!",
"twofactorAuthenticationSuccessfullyReset": "Autenticação de dois fatores redefinida com sucesso",
"incorrectRecoveryKey": "Chave de recuperação incorreta",
"theRecoveryKeyYouEnteredIsIncorrect": "A chave de recuperação inserida está incorreta",
"enterPassword": "Insira a senha",
"enterPassword": "Inserir senha",
"selectExportFormat": "Selecione o formato para exportação",
"exportDialogDesc": "As exportações criptografadas ficarão protegidas por uma senha de sua escolha.",
"encrypted": "Criptografado",
@@ -336,13 +339,13 @@
"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",
"shouldHideCode": "Ocultar códigos",
"doubleTapToViewHiddenCode": "Você pode tocar duas vezes em uma entrada para ver o código",
"focusOnSearchBar": "Foco na pesquisa ao iniciar o aplicativo",
"focusOnSearchBar": "Foco na busca ao iniciar o app",
"confirmUpdatingkey": "Você tem certeza que deseja atualizar a chave secreta?",
"minimizeAppOnCopy": "Minimizar aplicativo ao copiar",
"editCodeAuthMessage": "Autenticar para editar o código",
@@ -354,11 +357,11 @@
"@androidBiometricHint": {
"description": "Hint message advising the user how to authenticate with biometrics. It is used on Android side. Maximum 60 characters."
},
"androidBiometricNotRecognized": "Não reconhecido. Tente novamente.",
"androidBiometricNotRecognized": "Não reconhecido. Tente de novo.",
"@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."
},
@@ -382,7 +385,7 @@
"@androidDeviceCredentialsSetupDescription": {
"description": "Message advising the user to go to the settings and configure device credentials on their device. It shows in a dialog on Android side."
},
"goToSettings": "Ir para Configurações",
"goToSettings": "Ir para Ajustes",
"@goToSettings": {
"description": "Message showed on a button that the user can click to go to settings pages from the current dialog. It is used on both Android and iOS side. Maximum 30 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."
},
@@ -407,18 +410,31 @@
"signOutFromOtherDevices": "Terminar sessão em outros dispositivos",
"signOutOtherBody": "Se você acha que alguém pode saber sua senha, você pode forçar todos os outros dispositivos que estão com sua conta a desconectar.",
"signOutOtherDevices": "Terminar sessão em outros dispositivos",
"doNotSignOut": "Não encerrar sessão",
"doNotSignOut": "Não sair",
"hearUsWhereTitle": "Como você ouviu sobre o Ente? (opcional)",
"hearUsExplanation": "Não rastreamos instalações do aplicativo. Seria útil se você nos contasse onde nos encontrou!",
"recoveryKeySaved": "Chave de recuperação salva na pasta Downloads!",
"waitingForBrowserRequest": "Aguardando solicitação do navegador...",
"waitingForVerification": "Esperando por verificação...",
"passkey": "Chave de acesso",
"passkey": "Senha-mestra",
"developerSettingsWarning": "Tem certeza de que deseja modificar as configurações de Desenvolvedor?",
"developerSettings": "Configurações de desenvolvedor",
"serverEndpoint": "Endpoint do servidor",
"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 nova 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": "Неверный адрес электронной почты",
@@ -190,6 +203,8 @@
"saveKey": "Сохранить ключ",
"save": "Сохранить",
"send": "Отправить",
"saveOrSendDescription": "Вы хотите сохранить это в хранилище (папку загрузок по умолчанию) или отправить в другие приложения?",
"saveOnlyDescription": "Вы хотите сохранить это в хранилище (по умолчанию папка загрузок)?",
"back": "Вернуться",
"createAccount": "Создать аккаунт",
"passwordStrength": "Мощность пароля: {passwordStrengthValue}",
@@ -337,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."
@@ -397,12 +413,28 @@
"doNotSignOut": "Не выходить",
"hearUsWhereTitle": "Как вы узнали о Ente? (необязательно)",
"hearUsExplanation": "Будет полезно, если вы укажете, где нашли нас, так как мы не отслеживаем установки приложения",
"recoveryKeySaved": "Ключ восстановления сохранён в папке Загрузки!",
"waitingForBrowserRequest": "Ожидание запроса браузера...",
"waitingForVerification": "Ожидание подтверждения...",
"passkey": "Ключ",
"developerSettingsWarning": "Вы уверены, что хотите изменить настройки разработчика?",
"developerSettings": "Настройки разработчика",
"serverEndpoint": "Конечная точка сервера",
"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

@@ -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

@@ -0,0 +1 @@
{}

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

@@ -66,8 +66,6 @@ Future<void> initSystemTray() async {
void main() async {
WidgetsFlutterBinding.ensureInitialized();
initSystemTray().ignore();
if (PlatformUtil.isDesktop()) {
await windowManager.ensureInitialized();
await WindowListenerService.instance.init();
@@ -77,8 +75,10 @@ void main() async {
await windowManager.waitUntilReadyToShow(windowOptions, () async {
await windowManager.show();
await windowManager.focus();
initSystemTray().ignore();
});
}
await _runInForeground();
await _setupPrivacyScreen();
if (Platform.isAndroid) {
@@ -132,7 +132,7 @@ Future _runWithLogs(Function() function, {String prefix = ""}) async {
}
void _registerWindowsProtocol() {
const kWindowsScheme = 'ente';
const kWindowsScheme = 'enteauth';
// Register our protocol only on Windows platform
if (!kIsWeb && Platform.isWindows) {
WindowsProtocolHandler()

View File

@@ -128,7 +128,7 @@ class Code {
final code = Code(
_getAccount(uri),
issuer,
_getDigits(uri, issuer),
_getDigits(uri),
_getPeriod(uri),
getSanitizedSecret(uri.queryParameters['secret']!),
_getAlgorithm(uri),
@@ -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

@@ -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

@@ -42,7 +42,7 @@ class PasskeyService {
Future<void> openPasskeyPage(BuildContext context) async {
try {
final jwtToken = await getJwtToken();
final url = "https://accounts.ente.io/account-handoff?token=$jwtToken";
final url = "https://accounts.ente.io/passkeys?token=$jwtToken";
await launchUrlString(
url,
mode: LaunchMode.externalApplication,

View File

@@ -266,32 +266,77 @@ class UserService {
}
}
Future<void> onPassKeyVerified(BuildContext context, Map response) async {
final userPassword = Configuration.instance.getVolatilePassword();
if (userPassword == null) throw Exception("volatile password is null");
await _saveConfiguration(response);
Widget page;
if (Configuration.instance.getEncryptedToken() != null) {
await Configuration.instance.decryptSecretsAndGetKeyEncKey(
userPassword,
Configuration.instance.getKeyAttributes()!,
);
page = const HomePage();
} else {
throw Exception("unexpected response during passkey verification");
}
// ignore: unawaited_futures
Navigator.of(context).pushAndRemoveUntil(
MaterialPageRoute(
builder: (BuildContext context) {
return page;
Future<dynamic> getTokenForPasskeySession(String sessionID) async {
try {
final response = await _dio.get(
"${_config.getHttpEndpoint()}/users/two-factor/passkeys/get-token",
queryParameters: {
"sessionID": sessionID,
},
),
(route) => route.isFirst,
);
);
return response.data;
} on DioException catch (e) {
if (e.response != null) {
if (e.response!.statusCode == 404 || e.response!.statusCode == 410) {
throw PassKeySessionExpiredError();
}
if (e.response!.statusCode == 400) {
throw PassKeySessionNotVerifiedError();
}
}
rethrow;
} catch (e, s) {
_logger.severe("unexpected error", e, s);
rethrow;
}
}
Future<void> onPassKeyVerified(BuildContext context, Map response) async {
final ProgressDialog dialog =
createProgressDialog(context, context.l10n.pleaseWait);
await dialog.show();
try {
final userPassword = _config.getVolatilePassword();
await _saveConfiguration(response);
if (userPassword == null) {
await dialog.hide();
// ignore: unawaited_futures
Navigator.of(context).pushAndRemoveUntil(
MaterialPageRoute(
builder: (BuildContext context) {
return const PasswordReentryPage();
},
),
(route) => route.isFirst,
);
} else {
Widget page;
if (_config.getEncryptedToken() != null) {
await _config.decryptSecretsAndGetKeyEncKey(
userPassword,
_config.getKeyAttributes()!,
);
page = const HomePage();
} else {
throw Exception("unexpected response during passkey verification");
}
await dialog.hide();
// ignore: unawaited_futures
Navigator.of(context).pushAndRemoveUntil(
MaterialPageRoute(
builder: (BuildContext context) {
return page;
},
),
(route) => route.isFirst,
);
}
} catch (e) {
_logger.severe(e);
await dialog.hide();
rethrow;
}
}
Future<void> verifyEmail(
@@ -316,9 +361,12 @@ class UserService {
await dialog.hide();
if (response.statusCode == 200) {
Widget page;
final String passkeySessionID = response.data["passkeySessionID"];
final String twoFASessionID = response.data["twoFactorSessionID"];
if (twoFASessionID.isNotEmpty) {
page = TwoFactorAuthenticationPage(twoFASessionID);
} else if (passkeySessionID.isNotEmpty) {
page = PasskeyPage(passkeySessionID);
} else {
await _saveConfiguration(response);
if (Configuration.instance.getEncryptedToken() != null) {

View File

@@ -32,7 +32,7 @@ class CodeDisplayStore {
if (code.hasError) continue;
tags.addAll(code.display.tags);
}
return tags.toList();
return tags.toList()..sort();
}
Future<void> showDeleteTagDialog(BuildContext context, String tag) async {

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.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 _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

@@ -33,7 +33,7 @@ enum ButtonType {
Color defaultButtonColor(EnteColorScheme colorScheme) {
if (isPrimary) {
return colorScheme.primary500;
return colorScheme.primary400;
}
if (isSecondary) {
return colorScheme.fillFaint;

View File

@@ -238,6 +238,8 @@ class _HomePageState extends State<HomePage> {
title: !_showSearchBox
? const Text('Ente Auth')
: TextField(
autocorrect: false,
enableSuggestions: false,
focusNode: searchInputFocusNode,
autofocus: _searchText.isEmpty,
controller: _textController,

View File

@@ -2,12 +2,14 @@ import 'dart:convert';
import 'package:app_links/app_links.dart';
import 'package:ente_auth/core/configuration.dart';
import 'package:ente_auth/core/errors.dart';
import 'package:ente_auth/l10n/l10n.dart';
import 'package:ente_auth/models/account/two_factor.dart';
import 'package:ente_auth/services/user_service.dart';
import 'package:ente_auth/ui/components/buttons/button_widget.dart';
import 'package:ente_auth/ui/components/models/button_type.dart';
import 'package:ente_auth/utils/dialog_util.dart';
import 'package:ente_auth/utils/toast_util.dart';
import 'package:flutter/material.dart';
import 'package:logging/logging.dart';
import 'package:url_launcher/url_launcher_string.dart';
@@ -41,13 +43,38 @@ class _PasskeyPageState extends State<PasskeyPage> {
Future<void> launchPasskey() async {
await launchUrlString(
"https://accounts.ente.io/passkeys/flow?"
"https://accounts.ente.io/passkeys/verify?"
"passkeySessionID=${widget.sessionID}"
"&redirect=enteauth://passkey",
"&redirect=enteauth://passkey"
"&clientPackage=io.ente.auth",
mode: LaunchMode.externalApplication,
);
}
Future<void> checkStatus() async {
late dynamic response;
try {
response = await UserService.instance
.getTokenForPasskeySession(widget.sessionID);
} on PassKeySessionNotVerifiedError {
showToast(context, context.l10n.passKeyPendingVerification);
return;
} on PassKeySessionExpiredError {
await showErrorDialog(
context,
context.l10n.loginSessionExpired,
context.l10n.loginSessionExpiredDetails,
);
Navigator.of(context).pop();
return;
} catch (e, s) {
_logger.severe("failed to check status", e, s);
showGenericErrorDialog(context: context).ignore();
return;
}
await UserService.instance.onPassKeyVerified(context, response);
}
Future<void> _handleDeeplink(String? link) async {
if (!context.mounted ||
Configuration.instance.hasConfiguredAccount() ||
@@ -59,8 +86,20 @@ class _PasskeyPageState extends State<PasskeyPage> {
}
try {
if (mounted && link.toLowerCase().startsWith("enteauth://passkey")) {
final String? uri = Uri.parse(link).queryParameters['response'];
String base64String = uri!.toString();
if (Configuration.instance.isLoggedIn()) {
_logger.info('ignored deeplink: already configured');
showToast(context, 'Account is already configured.');
return;
}
final parsedUri = Uri.parse(link);
final sessionID = parsedUri.queryParameters['passkeySessionID'];
if (sessionID != widget.sessionID) {
showToast(context, "Session ID mismatch");
_logger.warning('ignored deeplink: sessionID mismatch');
return;
}
final String? authResponse = parsedUri.queryParameters['response'];
String base64String = authResponse!.toString();
while (base64String.length % 4 != 0) {
base64String += '=';
}
@@ -118,9 +157,23 @@ class _PasskeyPageState extends State<PasskeyPage> {
const SizedBox(height: 16),
ButtonWidget(
buttonType: ButtonType.primary,
labelText: context.l10n.verifyPasskey,
labelText: context.l10n.tryAgain,
onTap: () => launchPasskey(),
),
const SizedBox(height: 16),
ButtonWidget(
buttonType: ButtonType.secondary,
labelText: context.l10n.checkStatus,
onTap: () async {
try {
await checkStatus();
} catch (e) {
debugPrint('failed to check status %e');
showGenericErrorDialog(context: context).ignore();
}
},
shouldSurfaceExecutionStates: true,
),
const Padding(padding: EdgeInsets.all(30)),
GestureDetector(
behavior: HitTestBehavior.opaque,

View File

@@ -6,6 +6,7 @@ import 'dart:typed_data';
import 'package:convert/convert.dart';
import 'package:ente_auth/l10n/l10n.dart';
import 'package:ente_auth/models/code.dart';
import 'package:ente_auth/models/code_display.dart';
import 'package:ente_auth/services/authenticator_service.dart';
import 'package:ente_auth/store/code_store.dart';
import 'package:ente_auth/ui/common/progress_dialog.dart';
@@ -76,7 +77,7 @@ Future<void> _pickAegisJsonFile(BuildContext context) async {
await showErrorDialog(
context,
context.l10n.sorry,
context.l10n.importFailureDesc,
"${context.l10n.importFailureDesc}\n Error: ${e.toString()}",
);
}
}
@@ -126,8 +127,19 @@ Future<int?> _processAegisExportFile(
} else {
aegisDB = decodedJson['db'];
}
final Map<String, String> groupIDToName = {};
try {
for (var item in aegisDB?['groups']) {
groupIDToName[item['uuid']] = item['name'];
}
} catch (e) {
Logger("AegisImport").warning("Failed to parse groups", e);
}
final parsedCodes = [];
for (var item in aegisDB?['entries']) {
bool isFavorite = item['favorite'] ?? false;
List<String> tags = [];
var kind = item['type'];
var account = item['name'];
var issuer = item['issuer'];
@@ -137,20 +149,27 @@ Future<int?> _processAegisExportFile(
var digits = item['info']['digits'];
var counter = item['info']['counter'];
for (var group in item['groups']) {
if (groupIDToName.containsKey(group)) {
tags.add(groupIDToName[group]!);
}
}
// Build the OTP URL
String otpUrl;
if (kind.toLowerCase() == 'totp') {
if (kind.toLowerCase() == 'totp' || kind.toLowerCase() == 'steam') {
otpUrl =
'otpauth://$kind/$issuer:$account?secret=$secret&issuer=$issuer&algorithm=$algorithm&digits=$digits&period=$timer';
} else if (kind.toLowerCase() == 'hotp') {
otpUrl =
'otpauth://$kind/$issuer:$account?secret=$secret&issuer=$issuer&algorithm=$algorithm&digits=$digits&counter=$counter';
} else {
throw Exception('Invalid OTP type');
throw Exception('Invalid OTP type: $kind');
}
parsedCodes.add(Code.fromOTPAuthUrl(otpUrl));
Code code = Code.fromOTPAuthUrl(otpUrl);
code = code.copyWith(display: CodeDisplay(pinned: isFavorite, tags: tags));
parsedCodes.add(code);
}
for (final code in parsedCodes) {

View File

@@ -4,6 +4,7 @@ import 'dart:io';
import 'package:ente_auth/l10n/l10n.dart';
import 'package:ente_auth/models/code.dart';
import 'package:ente_auth/models/code_display.dart';
import 'package:ente_auth/services/authenticator_service.dart';
import 'package:ente_auth/store/code_store.dart';
import 'package:ente_auth/ui/components/buttons/button_widget.dart';
@@ -14,6 +15,7 @@ import 'package:ente_auth/utils/dialog_util.dart';
import 'package:file_picker/file_picker.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:logging/logging.dart';
Future<void> showBitwardenImportInstruction(BuildContext context) async {
final l10n = context.l10n;
@@ -60,12 +62,13 @@ Future<void> _pickBitwardenJsonFile(BuildContext context) async {
if (count != null) {
await importSuccessDialog(context, count);
}
} catch (e) {
} catch (e, s) {
Logger("BitwardenImport").severe('Failed to import', e, s);
await progressDialog.hide();
await showErrorDialog(
context,
context.l10n.sorry,
context.l10n.importFailureDesc,
"${context.l10n.importFailureDesc}\n Error: ${e.toString()}",
);
}
}
@@ -78,19 +81,36 @@ Future<int?> _processBitwardenExportFile(
final jsonString = await file.readAsString();
final data = jsonDecode(jsonString);
List<dynamic> jsonArray = data['items'];
final Map<String, String> folderIdToName = {};
try {
for (var item in data['folders']) {
folderIdToName[item['id']] = item['name'];
}
} catch (e) {
debugPrint("Failed to get folder details $e");
}
final parsedCodes = [];
for (var item in jsonArray) {
if (item['login'] != null && item['login']['totp'] != null) {
var totp = item['login']['totp'];
String? folderID = item['folderId'];
Code code;
if (totp.contains("otpauth://")) {
code = Code.fromOTPAuthUrl(totp);
} else if (totp.contains("steam://")) {
var secret = totp.split("steam://")[1];
code = Code.fromAccountAndSecret(
Type.steam,
item['login']['username'],
item['name'],
secret,
null,
Code.steamDigits,
);
} else {
var issuer = item['name'];
var account = item['login']['username'];
var issuer = item['name'] ?? '';
var account = item['login']['username'] ?? '';
code = Code.fromAccountAndSecret(
Type.totp,
account,
@@ -100,6 +120,11 @@ Future<int?> _processBitwardenExportFile(
Code.defaultDigits,
);
}
if (folderID != null && folderIdToName.containsKey(folderID)) {
code = code.copyWith(
display: CodeDisplay(tags: [folderIdToName[folderID]!]),
);
}
parsedCodes.add(code);
}

View File

@@ -14,6 +14,7 @@ import 'package:ente_auth/utils/dialog_util.dart';
import 'package:file_picker/file_picker.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:logging/logging.dart';
Future<void> showLastpassImportInstruction(BuildContext context) async {
final l10n = context.l10n;
@@ -60,12 +61,13 @@ Future<void> _pickLastpassJsonFile(BuildContext context) async {
if (count != null) {
await importSuccessDialog(context, count);
}
} catch (e) {
} catch (e, s) {
Logger('LastPassImport').severe('exception while processing import', e, s);
await progressDialog.hide();
await showErrorDialog(
context,
context.l10n.sorry,
context.l10n.importFailureDesc,
"${context.l10n.importFailureDesc}\n Error: ${e.toString()}",
);
}
}

View File

@@ -14,6 +14,7 @@ import 'package:ente_auth/utils/dialog_util.dart';
import 'package:file_picker/file_picker.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:logging/logging.dart';
Future<void> showRaivoImportInstruction(BuildContext context) async {
final l10n = context.l10n;
@@ -60,12 +61,13 @@ Future<void> _pickRaivoJsonFile(BuildContext context) async {
if (count != null) {
await importSuccessDialog(context, count);
}
} catch (e) {
} catch (e, s) {
Logger("RaivoImport").severe('Failed to import', e, s);
await progressDialog.hide();
await showErrorDialog(
context,
context.l10n.sorry,
context.l10n.importFailureDesc,
"${context.l10n.importFailureDesc}\n Error: ${e.toString()}",
);
}
}
@@ -103,7 +105,7 @@ Future<int?> _processRaivoExportFile(BuildContext context, String path) async {
otpUrl =
'otpauth://$kind/$issuer:$account?secret=$secret&issuer=$issuer&algorithm=$algorithm&digits=$digits&counter=$counter';
} else {
throw Exception('Invalid OTP type');
throw Exception('Invalid OTP type $kind');
}
parsedCodes.add(Code.fromOTPAuthUrl(otpUrl));
}

View File

@@ -72,7 +72,7 @@ Future<void> _pick2FasFile(BuildContext context) async {
await showErrorDialog(
context,
context.l10n.sorry,
context.l10n.importFailureDesc,
"${context.l10n.importFailureDesc}\n Error: ${e.toString()}",
);
}
}
@@ -139,7 +139,10 @@ Future<int?> _process2FasExportFile(
for (var item in decodedServices) {
var kind = item['otp']['tokenType'];
var account = item['otp']['account'] ?? '';
var issuer = item['otp']['issuer'] ?? item['name'] ?? '';
var issuer = item['otp']['issuer'];
if (issuer == null || (issuer as String).isEmpty) {
issuer = item['name'] ?? '';
}
var algorithm = item['otp']['algorithm'];
var secret = item['secret'];
var timer = item['otp']['period'];

View File

@@ -4,7 +4,6 @@ import 'dart:typed_data';
import 'package:ente_auth/core/configuration.dart';
import 'package:ente_auth/l10n/l10n.dart';
import 'package:ente_auth/models/user_details.dart';
import 'package:ente_auth/services/auth_feature_flag.dart';
import 'package:ente_auth/services/local_authentication_service.dart';
import 'package:ente_auth/services/passkey_service.dart';
import 'package:ente_auth/services/user_service.dart';
@@ -66,20 +65,17 @@ class _SecuritySectionWidgetState extends State<SecuritySectionWidget> {
// We don't know if the user can disable MFA yet, so we fetch the info
UserService.instance.getUserDetailsV2().ignore();
}
final bool isInternalUser =
FeatureFlagService.instance.isInternalUserOrDebugBuild();
children.addAll([
if (isInternalUser) sectionOptionSpacing,
if (isInternalUser)
MenuItemWidget(
captionedTextWidget: CaptionedTextWidget(
title: l10n.passkey,
),
pressedColor: getEnteColorScheme(context).fillFaint,
trailingIcon: Icons.chevron_right_outlined,
trailingIconIsMuted: true,
onTap: () async => await onPasskeyClick(context),
sectionOptionSpacing,
MenuItemWidget(
captionedTextWidget: CaptionedTextWidget(
title: l10n.passkey,
),
pressedColor: getEnteColorScheme(context).fillFaint,
trailingIcon: Icons.chevron_right_outlined,
trailingIconIsMuted: true,
onTap: () async => await onPasskeyClick(context),
),
sectionOptionSpacing,
MenuItemWidget(
captionedTextWidget: CaptionedTextWidget(

View File

@@ -4,7 +4,7 @@ import 'package:otp/otp.dart' as otp;
import 'package:steam_totp/steam_totp.dart';
String getOTP(Code code) {
if (code.issuer.toLowerCase() == 'steam') {
if (code.type == Type.steam || code.issuer.toLowerCase() == 'steam') {
return _getSteamCode(code);
}
if (code.type == Type.hotp) {
@@ -39,7 +39,7 @@ String _getSteamCode(Code code, [bool isNext = false]) {
}
String getNextTotp(Code code) {
if (code.issuer.toLowerCase() == 'steam') {
if (code.type == Type.steam || code.issuer.toLowerCase() == 'steam') {
return _getSteamCode(code, true);
}
return otp.OTP.generateTOTPCodeString(

View File

@@ -34,7 +34,7 @@ if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
"Debug" "Profile" "Release")
endif()
# Compilation ui.settings that should be applied to most targets.
# Compilation settings that should be applied to most targets.
#
# Be cautious about adding new options here, as plugins use this function by
# default. In most cases, you should add new options to specific targets instead
@@ -66,8 +66,8 @@ add_executable(${BINARY_NAME}
"${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc"
)
# Apply the standard set of build ui.settings. This can be removed for applications
# that need different build ui.settings.
# Apply the standard set of build settings. This can be removed for applications
# that need different build settings.
apply_standard_settings(${BINARY_NAME})
# Add dependency libraries. Add any application-specific dependencies here.
@@ -86,6 +86,7 @@ set_target_properties(${BINARY_NAME}
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/intermediates_do_not_run"
)
# Generated plugin build rules, which manage building the plugins and adding
# them to the application.
include(flutter/generated_plugins.cmake)
@@ -122,6 +123,12 @@ foreach(bundled_library ${PLUGIN_BUNDLED_LIBRARIES})
COMPONENT Runtime)
endforeach(bundled_library)
# Copy the native assets provided by the build.dart from all packages.
set(NATIVE_ASSETS_DIR "${PROJECT_BUILD_DIR}native_assets/linux/")
install(DIRECTORY "${NATIVE_ASSETS_DIR}"
DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
COMPONENT Runtime)
# Fully re-copy the assets directory on each build to avoid having stale files
# from a previous install.
set(FLUTTER_ASSET_DIR_NAME "flutter_assets")

View File

@@ -63,7 +63,7 @@ static void my_application_activate(GApplication *application)
}
gtk_window_set_default_size(window, 1280, 720);
gtk_widget_realize(GTK_WIDGET(window));
gtk_widget_show(GTK_WIDGET(window));
g_autoptr(FlDartProject) project = fl_dart_project_new();
fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments);
@@ -73,6 +73,7 @@ static void my_application_activate(GApplication *application)
gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view));
fl_register_plugins(FL_PLUGIN_REGISTRY(view));
gtk_widget_hide(GTK_WIDGET(window));
gtk_widget_grab_focus(GTK_WIDGET(view));
}
@@ -98,6 +99,26 @@ static gboolean my_application_local_command_line(GApplication *application, gch
return FALSE;
}
// Implements GApplication::startup.
static void my_application_startup(GApplication *application)
{
// MyApplication* self = MY_APPLICATION(object);
// Perform any actions required at application startup.
G_APPLICATION_CLASS(my_application_parent_class)->startup(application);
}
// Implements GApplication::shutdown.
static void my_application_shutdown(GApplication *application)
{
// MyApplication* self = MY_APPLICATION(object);
// Perform any actions required at application shutdown.
G_APPLICATION_CLASS(my_application_parent_class)->shutdown(application);
}
// Implements GObject::dispose.
static void my_application_dispose(GObject *object)
{
@@ -110,6 +131,8 @@ static void my_application_class_init(MyApplicationClass *klass)
{
G_APPLICATION_CLASS(klass)->activate = my_application_activate;
G_APPLICATION_CLASS(klass)->local_command_line = my_application_local_command_line;
G_APPLICATION_CLASS(klass)->startup = my_application_startup;
G_APPLICATION_CLASS(klass)->shutdown = my_application_shutdown;
G_OBJECT_CLASS(klass)->dispose = my_application_dispose;
}

View File

@@ -38,6 +38,7 @@
<key>CFBundleURLSchemes</key>
<array>
<string>otpauth</string>
<string>enteauth</string>
</array>
</dict>
</array>

View File

@@ -293,9 +293,9 @@ packages:
dependency: "direct main"
description:
path: "packages/desktop_webview_window"
ref: fix-webkit-version
resolved-ref: fe2223e4edfecdbb3a97bb9e3ced73db4ae9d979
url: "https://github.com/ente-io/flutter-desktopwebview-fork"
ref: main
resolved-ref: "726d8281a244d56ab36e843f0427c48de6d9cc56"
url: "https://github.com/MixinNetwork/flutter-plugins"
source: git
version: "0.2.4"
device_info_plus:
@@ -602,11 +602,11 @@ packages:
dependency: "direct overridden"
description:
path: flutter_secure_storage_linux
ref: patch-1
resolved-ref: da8ab43bc51c8c3249a261c33b27aa6f018f819b
url: "https://github.com/prateekmedia/flutter_secure_storage.git"
ref: develop
resolved-ref: cb30953edc029dc4059b72700270b4cd3a3afade
url: "https://github.com/mogol/flutter_secure_storage.git"
source: git
version: "1.2.0"
version: "1.2.1"
flutter_secure_storage_macos:
dependency: transitive
description:
@@ -813,10 +813,10 @@ packages:
dependency: "direct main"
description:
name: intl
sha256: "3bc132a9dbce73a7e4a21a17d06e1878839ffbf975568bc875c60537824b0c4d"
sha256: d6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf
url: "https://pub.dev"
source: hosted
version: "0.18.1"
version: "0.19.0"
io:
dependency: transitive
description:
@@ -853,26 +853,26 @@ packages:
dependency: transitive
description:
name: leak_tracker
sha256: "78eb209deea09858f5269f5a5b02be4049535f568c07b275096836f01ea323fa"
sha256: "7f0df31977cb2c0b88585095d168e689669a2cc9b97c309665e3386f3e9d341a"
url: "https://pub.dev"
source: hosted
version: "10.0.0"
version: "10.0.4"
leak_tracker_flutter_testing:
dependency: transitive
description:
name: leak_tracker_flutter_testing
sha256: b46c5e37c19120a8a01918cfaf293547f47269f7cb4b0058f21531c2465d6ef0
sha256: "06e98f569d004c1315b991ded39924b21af84cf14cc94791b8aea337d25b57f8"
url: "https://pub.dev"
source: hosted
version: "2.0.1"
version: "3.0.3"
leak_tracker_testing:
dependency: transitive
description:
name: leak_tracker_testing
sha256: a597f72a664dbd293f3bfc51f9ba69816f84dcd403cdac7066cb3f6003f3ab47
sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3"
url: "https://pub.dev"
source: hosted
version: "2.0.1"
version: "3.0.1"
lints:
dependency: "direct dev"
description:
@@ -957,10 +957,10 @@ packages:
dependency: transitive
description:
name: meta
sha256: d584fa6707a52763a52446f02cc621b077888fb63b93bbcb1143a7be5a0c0c04
sha256: "7687075e408b093f36e6bbf6c91878cc0d4cd10f409506f7bc996f68220b9136"
url: "https://pub.dev"
source: hosted
version: "1.11.0"
version: "1.12.0"
mime:
dependency: transitive
description:
@@ -1523,10 +1523,10 @@ packages:
dependency: transitive
description:
name: test_api
sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b"
sha256: "9955ae474176f7ac8ee4e989dadfb411a58c30415bcfb648fa04b2b8a03afa7f"
url: "https://pub.dev"
source: hosted
version: "0.6.1"
version: "0.7.0"
timezone:
dependency: transitive
description:
@@ -1683,10 +1683,10 @@ packages:
dependency: transitive
description:
name: vm_service
sha256: b3d56ff4341b8f182b96aceb2fa20e3dcb336b9f867bc0eafc0de10f1048e957
sha256: "3923c89304b715fb1eb6423f017651664a03bf5f4b29983627c4da791f74a4ec"
url: "https://pub.dev"
source: hosted
version: "13.0.0"
version: "14.2.1"
watcher:
dependency: transitive
description:
@@ -1731,10 +1731,10 @@ packages:
dependency: "direct main"
description:
name: window_manager
sha256: b3c895bdf936c77b83c5254bec2e6b3f066710c1f89c38b20b8acc382b525494
sha256: "8699323b30da4cdbe2aa2e7c9de567a6abd8a97d9a5c850a3c86dcd0b34bbfbf"
url: "https://pub.dev"
source: hosted
version: "0.3.8"
version: "0.3.9"
xdg_directories:
dependency: transitive
description:

View File

@@ -1,6 +1,6 @@
name: ente_auth
description: ente two-factor authenticator
version: 3.0.4+304
version: 3.0.12+312
publish_to: none
environment:
@@ -20,8 +20,8 @@ dependencies:
convert: ^3.1.1
desktop_webview_window:
git:
url: https://github.com/ente-io/flutter-desktopwebview-fork
ref: fix-webkit-version
url: https://github.com/MixinNetwork/flutter-plugins
ref: main
path: packages/desktop_webview_window
device_info_plus: ^9.1.1
dio: ^5.4.0
@@ -64,7 +64,7 @@ dependencies:
google_nav_bar: ^5.0.5 #supported
gradient_borders: ^1.0.0
http: ^1.1.0
intl: ^0.18.0
intl: ^0.19.0
json_annotation: ^4.5.0
local_auth: ^2.2.0
local_auth_android: ^1.0.37
@@ -102,13 +102,13 @@ dependencies:
url_launcher: ^6.1.5
uuid: ^4.2.2
win32: ^5.1.1
window_manager: ^0.3.8
window_manager: ^0.3.9
dependency_overrides:
flutter_secure_storage_linux:
git:
url: https://github.com/prateekmedia/flutter_secure_storage.git
ref: patch-1
url: https://github.com/mogol/flutter_secure_storage.git
ref: develop
path: flutter_secure_storage_linux
dev_dependencies:
build_runner: ^2.1.11

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 133 KiB

View File

@@ -107,11 +107,7 @@ docker-compose up -d
`exec` into the container
```shell
docker-compose exec ente /bin/sh
docker-compose exec ente-cli /bin/sh -c "./ente-cli version"
docker-compose exec ente-cli /bin/sh -c "./ente-cli account add"
```
#### Directly executing commands
```shell
docker run -it --rm ente:latest ls
```

View File

@@ -4,8 +4,11 @@ services:
image: ente-cli:latest
command: /bin/sh
volumes:
# Replace /Volumes/Data/ with a folder path on your system, typically $HOME/.ente-cli/
- ~/.ente-cli/:/cli-data:rw
# - ~/Downloads/export-data:/data:rw
# This is mandatory to mount the local directory to the container at /cli-data
# CLI will use this directory to store the data required for syncing export
- /path/to/local/directory/cli/:/cli-data:rw
# You can add additional volumes to mount the export directory to the container
# While adding account for export, you can use /data as the export directory.
- /path/to/local/directory/export:/data:rw
stdin_open: true
tty: true

View File

@@ -71,12 +71,15 @@ func NewClient(p Params) *Client {
restClient: enteAPI,
downloadClient: resty.New().
SetRetryCount(3).
SetRetryWaitTime(5 * time.Second).
SetRetryMaxWaitTime(10 * time.Second).
SetRetryWaitTime(10 * time.Second).
SetRetryMaxWaitTime(20 * time.Second).
AddRetryCondition(func(r *resty.Response, err error) bool {
shouldRetry := r.StatusCode() == 429 || r.StatusCode() > 500
shouldRetry := r.StatusCode() == 429 || r.StatusCode() >= 500
if shouldRetry {
log.Printf("retrying download due to %d code", r.StatusCode())
amxRequestID := r.Header().Get("X-Amz-Request-Id")
cfRayID := r.Header().Get("CF-Ray")
wasabiRefID := r.Header().Get("X-Wasabi-Cm-Reference-Id")
log.Printf("Retry scheduled. error statusCode: %d, X-Amz-Request-Id: %s, CF-Ray: %s, X-Wasabi-Cm-Reference-Id: %s", r.StatusCode(), amxRequestID, cfRayID, wasabiRefID)
}
return shouldRetry
}),

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.15"
func main() {
cliDBPath, err := GetCLIConfigPath()
@@ -23,7 +23,7 @@ func main() {
cliDBPath = constants.CliDataPath
_, err := internal.ValidateDirForWrite(cliDBPath)
if err != nil {
log.Fatalf("Please mount a volume to %s to persist cli data\n%v\n", cliDBPath, err)
log.Fatalf("Please mount a volume to %s\n%v\n", cliDBPath, err)
}
}
if err != nil {

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,16 +1,23 @@
name: "Release"
# Build the ente-io/ente's desktop/rc branch and create/update a draft release.
# Build the desktop app with code from ente-io/ente and create/update a 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,15 @@
# CHANGELOG
## v1.7.0 (Unreleased)
## v1.7.1 (Unreleased)
- Support for passkeys as a second factor authentication mechanism.
- Remember the window size across app restarts.
- Revert changes to the Linux icon.
- Fix an issue causing deleted items in watched folders to not move to
uncategorized.
- Fix duplicate file uploads when initializing a folder watch (sometimes).
## 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: 1.0 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.

View File

@@ -6,6 +6,9 @@ files:
extraFiles:
- from: build
to: resources
protocols:
- name: Ente
schemes: ["ente"]
win:
target:
- target: nsis
@@ -23,6 +26,7 @@ linux:
- target: pacman
arch: [x64, arm64]
category: Photography
icon: ./build/icon.icns
mac:
target:
target: default

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",
@@ -17,8 +17,8 @@
"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,30 @@
"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

@@ -61,6 +61,103 @@ export const allowWindowClose = (): void => {
shouldAllowWindowClose = true;
};
/**
* The app's entry point.
*
* We call this at the end of this file.
*/
const main = () => {
const gotTheLock = app.requestSingleInstanceLock();
if (!gotTheLock) {
app.quit();
return;
}
let mainWindow: BrowserWindow | undefined;
initLogging();
logStartupBanner();
registerForEnteLinks();
// The order of the next two calls is important
setupRendererServer();
registerPrivilegedSchemes();
migrateLegacyWatchStoreIfNeeded();
/**
* Handle an open URL request, but ensuring that we have a mainWindow.
*/
const handleOpenURLEnsuringWindow = (url: string) => {
log.info(`Attempting to handle request to open URL: ${url}`);
if (mainWindow) handleEnteLinks(mainWindow, url);
else setTimeout(() => handleOpenURLEnsuringWindow(url), 1000);
};
app.on("second-instance", (_, argv: string[]) => {
// Someone tried to run a second instance, we should focus our window.
if (mainWindow) {
mainWindow.show();
if (mainWindow.isMinimized()) mainWindow.restore();
mainWindow.focus();
}
// On Windows and Linux, this is how we get deeplinks.
// See: registerForEnteLinks
const url = argv.pop();
if (url) handleOpenURLEnsuringWindow(url);
});
// Emitted once, when Electron has finished initializing.
//
// Note that some Electron APIs can only be used after this event occurs.
void app.whenReady().then(() => {
void (async () => {
// Create window and prepare for the renderer.
mainWindow = createMainWindow();
// Setup IPC and streams.
const watcher = createWatcher(mainWindow);
attachIPCHandlers();
attachFSWatchIPCHandlers(watcher);
attachLogoutIPCHandler(watcher);
registerStreamProtocol();
// Configure the renderer's environment.
const webContents = mainWindow.webContents;
setDownloadPath(webContents);
allowExternalLinks(webContents);
allowAllCORSOrigins(webContents);
// Start loading the renderer.
void mainWindow.loadURL(rendererURL);
// Continue on with the rest of the startup sequence.
Menu.setApplicationMenu(await createApplicationMenu(mainWindow));
setupTrayItem(mainWindow);
setupAutoUpdater(mainWindow);
try {
await deleteLegacyDiskCacheDirIfExists();
await deleteLegacyKeysStoreIfExists();
} catch (e) {
// Log but otherwise ignore errors during non-critical startup
// actions.
log.error("Ignoring startup error", e);
}
})();
});
// This is a macOS only event. Show our window when the user activates the
// app, e.g. by clicking on its dock icon.
app.on("activate", () => mainWindow?.show());
app.on("before-quit", () => {
if (mainWindow) saveWindowBounds(mainWindow);
allowWindowClose();
});
// On macOS, this is how we get deeplinks. See: registerForEnteLinks
app.on("open-url", (_, url) => handleOpenURLEnsuringWindow(url));
};
/**
* Log a standard startup banner.
*
@@ -137,18 +234,54 @@ const registerPrivilegedSchemes = () => {
]);
};
/**
* Register a handler for deeplinks, for the "ente://" protocol.
*
* See: [Note: Passkey verification in the desktop app].
*
* Implementation notes:
* - https://www.electronjs.org/docs/latest/tutorial/launch-app-from-url-in-another-app
* - This works only when the app is packaged.
* - On Windows and Linux, we get the deeplink in the "second-instance" event.
* - On macOS, we get the deeplink in the "open-url" event.
*/
const registerForEnteLinks = () => app.setAsDefaultProtocolClient("ente");
/** Sibling of {@link registerForEnteLinks}. */
const handleEnteLinks = (mainWindow: BrowserWindow, url: string) => {
// [Note: Using deeplinks to navigate in desktop app]
//
// Both
//
// - our deeplink protocol, and
// - the protocol we're using to serve/ our bundled web app
//
// use the same scheme ("ente://"), so the URL can directly be forwarded.
mainWindow.webContents.send("openURL", url);
};
/**
* Create an return the {@link BrowserWindow} that will form our app's UI.
*
* This window will show the HTML served from {@link rendererURL}.
*/
const createMainWindow = () => {
const icon = nativeImage.createFromPath(
path.join(isDev ? "build" : process.resourcesPath, "window-icon.png"),
);
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,
},
icon,
// Set the window's position and size (if we have one saved).
...(bounds ?? {}),
// Enforce a minimum size
...minimumWindowSize(),
// 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 +295,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 +344,64 @@ const createMainWindow = () => {
return window;
};
/**
* The position and size to use when showing the main window.
*
* The return value is `undefined` if the app's window was maximized the last
* time around, and so if we should restore it to the maximized state.
*
* Otherwise it returns the position and size of the window the last time the
* app quit.
*
* If there is no such saved value (or if it is the first time the user is
* running the app), return a default size.
*/
const windowBounds = () => {
if (userPreferences.get("isWindowMaximized")) return undefined;
const bounds = userPreferences.get("windowBounds");
if (bounds) return bounds;
// Default size. Picked arbitrarily as something that should look good on
// first launch. We don't provide a position to let Electron center the app.
return { width: 1170, height: 710 };
};
/**
* 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 x + width and y + height to lie
* within the screen's available space, and we do not need to tackle such out of
* bounds cases 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.set("isWindowMaximized", true);
userPreferences.delete("windowBounds");
} else {
userPreferences.delete("isWindowMaximized");
userPreferences.set("windowBounds", window.getBounds());
}
};
/**
* 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 +429,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.
@@ -273,7 +461,7 @@ export const allowExternalLinks = (webContents: WebContents) =>
* "Access-Control-Allow-Origin: *" or do a echo-back of `Origin`, we add a
* workaround here instead, intercepting the ACAO header and allowing `*`.
*/
export const allowAllCORSOrigins = (webContents: WebContents) =>
const allowAllCORSOrigins = (webContents: WebContents) =>
webContents.session.webRequest.onHeadersReceived(
({ responseHeaders }, callback) => {
const headers: NonNullable<typeof responseHeaders> = {};
@@ -322,6 +510,13 @@ const setupTrayItem = (mainWindow: BrowserWindow) => {
* once most people have upgraded to newer versions.
*/
const deleteLegacyDiskCacheDirIfExists = async () => {
const removeIfExists = async (dirPath: string) => {
if (existsSync(dirPath)) {
log.info(`Removing legacy disk cache from ${dirPath}`);
await fs.rm(dirPath, { recursive: true });
}
};
// [Note: Getting the cache path]
//
// The existing code was passing "cache" as a parameter to getPath.
@@ -338,9 +533,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)) {
log.info(`Removing legacy disk cache from ${cacheDir}`);
await fs.rm(cacheDir, { recursive: true });
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);
}
};
@@ -359,76 +563,5 @@ const deleteLegacyKeysStoreIfExists = async () => {
}
};
const main = () => {
const gotTheLock = app.requestSingleInstanceLock();
if (!gotTheLock) {
app.quit();
return;
}
let mainWindow: BrowserWindow | undefined;
initLogging();
logStartupBanner();
// The order of the next two calls is important
setupRendererServer();
registerPrivilegedSchemes();
migrateLegacyWatchStoreIfNeeded();
app.on("second-instance", () => {
// Someone tried to run a second instance, we should focus our window.
if (mainWindow) {
mainWindow.show();
if (mainWindow.isMinimized()) mainWindow.restore();
mainWindow.focus();
}
});
// Emitted once, when Electron has finished initializing.
//
// Note that some Electron APIs can only be used after this event occurs.
void app.whenReady().then(() => {
void (async () => {
// Create window and prepare for the renderer.
mainWindow = createMainWindow();
// Setup IPC and streams.
const watcher = createWatcher(mainWindow);
attachIPCHandlers();
attachFSWatchIPCHandlers(watcher);
attachLogoutIPCHandler(watcher);
registerStreamProtocol();
// Configure the renderer's environment.
const webContents = mainWindow.webContents;
setDownloadPath(webContents);
allowExternalLinks(webContents);
allowAllCORSOrigins(webContents);
// Start loading the renderer.
void mainWindow.loadURL(rendererURL);
// Continue on with the rest of the startup sequence.
Menu.setApplicationMenu(await createApplicationMenu(mainWindow));
setupTrayItem(mainWindow);
setupAutoUpdater(mainWindow);
try {
await deleteLegacyDiskCacheDirIfExists();
await deleteLegacyKeysStoreIfExists();
} catch (e) {
// Log but otherwise ignore errors during non-critical startup
// actions.
log.error("Ignoring startup error", e);
}
})();
});
// This is a macOS only event. Show our window when the user activates the
// app, e.g. by clicking on its dock icon.
app.on("activate", () => mainWindow?.show());
app.on("before-quit", allowWindowClose);
};
// Go for it.
main();

View File

@@ -46,7 +46,12 @@ import {
computeCLIPTextEmbeddingIfAvailable,
} from "./services/ml-clip";
import { computeFaceEmbeddings, detectFaces } from "./services/ml-face";
import { encryptionKey, saveEncryptionKey } from "./services/store";
import {
encryptionKey,
lastShownChangelogVersion,
saveEncryptionKey,
setLastShownChangelogVersion,
} from "./services/store";
import {
clearPendingUploads,
listZipItems,
@@ -101,11 +106,19 @@ export const attachIPCHandlers = () => {
ipcMain.handle("selectDirectory", () => selectDirectory());
ipcMain.handle("encryptionKey", () => encryptionKey());
ipcMain.handle("saveEncryptionKey", (_, encryptionKey: string) =>
saveEncryptionKey(encryptionKey),
);
ipcMain.handle("encryptionKey", () => encryptionKey());
ipcMain.handle("lastShownChangelogVersion", () =>
lastShownChangelogVersion(),
);
ipcMain.handle("setLastShownChangelogVersion", (_, version: number) =>
setLastShownChangelogVersion(version),
);
// - App update

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

@@ -1,12 +1,16 @@
import { safeStorage } from "electron/main";
import { safeStorageStore } from "../stores/safe-storage";
import { uploadStatusStore } from "../stores/upload-status";
import { userPreferences } from "../stores/user-preferences";
import { watchStore } from "../stores/watch";
/**
* Clear all stores except user preferences.
*
* This is useful to reset state when the user logs out.
* This function is useful to reset state when the user logs out. User
* preferences are preserved since they contain things tied to the person using
* the app or other machine specific state not tied to the account they were
* using inside the app.
*/
export const clearStores = () => {
safeStorageStore.clear();
@@ -32,3 +36,9 @@ export const encryptionKey = (): string | undefined => {
const keyBuffer = Buffer.from(b64EncryptedKey, "base64");
return safeStorage.decryptString(keyBuffer);
};
export const lastShownChangelogVersion = (): number | undefined =>
userPreferences.get("lastShownChangelogVersion");
export const setLastShownChangelogVersion = (version: number) =>
userPreferences.set("lastShownChangelogVersion", version);

View File

@@ -23,6 +23,12 @@ export const createWatcher = (mainWindow: BrowserWindow) => {
const folderPaths = folderWatches().map((watch) => watch.folderPath);
const watcher = chokidar.watch(folderPaths, {
// Don't emit "add" events for matching paths when instantiating the
// watch (we do a full disk scan on launch on our own, and also getting
// the same events from the watcher causes duplicates).
ignoreInitial: true,
// Ask the watcher to wait for a the file size to stabilize before
// telling us about a new file. By default, it waits for 2 seconds.
awaitWriteFinish: true,
});

View File

@@ -1,21 +1,54 @@
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 changelog version for which we last showed the "What's new" screen.
*
* See: [Note: Conditions for showing "What's new"]
*/
lastShownChangelogVersion?: number;
/**
* 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. It is only saved if
* the app is not maximized (when the app was maximized when it was being
* quit then {@link isWindowMaximized} will be set instead).
*/
windowBounds?: {
x: number;
y: number;
width: number;
height: number;
};
/**
* `true` if the app's main window is maximized the last time it was closed.
*/
isWindowMaximized?: boolean;
}
const userPreferencesSchema: Schema<UserPreferences> = {
hideDockIcon: {
type: "boolean",
},
skipAppVersion: {
type: "string",
},
muteUpdateNotificationVersion: {
type: "string",
hideDockIcon: { type: "boolean" },
skipAppVersion: { type: "string" },
muteUpdateNotificationVersion: { type: "string" },
lastShownChangelogVersion: { type: "number" },
windowBounds: {
properties: {
x: { type: "number" },
y: { type: "number" },
width: { type: "number" },
height: { type: "number" },
},
},
isWindowMaximized: { type: "boolean" },
};
export const userPreferences = new Store({

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