Compare commits

...

1014 Commits

Author SHA1 Message Date
Vishnu Mohandas
c074ee0780 Fix auth icons (#4108) 2024-11-20 13:26:23 +05:30
vishnukvmd
e7b97c2407 Merge branch 'main' into fix-auth-icons 2024-11-20 13:20:15 +05:30
vishnukvmd
7bc2ecb3e8 v4.1.1 2024-11-20 13:17:19 +05:30
vishnukvmd
b12ecea496 Revert "Add new icons (#3776)"
This reverts commit a6e4f9e603.
2024-11-20 13:16:43 +05:30
vishnukvmd
746046ac11 Update simple-icons 2024-11-20 13:10:02 +05:30
Vishnu Mohandas
3c5f6dd510 [docs] Document the threat model for app lock 2024-11-20 11:50:47 +05:30
Manav Rathi
2515ad0640 [web] Post eslint migration cleanup (#4106)
More needs to be done, but gradually.
2024-11-20 11:31:39 +05:30
Manav Rathi
510f94fc51 lf 2024-11-20 11:21:49 +05:30
Manav Rathi
fb7f64bd35 Tighten 2024-11-20 11:15:26 +05:30
Manav Rathi
f3bfc8525b Fix 2024-11-20 10:32:22 +05:30
Manav Rathi
c6fd49bff5 Prune 2024-11-20 10:29:19 +05:30
Manav Rathi
0fca6728cd Fix 2024-11-20 10:25:34 +05:30
Manav Rathi
8f0efb41fe Auto fix 2024-11-20 10:22:21 +05:30
Manav Rathi
8272703a21 Auto fix 2024-11-20 10:20:28 +05:30
Manav Rathi
8f0ec55e54 Fix 2024-11-20 10:18:50 +05:30
Manav Rathi
ebe0292cb4 Prune 2024-11-20 10:14:30 +05:30
Manav Rathi
132e509589 Apply rec 2024-11-20 10:09:56 +05:30
Manav Rathi
ba8ccbf065 Prune 2024-11-20 10:08:41 +05:30
Manav Rathi
f5512d3cd8 Apply autofixes prefer-regexp-exec 2024-11-20 10:07:42 +05:30
Manav Rathi
3b0544d779 Prune 2024-11-20 10:05:54 +05:30
Manav Rathi
a370188504 Fix awaited returns 2024-11-20 10:04:27 +05:30
Manav Rathi
07b1709308 Prune 2024-11-20 10:01:46 +05:30
Manav Rathi
4e5c99aafe Prune 2024-11-20 10:00:52 +05:30
Manav Rathi
fdf0e3f0ad Fix 2024-11-20 09:53:46 +05:30
Manav Rathi
98bfb8b5f5 This shouldn't be named useFoo, leaving that refactoring for later 2024-11-20 09:47:14 +05:30
Manav Rathi
cd6c3d9158 Prune 2024-11-20 09:45:57 +05:30
Manav Rathi
6533883eaa Prune 2024-11-20 09:43:50 +05:30
Manav Rathi
6fe4201eb8 Prune 2024-11-20 09:42:37 +05:30
Manav Rathi
09f76599b2 Prune 2024-11-20 09:39:57 +05:30
Manav Rathi
04a8bd6209 Apply lints 2024-11-20 09:38:35 +05:30
Manav Rathi
3d3ee1bb6f Apply lints 2024-11-20 09:36:04 +05:30
Manav Rathi
af82ef194d Not awaiting promises to retain existing behavior 2024-11-20 09:32:27 +05:30
Manav Rathi
1ddd143b2e Context 2024-11-20 09:19:56 +05:30
Manav Rathi
1ec67c6baf Prune 2024-11-20 09:07:20 +05:30
Manav Rathi
80146522ad Start fixing 2024-11-20 08:28:17 +05:30
Manav Rathi
3dd136bdf3 Tweaks 2024-11-20 08:19:46 +05:30
Manav Rathi
f69832ea16 Fix updated rule 2024-11-20 08:13:39 +05:30
Manav Rathi
e55181a9be Bring back the rest that are needed 2024-11-20 08:07:04 +05:30
Manav Rathi
8f43f27fcf Tweak ignores 2024-11-20 08:03:56 +05:30
Manav Rathi
916b56fa65 The files filter has a big impact on speed 2024-11-20 07:59:57 +05:30
Manav Rathi
c211a829f8 Bring back overrides 2024-11-20 07:56:54 +05:30
Manav Rathi
89b90c9332 Fix overwriting 2024-11-20 07:53:02 +05:30
Manav Rathi
7c2b8422a8 Dot's no longer needed
From docs:

> If you are using a flat configuration file(eslint.config.js), you can also omit the file arguments and ESLint will use .
2024-11-20 07:45:25 +05:30
Manav Rathi
2daca31499 [web] ESLint 8 => 9 (#4097)
This does the bulk of the migration. Will migrate the source to the new
rules in smaller subsequent PRs.
2024-11-19 20:14:40 +05:30
Manav Rathi
886a0ddb25 Update 2024-11-19 20:10:24 +05:30
Manav Rathi
9e2a70e469 tsc on build-config 2024-11-19 20:04:52 +05:30
Manav Rathi
e668c86185 Fix 2024-11-19 19:59:17 +05:30
Manav Rathi
2bda469176 Swap 2024-11-19 19:52:48 +05:30
Manav Rathi
91ddce1425 Fix 2024-11-19 19:49:42 +05:30
Manav Rathi
5c6784c549 Swap 2024-11-19 19:47:28 +05:30
Manav Rathi
01f1172382 Swap 2024-11-19 19:46:37 +05:30
Manav Rathi
87ac2360eb Swap 2024-11-19 19:44:24 +05:30
Manav Rathi
31b50852b6 Swap 2024-11-19 19:39:59 +05:30
Manav Rathi
c506eec544 Fix 2024-11-19 19:38:42 +05:30
Manav Rathi
938679922c Swap 2024-11-19 19:35:14 +05:30
Manav Rathi
1aac1ae3c3 Fix for now 2024-11-19 19:33:33 +05:30
Manav Rathi
a3586fed7e Swap 2024-11-19 19:32:52 +05:30
Manav Rathi
097b90eeda Get it to run 2024-11-19 19:31:33 +05:30
Manav Rathi
83adb94fc9 Swap 2024-11-19 19:29:52 +05:30
Manav Rathi
e6cbd75a52 Fix as per new rules 2024-11-19 19:28:04 +05:30
Manav Rathi
02c9f9f615 Swap 2024-11-19 19:25:18 +05:30
Manav Rathi
453c825cc6 Autofixer no-duplicate-type-constituents 2024-11-19 19:22:25 +05:30
Manav Rathi
ea19cd08c6 Swap 2024-11-19 19:20:31 +05:30
Manav Rathi
4a3260f627 Auto fixer for new lint rule 2024-11-19 19:19:31 +05:30
Manav Rathi
0271e53c26 Swap 2024-11-19 19:15:07 +05:30
Manav Rathi
1b772b644a Move to config 2024-11-19 19:14:12 +05:30
Manav Rathi
2bde3fb0d7 Squash 2024-11-19 19:12:22 +05:30
Manav Rathi
db5049b801 Swap 2024-11-19 19:06:17 +05:30
Manav Rathi
32cd241982 Merge 2024-11-19 19:02:30 +05:30
Manav Rathi
0338313f73 rr 2024-11-19 19:00:10 +05:30
Manav Rathi
0f93c48e10 Scope 2024-11-19 18:57:40 +05:30
Manav Rathi
dbfb5e5da3 hp 2024-11-19 18:49:40 +05:30
Manav Rathi
5209562bba rv 2024-11-19 18:47:24 +05:30
Manav Rathi
69d4e632f4 rp 2024-11-19 18:40:49 +05:30
Manav Rathi
b5be13df2c Cleanup 2024-11-19 18:27:24 +05:30
Manav Rathi
ebcabe5bfe Restore rules 2024-11-19 18:25:41 +05:30
Manav Rathi
41cdb73382 Upd 2024-11-19 18:22:23 +05:30
Manav Rathi
da71a34f75 TC 2024-11-19 18:15:51 +05:30
Manav Rathi
2bdf85403b Direct 2024-11-19 18:09:47 +05:30
Manav Rathi
56b72bd55b Chain 2024-11-19 18:05:45 +05:30
Manav Rathi
dbeb95d438 wip checkpoint 2024-11-19 17:57:59 +05:30
Manav Rathi
143d346ed4 eslint migration wip checkpoint 2024-11-19 17:49:37 +05:30
Laurens Priem
29b2bd577c [mob][photos] Fix ConcurrentModificationError (#4095)
## Description

Fix ConcurrentModificationError
2024-11-19 17:01:42 +05:30
laurenspriem
55044b1818 [mob][photos] Fix ConcurrentModificationError 2024-11-19 17:00:09 +05:30
Ashil
538967bda0 Update apple-app-site-association for opening public link album in-app. (#4093) 2024-11-19 14:27:39 +05:30
Ashil
f848f64dc5 Update apple-app-site-association for opening public link album in-app. 2024-11-19 14:09:33 +05:30
Laurens Priem
8b07db8a73 Ml sync fix (#4027)
## Description

Remotely safe faceIDs of a certain person that are rejected by the user.
2024-11-19 13:43:45 +05:30
Manav Rathi
f7aaa7a2c8 [web] Lint infrastructure cleanup - Part 1/x (#4092) 2024-11-19 13:10:36 +05:30
Manav Rathi
4536486daa Prep 2024-11-19 12:57:26 +05:30
Manav Rathi
dee8f8af6c Prune 2024-11-19 12:53:48 +05:30
Manav Rathi
cbf48df272 Inline base config 2024-11-19 12:44:45 +05:30
Manav Rathi
cda9f17bcb Inline 2024-11-19 12:36:23 +05:30
Manav Rathi
28d6a525db Swap 2024-11-19 12:32:54 +05:30
Manav Rathi
27c7221483 Swap 2024-11-19 12:28:42 +05:30
Manav Rathi
e2636edbb9 Swap 2024-11-19 12:25:14 +05:30
Manav Rathi
3a3f9fbd94 Swap to newer 2024-11-19 12:20:21 +05:30
Neeraj Gupta
e204450f2a [server] Handle error in bonus reversal (#4089)
## Description

## Tests
2024-11-19 10:30:09 +05:30
Neeraj Gupta
05f5c7f439 [server] Wrap inside db transaction 2024-11-19 10:28:02 +05:30
Neeraj Gupta
641a73c101 [server] validate bonus reversal 2024-11-19 10:24:58 +05:30
Manav Rathi
bd33bec3e6 [desktop] Move out of labs (#4088)
Prep for next release.
2024-11-19 08:18:23 +05:30
Manav Rathi
68c230dae9 Fix scroll (partially)
We want the consent message to be scrollable. The current changes are a partial
solution, the navbar still shows through at times.
2024-11-19 08:13:11 +05:30
Manav Rathi
a2b9126c88 Rename 2024-11-19 06:34:24 +05:30
Manav Rathi
07600c6018 Inline consent contents 2024-11-18 20:23:57 +05:30
Manav Rathi
0024ee5b77 wip checkpoint 2024-11-18 20:10:48 +05:30
Manav Rathi
d5d97d3d6e Prep 2024-11-18 19:58:30 +05:30
Manav Rathi
e3e9febeb3 Always show people section btn on destkop 2024-11-18 19:02:14 +05:30
Manav Rathi
ed5c4dfc7e Unlab 2024-11-18 18:58:48 +05:30
Manav Rathi
43d47f1c4c [web] Deprecate our home grown ensure (#4082)
ensure:

     Error: Required value was undefined

Built in undefined property access (note how the error message has more
info):

     TypeError: Cannot read properties of undefined (reading 'length')
2024-11-18 18:43:48 +05:30
Manav Rathi
ebbca2b609 Fin 2024-11-18 18:37:30 +05:30
Manav Rathi
ebd550505f Cont 2024-11-18 18:32:51 +05:30
Manav Rathi
24b9e629c1 Cont 2024-11-18 18:29:15 +05:30
Manav Rathi
a261d1b3a2 Continue 17bcf21216 2024-11-18 18:17:57 +05:30
Manav Rathi
17bcf21216 Start deprecating ensure
ensure:
    Error: Required value was undefined

Built in undefined property access (note how the error message has more info):
    TypeError: Cannot read properties of undefined (reading 'length')
2024-11-18 18:01:44 +05:30
Manav Rathi
49f8f0aadd [web] Periodic dependency update (#4080) 2024-11-18 17:40:36 +05:30
Manav Rathi
6304af0b31 Other updates 2024-11-18 17:35:26 +05:30
Manav Rathi
ed2ad06515 Fix comlink init (after dep update) 2024-11-18 17:33:28 +05:30
Manav Rathi
daee8fb4f6 Update deps 2024-11-18 16:56:15 +05:30
Manav Rathi
9b8851e007 [desktop] Support rejected faces in clusters synced with remote (#4051)
Sibling of https://github.com/ente-io/ente/pull/4027
2024-11-18 15:50:45 +05:30
Manav Rathi
c120ab0596 assigned and rejected should not intersect 2024-11-18 15:47:41 +05:30
Manav Rathi
038f776dec [web] Add workaround for black grid lines when zooming onto images in Chrome (#4076)
Fixes https://github.com/ente-io/ente/issues/4067
2024-11-18 14:22:59 +05:30
Manav Rathi
77844f802c [web] Add workaround for black grid lines when zooming onto images in Chrome
Fixes https://github.com/ente-io/ente/issues/4067
2024-11-18 14:19:25 +05:30
rippleFCL
9401c9f0e1 [cli] Update Ente CLI ENTE_CLI_SECRETS_PATH docs (#4047)
Co-authored-by: seeg <dev@charlie.fyi>
2024-11-18 14:15:43 +05:30
Ashil
cdb00ed06b [mob][photos] Faces UI enhancement (#4073) 2024-11-18 14:14:40 +05:30
Nugraha Yoga
05b88bb831 [mob] Fix market URI on mobile (#4054)
## Description
This PR fix typos in the market URI that resulted in 404 page on android
market.

![image](https://github.com/user-attachments/assets/f91669f0-cace-4f93-8a55-202adda4c164)
2024-11-18 14:14:18 +05:30
Aaron
34bce7c1d3 [auth][l10n]: Add Catalan translation (#4052) 2024-11-18 14:14:08 +05:30
Nikunj Kumar Nakum
78871e2843 Added Bluesky logo (#4061)
## Description
added bluesky logo
## Tests
2024-11-18 14:11:26 +05:30
Neeraj Gupta
7c3ff50b7f [mobile] New translations (#4069)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-app)
2024-11-18 14:09:35 +05:30
Neeraj Gupta
c4ad530bc1 [auth] New translations (#4070)
New translations from
[Crowdin](https://crowdin.com/project/ente-authenticator-app)
2024-11-18 14:07:49 +05:30
Manav Rathi
7acb76fda8 [desktop] Dependency updates (#4075) 2024-11-18 13:57:07 +05:30
Manav Rathi
c37f6d2904 [desktop] Dependency updates 2024-11-18 13:53:27 +05:30
Manav Rathi
e7a5f51a37 [web] New translations (#4068)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2024-11-18 13:35:40 +05:30
ashilkn
f42ae367dc [mob][photos] Fix loading and error state of 'all' screen of people section 2024-11-18 11:01:11 +05:30
ashilkn
4f86ca9415 Merge branch 'main' into faces_UI_enhancement 2024-11-18 10:51:04 +05:30
ashilkn
47b668a82a [mob][photos] Minor animation tweaks: 2024-11-18 10:48:46 +05:30
Neeraj Gupta
72d09bec50 [auth] Implement Custom Sorting (#4072)
## Description
This pull request introduces functionality to enable custom sorting for
TOTP codes in the app. Users can now drag and drop codes to rearrange
their order. The updated order is synced across all devices.
2024-11-18 10:31:53 +05:30
ashilkn
9de634ab8b [mob][photos] Use an app bar that occupies less space on UI in 'all' section of people section compared to the app bar used in 'all' screen of other sections 2024-11-18 10:31:05 +05:30
ashilkn
58887ce044 [mob][photos] Make 'all' screen of people section more similar to 'all' screen of other sections 2024-11-18 10:25:07 +05:30
ashilkn
ad4b5832ca [mob][photos] Fix appBar color change on scroll 2024-11-18 10:23:18 +05:30
ashilkn
8ba65c599a [mob][photos] Fix SafeArea widget breaking the item size logic on 'all' screen of people section 2024-11-18 10:00:01 +05:30
Crowdin Bot
665609d2b3 New Crowdin translations by GitHub Action 2024-11-18 01:17:41 +00:00
Crowdin Bot
60f5d91f45 New Crowdin translations by GitHub Action 2024-11-18 01:05:19 +00:00
Crowdin Bot
54d791e723 New Crowdin translations by GitHub Action 2024-11-18 00:36:55 +00:00
Vishnu Mohandas
e719cde4e3 Update admin.md 2024-11-17 22:03:23 +05:30
Aman Raj
01d182a496 [auth] added a new parameter to keep track of position of code 2024-11-16 21:20:46 +05:30
Aman Raj
20308e99e9 [auth] logic to cache codes and to save & update them 2024-11-16 21:19:04 +05:30
Aman Raj
2bc1ce9f92 [auth] added reorder code screen 2024-11-16 21:17:47 +05:30
Aman Raj
b69b6fc6a7 [auth] added edit icon to reorder codes 2024-11-16 20:49:02 +05:30
Manav Rathi
b5843cdf60 Update people after file upload 2024-11-16 14:49:47 +05:30
Manav Rathi
73d71834b9 Don't rely on count to track changes since we can now have rejns 2024-11-16 13:34:54 +05:30
Manav Rathi
95905a4187 Fix 2024-11-16 12:50:47 +05:30
Manav Rathi
1aae178179 Use 2024-11-16 09:56:05 +05:30
Manav Rathi
0e6705f8e1 Compute rejected clusters 2024-11-16 09:27:20 +05:30
Manav Rathi
8cf87acb7b Rework 2024-11-15 22:01:29 +05:30
Manav Rathi
f1ba5cfc43 Distinguish between suggestion reject and saved choice reject 2024-11-15 22:01:29 +05:30
Manav Rathi
f9fb65db41 Reject on unassign 2024-11-15 22:01:28 +05:30
Manav Rathi
5abd6468c7 Prune on positive suggestion accept 2024-11-15 22:01:28 +05:30
Manav Rathi
fb3c845759 Add cluster 2024-11-15 22:01:28 +05:30
Manav Rathi
f6eeb6abce Apply rejections to suggestion base clusters 2024-11-15 22:01:28 +05:30
Manav Rathi
c577ccd7e4 Filter out rejected face IDs when using remote cgroups 2024-11-15 22:01:28 +05:30
Manav Rathi
ddd13a88be Types 2024-11-15 22:01:28 +05:30
ashilkn
392ec34f25 [mob][photos] Remove hero animation from People section because when it's enabled, there is a UI glitch because of an issue in flutter
https://github.com/flutter/flutter/issues/47991
2024-11-15 20:57:15 +05:30
Prateek Sunal
e0ffde3f25 [mob][image-editor] dismiss page on save edits (#4036)
## Description

Previously saving edits would not close the page, this PR fixes that.

## Tests
2024-11-15 19:48:55 +05:30
ashilkn
102929a5d6 [mob][photos] Decrease the chances of hero animation not working between faces in 'All' screen of People and People section when going back to search section from 'All' screen 2024-11-15 17:43:32 +05:30
Laurens Priem
c94feb0e40 Ml banner (#4039)
## Description

Add banner in home gallery for enabling ML. 

## Tests

Tested in debug mode on my Pixel 8.
2024-11-15 16:17:04 +05:30
laurenspriem
93986461dd [mob][photos] Copy changes 2024-11-15 16:06:11 +05:30
laurenspriem
4ce2d0a1e2 [mob][photos] ml section empty copy 2024-11-15 16:02:45 +05:30
laurenspriem
d4479a1a66 [mob][photos] Extract to string 2024-11-15 15:49:58 +05:30
laurenspriem
0f3e490699 [mob][photos] Don't keep showing the banner 2024-11-15 15:45:23 +05:30
laurenspriem
8a7e11e4af [mob][photos] Enable ml banner 2024-11-15 15:37:35 +05:30
ashilkn
27d5ef2bc0 [mob][photos] Fix alignment of faces in People section 2024-11-15 15:31:53 +05:30
laurenspriem
8d2288fbb4 [mob][photos] super key 2024-11-15 15:22:27 +05:30
ashilkn
39252122ef [mob][photos] Show all faces in 'All' section of faces 2024-11-15 13:35:41 +05:30
Vishnu Mohandas
3c3c66ee8b [server] Update constraints for adding BF deal by support (#4038) 2024-11-15 13:32:01 +05:30
vishnukvmd
fe59e0ae65 [server] Update constraints for adding BF deal by support 2024-11-15 13:24:22 +05:30
ashilkn
184323429a [mob][photos] Create new 'All' page for people section 2024-11-15 13:22:29 +05:30
Manav Rathi
80710d29c4 [web] Retain original's file creation time on edits (#4037) 2024-11-15 10:38:57 +05:30
Manav Rathi
057bd3a4d2 Retain more info
Also invent a new scheme for passing around this data instead of piggy backing
on the JSON route, since the JSON route has other complications (e.g. it strips
off the "-edited" prefix) that we'd anyways would've needed to workaround.
2024-11-15 10:31:16 +05:30
Manav Rathi
708109f5e4 [web] Retain original's file creation time on edits 2024-11-15 09:10:28 +05:30
Prateek Sunal
120053f61d fix: dismiss image editor on save edits 2024-11-15 02:24:13 +05:30
Manav Rathi
e645081b12 [web] Show files that are archived in two ways in the archive section (#4035) 2024-11-14 22:14:13 +05:30
Manav Rathi
ba314455e2 [web] Show files that are archived in two ways in the archive section 2024-11-14 22:06:34 +05:30
tigattack
a5480025e9 Create custom icon for authentik (#4029)
* Adds a custom icon for [authentik](https://goauthentik.io/).
* Fixes minor formatting issues in `custom-icons.json`.
2024-11-14 17:31:49 +05:30
ashilkn
e9923fbf44 [mob][photos] Change UI of PersonSearchExample widget 2024-11-14 17:07:38 +05:30
Braky
916ae34bac Add three new icons (#4011)
Includes custom icons for

- Microsoft 365
- Raindrop.io
- WEB.DE
2024-11-14 16:54:01 +05:30
Neeraj Gupta
dfc6358314 [staff] Suraface error as alert & send token via header (#4033)
## Description

## Tests
2024-11-14 16:53:47 +05:30
Neeraj Gupta
ce61965ed6 [cli] Don't perform CLI secret initialisation unless needed (#4028)
## Description

Calling `GetOrCreateClISecret()` can cause issues in some unattended
scenarios.

I'm creating a Brew formula for ente CLI with the following test:

```
  test do
    assert_match "Version #{version}", shell_output("#{bin}/ente version")
  end
```

When running `brew test` for the formula, ente would fail with the
following error: `2024/11/13 11:49:56 error setting password in keyring:
exit status 154`

And I would see this pop-up:


![image](https://github.com/user-attachments/assets/ccd64b0d-1cb8-469c-9c16-be1b944d3b72)
2024-11-14 16:18:01 +05:30
Neeraj Gupta
9f9567817d [staff]Suraface error as alert & send token via header 2024-11-14 16:15:52 +05:30
Neeraj Gupta
f2210fbbae [staff] Surface error as dialog 2024-11-14 16:01:38 +05:30
Neeraj Gupta
0c3909b2d3 [staff] Fix disable 2FA (#4032)
## Description

## Tests
2024-11-14 15:11:43 +05:30
Neeraj Gupta
eb949bcad9 [staff] Lint fix 2024-11-14 15:07:24 +05:30
Neeraj Gupta
a1f0c1024b [staff] Fix disable 2FA 2024-11-14 14:59:44 +05:30
Manav Rathi
3d0cc31816 [web] Reduce use of exceptions for control flow (#4031) 2024-11-14 10:27:09 +05:30
Manav Rathi
65a2b5aeeb LF 2024-11-14 10:19:14 +05:30
Manav Rathi
d8706580c3 Inline 2024-11-14 10:15:22 +05:30
Manav Rathi
548724ae0a Remove ad-hoc retry
If this is needed, will add it back with a comment explaining why the workaround
was needed.
2024-11-14 10:07:57 +05:30
Manav Rathi
54b4c01f51 Don't use exceptions for control flow 2024-11-14 09:59:19 +05:30
Manav Rathi
86f859aaca Don't use exceptions for control flow 2024-11-14 09:49:47 +05:30
Manav Rathi
f749f9de65 Unused and inline 2024-11-14 07:55:49 +05:30
Manav Rathi
805dfdc825 Unused 2024-11-13 21:21:04 +05:30
Manav Rathi
cce3063cf1 Inline 2024-11-13 21:09:55 +05:30
Manav Rathi
2910a8ac39 Inline 2024-11-13 21:04:21 +05:30
Manav Rathi
dbf877b9bb Inline 2024-11-13 21:01:45 +05:30
tigattack
cfae8523a1 [cli] Don't perform CLI secret initialisation when not needed
Calling `GetOrCreateClISecret()` can cause issues in some unattended scenarios.
2024-11-13 12:22:08 +00:00
Laurens Priem
b8981be2e6 [mob][photos] Copy change for model download (#4026)
## Description

Copy change to avoid giving the impression that models keep getting
downloaded.
2024-11-13 16:55:15 +05:30
Manav Rathi
cbc2a8f63c Inline 2024-11-13 16:43:10 +05:30
laurenspriem
f1ca5ccbd0 [mob][photos] Copy change for model download 2024-11-13 16:38:17 +05:30
laurenspriem
3d6106c1c1 [mob][photos] Add empty check 2024-11-13 16:06:50 +05:30
Manav Rathi
fcfc6972d1 [web] Fix search when an album only has symlinks (#4025)
The uniquification would prevent albums that only contains photos that
are
already present in another album from appearing in search results.
2024-11-13 15:57:07 +05:30
Manav Rathi
0c820a6ec4 [web] Fix search when an album only has symlinks
The uniquification would prevent albums that only contains photos that are
already present in another album from appearing in search results.
2024-11-13 15:54:12 +05:30
laurenspriem
1ed03c5942 [mob][photos] Safe removed clusters in rejected faces 2024-11-13 15:45:59 +05:30
Manav Rathi
fab883c49a [server] Add validation for object_keys (#4022)
## Description

## Tests
2024-11-13 15:24:18 +05:30
laurenspriem
822aa7fcd4 [mob][photos] Make sure user can add back rejected faces 2024-11-13 14:38:51 +05:30
Neeraj Gupta
bd53eaec28 [server] Add validation for object_keys 2024-11-13 12:04:55 +05:30
Neeraj Gupta
c2380de406 [mob] Clean up multipart upload on put or update error (#4021)
## Description

## Tests
2024-11-13 12:01:23 +05:30
Neeraj Gupta
3d8bdb751c [mob] Handle 401 during multipart failure (#4015)
## Description

## Tests
2024-11-13 12:00:47 +05:30
laurenspriem
4a495e5806 [mob][photos] Make other clustering methods private 2024-11-13 11:22:38 +05:30
laurenspriem
5d99a7c757 [mob][photos] Dont recluster rejected face to cluster mapping 2024-11-13 11:21:43 +05:30
Neeraj Gupta
ff218c3e4d [mob] Clean up multipart upload on put or update error 2024-11-13 11:16:19 +05:30
Manav Rathi
4b99b1c20c [web] General refactoring - Uploads UI - Part x/x (#4020) 2024-11-13 09:28:46 +05:30
Manav Rathi
e747494ef1 Tweak 2024-11-13 07:28:23 +05:30
Manav Rathi
fc114c7d92 Inline fin 2024-11-13 07:12:45 +05:30
Manav Rathi
3e94ea8f81 Tweak 2024-11-13 07:09:57 +05:30
Manav Rathi
b7c81656a3 Inline 2024-11-13 07:01:13 +05:30
Manav Rathi
b3d2846b2f Inline 2024-11-13 06:56:19 +05:30
Manav Rathi
0794f570a8 Inline 1 2024-11-13 06:43:21 +05:30
Manav Rathi
604c4462fe Tweaks 2024-11-13 06:31:19 +05:30
laurenspriem
4c222f2cd7 [mob][photos] Get rid of remotely rejected faces from local person 2024-11-12 21:36:49 +05:30
Manav Rathi
c96b510997 Inline 2024-11-12 19:34:39 +05:30
Manav Rathi
f2e3daaa12 [web] New translations (#4018)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2024-11-12 19:17:15 +05:30
Crowdin Bot
6f03b72bf2 New Crowdin translations by GitHub Action 2024-11-12 13:46:09 +00:00
Manav Rathi
217c749970 [web] General refactoring - Uploads (#4017) 2024-11-12 19:15:21 +05:30
Manav Rathi
67cd42fd23 Prune unused phase
Removed in 6aed8d3002
2024-11-12 19:10:06 +05:30
Manav Rathi
57d6fb3bc9 Ref 2024-11-12 19:01:28 +05:30
Manav Rathi
8d00796a32 Rename and use same convention 2024-11-12 18:24:49 +05:30
Manav Rathi
df19e12ab8 Last 2024-11-12 18:18:10 +05:30
Manav Rathi
5461bd112f Swap 2024-11-12 18:13:51 +05:30
Manav Rathi
bbd5aa6b3e Align divider with main view divider
+label tr
2024-11-12 17:29:24 +05:30
Manav Rathi
a52afe509c Conv 2024-11-12 17:25:49 +05:30
Manav Rathi
e5dee17127 Conv 2024-11-12 17:12:33 +05:30
Manav Rathi
55fdcc8446 Inline into last call site 2024-11-12 17:03:33 +05:30
Manav Rathi
d4cae11a9b Remove unnecessary wrapper 2024-11-12 16:52:20 +05:30
Manav Rathi
3b84f76de8 Sync sizes 2024-11-12 16:47:08 +05:30
Manav Rathi
61bc7c95b2 Tweak spacing 2024-11-12 16:21:42 +05:30
Manav Rathi
4c12fb15b1 Icon name consistency 2024-11-12 16:06:11 +05:30
laurenspriem
b9c63426fc [mob][photos] Assign not person feedback for completely rejected remote cluster 2024-11-12 14:54:25 +05:30
Neeraj Gupta
306978291b [mob] Handle 401 during multipart failure 2024-11-12 14:28:00 +05:30
Manav Rathi
2421d69fd0 [web] Enable Portuguese translations (#4014) 2024-11-12 13:07:29 +05:30
Neeraj Gupta
b0674cd5f3 [server] Fix BF handling for bonus calculation (#4012)
## Description

## Tests
2024-11-12 11:00:33 +05:30
Neeraj Gupta
13053decf0 [server] Fix BF handling for bonus calculation 2024-11-12 11:00:03 +05:30
Manav Rathi
36ed4464c1 [web] Enable Portuguese translations 2024-11-12 10:50:48 +05:30
Manav Rathi
f20672e4e2 [web] New translations (#4007)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2024-11-12 10:44:11 +05:30
Crowdin Bot
799229531c New Crowdin translations by GitHub Action 2024-11-12 05:09:59 +00:00
laurenspriem
015790874e [mob][photos] Pull rejected faces for person from remote 2024-11-12 09:26:04 +05:30
laurenspriem
908a55bb20 [mob][photos] Push not person feedback 2024-11-11 15:42:24 +05:30
Neeraj Gupta
81ea2b8059 An attempt to fix the Custom Icon for Coinbase (#3995)
The icon currently only displays as a small black circle in the app.
I've replaced the SVG file entirely, and hopefully that'll fix the
issue.
2024-11-11 11:59:37 +05:30
Neeraj Gupta
73fcd25d22 [mobile] New translations (#4008)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-app)
2024-11-11 11:55:59 +05:30
Neeraj Gupta
8628597450 [auth] New translations (#4009)
New translations from
[Crowdin](https://crowdin.com/project/ente-authenticator-app)
2024-11-11 11:55:38 +05:30
Crowdin Bot
8e28498b9b New Crowdin translations by GitHub Action 2024-11-11 01:17:14 +00:00
Crowdin Bot
0b5f9a4b18 New Crowdin translations by GitHub Action 2024-11-11 01:05:17 +00:00
Manav Rathi
7fd708bec7 [web] Rearrange files (#4001)
(mostly) non-functional rearrangement of code, with a long term aim at a
better split of photos and public albums code.
2024-11-09 18:59:10 +05:30
Manav Rathi
03f5b78872 Inline 2024-11-09 18:45:11 +05:30
Manav Rathi
d641b21edf Move 2024-11-09 18:39:58 +05:30
Manav Rathi
8a4df07082 Inline 2024-11-09 18:16:26 +05:30
Manav Rathi
b174d5f725 Fix calculation 2024-11-09 18:11:49 +05:30
Manav Rathi
d9256eaf95 Inline 2024-11-09 18:06:32 +05:30
Manav Rathi
7727ed8b6e Inline 2024-11-09 18:02:01 +05:30
Manav Rathi
fab7ecb980 Inline 2024-11-09 17:45:06 +05:30
Manav Rathi
5dfd3f3540 Unused 2024-11-09 17:39:37 +05:30
Manav Rathi
9ac9842e53 Inline 2024-11-09 17:38:23 +05:30
Manav Rathi
52a98c4973 Inline 2024-11-09 17:33:13 +05:30
Manav Rathi
5de432839f Inline 2024-11-09 17:29:26 +05:30
Manav Rathi
c0e93244f0 Inline 2024-11-09 17:24:53 +05:30
Manav Rathi
dc07bd9c74 Inline 2024-11-09 17:17:45 +05:30
Manav Rathi
c6bdd4bd8f Inline 2024-11-09 17:06:51 +05:30
Manav Rathi
a594e4fa83 Unused 2024-11-09 16:53:55 +05:30
Manav Rathi
76b50fab68 Inline 2024-11-09 16:53:19 +05:30
Manav Rathi
f6bc2a58e5 Inline 2024-11-09 16:52:01 +05:30
Manav Rathi
15ae4a47a6 Inline 2024-11-09 16:46:12 +05:30
Manav Rathi
b43b01433f Inline 2024-11-09 16:44:23 +05:30
Manav Rathi
423ef09aa0 Inline 2024-11-09 16:41:57 +05:30
Manav Rathi
f79cc7cd8f Inline 2024-11-09 16:40:15 +05:30
Manav Rathi
042e605c51 Tweak 2024-11-09 16:36:03 +05:30
Manav Rathi
6265a56128 Inline 2024-11-09 16:34:28 +05:30
Manav Rathi
6b4c514010 Tweak 2024-11-09 16:32:00 +05:30
Manav Rathi
466c9276af Inline 2024-11-09 16:30:59 +05:30
Manav Rathi
c4e54d1a6d Move 2024-11-09 16:29:15 +05:30
Manav Rathi
071f7ad658 Empty 2024-11-09 16:25:57 +05:30
Manav Rathi
83de44f857 Fix warnings 2024-11-09 16:08:18 +05:30
Manav Rathi
de3e4a8e8c Ignore self clicks 2024-11-09 15:54:46 +05:30
Manav Rathi
2a205d6b7b Tweak 2024-11-09 15:43:34 +05:30
Manav Rathi
b2914e3fae Move 2024-11-09 15:37:43 +05:30
Manav Rathi
0fe9f4db4b Tweak 2024-11-09 15:35:13 +05:30
Manav Rathi
cebb213eaa Tweak 2024-11-09 15:13:48 +05:30
Manav Rathi
0c4f248041 Inline 2024-11-09 15:05:24 +05:30
Manav Rathi
ae29519b00 Unused 2024-11-09 15:01:40 +05:30
Manav Rathi
1ebf1443cf [web] New translations (#3999)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2024-11-09 14:48:50 +05:30
Crowdin Bot
a471dce8a8 New Crowdin translations by GitHub Action 2024-11-09 09:18:28 +00:00
Manav Rathi
23c8bf1086 [web] Dialog related refactoring (#3998) 2024-11-09 14:44:50 +05:30
Manav Rathi
702f4e5b5a Fix casing (and lint) 2024-11-09 14:40:01 +05:30
Manav Rathi
d401f008ca Fix path 2024-11-09 14:34:03 +05:30
Manav Rathi
eec9de0907 Move 2024-11-09 14:30:01 +05:30
Manav Rathi
85fa95a42f Rename 2024-11-09 14:28:56 +05:30
Manav Rathi
60987c268f Remove unused 2024-11-09 14:26:08 +05:30
Manav Rathi
9c581d19b7 Tweak 2024-11-09 14:07:10 +05:30
Manav Rathi
e350ac2076 Ref 2024-11-09 13:33:12 +05:30
Manav Rathi
039b77e979 Move 2024-11-09 13:22:26 +05:30
Manav Rathi
1fe5864143 Better fullwidthing on mobile sized screens 2024-11-09 13:13:05 +05:30
Manav Rathi
6b85687f72 Ref 2024-11-09 12:59:17 +05:30
Manav Rathi
653bab956a Move 2024-11-09 12:47:24 +05:30
Manav Rathi
522d8f5ba7 Conv 2024-11-09 12:39:52 +05:30
Manav Rathi
0e2e3c14ec [web] New translations (#3997)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2024-11-09 12:25:27 +05:30
Crowdin Bot
5d7f4dd9ed New Crowdin translations by GitHub Action 2024-11-09 06:53:26 +00:00
Manav Rathi
53c258d0a8 [web] Migrate off deprecated dialog component (#3996) 2024-11-09 12:22:46 +05:30
Manav Rathi
ce274e0fc3 Rename 2024-11-09 12:17:51 +05:30
Manav Rathi
e2ce301885 Ref fin 2024-11-09 11:54:15 +05:30
NanoBunTV
e15e62f1a6 An attempt to fix the Custom Icon for Coinbase
The icon currently only displays as a small black circle in the app.
2024-11-09 00:22:31 -06:00
Vishnu Mohandas
ae89637cf9 [server] Send a notification email on BF deal purchase (#3994)
<img width="634" alt="Screenshot 2024-11-09 at 11 13 38 AM"
src="https://github.com/user-attachments/assets/156d86ae-1bf3-411a-9dfb-f992d9e34abd">
2024-11-09 11:42:56 +05:30
Manav Rathi
cd879975d2 Ref wip 2024-11-09 11:39:32 +05:30
Manav Rathi
ae783693ae Tweak 2024-11-09 11:25:45 +05:30
vishnukvmd
f5549d4458 [server] Send a notification email on BF deal purchase 2024-11-09 11:13:14 +05:30
Manav Rathi
2ce1876db8 Inline 2024-11-09 11:10:33 +05:30
Manav Rathi
eea5a9592b Use normal dialog 2024-11-09 11:03:33 +05:30
Manav Rathi
f75b2904f4 [web] New translations (#3993)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2024-11-09 10:46:57 +05:30
Crowdin Bot
079f208a96 New Crowdin translations by GitHub Action 2024-11-09 05:15:59 +00:00
Manav Rathi
7fc3e35b01 [web] Make some error messages more precise and concise (#3992) 2024-11-09 10:45:17 +05:30
Manav Rathi
38c809857f [web] Make some error messages more precise and concise 2024-11-09 10:41:57 +05:30
Ashil
d25b1f7b65 [mob][photos] Concatenate strings more efficiently (#3985)
## Description

If number of iterations are high, concatenating a list of values to a
string using `str1 += str2` can block the UI thread.
Using `List.join()` is a much more efficient way to do this.
2024-11-09 09:34:49 +05:30
Neeraj Gupta
f7a3de78a3 [mob] Imporve remote face sync (#3990)
## Description

## Tests
2024-11-09 08:46:36 +05:30
Neeraj Gupta
d2788d66d4 [mob] Add logs 2024-11-09 08:44:59 +05:30
Neeraj Gupta
619476892a [mob] Update local feedback on remote data change 2024-11-09 08:41:03 +05:30
Neeraj Gupta
d769cfad55 [mob] Refactor 2024-11-09 08:27:52 +05:30
ashilkn
1e9188f510 [mob][photos] Replace string concatenation happening in loop using '+' with more efficient alternative of by using 'List.join(). If number of iterations are very large, using '+' for concatenation can block the UI thread' 2024-11-08 21:38:33 +05:30
Manav Rathi
daa87ef79b [web] New translations (#3984)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2024-11-08 20:29:45 +05:30
Crowdin Bot
86c4e92585 New Crowdin translations by GitHub Action 2024-11-08 14:58:02 +00:00
Manav Rathi
157746b45a [web] Translation cleanup (#3983)
...related to dialogs etc that were recently changed
2024-11-08 20:27:17 +05:30
Manav Rathi
5c1984f7df Move 2024-11-08 20:23:47 +05:30
Manav Rathi
43f72cb360 Casing 2024-11-08 20:21:49 +05:30
Manav Rathi
3ca7805d6a Rename 2024-11-08 20:14:07 +05:30
Manav Rathi
d3fdd23061 Rename 2024-11-08 20:11:31 +05:30
Manav Rathi
d3d6c7120c Remove unused and shorten 2024-11-08 20:06:06 +05:30
Manav Rathi
c66e8f6544 Unused 2024-11-08 20:00:44 +05:30
Manav Rathi
f623724a78 Rename and dedup 2024-11-08 20:00:22 +05:30
Manav Rathi
49e3c8cc1a Rename 2024-11-08 19:55:02 +05:30
Manav Rathi
a3864b9f91 Rename 2024-11-08 19:48:35 +05:30
Manav Rathi
a3fc11db1c Rename 2024-11-08 19:46:10 +05:30
Manav Rathi
26c1e289b9 Rename 2024-11-08 19:40:05 +05:30
Manav Rathi
f69934eb7a Rename 2024-11-08 19:37:39 +05:30
Manav Rathi
9999c05d25 Rename 2024-11-08 19:34:48 +05:30
Manav Rathi
1ef1079cc5 Fix the interpolation 2024-11-08 19:32:06 +05:30
Manav Rathi
672ee27b7d [web] New translations (#3981)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2024-11-08 19:30:20 +05:30
Crowdin Bot
e4f88f33ae New Crowdin translations by GitHub Action 2024-11-08 13:57:59 +00:00
Manav Rathi
75d44e2f71 [web] Convert all remaining alert related uses of the deprecated dialog API (#3980) 2024-11-08 19:26:11 +05:30
Manav Rathi
bf8e271088 Cleanup 2024-11-08 19:18:28 +05:30
ashilkn
214dcce6ad [mob][photos] Remove unused methods 2024-11-08 19:05:19 +05:30
Manav Rathi
52866bdc8e Support secondary 2024-11-08 18:59:12 +05:30
Manav Rathi
92f7ff3139 Swap 2024-11-08 18:41:53 +05:30
Manav Rathi
e25c245e0c Swap 2024-11-08 18:37:55 +05:30
Ashil
e6b06453a6 [mob][photos] Fix cast not working on android (Pair with PIN option) (#3979) 2024-11-08 18:35:17 +05:30
Manav Rathi
4ce5c34baa Swap 2024-11-08 18:34:28 +05:30
ashilkn
10f9638f24 [mob][photos] Chore 2024-11-08 18:30:29 +05:30
ashilkn
8965f1cd09 [mob][photos] Fix: Cast not working on android (Pair with PIN option) 2024-11-08 18:27:35 +05:30
Manav Rathi
47119bf94b Swap 2024-11-08 18:25:15 +05:30
Manav Rathi
5ee24729e3 Chain 2024-11-08 18:21:16 +05:30
Manav Rathi
37192af79d Swap 2024-11-08 18:13:26 +05:30
Manav Rathi
eeb83d8c12 Swap 2024-11-08 18:05:27 +05:30
Manav Rathi
07e25d982e Swap 2024-11-08 18:03:07 +05:30
Manav Rathi
d03cce5984 Swap 2024-11-08 17:59:45 +05:30
Vishnu Mohandas
a8b1299117 [server] Update constraints to allow for BF 2024 (#3978) 2024-11-08 17:57:31 +05:30
vishnukvmd
949c3c3c73 [server] Update constraints to allow for BF 2024 2024-11-08 17:45:16 +05:30
Vishnu Mohandas
4dfb73e3d9 [server] Black Friday 2024 (#3977) 2024-11-08 16:28:24 +05:30
vishnukvmd
a558da2706 [server] Black Friday 2024 2024-11-08 16:14:59 +05:30
Ashil
616a7959e9 [mob][photos] Hierarchical search (#3969)
### Description

Hierarchical Search with filter types
- Album
- Contact
- Face
- File type (Photos, Videos, Live Photos)
- Location 
- Magic (Semantic search filter)
- Only them (Filter by photos only containing selected faces)


https://github.com/user-attachments/assets/8312f0a7-7b1d-4e91-ab25-d89bf0cd6e46

Closes #943
2024-11-08 16:00:10 +05:30
Manav Rathi
5802881c4b Swap 2024-11-08 15:48:51 +05:30
Manav Rathi
90cbe994a7 Swap 2024-11-08 15:46:02 +05:30
Manav Rathi
784b4af576 Remove deprecated 2024-11-08 15:43:29 +05:30
Manav Rathi
0b92e0b437 Swap 2024-11-08 15:41:35 +05:30
Manav Rathi
427c560d3f Swap 2024-11-08 15:30:44 +05:30
Manav Rathi
eeb68588a0 Swap 2024-11-08 15:26:17 +05:30
Manav Rathi
892a836fca Swap 2024-11-08 15:21:23 +05:30
Manav Rathi
c4d502f494 GE 2024-11-08 14:52:41 +05:30
Manav Rathi
cdf761d46b Multiline titles 2024-11-08 14:45:38 +05:30
Manav Rathi
60774518b2 Swap 2024-11-08 14:41:57 +05:30
Manav Rathi
f15aa51bd6 Swap 2024-11-08 14:34:09 +05:30
Manav Rathi
96ceead110 Inline 2024-11-08 14:28:53 +05:30
Manav Rathi
d69ca844ac Empty unused 2024-11-08 14:24:25 +05:30
Manav Rathi
801bf16b92 Unused 2024-11-08 14:08:59 +05:30
Manav Rathi
71727048aa Move 2024-11-08 13:58:21 +05:30
Manav Rathi
cb18772ec9 [web] New translations (#3976)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2024-11-08 13:48:31 +05:30
Crowdin Bot
ccaba92832 New Crowdin translations by GitHub Action 2024-11-08 08:17:29 +00:00
Manav Rathi
db44cb9823 [web] Allow for proper translation instead of splicing together strings (#3975) 2024-11-08 13:46:42 +05:30
Manav Rathi
98eef0603f Allow for proper translation instead of splicing together strings 2024-11-08 13:38:57 +05:30
Manav Rathi
1334ce879e [web] New translations (#3974)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2024-11-08 12:33:26 +05:30
Crowdin Bot
bf012572b8 New Crowdin translations by GitHub Action 2024-11-08 07:02:43 +00:00
Manav Rathi
02be77de74 [web] Translations cleanup (#3973) 2024-11-08 12:31:55 +05:30
Manav Rathi
053a97ad8a Rename 2024-11-08 12:28:53 +05:30
Manav Rathi
8d70936251 Remove unused 2024-11-08 12:26:27 +05:30
Manav Rathi
84bd08bdf4 Rename 2024-11-08 12:24:54 +05:30
Manav Rathi
0dc6dbb7ec Rename 2024-11-08 12:23:27 +05:30
Manav Rathi
ae79c10322 Rename and move 2024-11-08 12:20:39 +05:30
Manav Rathi
efb319ba5e Rename 2024-11-08 12:18:40 +05:30
Manav Rathi
022d766564 Fix casing 2024-11-08 12:12:25 +05:30
Manav Rathi
d2d75291ee Rename 2024-11-08 12:11:10 +05:30
Manav Rathi
1cc39ff489 Rename 2024-11-08 12:08:48 +05:30
Manav Rathi
7b43d5731d Rename 2024-11-08 12:05:38 +05:30
Manav Rathi
5f26a0e5b7 Rename 2024-11-08 12:02:02 +05:30
Manav Rathi
4835780698 Rename 2024-11-08 11:54:57 +05:30
Manav Rathi
bd151523d1 [web] New translations (#3972)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2024-11-08 11:50:13 +05:30
Crowdin Bot
31bc5cd72d New Crowdin translations by GitHub Action 2024-11-08 06:19:15 +00:00
Manav Rathi
3169bcbc5b [web] Payments UI related refactoring (#3971)
* No major functional changes intended (some small fixes only)
* Main motivation was to consolidate the "user details" related state
2024-11-08 10:48:16 +05:30
Manav Rathi
6460fd25ab Fix 2024-11-08 10:25:11 +05:30
Manav Rathi
d743b4ab22 Fix import 2024-11-08 10:21:41 +05:30
Manav Rathi
a1320d89ed Remove unnecessary click handler 2024-11-08 10:11:11 +05:30
Manav Rathi
632bb931da Tweak spacing 2024-11-08 09:51:57 +05:30
Manav Rathi
5c2378604a Better indication of progress in the middle while the page load is shifting 2024-11-08 07:43:42 +05:30
Manav Rathi
71e0fc2dd9 Tweak spacing again 2024-11-08 07:36:32 +05:30
Manav Rathi
a34defed94 btn color 2024-11-08 07:29:02 +05:30
Manav Rathi
9b753d7a2f Tweak spacing 2024-11-08 07:22:37 +05:30
ashilkn
65131a15ef [mob][photos] Fix 2024-11-07 23:59:18 +05:30
ashilkn
25b26ec303 [mob][photos] Workaround for a UX issue 2024-11-07 23:31:48 +05:30
ashilkn
88440400c2 [mob][photos] Fix loading state not appearing when the first filter is added in hierarchical search 2024-11-07 23:29:24 +05:30
ashilkn
88f613187d Revert "[mob] Render people section in GridView (#3958)"
This reverts commit 7a99c8be63, reversing
changes made to 287d4b00e1.
2024-11-07 23:15:17 +05:30
ashilkn
b108785979 [mob][photos] Bump up to v0.9.58 2024-11-07 22:58:57 +05:30
ashilkn
899c1d7041 [mob][photos] Remove unnecessary check 2024-11-07 22:55:35 +05:30
ashilkn
219ff7d2e9 Revert "[mob][photos] Add option to make 'only them' filter work a little different only for testing, for feedback on which option is better"
This reverts commit ebae813ee3.
2024-11-07 22:34:09 +05:30
ashilkn
65e8ff4da8 [mob][photos] Resolve merge conflicts and merge main 2024-11-07 22:21:44 +05:30
ashilkn
9becee9a85 [mob][photos] Remove unnecessary clipping 2024-11-07 22:09:03 +05:30
ashilkn
52663ae218 [mob][photos] Add comment 2024-11-07 22:00:34 +05:30
ashilkn
c5aecaf501 [mob][photos] Remove unused method 2024-11-07 21:54:11 +05:30
ashilkn
655d9602e0 [mob][photos] Dispose all notifiers of SearchFilterDataProvider after use 2024-11-07 21:47:58 +05:30
ashilkn
b83b7ad295 [mob][photos] Use better names 2024-11-07 20:23:34 +05:30
ashilkn
ae3b784463 [mob][photos] Improvements on PeopleBanner shown in hierarchical search 2024-11-07 19:59:14 +05:30
Manav Rathi
578b4a6577 sessid is optional 2024-11-07 19:29:48 +05:30
Manav Rathi
33ec855b40 Ensure confirmation is visible 2024-11-07 19:18:05 +05:30
Manav Rathi
7385d665d2 Integrated handling 2024-11-07 19:02:40 +05:30
Manav Rathi
02364b95c0 Don't allow dialog to be closed during operations 2024-11-07 18:42:36 +05:30
ashilkn
93fd05818a [mob][photos] Show 'Add a name' banner if an unnamed cluster is applied in hierarchical search
If there are multiple applied unnamed clusters, the banner will be shown for the first one
2024-11-07 18:35:21 +05:30
Manav Rathi
0b1f6e84a3 Fix 2024-11-07 18:29:23 +05:30
Manav Rathi
c37c6fda95 Fix paths 2024-11-07 18:10:59 +05:30
Manav Rathi
a09c01ce6d Fix the circular zod object import deps 2024-11-07 18:07:01 +05:30
ashilkn
68fa429611 [mob][photos] Make PeopleBanner UI better and minimal 2024-11-07 18:07:00 +05:30
ashilkn
4b2a845fd0 [mob][photos] Give a more subtle shadow for PeopleBanner 2024-11-07 17:35:11 +05:30
Neeraj Gupta
d6a7626906 [mob] Prioritize fetch for already indexed files (#3967)
## Description
- The app will first fetch indexes for files that are already indexed
before performing local indexing.
- If local indexing is disabled, the app will only fetch indexes for
files already indexed on the server.
## Tests
2024-11-07 17:20:46 +05:30
NanoBunTV
68d835c779 Add Custom Icon for PebbleHost, Restream, and Terabit (#3964)
https://pebblehost.com

https://restream.io

https://terabit.io
2024-11-07 17:04:08 +05:30
Neeraj Gupta
fd24628f7a [mob] Only return indexed files if local indexing is disabled 2024-11-07 16:57:35 +05:30
Neeraj Gupta
19ccc5338f [mob] Skip deleting downloaded models 2024-11-07 16:56:23 +05:30
Neeraj Gupta
27f55b1756 [mob] clean up icon 2024-11-07 16:41:22 +05:30
Neeraj Gupta
214dcddb65 [mob] Prioritize fetch for already indexed files. 2024-11-07 16:18:33 +05:30
ashilkn
0815bfd7b7 [mob][photos] Use better name 2024-11-07 15:12:24 +05:30
Manav Rathi
6cc8f2b965 Mig 2024-11-07 15:03:12 +05:30
Manav Rathi
6f1de7e537 Inline 2024-11-07 15:01:00 +05:30
Manav Rathi
5fd0459237 Mig 2024-11-07 14:58:55 +05:30
Manav Rathi
7dd085c321 Migrate to new dialog 2024-11-07 14:56:33 +05:30
Neeraj Gupta
6edacd2f1d [mob] FDStatus: Store objectID and nonce 2024-11-07 14:53:24 +05:30
Manav Rathi
7bd3d754c7 mig 2024-11-07 14:45:58 +05:30
Neeraj Gupta
6d7044ee3e [server] refactor fd status API (#3966)
## Description

## Tests
2024-11-07 14:34:03 +05:30
Neeraj Gupta
ccc436be26 [server] refactor fd status API 2024-11-07 14:33:04 +05:30
Manav Rathi
03c37ae448 mig 2024-11-07 14:31:33 +05:30
Manav Rathi
c0cc6c35df Mig2 2024-11-07 14:28:37 +05:30
Manav Rathi
c879e8cb77 Migrate from deprecated methods 2024-11-07 14:24:03 +05:30
Manav Rathi
da3f3fbb57 fin 2024-11-07 14:09:24 +05:30
Manav Rathi
d481fa5cde m4 2024-11-07 13:58:05 +05:30
Manav Rathi
f575d428fe once over 2024-11-07 13:55:43 +05:30
Manav Rathi
32f53eb9f3 vis 2024-11-07 13:35:40 +05:30
Neeraj Gupta
f543f32df2 Merge branch 'main' into file_data_v2 2024-11-07 13:34:33 +05:30
Manav Rathi
3c5e20dd50 Tweak 2024-11-07 13:03:53 +05:30
Manav Rathi
33beb2824a flexier parsing 2024-11-07 12:30:04 +05:30
Manav Rathi
93edaed4fc sync local state 2024-11-07 12:03:13 +05:30
Manav Rathi
1f8ddb0c08 wip checkpoint 2024-11-07 11:54:32 +05:30
Neeraj Gupta
27188596af [mob][photos] UI tweaks on pricing page (#3962)
## Description

#### Before
<img
src="https://github.com/user-attachments/assets/b8436f93-1e73-4751-92dd-3996be5c45b6"
width="400" alt="pricing page before">

#### After
<img
src="https://github.com/user-attachments/assets/b72cc507-36b1-48ee-ae59-d9b0fc7841ab"
width="400" alt="pricing page after">
2024-11-07 11:23:53 +05:30
Manav Rathi
ec1b294425 wip checkpoint 2024-11-07 11:05:41 +05:30
Manav Rathi
9bea0c4aab leave 2024-11-07 10:53:57 +05:30
Manav Rathi
e468c61867 wip checkpoint 2024-11-07 10:45:09 +05:30
Manav Rathi
fa98bcc745 wip checkpoint 2024-11-07 10:05:27 +05:30
Manav Rathi
13e013eaa9 wip checkpoint 2024-11-07 09:57:43 +05:30
Manav Rathi
94db831266 Use 2024-11-07 09:38:17 +05:30
Manav Rathi
3c03bbac05 copy over 2024-11-07 09:30:54 +05:30
Neeraj Gupta
82c1987a6d [cli] Default to ENTE_CLI_CONFIG_DIR, fallback to ENTE_CLI_CONFIG_PAT… (#3961)
…H for compatibility

## Description

## Tests
2024-11-06 23:12:37 +05:30
ashilkn
f2e99d5efd [mob][photos] Keep the galleryType as GalleryType.peopleTag when an 'Only them' filter is applied when, the initial filter is a face filter so that the selection option are of the inital face filter's
Needed to write extra code to make it work for 'Only them' face since the current logic checks if inital filter is in applied list, and if yes keep the gallery type unchanged and if not, change gallery type to GalleryType.searchResults. Since an 'Only them' filter is not exactly the same as a Face filter, had to write more code to handle this case since the 'Only them' filter can have the inital Face filter in it
2024-11-06 22:03:40 +05:30
ashilkn
d355d4c1f0 [mob][photos] Fix null check operator used on null value exception right after adding name to a person 2024-11-06 21:39:14 +05:30
ashilkn
b4f192fac1 [mob][photos] Minor fix 2024-11-06 21:17:06 +05:30
ashilkn
042cbdeee7 [mob][photos] Refactor 2024-11-06 21:16:24 +05:30
Neeraj Gupta
8e1b6d32ee Added Custom Icon for Ko-fi (#3956)
https://ko-fi.com
2024-11-06 20:25:34 +05:30
ashilkn
ca3c7ae526 [mob][photos] UI tweaks on pricing page 2024-11-06 19:13:44 +05:30
Neeraj Gupta
8ff6ab6c04 [cli] Default to ENTE_CLI_CONFIG_DIR, fallback to ENTE_CLI_CONFIG_PATH for compatibility 2024-11-06 19:09:26 +05:30
Manav Rathi
384fcf4b38 Fix 2024-11-06 19:09:08 +05:30
ashilkn
84d7a37789 [mob][photos] Extract string and use workaround for avoiding having context as a long lived object 2024-11-06 18:57:30 +05:30
Manav Rathi
0a2f92fc86 Conv 2024-11-06 18:55:11 +05:30
Manav Rathi
2b91cbd0d2 Move 2024-11-06 18:53:12 +05:30
Manav Rathi
7cd54f4815 Global handling of in-flight requests during logout 2024-11-06 18:42:19 +05:30
ashilkn
6fa7e033d9 [mob][photos] Chore 2024-11-06 18:42:01 +05:30
Manav Rathi
748605ff00 logout 2 2024-11-06 18:30:56 +05:30
Manav Rathi
53d01b2aa4 init 2024-11-06 18:22:57 +05:30
Manav Rathi
afed732e68 snap wip 2024-11-06 18:19:18 +05:30
Manav Rathi
221c79a6b8 snap wip 2024-11-06 18:08:15 +05:30
Manav Rathi
7fb2fb6dde z wip 2024-11-06 17:47:00 +05:30
Neeraj Gupta
fb710ac41b [server] Add delay in fileData replication (#3960)
## Description
Added additional logs for passkey authentication failures.

## Tests
2024-11-06 17:37:56 +05:30
Neeraj Gupta
9a683d65c9 [server] Log userID on passkey auth failure 2024-11-06 17:36:18 +05:30
Neeraj Gupta
9e06245941 [server] increse file data replication lockTime 2024-11-06 17:36:18 +05:30
Neeraj Gupta
a87fdfa94b fix log msg 2024-11-06 17:36:18 +05:30
Neeraj Gupta
ff7d65041a [server] Avoid immedidate sync 2024-11-06 17:36:18 +05:30
Manav Rathi
e64829410b z 2024-11-06 16:04:35 +05:30
Manav Rathi
f932a16528 Split 2024-11-06 15:52:06 +05:30
Manav Rathi
565dce5a1d T 2024-11-06 15:32:45 +05:30
ashilkn
64b113bd21 [mob][photos] Refactor 2024-11-06 15:21:45 +05:30
Manav Rathi
7fc692312c Axios artifact 2024-11-06 15:16:40 +05:30
Manav Rathi
892edde5dd LF 2024-11-06 15:07:48 +05:30
Manav Rathi
9737405c3a Move checkpoint 2024-11-06 14:54:13 +05:30
Manav Rathi
fc8bf78fc3 Move wip chkpt 2024-11-06 14:44:12 +05:30
Manav Rathi
8f3de6b6fb Move (wip checkpoint) 2024-11-06 14:34:03 +05:30
Neeraj Gupta
7a99c8be63 [mob] Render people section in GridView (#3958)
## Description

## Tests
2024-11-06 14:29:49 +05:30
Neeraj Gupta
6e86c7dff0 [mob] Show people in grid view 2024-11-06 14:25:42 +05:30
Manav Rathi
a7675e9a08 Move 2024-11-06 14:25:39 +05:30
Manav Rathi
47f70250a2 Unused 2024-11-06 14:25:20 +05:30
Manav Rathi
2f6f1a4c6b Move 2024-11-06 14:24:29 +05:30
Manav Rathi
d377205942 Dedup 2024-11-06 14:20:35 +05:30
Manav Rathi
033e06e8ef Move 2024-11-06 14:16:23 +05:30
Manav Rathi
ac05f9fbd7 Move 2024-11-06 14:12:20 +05:30
Manav Rathi
80870d84a7 Move 2024-11-06 14:08:17 +05:30
Manav Rathi
cf928948ce Doc 2024-11-06 14:06:39 +05:30
Manav Rathi
8080c91f79 Rearrange 2024-11-06 14:01:45 +05:30
Manav Rathi
8225070dd3 Inline 2024-11-06 13:57:10 +05:30
Manav Rathi
eb5f2e5e46 Inline 2024-11-06 13:54:59 +05:30
Manav Rathi
0a45caa5b2 Inline 2024-11-06 13:43:20 +05:30
Neeraj Gupta
0e27e1c928 [mob] Lint suggestion 2024-11-06 13:38:23 +05:30
Manav Rathi
dc8db28695 Tweak 2024-11-06 13:38:17 +05:30
Neeraj Gupta
fad4077f76 [mob] Separate all page for people 2024-11-06 13:37:50 +05:30
Manav Rathi
ad698a9abd Inline 2024-11-06 13:32:09 +05:30
Manav Rathi
944df7ecf3 Inline 2024-11-06 13:30:42 +05:30
Manav Rathi
5fff967620 re 2024-11-06 13:27:02 +05:30
Manav Rathi
abbc7a5748 Doc 2024-11-06 13:24:42 +05:30
Manav Rathi
4bc8ef6bc9 Inline 2024-11-06 13:19:08 +05:30
Manav Rathi
9c9036a8ee Use 2024-11-06 13:11:59 +05:30
Manav Rathi
99fe407684 z 2024-11-06 13:03:48 +05:30
Manav Rathi
044c82eacc Move 2024-11-06 12:46:06 +05:30
Manav Rathi
d7665d289c period 2024-11-06 12:39:38 +05:30
Neeraj Gupta
6a878b165d [mob] Lint 2024-11-06 12:38:36 +05:30
Manav Rathi
1d7c807e5f z 2024-11-06 12:38:04 +05:30
Manav Rathi
900ea0469f Ref 2024-11-06 12:26:59 +05:30
Manav Rathi
3a5189e715 Ref 2024-11-06 12:20:25 +05:30
Manav Rathi
dbdcadf452 Move and rewrite 2024-11-06 12:01:51 +05:30
Manav Rathi
07cd61a6f0 Inline 2024-11-06 11:57:45 +05:30
Manav Rathi
4257a34aed type 2024-11-06 11:54:47 +05:30
Manav Rathi
6d2bd35a66 Move 2024-11-06 11:50:38 +05:30
Manav Rathi
5c656f2378 Unused 2024-11-06 11:43:47 +05:30
Manav Rathi
287d4b00e1 [web] General (non-functional) rearrangement of code (#3957) 2024-11-06 11:36:34 +05:30
Manav Rathi
91b4ef2915 LF 2024-11-06 11:33:14 +05:30
Manav Rathi
e267dc6bc9 Move 2024-11-06 11:23:20 +05:30
Manav Rathi
6830ace1ce Inline 2024-11-06 11:16:11 +05:30
Manav Rathi
25f6ad893d Fix lints 2024-11-06 11:13:50 +05:30
Manav Rathi
bbc7d63250 Move 2024-11-06 11:12:30 +05:30
Manav Rathi
b03effff3e Tweak 2024-11-06 11:09:30 +05:30
Manav Rathi
339cdeaa55 Tweak 2024-11-06 11:03:14 +05:30
Manav Rathi
59e9e26d06 Flatten 2024-11-06 10:53:13 +05:30
Manav Rathi
c7b9a35034 Conv 2024-11-06 10:49:11 +05:30
NanoBunTV
c0a47b21f3 Added Custom Icon for Ko-fi
https://ko-fi.com
2024-11-05 23:18:21 -06:00
Manav Rathi
e07bf90f7a Remove deprecated defaultProps 2024-11-06 10:41:25 +05:30
Manav Rathi
0464e31393 Move 2024-11-06 10:30:32 +05:30
Manav Rathi
8ac01c96a3 Inline 2024-11-06 10:28:55 +05:30
Manav Rathi
0087be4938 Inline 2024-11-06 10:26:56 +05:30
Manav Rathi
f3c4ca932d Inline 2024-11-06 10:23:19 +05:30
Manav Rathi
499763edac Inline 2024-11-06 10:21:43 +05:30
Manav Rathi
2ee6e7edc4 Inline 2024-11-06 10:19:01 +05:30
Manav Rathi
058e157941 Inline 2024-11-06 10:15:10 +05:30
Manav Rathi
e7b7b3c1cc Inline 2024-11-06 10:13:11 +05:30
Manav Rathi
d50c577a2f Inline 2024-11-06 10:10:07 +05:30
Manav Rathi
ce80a002ea Inline 2024-11-06 10:09:21 +05:30
Manav Rathi
22b0d47e0a Unused 2024-11-06 10:06:44 +05:30
Manav Rathi
079154198b Inline 2024-11-06 10:01:41 +05:30
Manav Rathi
542cb16e1a Inline 2024-11-06 10:01:07 +05:30
Manav Rathi
2bb4be423f Inline 2024-11-06 09:59:59 +05:30
Manav Rathi
e87096aba5 Split 2024-11-06 09:51:40 +05:30
Manav Rathi
ac1045f9fe [web] Remove unused yarn invocations (#3955)
These are in infra.
2024-11-06 09:37:40 +05:30
Manav Rathi
37aa2af39d Fix 2024-11-06 09:31:52 +05:30
Manav Rathi
00791641a4 [web] Remove unused yarn invocations
These are in infra.
2024-11-06 09:28:19 +05:30
ashilkn
6a5b7f2166 [mob][photos] bump up to v0.9.57 2024-11-05 22:33:30 +05:30
ashilkn
bdc80c8f97 Merge branch 'main' into hierarchical_search 2024-11-05 22:31:42 +05:30
ashilkn
39a3a9a8fa [mob][photos] Avoid recomputing results of 'Only them' filter if already available 2024-11-05 22:29:55 +05:30
ashilkn
ebae813ee3 [mob][photos] Add option to make 'only them' filter work a little different only for testing, for feedback on which option is better 2024-11-05 22:27:38 +05:30
ashilkn
f09005ed95 [mob][photos] Make filtering of 'Only them' filter faster by making one db query instead of two and log and handle any errors when filtering using the 'Only them' filter 2024-11-05 21:01:35 +05:30
ashilkn
724b9620be [mob][photos] chore 2024-11-05 19:45:29 +05:30
Manav Rathi
ca0ab41403 [web] Improve handling of the CF Upload proxy flag (#3951) 2024-11-05 19:35:31 +05:30
Manav Rathi
4f0ba47c2e Fix 2024-11-05 19:15:41 +05:30
Manav Rathi
448a8789fa Switch 2024-11-05 19:07:00 +05:30
Manav Rathi
b730d41eca Update in shared albums manually 2024-11-05 18:54:55 +05:30
Manav Rathi
3e130d09ea Split so that it can be used by albums app 2024-11-05 18:46:47 +05:30
Manav Rathi
9d31ea521d Remove out of date comment 2024-11-05 18:30:52 +05:30
Manav Rathi
55b36501a0 Alt 2024-11-05 18:28:03 +05:30
Manav Rathi
237495d48f Move 2024-11-05 17:33:00 +05:30
mangesh
b6e5703ed9 [docs][without-docker]: make the docs more verbose wherever needed (#3937) 2024-11-05 16:59:58 +05:30
ashilkn
30cde90a68 [mob][photos] Only add initialGalleryFilter to filters to avoid in recommendations list when there are no applied filters
This resolves a bug: If 'A' is the initialGalleryFilter and a filter 'B' is applied (in this state both A and B filters are applied), and then the filter 'A' is removed, in recommendations, filter 'A' is not recommended since it's passed as a filter to avoid in recommendations
2024-11-05 16:18:49 +05:30
Neeraj Gupta
5450ac7a67 [mob] Fix appBar color change on scroll 2024-11-05 15:55:00 +05:30
Manav Rathi
228cea5b98 [web] Drawer refactoring - Maps settings (#3947) 2024-11-05 15:46:54 +05:30
Manav Rathi
385367a3df Inline 2024-11-05 15:41:33 +05:30
Murat Karayel
fc7da2081a [Auth] Fix title typo (#3946)
ClouDNS title typo

icon not showing in app because of typo
2024-11-05 15:32:29 +05:30
Manav Rathi
d26c4a7a84 Remove old code 2024-11-05 15:10:46 +05:30
Neeraj Gupta
1078a5edf8 [mob] Fix date parsing for batched photos from signal (#3945)
## Description
Related to https://github.com/ente-io/ente/issues/3851
## Tests
2024-11-05 15:08:52 +05:30
Neeraj Gupta
a200c4ac5f [mob] Fix date parsing for batched photos from signal 2024-11-05 15:07:58 +05:30
Manav Rathi
869f3b6138 Dedup 2024-11-05 14:57:44 +05:30
Manav Rathi
bf2c02e25c Use 2024-11-05 14:38:26 +05:30
Manav Rathi
ecca8be1d7 Fix 2024-11-05 14:33:32 +05:30
Manav Rathi
514129e07b Use 2024-11-05 14:31:49 +05:30
Manav Rathi
79d5d4ac1c Wrap 2024-11-05 14:25:33 +05:30
Manav Rathi
ead44dd73a Fix invalid nesting of p within p 2024-11-05 14:16:52 +05:30
Manav Rathi
1dd45a2e04 Make the message optional 2024-11-05 14:12:26 +05:30
Manav Rathi
a048f1a38f Use 2024-11-05 14:05:52 +05:30
Manav Rathi
1713510f2b New 2024-11-05 14:02:09 +05:30
Manav Rathi
66fc440d1b Move 2024-11-05 13:49:44 +05:30
Manav Rathi
05e5f9f675 Inline load and error states 2024-11-05 13:36:54 +05:30
Manav Rathi
d2b3de08c1 Placeholder 2024-11-05 13:20:53 +05:30
Manav Rathi
1b4c9217b6 Remote 2024-11-05 13:17:30 +05:30
Manav Rathi
f52ece7bb5 Allow subscriptions 2024-11-05 13:11:58 +05:30
Manav Rathi
862ba7b241 [web] New translations (#3942)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2024-11-05 12:24:57 +05:30
Crowdin Bot
65ba38968d New Crowdin translations by GitHub Action 2024-11-05 06:52:41 +00:00
Manav Rathi
2d80779b09 [desktop] Move face clustering related strings to translation (#3941) 2024-11-05 12:19:31 +05:30
Neeraj Gupta
7f1630967b [auth] Bump version v4.1.0 (#3940)
## Description

## Tests
2024-11-05 12:15:53 +05:30
Manav Rathi
5dcd4547d6 Move to tr 2024-11-05 12:14:28 +05:30
Manav Rathi
96b9b36c69 Move to tr 2024-11-05 12:07:49 +05:30
Neeraj Gupta
8a0d5ab9ef [auth] Bump version v4.1.0 2024-11-05 11:57:02 +05:30
Manav Rathi
ce02909b5d Use 2024-11-05 11:56:34 +05:30
Manav Rathi
fc6ab58514 Rename 2024-11-05 11:56:22 +05:30
Manav Rathi
38ed590a2b Move to tr 2024-11-05 11:52:20 +05:30
Manav Rathi
e4bfa1ddb1 Move 2024-11-05 11:47:49 +05:30
Manav Rathi
8feef3f36f Remove unused 2024-11-05 11:45:09 +05:30
Manav Rathi
e7c788a793 [web] New translations (#3939)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2024-11-05 11:37:02 +05:30
Crowdin Bot
9223f83a4e New Crowdin translations by GitHub Action 2024-11-05 06:03:38 +00:00
Manav Rathi
151c8cd734 [web] Translation cleanup (#3938)
Related to the recent drawer refactorings
2024-11-05 11:32:51 +05:30
Manav Rathi
b494cc248b Unused 2024-11-05 11:23:21 +05:30
Manav Rathi
4794de7d74 Consistent casing 2024-11-05 11:22:44 +05:30
Manav Rathi
787d4388d3 Rename 2024-11-05 11:18:10 +05:30
Manav Rathi
934b1383b5 Rename 2024-11-05 11:15:11 +05:30
mangeshrex
7689e0a9f2 [docs][without-docker]: make the docs more verbose wherever needed 2024-11-05 11:11:49 +05:30
Manav Rathi
91e0ede0a6 Rename and move 2024-11-05 11:10:41 +05:30
Manav Rathi
7dd7194a7a Remove unused 2024-11-05 11:06:49 +05:30
Manav Rathi
b18de12f28 Rename 2024-11-05 11:06:07 +05:30
Manav Rathi
23ac921fb5 Remove unused 2024-11-05 11:01:16 +05:30
Manav Rathi
faf8720fdc [web] Drawer refactoring - Part x/x (#3936) 2024-11-05 10:59:33 +05:30
Manav Rathi
e2e3551ce4 Ditto 2024-11-05 10:53:02 +05:30
Manav Rathi
90a0a44ae2 Move 2024-11-05 10:32:52 +05:30
Murat Karayel
215837ac4a [Auth] New icons (#3854)
New icons:
+ Binance TR
+ ClouDNS
+ CSFloat

⁕ Revamped Ubiquiti icon

› altNames for WARGAMING.NET
2024-11-05 10:32:36 +05:30
Manav Rathi
6112396479 Move 2024-11-05 10:26:55 +05:30
Manav Rathi
70f40aa103 Update 2024-11-05 10:16:08 +05:30
ashilkn
472bf48b42 [mob][photos] Remove face IDs that aren't associated with any cluster from getting added to the 'Only them' filter results 2024-11-05 10:10:59 +05:30
Manav Rathi
73ea3d167d Enable state 2024-11-05 09:55:54 +05:30
Manav Rathi
e04cd24e91 Tweak 2024-11-05 09:42:44 +05:30
Manav Rathi
089808892b Update 2024-11-05 09:37:06 +05:30
Manav Rathi
07995dcbb8 md 2024-11-05 09:33:28 +05:30
Manav Rathi
dfd55328c7 md 2024-11-05 09:30:00 +05:30
Neeraj Gupta
c69afd28a3 [Auth - Custom Icons] Fixed spelling mistake for Ubiquiti SSO (#3877)
### Description:
Fixed spelling mistake for one of Ubiquiti's "altNames".

### Changes:
`"Ubiquti SSO` ---> `"Ubiquiti SSO"`
2024-11-05 09:20:10 +05:30
ashilkn
fb9b3543e0 [mob][photos] Remove stale code 2024-11-04 20:22:39 +05:30
ashilkn
b2da30e207 [mob][photos] Show 'Only them' filter in recommendations right after a person screen is opened, even when there are no filters selected 2024-11-04 19:19:52 +05:30
Manav Rathi
748f65e536 [web] Continuing settings drawer related refactoring (#3933) 2024-11-04 19:16:02 +05:30
Manav Rathi
da0bee0cc4 2FA drawer 2024-11-04 19:10:59 +05:30
Manav Rathi
23d739c380 Tweak 2024-11-04 18:57:05 +05:30
Manav Rathi
0a122b9fed Ditto 2024-11-04 18:47:33 +05:30
Manav Rathi
6b0b5fc3ce Touchups 2024-11-04 18:31:04 +05:30
Manav Rathi
fd29a26210 Swap 2024-11-04 18:22:45 +05:30
Manav Rathi
cbe7407c14 Dup 2024-11-04 18:19:40 +05:30
Manav Rathi
5311714bff Don't rely on container 2024-11-04 18:14:53 +05:30
Neeraj Gupta
c967abbae7 [server] Log additional details on replication failure (#3932)
## Description

## Tests
2024-11-04 18:01:54 +05:30
Neeraj Gupta
0fc17e9453 [server] Log additional details on replication failure 2024-11-04 18:00:59 +05:30
Manav Rathi
f52420df20 Shorten 2024-11-04 18:00:13 +05:30
ashilkn
b036079249 [mob][photos] Do not show any face filters in recommendations when an 'Only them' filter is applied 2024-11-04 17:49:20 +05:30
Alex Rirak
0edfb461af [AUTH] Add icon for Carta.com, KnownHost.com, TRowePrice.com (#3908)
## Description
- Added an Icon for Carta.com
- Added an Icon for KnownHost.com
- Added an Icon for TRowePrice.com
- Updated Config
2024-11-04 16:04:40 +05:30
Laurens Priem
59f7b316c3 Copy (#3930)
Copy change
2024-11-04 16:04:17 +05:30
Manav Rathi
27aaf78499 Split off 2024-11-04 15:59:52 +05:30
Neeraj Gupta
82223de0ba [mob] Fix nav bug during person label assignment (#3931)
## Description

## Tests
2024-11-04 15:58:48 +05:30
Neeraj Gupta
a4de4fe4b7 [mob] Fix nav bug during person label assignment 2024-11-04 15:54:59 +05:30
Manav Rathi
d5071628b6 Consistent 2024-11-04 15:48:42 +05:30
Manav Rathi
ec776e9f98 Unnest 2024-11-04 15:41:40 +05:30
Manav Rathi
8cf4c008d5 Ren 2024-11-04 15:31:29 +05:30
Manav Rathi
5c4aed51f2 [web] Refactoring - Nested left sidebar drawer (#3928) 2024-11-04 15:27:08 +05:30
Manav Rathi
7c91f1059d LF 2024-11-04 15:24:11 +05:30
Manav Rathi
3c15f80a79 Restore basic usability 2024-11-04 15:19:57 +05:30
Manav Rathi
f164df75fc Remove unnecessary boxes 2024-11-04 15:15:23 +05:30
Manav Rathi
18daf681de Update 2024-11-04 15:10:12 +05:30
Manav Rathi
ff42397316 Use 2024-11-04 14:54:01 +05:30
Manav Rathi
302dff72a4 Drop the workaround 2024-11-04 14:31:08 +05:30
Manav Rathi
d9e106088a S3 2024-11-04 14:28:25 +05:30
Manav Rathi
31cdb63c7d S2 2024-11-04 14:19:48 +05:30
Manav Rathi
b1c7c238a9 Sketch 2024-11-04 14:14:17 +05:30
Manav Rathi
bd35f3e43d Rename 2024-11-04 14:05:24 +05:30
Manav Rathi
cfcbed2613 Move 2024-11-04 14:01:43 +05:30
laurenspriem
0197451d0e Merge branch 'main' into mobile_ml_naming 2024-11-04 14:01:19 +05:30
Manav Rathi
80d35ea2fe [infra] Add data-puller CF worker (#3927) 2024-11-04 13:43:59 +05:30
Manav Rathi
fd301ff116 [infra] Add data-puller CF worker 2024-11-04 13:40:41 +05:30
Manav Rathi
34f485c658 [docs] Add note about leafmost folder (#3924) 2024-11-04 11:38:50 +05:30
Manav Rathi
fcb966f649 [docs] Add note about leafmost folder 2024-11-04 11:37:08 +05:30
mangesh
ca7ed779d6 minor fix: describing markdown syntax type. (#3879) 2024-11-04 11:34:06 +05:30
mangesh
1fcdc7cc73 add: resource links for running museum as a bg service (#3890) 2024-11-04 11:32:56 +05:30
Neeraj Gupta
1ae5b614f4 [auth] New translations (#3918)
New translations from
[Crowdin](https://crowdin.com/project/ente-authenticator-app)
2024-11-04 11:32:30 +05:30
Neeraj Gupta
c58dffd5c9 [mob] Handle 404 for multipart failure (#3923)
## Description

## Tests
2024-11-04 11:29:04 +05:30
Neeraj Gupta
ef329177c0 Merge remote-tracking branch 'origin/main' into file_data_v2 2024-11-04 09:51:16 +05:30
Neeraj Gupta
c13364513b [auth] Remove bad icon 2024-11-04 09:50:16 +05:30
Manav Rathi
5ef200d520 [desktop] Fix build failures due to apt failures (#3922) 2024-11-04 09:47:28 +05:30
Manav Rathi
a11dd01d4a [desktop] Fix build failures due to apt failures
https://github.com/ente-io/ente/pull/3921/files
2024-11-04 09:46:28 +05:30
Manav Rathi
86af6653dd [desktop] Fix build failures due to apt failures (#3921)
https://github.com/actions/runner-images/issues/6039#issuecomment-1209531257
2024-11-04 09:42:37 +05:30
github-actions[bot]
7e7e1983b7 [mobile] New translations (#3917)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-app)

Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2024-11-04 09:41:56 +05:30
Neeraj Gupta
cb37870911 Rename file back to original name 2024-11-04 09:36:30 +05:30
Neeraj Gupta
257aae3d81 Temporarily rename file to resolve case sensitivity issue 2024-11-04 09:36:29 +05:30
Manav Rathi
a1bb2ff0c1 [desktop] Fix build failures due to apt failures
https://github.com/actions/runner-images/issues/6039#issuecomment-1209531257
2024-11-04 09:32:47 +05:30
Manav Rathi
1a338f2451 [web] Fix capitalization for the uk-UA lang (#3920)
https://github.com/ente-io/ente/issues/3634#issuecomment-2448388285
2024-11-04 08:23:02 +05:30
Manav Rathi
432acfbeb6 [web] Fix capitalization for the uk-UA lang
https://github.com/ente-io/ente/issues/3634#issuecomment-2448388285
2024-11-04 08:19:12 +05:30
Manav Rathi
af2b6e3918 [web] New translations (#3916)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2024-11-04 08:17:44 +05:30
Crowdin Bot
46f7d14964 New Crowdin translations by GitHub Action 2024-11-04 01:17:23 +00:00
Crowdin Bot
caf0374f80 New Crowdin translations by GitHub Action 2024-11-04 00:35:43 +00:00
Manav Rathi
d4587abf3f [web] Minor drawer related refactoring (#3891)
Non functional
2024-10-30 23:04:12 +05:30
Manav Rathi
4e47d856bf Rename and move 2024-10-30 23:01:11 +05:30
Manav Rathi
c2514bc336 Default anchor is already left 2024-10-30 22:34:07 +05:30
Manav Rathi
7f3996c0ba [web] Settings related refactoring (#3888)
Prep for moving the preferences code into packages/new/photos.
2024-10-30 22:26:47 +05:30
Manav Rathi
b7af7be2da LF 2024-10-30 22:20:20 +05:30
Manav Rathi
8685222472 Only attempt to init settings after login 2024-10-30 21:59:28 +05:30
ashilkn
b2c6374010 [mob][photos] Stop showing name of face filter so that it occupies less space in UI 2024-10-30 21:24:20 +05:30
ashilkn
e0e6980dac [mob][photos] Use thumbnail image for face filter thumbnails 2024-10-30 21:09:33 +05:30
mangeshrex
5a37760cf1 add: resource links for running museum as a bg service 2024-10-30 20:50:54 +05:30
ashilkn
556fb50870 [mob][photos] Move different filter chip widgets to separate files 2024-10-30 15:56:18 +05:30
ashilkn
da38c3e9f5 [mob][photos] Fix missing files in hierarchical search when searching over an archived album 2024-10-30 15:40:33 +05:30
Manav Rathi
f502246cde LF 2024-10-30 14:42:24 +05:30
Manav Rathi
774227c14e Split again 2024-10-30 14:37:40 +05:30
ashilkn
862e84e6b2 [mob][photos] Make 'only them' filter working, showing filtered files in gallery 2024-10-30 14:33:08 +05:30
Manav Rathi
98ad12b415 Start using 2024-10-30 14:28:25 +05:30
Manav Rathi
9b04de216c wip: checkpoint 2024-10-30 14:02:43 +05:30
Manav Rathi
6b71ce2cf9 To settings 2024-10-30 13:27:43 +05:30
Manav Rathi
3483466391 Rename 2024-10-30 13:25:27 +05:30
Manav Rathi
5609778ca1 Transition to settings 2024-10-30 13:25:14 +05:30
Manav Rathi
072c472f1c Outline 2024-10-30 13:11:44 +05:30
Manav Rathi
b8dea0f296 Outline 2024-10-30 12:27:11 +05:30
Manav Rathi
56bac2160e Combine 2024-10-30 12:12:19 +05:30
Manav Rathi
258d1768fd Inline 2024-10-30 11:31:02 +05:30
Manav Rathi
23e6788891 [web] [desktop] Retain JPEG originals even on date modifications (#3887) 2024-10-30 10:57:34 +05:30
Manav Rathi
28cb942e6c Fix formatting lint issue 2024-10-30 10:53:02 +05:30
Manav Rathi
f97952298d [web] [desktop] Retain JPEG originals even on date modifications 2024-10-30 10:34:42 +05:30
ashilkn
e6813aa042 [mob][photos] When an 'only them' filter is added, remove all individual face filters from applied list 2024-10-29 20:20:31 +05:30
Manav Rathi
ac6524121a [web] General refactoring - Update the OTP input component package (#3884) 2024-10-29 19:37:21 +05:30
Manav Rathi
8e5fc76ef1 Move dep to correct place 2024-10-29 19:29:12 +05:30
Manav Rathi
d2db27d4ee Style to fit during the login flow 2024-10-29 19:27:33 +05:30
Manav Rathi
d9e6ff2fee Autofocus back to first on error 2024-10-29 19:21:20 +05:30
ashilkn
4717e48598 [mob][photos] Show thumbnail for 'only them' filter with different layouts depending on the number of faces in filter 2024-10-29 18:52:52 +05:30
Manav Rathi
61936029e8 Update 2024-10-29 18:34:52 +05:30
laurenspriem
1277c9d188 [mob][photos] Copy 2024-10-29 18:16:16 +05:30
ashilkn
f753779860 [mob][photos] Create only them filter and add it to recommendations on a condition 2024-10-29 17:26:18 +05:30
mangesh
3244f9d37e minor fix: describing markdown syntax type. 2024-10-29 13:15:26 +05:30
Neeraj Gupta
b886a9e31c [mob] Add support for storing fileDataInfo 2024-10-29 13:11:40 +05:30
Manav Rathi
da6b0c920a Doc 2024-10-29 12:54:20 +05:30
Manav Rathi
28691784bf Unused CSS 2024-10-29 12:45:53 +05:30
Manav Rathi
0e12a390f4 [web] General minor refactorings (#3878)
Circling around how to extract the share page
2024-10-29 12:35:20 +05:30
Manav Rathi
c6bcd7ccf0 Fin 2024-10-29 12:21:47 +05:30
Manav Rathi
eb0af57a84 Autofocus on the delete action only in the file viewer context 2024-10-29 12:14:36 +05:30
Manav Rathi
d15f8451fe Stable identity of context functions to prevent unnecessary rerenders 2024-10-29 12:14:36 +05:30
Neeraj Gupta
5568a86fb2 [mob] Remove dead code 2024-10-29 11:47:11 +05:30
Neeraj Gupta
ea8e561e04 [mob] generated 2024-10-29 11:43:49 +05:30
Neeraj Gupta
ee36ebc6a6 [mob] Add migration for filedata 2024-10-29 11:43:39 +05:30
Manav Rathi
75c280d86b Auth app doesn't use it 2024-10-29 11:10:52 +05:30
Manav Rathi
04d07fc94f Should be fixed upstream
https://github.com/klendi/react-top-loading-bar/issues/52
2024-10-29 11:06:37 +05:30
Manav Rathi
6f576bdae6 Update 2024-10-29 10:56:35 +05:30
Manav Rathi
145dd4d50b Prune 2024-10-29 10:54:30 +05:30
Manav Rathi
a0ea952932 Doc 2024-10-29 10:54:13 +05:30
Manav Rathi
06a0a8177b Unused css
Best I can tell, it seems a leftover from 7df731ed2c
2024-10-29 10:46:12 +05:30
Manav Rathi
4df1e16b90 Use the mui built in icons
The ad-hoc variation did not fit in with the rest of the icons (e.g it had a different stroke width, and general vibe)
2024-10-29 09:57:31 +05:30
Manav Rathi
8ce0775514 Remove unused 2024-10-29 09:47:08 +05:30
zDqrK404
44ccc69f77 [AUTH] Add Icon for DigiFinex.com (#3858)
## Description

Added a Icon for DigiFinex.com 

And Updated Index for it in custom-icons.json 

## Tests

None 
2024-10-29 09:34:25 +05:30
mangesh
85ae97c459 [draft] Docs for self hosting ente without docker (#3831)
## Description

in draft 

## Tests
2024-10-29 09:34:05 +05:30
mangesh
fd4de8b67b [docs][ente-cli]: add docs to troubleshoot keyring errors (#3870)
## Description

Adding docs for setting up the ENTE_CLI_SECRET_PATH variable. This fix
is for errors related to keyrings with ente-cli.

## Tests
2024-10-29 09:33:37 +05:30
KingLuc12
ae0c379e3f Update custom-icons.json
Changed one of the "altNames" from "Ubiquti SSO" to "Ubiquiti SSO".
2024-10-28 20:58:06 +00:00
KingLuc12
19c81646e3 Merge branch 'ente-io:main' into main 2024-10-28 20:55:14 +00:00
Manav Rathi
5bf1c4e14f [docs] Update ML FAQ to reflect functionality in latest desktop release (#3874)
/cc @laurenspriem, please reword if needed!
2024-10-28 18:20:12 +05:30
Manav Rathi
c09fc35488 [docs] Update ML FAQ to reflect functionality in latest desktop release 2024-10-28 18:16:09 +05:30
Manav Rathi
16ef8c548d [desktop] Start next release train (#3873)
Also updated 1.7.6 changelog with two entries I'd forgotten to add
earlier.
2024-10-28 17:52:47 +05:30
Manav Rathi
3a406d46c2 [desktop] Start next release train
Also updated 1.7.6 changelog with two entries I'd forgotten to add earlier.
2024-10-28 17:50:47 +05:30
Manav Rathi
bc70689b9d photosd-v1.7.6 (#3872) 2024-10-28 17:14:09 +05:30
Manav Rathi
4246cc2f15 photosd-v1.7.6 2024-10-28 17:12:41 +05:30
Manav Rathi
3ec04beb61 [auth] Fix case insensitive rename (#3871)
A recent PR seems to have added "Render.svg". I'm not sure of the
intent, but
this seems to have been meant as replacement of the existing
"render.svg" (note
the different case). Because of how the macOS APFS filesystem and git
interact,
main is now showing as dirty on a git checkout.

Based on a visual comparison, and assuming the most recent PR is the
meant to
intentionally update this file, I've retained "Render.svg".
2024-10-28 17:10:32 +05:30
Manav Rathi
4e7dca6e4e [auth] Fix case insensitive rename
A recent PR seems to have added "Render.svg". I'm not sure of the intent, but
this seems to have been meant as replacement of the existing "render.svg" (note
the different case). Because of how the macOS APFS filesystem and git interact,
main is now showing as dirty on a git checkout.

Based on a visual comparison, and assuming the most recent PR is the meant to
intentionally update this file, I've retained "Render.svg".
2024-10-28 17:07:22 +05:30
Neeraj Gupta
8dce201ec6 Merge branch 'main' into file_data_v2 2024-10-28 15:55:46 +05:30
github-actions[bot]
60aae73223 [mobile] New translations (#3869)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-app)

Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2024-10-28 15:55:14 +05:30
Neeraj Gupta
d3dd168b2a [server] generated strings 2024-10-28 15:38:55 +05:30
LeGenDaRy
a6e4f9e603 Add new icons (#3776)
Add new icons
2024-10-28 15:14:31 +05:30
Neeraj Gupta
bec0f639d6 [server] API to get file data status (#3868)
## Description
Note:
This API won't really return status/diff for deleted files. The clients
will primarily use this data to identify for which all files we already
have preview generated or it's ML inference is done.
This doesn't simulate perfect diff behaviour as we won't maintain a
tombstone entries for the deleted API.
## Tests
2024-10-28 15:14:09 +05:30
Neeraj Gupta
70f79ebae4 [server] Change method type 2024-10-28 15:12:24 +05:30
Neeraj Gupta
17d1589859 [server] API to get index diff status 2024-10-28 15:03:08 +05:30
github-actions[bot]
dcd112bfdf [mobile] New translations (#3862)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-app)

Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2024-10-28 10:29:11 +05:30
github-actions[bot]
d3ce42fca1 [auth] New translations (#3863)
New translations from
[Crowdin](https://crowdin.com/project/ente-authenticator-app)

Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2024-10-28 10:26:21 +05:30
KingLuc12
d7e10a5e7a [Custom Icons] Add Ubiquiti (#3825)
## Description
Added Ubiquiti to the custom icons.
2024-10-28 10:25:43 +05:30
Manav Rathi
b4467771c0 [web] Enable Ukrainian (#3865) 2024-10-28 10:10:03 +05:30
Manav Rathi
984800379e [web] Enable Ukrainian 2024-10-28 10:02:53 +05:30
Manav Rathi
24c6d52b54 [web] New translations (#3861)
New translations from
[Crowdin](https://crowdin.com/project/ente-photos-web)
2024-10-28 09:57:52 +05:30
Crowdin Bot
54787eaf8d New Crowdin translations by GitHub Action 2024-10-28 00:36:03 +00:00
ashilkn
322c729c13 [mob][photos] Curate slightly better recommendations in app bar
Before, the recommendations were only based on relevance. Now the recommendations will be mostly relevant and a bit more diverse when it comes to type of filter
2024-10-26 18:50:24 +05:30
ashilkn
2c4c25feb3 [mob][photos] Create FilterTypeNames enum and enforce that a new entry is added here any time a new class extends HierarchicalSearchFilter 2024-10-26 18:40:57 +05:30
Manav Rathi
85e6fb60dc [desktop] Fix OOM on large library imports (#3847)
It is hard for me to be certain, but I feel this should resolve the
sporadic OOMs that have been reported when uploading large libraries.

- https://github.com/ente-io/ente/issues/2500 
- https://github.com/ente-io/ente/discussions/3420

There are two fixes here:

1. First one is a inefficient array concat in our code. This was not
incorrect per se, but it did lead to an allocation pattern that caused
V8's GC to crash the renderer with OOMs.

2. But even after the first fix, I was able to sometimes reproduce OOMs.
I added a lot of instrumentation (I've cherry-committed some of it to
git history for future reference when debugging similar issues), but I
couldn't spot any abnormal allocation patterns during uploads. Out of
ideas, I started imagining it was a Chromium issue, and on a whim, I
updated Electron 30 => 33 (something I needed to do anyway, as part of
regular app dependency updates). That apparently has resolved the
remaining OOMs.

With these changes, I've not been able to reproduce a crash even after
bumping up the parallel upload count from 4 to 12. I've let the parallel
upload count be at the existing 4 for now, but if indeed we stop getting
field reports of OOM crashes after this is released, we can increase
that too in the future.
2024-10-26 15:33:09 +05:30
Manav Rathi
f5ad895768 Revert "Debugging instrumentation"
This reverts commit 6700f912fc (it was always meant to be reverted, and only a history entry)
2024-10-26 14:36:22 +05:30
Manav Rathi
158254a658 Update to Electron 33
Two reasons:

- Electron 30 is end of support

- The prev-to-prev commit didn't fix all OOMs
  (3511fcf723), and they still sporadically
  occur. But there isn't any any aberrant memory consumption I can spot (See
  prev commit for some example instrumentation, the app's memory usage doesn'
  exceed a few hundred MBs at any point). So to rule out an upstream issue.
2024-10-26 14:24:36 +05:30
Manav Rathi
6700f912fc Debugging instrumentation
commiting to keep them in history
2024-10-26 14:20:13 +05:30
Neeraj Gupta
a830026640 [server] Add '/' before query params for an album's share URL (#3843) 2024-10-26 13:58:44 +05:30
ashilkn
3b8c1ed9e3 [server] Add '/' before query params for an album's share URL 2024-10-26 07:51:20 +05:30
Prateek Sunal
e75913cb96 [auth] linux fixes (#3334)
## Description

- fix #2563 #2564
- update binary name

## Tests
2024-10-25 22:31:16 +05:30
Manav Rathi
3511fcf723 [desktop] Fix an OOM on large library imports
Should reduce the following occurrences (This should make it better, but there
might be other reasons for the OOM too): -
https://github.com/ente-io/ente/issues/2500 - -
https://github.com/ente-io/ente/discussions/3420

---

Here, the issue is that the combineChunksToFormUploadPart function, while not
incorrect, is terribly inefficent in how it combines Uint8Arrays byte by
byte. This apparently causes an allocation pattern that the V8 garbage
collector, Oilpan, doesn't like, and crashes the renderer process with:

    [main] <--- Last few GCs --->
    [main]
    [main] [17639:0x13000e90000]    39409 ms: Mark-Compact (reduce) 48.1 (57.8) -> 47.7 (52.8) MB, pooled: 0 MB, 35.08 / 0.04 ms  (average mu = 0.857, current mu = 0.906) CppHeap allocation failure; GC in old space requested
    [main]
    [main]
    [main] <--- JS stacktrace --->
    [main]
    [main] [17639:1025/145540.195043:ERROR:v8_initializer.cc(811)] V8 process OOM (Oilpan: Large allocation.).

The effort was primarily spent in getting it to a reproducible-ish state, and I
can now sporadically reproduce this watching a folder full of large videos, and
setting the network conditions in DevTools to 3G. For real users, what probably
happens is, depending on network speed, there is a potential race condition
where 4 multipart uploads may start within the same GC cycle (but I'm guessing
here, since the setup I have for reproducing this is still very sporadic).

Here is a smaller isolated example. This code, when repeatedly invoked in a
setTimeout (independent of any uploads or anything else in the app), causes the
renderer to OOM within a minute.

    import { wait } from "@/utils/promise";

    async function combineChunksToFormUploadPart() {
        const combinedChunks = [];
        for (let i = 0; i < 5 * 5; i++) {
            const { done, value: chunk } = await readDo();
            if (done) {
                break;
            }
            for (let index = 0; index < chunk.length; index++) {
                combinedChunks.push(chunk[index]!);
            }
        }
        return Uint8Array.from(combinedChunks);
    }

    const readDo = async () => {
        await wait(10);
        const ENCRYPTION_CHUNK_SIZE = 4 * 1024 * 1024;
        return {
            done: false,
            value: Uint8Array.from(
                Array(ENCRYPTION_CHUNK_SIZE).fill(Math.random()),
            ),
        };
    };

---

Some flags which helped in debugging:

    app.commandLine.appendSwitch("js-flags", "--expose_gc --trace_gc --trace_gc_verbose");
2024-10-25 20:49:03 +05:30
Manav Rathi
24009842d7 [docs] [web] Add NVM as an alternative (#3842) 2024-10-25 19:10:09 +05:30
Manav Rathi
1b6dda46df Add NVM as an alternative 2024-10-25 19:07:09 +05:30
Ashil
9956faf4b3 Update sha256 fingerprint of ente photos in Digital asset links JSON (#3841) 2024-10-25 17:38:19 +05:30
ashilkn
a829681970 Update sha256 fingerprint of ente photos in Digital asset links JSON 2024-10-25 17:34:03 +05:30
Neeraj Gupta
27dd13324e ML Lite (#3838)
## Description

- Adds an option to not index files locally on mobile
- Uses the global ML flag for consent

## Tests

Tested in debug mode on my Pixel 8.
2024-10-25 11:18:36 +05:30
laurenspriem
0a2090e2fb [mob][photos] Rename keys 2024-10-25 11:15:19 +05:30
laurenspriem
656baa972d [mob][photos] Simplify 2024-10-25 10:39:51 +05:30
laurenspriem
ab4d73e172 [mob][photos] Fix 2024-10-25 10:35:53 +05:30
laurenspriem
f81c7f6faa [mob][photos] Refactor 2024-10-25 10:23:35 +05:30
ashilkn
1c3bdb6d69 Merge branch 'main' into hierarchical_search 2024-10-25 09:58:37 +05:30
ashilkn
8b647ed0b1 [mob][photos] Wrap safearea around FilterOptionsBottomSheet 2024-10-25 09:57:39 +05:30
ashilkn
a29f9db35d [mob][photos] Show loading state in gallery from when a filter is applied to when all computation related to it finishes 2024-10-25 09:10:51 +05:30
ashilkn
ae5ae0c770 [mob][photos] Enable hierarchical search for uncategorized album 2024-10-25 08:34:55 +05:30
ashilkn
567ae6aa41 Revert "[mob][photos] Change leading width of appbar when filters are applied"
This reverts commit 925abee3c5.
2024-10-25 08:23:38 +05:30
ashilkn
53e7bbac78 [mob][photos] Chore 2024-10-24 22:15:04 +05:30
ashilkn
e944b6e8cb [mob][photos] Performance improvements 2024-10-24 22:13:00 +05:30
ashilkn
925abee3c5 [mob][photos] Change leading width of appbar when filters are applied 2024-10-24 21:10:52 +05:30
ashilkn
dabf4bb309 [mob][photos] Remove duplicate people naming banner 2024-10-24 21:02:40 +05:30
ashilkn
656d103e9d [mob][photos] Stop showing cluster id in UI 2024-10-24 20:59:25 +05:30
Manav Rathi
37d763bfcd [infra] Add some notes on creating a graphical cloud VM (#3830) 2024-10-24 20:22:42 +05:30
Manav Rathi
3c8b023cd0 Tweak 2024-10-24 20:20:03 +05:30
laurenspriem
8bf29ee82f [mob][photos] Fix remote fetch counter 2024-10-24 19:46:42 +05:30
laurenspriem
b85e830a2b [mob][photos] Remove unneeded 2024-10-24 19:33:57 +05:30
laurenspriem
9e1d32fd88 [mob][photos] Fix colors 2024-10-24 19:28:25 +05:30
laurenspriem
4c63ffa90f [mob][photos] Inherited widget fix 2024-10-24 19:21:53 +05:30
ashilkn
5498438384 [mob][photos] Increase size of face filter chip in all filters view 2024-10-24 19:10:36 +05:30
laurenspriem
d16566ec31 [mob][photos] format 2024-10-24 19:07:25 +05:30
ashilkn
83cfd4ab4b [mob][photos] UI improvements in filter chips 2024-10-24 19:06:05 +05:30
laurenspriem
d2f20140da [mob][photos] format 2024-10-24 19:02:13 +05:30
laurenspriem
054a9deb59 [mob][photos] Only index locally if enough RAM 2024-10-24 19:00:22 +05:30
ashilkn
32b5b903be [mob][photos] Show close icon always inside the generic filter chip 2024-10-24 18:38:24 +05:30
laurenspriem
e500ef2144 [mob][photos] Extract strings 2024-10-24 17:56:41 +05:30
ashilkn
96cba31c29 [mob][photos] Chore 2024-10-24 17:54:01 +05:30
laurenspriem
602e820442 [mob][photos] Fix ML consent logic 2024-10-24 17:51:24 +05:30
laurenspriem
811ba9abfa [mob][photos] Prettier UI 2024-10-24 17:34:25 +05:30
laurenspriem
ca900d5a9a [mob][photos] Update ML debug options 2024-10-24 17:19:42 +05:30
ashilkn
8c708530ef [mob][photos] Perf improvements to hierarchical search
Normal search and hierarchical search needs slightly different set of files. Refactored code in such a way that the elements in both these lists are references of a elements in a list of all files and hence reducing the memory needed for search and hierarchical search combined. Files used for hierarchical search contain only uploaded files now, rather than mix of uploaded and un-uploaded, reducing iterations required for hierarchical search
2024-10-24 17:17:50 +05:30
laurenspriem
e969f8fa33 [mob][photos] Format 2024-10-24 17:10:35 +05:30
laurenspriem
39182fa9a4 [mob][photos] Enable local indexing by default 2024-10-24 17:09:11 +05:30
laurenspriem
1bf6b56f96 [mob][photos] Switch ML flags 2024-10-24 17:06:33 +05:30
Manav Rathi
18927c9e1c Notes on install
Ref: https://timoanttila.com/blog/install-xfce-to-hetzner-cloud
2024-10-24 16:55:10 +05:30
Saijo George
67c9d8b413 Update custom-icons.json for impact.com (#3820)
## Description

## Tests
2024-10-24 14:41:07 +05:30
laurenspriem
ee59fe8dcd [mob][photos] Toggle for local indexing 2024-10-24 14:29:39 +05:30
Neeraj Gupta
70b90e8123 [mob] Bump version v0.9.53 (#3829)
## Description

## Tests
2024-10-24 12:14:42 +05:30
Neeraj Gupta
41a1d9042d [mob] Bump version v0.9.53 2024-10-24 12:14:11 +05:30
ashilkn
d45cb08fec [mob][photos] Remove duplicates and don't show files in ignored collections in Hierarchical search gallery 2024-10-24 11:52:44 +05:30
Neeraj Gupta
fb92cc49e4 [mob][auth] Fix detection of default locale (#3819)
## Description

## Tests
2024-10-24 11:23:38 +05:30
Neeraj Gupta
de435ecf33 [auth] Fix auto detection for default locale 2024-10-24 11:16:48 +05:30
Laurens Priem
e93f6b1c3b [mob][photos] Revert onnx preprocessing (#3818)
## Description

Reverting some changes that moved preprocessing inside ONNX because it's
giving memory issues.

## Tests

Tested in debug mode on my pixel 8.
2024-10-24 08:22:22 +05:30
KingLuc12
4668be96c1 Added Ubiquiti to "custom-icons.json" 2024-10-23 23:00:37 +01:00
KingLuc12
9b6a7881a5 Add files via upload 2024-10-23 22:50:24 +01:00
Prateek Sunal
58e2bc1f6c chore: lint fix 2024-10-24 00:43:28 +05:30
Prateek Sunal
269e68f32a fix: migration logic update 2024-10-24 00:43:04 +05:30
Prateek Sunal
5a7a5d6778 Merge remote-tracking branch 'origin/main' into auth-linux-fixes 2024-10-24 00:34:30 +05:30
Prateek Sunal
d75bb9e8c9 fix: rethrow error after migrate db fails 2024-10-24 00:29:56 +05:30
Prateek Sunal
6004016331 Merge remote-tracking branch 'refs/remotes/origin/auth-linux-fixes' into auth-linux-fixes 2024-10-24 00:28:20 +05:30
Prateek Sunal
ab4fae7922 fix: migrate db on mac 2024-10-24 00:26:22 +05:30
laurenspriem
77dc0ba6f0 [mob][photos] ML Lite initial commit 2024-10-23 22:43:28 +05:30
ashilkn
2ec911da06 [mob][photos] Fix files in group in HierarchicalSearchGallery not ordered by creation time + reduce iterations 2024-10-23 21:41:42 +05:30
ashilkn
5e56ec21b7 [mob][photos] Use better name for function 2024-10-23 21:39:11 +05:30
ashilkn
6a692ebc73 [mob][photos] Clear all file selections when filters are applied 2024-10-23 20:46:26 +05:30
ashilkn
43dc2794d7 [mob][photos] Keep selection sheet the same until the initial top level filter of the gallery is removed. Once removed, use GalleryType.searchResult for the selection sheet 2024-10-23 20:39:11 +05:30
ashilkn
802ba55016 [mob][photos] Group filter recommendations by type in appbar 2024-10-23 18:44:35 +05:30
ashilkn
e7525ff5ea [mob][photos] Elevate app bar which has filters when gallery is scroll underneath to it (only visible in light theme) 2024-10-23 18:21:39 +05:30
ashilkn
9983689c74 [mob][photos] Fade the left edge of applied filters in appbar so that the filters fade away to the left when scrolling 2024-10-23 18:06:09 +05:30
ashilkn
b7f23a74c3 [mob][photos] Add icons for TopLevelGenericFilter search results 2024-10-23 18:05:12 +05:30
ashilkn
7ed11779bd [mob][photos] Show a gallery's TopLevelGenericFiter too in all filters view 2024-10-23 17:58:17 +05:30
Neeraj Gupta
e25eac5d62 [mob] Lint fix 2024-10-23 17:39:02 +05:30
Neeraj Gupta
e4647c07d5 [mob] Fix autoLanguage detection 2024-10-23 17:25:57 +05:30
laurenspriem
3a8ec51674 [mob][photos] Revert onnx preprocessing 2024-10-23 17:05:13 +05:30
ashilkn
37f2b9f70e [mob][photos] Fix filters getting squished a bit because of it's size constrain and it's outer stroke width 2024-10-23 16:39:11 +05:30
Manav Rathi
85f0920c5b [desktop] People grouping - Finishing touches (#3817) 2024-10-23 16:32:02 +05:30
ashilkn
f9d6c54004 [
mob][photos] Slight changes to UI in all filters view and in app bar and fix clipping issue of overflowing of widget content (of filter chip) by changing the design
2024-10-23 16:26:26 +05:30
Manav Rathi
30bb3e8c38 Fix 2024-10-23 16:21:53 +05:30
Manav Rathi
f98c837442 Tweak spacing 2024-10-23 16:18:44 +05:30
Manav Rathi
bc938ea17e Is fine 2024-10-23 16:15:53 +05:30
Manav Rathi
cb13e8ddb0 Tweak 2024-10-23 16:12:45 +05:30
Manav Rathi
62fb7ba459 Fix condition 2024-10-23 16:03:47 +05:30
Manav Rathi
e21cd29b98 Remove dupes 2024-10-23 15:52:29 +05:30
Manav Rathi
c4f0f0a32f Allow unignores 2024-10-23 15:45:26 +05:30
Manav Rathi
8f9c36b192 Retain state for use in showing toggle 2024-10-23 15:23:05 +05:30
Manav Rathi
d112007b7b Show ignored people in file info 2024-10-23 15:19:31 +05:30
Manav Rathi
b4643e9741 Remove testing asserts 2024-10-23 14:42:55 +05:30
Manav Rathi
9e09344163 Fix selection on add 2024-10-23 14:36:25 +05:30
Manav Rathi
531d4ede40 Selection reset will automatically happen on deleting 2024-10-23 14:22:39 +05:30
Manav Rathi
329eba2491 Split 2024-10-23 14:11:42 +05:30
Manav Rathi
653f686ee0 id is enough 2024-10-23 14:05:26 +05:30
Manav Rathi
87ffb455be Select on add 1 2024-10-23 13:50:49 +05:30
Manav Rathi
00be1940d2 Update people view when state changes 2024-10-23 13:42:33 +05:30
Manav Rathi
f3a0540abd Fix 2024-10-23 13:27:22 +05:30
ashilkn
3dabf7e89c [mob][photos] Make all filters button's UI better 2024-10-23 08:57:39 +05:30
ashilkn
9722cd5d67 [mob][photos] Create a bigger view that shows all applied and recommended filters (bottom sheet) and make changes related to it 2024-10-22 22:52:43 +05:30
ashilkn
8e7a560ad4 [mob][photos] Pass FileTypeFilter instead of TopLevelGenericFilter for file type search results 2024-10-22 21:28:50 +05:30
ashilkn
f62c4e3900 [mob][photos] Add UI change for face filter chip when filter is applied 2024-10-22 17:55:49 +05:30
ashilkn
f774a9a3c3 [mob][photos] Bug fix 2024-10-22 17:40:37 +05:30
ashilkn
1e868ac624 [mob][photos] Add 'isApplied' state to filters, change UI for applied filters 2024-10-22 17:17:00 +05:30
ashilkn
2d6bd7f5a5 [mob][photos] Only show most relevant filters in app bar as recommendation and capped to max 16 2024-10-22 15:20:48 +05:30
ashilkn
1701311be3 [mob][photos] Minor fix 2024-10-22 12:47:10 +05:30
ashilkn
da21dcbd9e [mob][photos] Show loading indicator till the image of face in face filter is ready 2024-10-22 12:35:58 +05:30
ashilkn
fa076305df [mob][photos] Add animation to changes in recommended filter in appbar 2024-10-21 15:44:53 +05:30
ashilkn
8a130b52c2 [mob][photos] Improve UI of appbar when there are added filters 2024-10-21 08:34:57 +05:30
Prateek Sunal
4000adaee4 Merge remote-tracking branch 'origin/main' into auth-linux-fixes 2024-10-20 00:11:25 +05:30
ashilkn
f63e8b51d9 [mob][photos] Use service locators where ever necessary 2024-10-19 22:44:08 +05:30
ashilkn
9a07038bdf [mob][photos] Resolve merge conflicts and merge main 2024-10-19 22:40:17 +05:30
ashilkn
3716eb3d30 [mob][photos] Make MagicResultScreen hierarchical searchable 2024-10-19 22:22:06 +05:30
ashilkn
59333b700c [mob][photos] Make UI of Appbar and filter chips better 2024-10-19 22:01:07 +05:30
ashilkn
5111b98839 [mob][photos] Pass matchedUploadedIDs to MagicFilter right when recommendations are curated for MagicFilter to work when applied 2024-10-19 20:24:08 +05:30
ashilkn
f66e49313d [mob][photos] Show magic filter recommendations for a gallery using magic cache used for the discovery section 2024-10-19 19:26:43 +05:30
ashilkn
0fc63396b7 [mob][photos] Chore 2024-10-18 20:03:32 +05:30
ashilkn
0c185d3446 [mob][photos] Resolve merge conflicts and merge main 2024-10-18 19:04:21 +05:30
ashilkn
063d87e44a [mob][photos] Use HierarchicalSearchGallery in PeoplePage when searching so that the gallery updates when adding/removing filters 2024-10-18 18:57:13 +05:30
ashilkn
c8990d8f40 [mob][photos] Make filters useable (make them appear on appbar) in named people page 2024-10-18 09:50:10 +05:30
ashilkn
fd9269ccdf [mob][photos] Make sure AppliedFilters or RecommendedFilters widget is not used when a gallery is not hierarchical searchable 2024-10-18 09:41:13 +05:30
ashilkn
c7a692cb4d [mob][photos] Fix face thumbnail not appearing when filter is applied 2024-10-18 07:25:24 +05:30
ashilkn
288e987246 [mob][photos] Add more logging in filtering files 2024-10-18 07:13:48 +05:30
ashilkn
e616071395 [mob][photos] Optimize getting uploaded file IDs associated with personID and clusterID when applying face filters 2024-10-17 21:20:40 +05:30
ashilkn
2f54acab58 [mob][photos] Make face filtering work (yet to be optimized for performance) 2024-10-17 19:14:24 +05:30
ashilkn
1136d47c09 [mob][photos] Show face thumbnail and name of face if available in FaceFilterChip 2024-10-17 17:46:41 +05:30
ashilkn
0ef03389ab [mob][photos] Pass FaceFilter.name as null if face name is not available (when personId is null) instead of passing clusterID 2024-10-17 09:16:36 +05:30
ashilkn
c4d49f4176 [mob][photos] Use FaceFilterChip instead of GenericFilterChip where ever necessary 2024-10-17 09:05:30 +05:30
ashilkn
a7420be774 [mob][photos] Remove no more necessary abstract method 'resultType' in HierarchicalSearchFilter 2024-10-17 09:03:57 +05:30
ashilkn
6252753512 Merge branch 'main' into hierarchical_search 2024-10-17 08:47:00 +05:30
ashilkn
b9b9dac719 [mob][photos] Remove unused extension on ResultType 2024-10-17 08:45:36 +05:30
ashilkn
6facd67452 [mob][photos] Add more documentation about TopLevelGenericFilter 2024-10-17 08:28:50 +05:30
ashilkn
863ba6b955 [mob][photos] Clean up isSameFilter implementations 2024-10-17 08:25:12 +05:30
ashilkn
ea983dd76b [mob][photos] Remove toHierarchicalSearchFilter which is no longer used from HierarchicalSearchFilter 2024-10-14 15:45:05 +05:30
Prateek Sunal
b9a76c369e Merge remote-tracking branch 'origin/main' into auth-linux-fixes 2024-10-11 22:49:33 +05:30
ashilkn
171e96976a [mob][photos] Attach a SearchResults's corresponding HierarchicalSearchFilter to it when ever a instance is created 2024-10-11 20:57:45 +05:30
ashilkn
4450018491 [mob][photos] Create a different filter chip widget for faces and a generic one for everything else 2024-10-11 08:45:24 +05:30
ashilkn
b9a99d89af [mob][photos] Create a custom filter chip for hierarchical search 2024-10-11 07:52:06 +05:30
ashilkn
f5cadb3b7a [mob][photos] Curate face filters and show in recommendations 2024-10-10 19:50:38 +05:30
ashilkn
bc90b6d980 [mob][photos] FaceFilter should accept either personId or clusterId 2024-10-10 19:29:49 +05:30
ashilkn
66a13392a9 [mob][photos] Make implementation of abstract fn isSameFilter() more accurate when the fn is used to compare two same sub-HierarchicalSearchFilter types 2024-10-10 17:36:21 +05:30
ashilkn
6c5b0a6578 [mob][photos] Chore 2024-10-10 10:09:19 +05:30
ashilkn
87ff4076b0 [mob][photos] Create FaceFilter class 2024-10-10 10:09:01 +05:30
Prateek Sunal
726ee5918b fix(auth): don't require libsodium for some packaging 2024-10-09 18:06:06 +05:30
ashilkn
0dd3e5d452 [mob][photos] Fix typo 2024-10-09 15:32:23 +05:30
Prateek Sunal
8bd6f23236 fix(workflow): remove libwebkit 2024-10-08 21:21:07 +05:30
Prateek Sunal
d3c0dbaa64 fix: dependencies and generic name 2024-10-08 21:19:43 +05:30
Prateek Sunal
cdeb1aa9bc fix(auth): update coping mechanism 2024-10-08 21:13:36 +05:30
Prateek Sunal
337743bcf0 fix: update database path 2024-10-08 20:48:24 +05:30
Prateek Sunal
c2413a599e fix: copy internal files recursively 2024-10-08 19:19:22 +05:30
Prateek Sunal
10b4abf9cd fix: remove dependency on desktop webview 2024-10-08 18:34:40 +05:30
Prateek Sunal
b72f047526 Merge remote-tracking branch 'origin/main' into auth-linux-fixes 2024-10-08 17:53:59 +05:30
Prateek Sunal
802aabdda5 fix: try to solidify the logic for directory migration 2024-10-08 17:50:09 +05:30
Prateek Sunal
d79cbf5e5f fix(linux): update metadata according to flatpak 2024-10-07 22:37:17 +05:30
ashilkn
7504e01bf7 [mob][photos] Enable hierarchical search in location screen 2024-10-07 20:14:46 +05:30
ashilkn
af8d630060 [mob][photos] Use GalleryAppBar widget on location screen 2024-10-07 20:05:46 +05:30
ashilkn
2611cdc480 [mob][photos] Only show what comes before '@' in the name of contacts filter 2024-10-07 18:37:22 +05:30
ashilkn
b68fdf3d15 [mob][photos] Fix 'cannot modify an unmodifiable set' bug 2024-10-07 18:33:35 +05:30
ashilkn
d91a710f18 [mob][photos] Add ResultType used in search a member of HierarchicalSerachFilter and make use of it in isSameFilter() for isSameFilter() to work when comparing other filters and TopLevelGenericFilters 2024-10-07 18:11:50 +05:30
ashilkn
f1535f901f [mob][photos] Pass better string for FileTypeFilter. Also, do it in such a way that name() of HierarchicalSearchFilter doesn't need a BuildContext parameter 2024-10-07 17:04:16 +05:30
ashilkn
5f2cc6f6c3 [mob][photos] Add initialFilter in search results page depending on the type of search result passed 2024-10-07 16:26:05 +05:30
ashilkn
aa9fbd281e [mob][photos] Create a top level generic filter to be used for search ResultTypes(s) for which we don't plan to keep a subtype of HierarchicalSearchFilter 2024-10-05 22:18:18 +05:30
ashilkn
fac18333ce [mob][photos] Improve performance when adding/removing filters during hierarchical search by using cached results of applied filters instead of iterating through all filters and files 2024-10-05 19:45:55 +05:30
ashilkn
42c9ae4caf [mob][photos] Remove dead code 2024-10-05 17:42:57 +05:30
ashilkn
bbc894cfda [mob][photos] Add contacts filter in hierarchical search 2024-10-05 16:46:12 +05:30
ashilkn
d7eb0e9dc3 [mob][photos] Create ContactsFilter class 2024-10-05 16:14:55 +05:30
ashilkn
45e2ca52c9 Merge branch 'main' into hierarchical_search 2024-10-05 16:03:29 +05:30
ashilkn
05b14ac32e [mob][photos] Return false if file doesn't have location data on checking if a file matches a location filter 2024-10-04 15:38:57 +05:30
ashilkn
e2897b7d18 [mob][photos] Curate location filters in isolate 2024-10-04 15:31:16 +05:30
ashilkn
3427f1778e [mob][photos] Create LocationFilter class 2024-10-04 15:14:23 +05:30
ashilkn
4b72817864 [mob][photos] Make initialGalleryFilter non-nullable and make a a required parameter of SearchFilterDataProvider 2024-10-03 08:47:35 +05:30
ashilkn
acfe65bf37 [mob][photos] Enable hierarchical search in search results page 2024-10-03 08:41:17 +05:30
ashilkn
18a22c8014 [mob][photos] Handle and log failures in curating and applying filters 2024-10-03 07:51:15 +05:30
ashilkn
2c2c7f6c9e [mob][photos] Fix null check used on null value exception + refactor filtering of files 2024-10-03 07:47:05 +05:30
ashilkn
6aec2c5718 [mob][photos] Curate both album and fileType filters and add all to applied filters at once 2024-10-03 07:22:19 +05:30
ashilkn
38e9496b8c [mob][photos] Add comment 2024-10-03 07:09:37 +05:30
ashilkn
369bdc8f4c [mob][photos] Create function to curate file type filters 2024-10-03 07:08:04 +05:30
ashilkn
a29fd51855 [mob][photos] Create FileTypeFilter class for photos, videos and live photos filters 2024-10-02 11:08:51 +05:30
ashilkn
a105195481 [mob][photos] Make matchedUploadedIDs a property of HierarchicalSearchFilter so that it's a property of all filters that extend it 2024-10-02 10:49:23 +05:30
ashilkn
007f7aa5d6 [mob][photos] Create a new widget 'HierarchicalSearchGallery' and use it when the first filter is added instead of handling everything in the 'Gallery' widget
Using a separate gallery for Hierarchical Search makes it easier to plug this in in different galleries
2024-10-02 10:05:26 +05:30
ashilkn
2292146706 [mob][photos] Refactor 2024-10-01 15:58:48 +05:30
ashilkn
60c718c7ed [mob][photos] Move filtering logic outside of gallery to reduce clutter in gallery file 2024-09-30 16:38:54 +05:30
ashilkn
b7f899cd88 [mob][photos] Fix incorrect order of files in _allGalleryFiles compared to file order in gallery 2024-09-30 16:04:12 +05:30
ashilkn
c27451f46b [mob][photos] Update all files in GalleryFilesState when filters are added in hierarchical search in a gallery 2024-09-30 16:02:27 +05:30
ashilkn
79e49d49d4 [mob][photos] Resolve merge conflicts and merge main 2024-09-30 13:01:35 +05:30
Prateek Sunal
ae77a38846 fix: don't include build number for version 2024-09-29 16:05:02 +05:30
Prateek Sunal
d7946fbfc5 fix(linux): update version in appdata 2024-09-29 14:41:01 +05:30
Prateek Sunal
594843f48b fix(linux): metainfo package name 2024-09-29 04:08:16 +05:30
Prateek Sunal
4c5942016f fix: make release path generic 2024-09-28 22:15:53 +05:30
Prateek Sunal
39765dd802 fix: path for release 2024-09-28 22:13:25 +05:30
Prateek Sunal
bd9bcf607c Merge remote-tracking branch 'origin/main' into auth-linux-fixes 2024-09-28 21:42:51 +05:30
Prateek Sunal
30e26a815f chore: bump version to 4.0.3 2024-09-28 21:39:42 +05:30
Prateek Sunal
d873921422 chore: remove clip_ggml again 2024-09-28 21:37:31 +05:30
Prateek Sunal
528f503444 Merge remote-tracking branch 'origin/auth-linux-fixes' into auth-linux-fixes 2024-09-27 00:25:31 +05:30
Prateek Sunal
fa9d171287 Merge remote-tracking branch 'origin/main' into auth-linux-fixes 2024-09-27 00:25:15 +05:30
Prateek Sunal
43ba2ee2da Merge remote-tracking branch 'origin' into auth-linux-fixes 2024-09-27 00:24:12 +05:30
Prateek Sunal
3292655ff7 fix(deb): don't include build number in desktop file 'Version' 2024-09-27 00:23:14 +05:30
ashilkn
2523a32e94 Merge branch 'main' into hierarchical_search 2024-09-26 09:50:26 +05:30
ashilkn
38ee4cd1da [mob][photos] Safely add filters to recommended list ensuring that the not any already existing filters in recommended or applied is added 2024-09-25 19:23:34 +05:30
ashilkn
8169bbe1fa [mob][photos] Curate new album filters on each new udpate to applied filters 2024-09-25 19:11:50 +05:30
ashilkn
17cf7fe6a4 [mob][photos] On applying the first filter on hierarchical search, add the initial gallery filter to applied filters
If we are on an album named 'Trip to Coorg' and another album filter is added, a functional  filter chip will get added to applied filters automatically
2024-09-25 15:41:07 +05:30
ashilkn
bd6fe03710 [mob][photos] Do not show up the initial gallery filter on hierarchical search's filter recommendations
For example, if we search for an album 'Trip to Coorg' and go in the album, 'Trip to Coorg' shouldn't come up in recommended filters
2024-09-25 13:14:54 +05:30
ashilkn
88891bf24e [mob][photos] Go back to search screen if all applied filters are de-selected 2024-09-25 11:55:07 +05:30
ashilkn
798c8f0782 [mob][photos] Enable use of hierarchical search in album page 2024-09-25 11:54:27 +05:30
Prateek Sunal
484b05bdb2 fix: update receipe for linux and windows 2024-09-25 00:16:59 +05:30
ashilkn
1258558be8 [mob][photos] Improve curation of album filter recommendation 2024-09-24 19:19:33 +05:30
ashilkn
468386ede6 [mob][photos] Get just the album filters logic working on gallery 2024-09-24 18:19:55 +05:30
ashilkn
6aebe8ad39 [mob][photos] Show applied filters in app bar of search result page (unpolished UI) 2024-09-21 18:03:16 +05:30
ashilkn
d7a08bed88 [mob][photos] chore 2024-09-21 18:00:09 +05:30
ashilkn
2b5bb5f338 [mob][photos] Create AppliedFilters widget 2024-09-21 17:59:37 +05:30
ashilkn
98aca5090b [mob][photos] Use better name for widget 2024-09-21 16:24:08 +05:30
ashilkn
d55559b811 [mob][photos] Show recommendations on the search results page 2024-09-21 16:17:12 +05:30
ashilkn
63649a25e4 [mob][photos] Create a MVP widget of recommendations row that can be plugged in to bottom of app bar, which will show curated recommendations of filters specific to a gallery 2024-09-21 16:05:35 +05:30
ashilkn
85fe1168a1 [mob][photos] Improvements to SearchFilterDataProvider 2024-09-21 15:01:18 +05:30
ashilkn
e8b2adb199 [mob][photos] Curate album filters for search result page (just getting the data without showing it on UI) 2024-09-20 19:38:29 +05:30
ashilkn
80c3106bfc [mob][photos] Write method to curate album filters for a list of EnteFiles 2024-09-20 19:36:21 +05:30
ashilkn
080aeeecdb [mob][photos] Add more fields in search filter models 2024-09-20 19:33:55 +05:30
ashilkn
72a40a63d9 [mob][photos] Create an inherited widget to store searchFilterDataProvider for gallery screens 2024-09-20 19:01:14 +05:30
ashilkn
6a735e1a6a [mob][photos] Create a SearchFilterDataProvider which will be used to update the recommended and applied filters list and make it possible to listen to applied and recommended state changes separately from it 2024-09-20 19:00:01 +05:30
Prateek Sunal
cdbcc93571 chore: lint fixes 2024-09-20 01:06:36 +05:30
ashilkn
a77e9aa37e [mob][photos] Create model for album filter 2024-09-19 15:18:33 +05:30
Prateek Sunal
00415cb6fe chore: lint fixes 2024-09-19 01:04:47 +05:30
Prateek Sunal
6af1604026 fix(auth): add migrate naming changes for linux 2024-09-19 01:04:40 +05:30
Prateek Sunal
2e01a96477 fix: add xdg directories for linux 2024-09-18 20:25:27 +05:30
Prateek Sunal
fa8a8dd639 fix(auth[linux]): update binary name 2024-09-18 20:24:20 +05:30
Prateek Sunal
4a03388cf1 fix: update binary name 2024-09-18 19:50:59 +05:30
690 changed files with 29351 additions and 21045 deletions

View File

@@ -90,13 +90,14 @@ jobs:
- name: Install dependencies for desktop build
run: |
sudo apt-get update -y
sudo apt-get install -y libsecret-1-dev libsodium-dev libwebkit2gtk-4.0-dev libfuse2 ninja-build libgtk-3-dev dpkg-dev pkg-config libsqlite3-dev locate appindicator3-0.1 libappindicator3-dev libffi-dev libtiff5
sudo apt-get install -y libsecret-1-dev libsodium-dev libfuse2 ninja-build libgtk-3-dev dpkg-dev pkg-config libsqlite3-dev locate appindicator3-0.1 libappindicator3-dev libffi-dev libtiff5
sudo updatedb --localpaths='/usr/lib/x86_64-linux-gnu'
- name: Build desktop app
run: |
flutter config --enable-linux-desktop
dart pub global activate flutter_distributor
# dart pub global activate flutter_distributor
dart pub global activate --source git https://github.com/prateekmedia/flutter_distributor --git-ref develop --git-path packages/flutter_distributor
flutter_distributor package --platform=linux --targets=deb --skip-clean
mv dist/**/*-*-linux.deb artifacts/ente-${{ github.ref_name }}-x86_64.deb
env:
@@ -104,7 +105,7 @@ jobs:
- name: Generate checksums and push to artifacts
run: |
sha256sum artifacts/ente-* > artifacts/sha256sum-apk-deb
sha256sum artifacts/ente-* > artifacts/sha256sum-apk-deb
- name: Create a draft GitHub release
uses: ncipollo/release-action@v1
@@ -125,65 +126,65 @@ jobs:
track: internal
build-fedora-etc:
runs-on: ubuntu-latest
runs-on: ubuntu-latest
defaults:
run:
working-directory: auth
defaults:
run:
working-directory: auth
steps:
- name: Checkout code and submodules
uses: actions/checkout@v4
with:
submodules: recursive
steps:
- name: Checkout code and submodules
uses: actions/checkout@v4
with:
submodules: recursive
- name: Install Flutter ${{ env.FLUTTER_VERSION }}
uses: subosito/flutter-action@v2
with:
channel: "stable"
flutter-version: ${{ env.FLUTTER_VERSION }}
cache: true
- name: Install Flutter ${{ env.FLUTTER_VERSION }}
uses: subosito/flutter-action@v2
with:
channel: "stable"
flutter-version: ${{ env.FLUTTER_VERSION }}
cache: true
- name: Create artifacts directory
run: mkdir artifacts
- name: Create artifacts directory
run: mkdir artifacts
- name: Install dependencies for desktop build
run: |
sudo apt-get update -y
sudo apt-get install -y libsecret-1-dev libsodium-dev libwebkit2gtk-4.0-dev libfuse2 ninja-build libgtk-3-dev dpkg-dev pkg-config rpm patchelf libsqlite3-dev locate libayatana-appindicator3-dev libffi-dev libtiff5 xz-utils libarchive-tools
sudo updatedb --localpaths='/usr/lib/x86_64-linux-gnu'
- name: Install dependencies for desktop build
run: |
sudo apt-get update -y
sudo apt-get install -y libsecret-1-dev libsodium-dev libfuse2 ninja-build libgtk-3-dev dpkg-dev pkg-config rpm patchelf libsqlite3-dev locate libayatana-appindicator3-dev libffi-dev libtiff5 xz-utils libarchive-tools
sudo updatedb --localpaths='/usr/lib/x86_64-linux-gnu'
- name: Install appimagetool
run: |
wget -O appimagetool "https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage"
chmod +x appimagetool
mv appimagetool /usr/local/bin/
- name: Install appimagetool
run: |
wget -O appimagetool "https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage"
chmod +x appimagetool
mv appimagetool /usr/local/bin/
- name: Build desktop app
run: |
flutter config --enable-linux-desktop
# dart pub global activate flutter_distributor
dart pub global activate --source git https://github.com/prateekmedia/flutter_distributor --git-ref pacman --git-path packages/flutter_distributor
# Run below command if it is a beta or nightly
if [[ ${{ github.ref }} =~ beta|nightly ]]; then
flutter_distributor package --platform=linux --targets=pacman --skip-clean
mv dist/**/*-*-linux.pacman artifacts/ente-${{ github.ref_name }}-x86_64.pacman
fi
flutter_distributor package --platform=linux --targets=rpm --skip-clean
mv dist/**/*-*-linux.rpm artifacts/ente-${{ github.ref_name }}-x86_64.rpm
flutter_distributor package --platform=linux --targets=appimage --skip-clean
mv dist/**/*-*-linux.AppImage artifacts/ente-${{ github.ref_name }}-x86_64.AppImage
- name: Build desktop app
run: |
flutter config --enable-linux-desktop
# dart pub global activate flutter_distributor
dart pub global activate --source git https://github.com/prateekmedia/flutter_distributor --git-ref develop --git-path packages/flutter_distributor
# Run below command if it is a beta or nightly
if [[ ${{ github.ref }} =~ beta|nightly ]]; then
flutter_distributor package --platform=linux --targets=pacman --skip-clean
mv dist/**/*-*-linux.pacman artifacts/ente-${{ github.ref_name }}-x86_64.pacman
fi
flutter_distributor package --platform=linux --targets=rpm --skip-clean
mv dist/**/*-*-linux.rpm artifacts/ente-${{ github.ref_name }}-x86_64.rpm
flutter_distributor package --platform=linux --targets=appimage --skip-clean
mv dist/**/*-*-linux.AppImage artifacts/ente-${{ github.ref_name }}-x86_64.AppImage
- name: Generate checksums
run: sha256sum artifacts/ente-* >> artifacts/sha256sum-rpm-appimage
- name: Generate checksums
run: sha256sum artifacts/ente-* >> artifacts/sha256sum-rpm-appimage
- name: Create a draft GitHub release
uses: ncipollo/release-action@v1
with:
artifacts: "auth/artifacts/*"
draft: true
allowUpdates: true
updateOnlyUnreleased: true
- name: Create a draft GitHub release
uses: ncipollo/release-action@v1
with:
artifacts: "auth/artifacts/*"
draft: true
allowUpdates: true
updateOnlyUnreleased: true
build-windows:
runs-on: windows-latest
@@ -211,10 +212,11 @@ jobs:
- name: Build Windows installer
run: |
flutter config --enable-windows-desktop
dart pub global activate flutter_distributor
# dart pub global activate flutter_distributor
dart pub global activate --source git https://github.com/prateekmedia/flutter_distributor --git-ref develop --git-path packages/flutter_distributor
make innoinstall
flutter_distributor package --platform=windows --targets=exe --skip-clean
mv dist/**/ente_auth-*-windows-setup.exe artifacts/ente-${{ github.ref_name }}-installer.exe
mv dist/**/*-windows-setup.exe artifacts/ente-${{ github.ref_name }}-installer.exe
- name: Retain Windows EXE and DLLs
run: cp -r build/windows/x64/runner/Release ente-${{ github.ref_name }}-windows
@@ -307,7 +309,7 @@ jobs:
flutter config --enable-macos-desktop
dart pub global activate flutter_distributor
flutter_distributor package --platform=macos --targets=dmg --skip-clean
mv dist/**/ente_auth-*-macos.dmg artifacts/ente-${{ github.ref_name }}.dmg
mv dist/**/*-macos.dmg artifacts/ente-${{ github.ref_name }}.dmg
- name: Code sign DMG
run: |

View File

@@ -36,6 +36,13 @@
{
"title": "AscendEX"
},
{
"title": "authentik",
"altNames": [
"goauthentik"
],
"hex": "fd4b2d"
},
{
"title": "BaiduCloud",
"altNames": [
@@ -73,6 +80,10 @@
"币安"
]
},
{
"title": "Binance TR",
"slug": "binance_tr"
},
{
"title": "BinanceUS",
"slug": "binance_us",
@@ -127,6 +138,22 @@
"blockchain.com Exchange"
]
},
{
"title": "Bloom Host",
"slug": "bloom_host",
"altNames": [
"Bloom Host Billing"
]
},
{
"title": "Bluesky"
},
{
"title": "Booking",
"altNames": [
"Booking.com"
]
},
{
"title": "BorgBase",
"altNames": [
@@ -157,6 +184,12 @@
{
"title": "Capacities"
},
{
"title": "Carta",
"altNames": [
"Carta.com"
]
},
{
"title": "CERN"
},
@@ -171,6 +204,9 @@
{
"title": "CloudAMQP"
},
{
"title": "ClouDNS"
},
{
"title": "Cloudflare"
},
@@ -198,6 +234,9 @@
"Crypto com"
]
},
{
"title": "CSFloat"
},
{
"title": "DCS",
"altNames": [
@@ -210,6 +249,13 @@
{
"title": "deriv"
},
{
"title": "DigiFinex",
"altNames": [
"Digi Finex",
"Digifinex.com"
]
},
{
"title": "DirectAdmin"
},
@@ -331,6 +377,10 @@
{
"title": "Infomaniak"
},
{
"title": "Impact.com",
"slug": "impact"
},
{
"title": "ING"
},
@@ -371,6 +421,20 @@
{
"title": "Kite"
},
{
"title": "KnownHost",
"altNames": [
"Known Host",
"KnownHost.com"
]
},
{
"title": "Ko-fi",
"altNames": [
"Ko fi",
"Kofi"
]
},
{
"title": "Koofr"
},
@@ -447,6 +511,10 @@
{
"title": "Microsoft"
},
{
"title": "Microsoft 365",
"slug": "microsoft365"
},
{
"title": "Migros"
},
@@ -568,6 +636,12 @@
{
"title": "pCloud"
},
{
"title": "PebbleHost",
"altNames": [
"Pebble Host"
]
},
{
"title": "Peerberry"
},
@@ -608,6 +682,13 @@
"qiniu"
]
},
{
"title": "Raindrop.io",
"slug": "raindrop_io",
"altNames": [
"Raindrop"
]
},
{
"title": "Real-Debrid",
"slug": "real_debrid"
@@ -625,7 +706,13 @@
]
},
{
"title": "Render"
"title": "Restorecord"
},
{
"title": "Restream",
"altNames": [
"restream.io"
]
},
{
"title": "Revolt",
@@ -735,6 +822,21 @@
"GoTeleport"
]
},
{
"title": "tencent cloud",
"slug": "tencent_cloud",
"altNames": [
"腾讯云",
"tencentcloud"
]
},
{
"title": "Terabit",
"altNames": [
"Terabit Hosting",
"terabit.io"
]
},
{
"title": "Termius",
"hex": "858585"
@@ -763,6 +865,15 @@
{
"title": "Tresorit"
},
{
"title": "TRowePrice",
"altNames": [
"T Rowe Price",
"TRowe Price",
"T Rowe Price Group",
"T Rowe Price Group, Inc"
]
},
{
"title": "Tweakers"
},
@@ -777,6 +888,15 @@
"Twitch tv"
]
},
{
"title": "Ubiquiti",
"slug": "ubiquiti",
"altNames": [
"Unifi SSO",
"Unifi",
"Ubiquiti SSO"
]
},
{
"title": "Ubisoft"
},
@@ -812,6 +932,10 @@
{
"title": "Wealthsimple"
},
{
"title": "WEB.DE",
"slug": "web_de"
},
{
"title": "WHMCS"
},

View File

@@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" version="1.0" viewBox="0 0 500 500">
<path fill="#0085ff" d="M27.672 29.228C13.737 33.12 7.077 40.088 2.364 55.97c-2.562 8.71-2.46 35.862.102 66.089a378.9 378.9 0 0 1 1.025 11.783c.41 4.509.922 9.837 1.127 11.784.205 1.947.615 7.275 1.024 11.783.615 8.607 2.357 24.899 3.074 29.202.205 1.435.615 5.328 1.025 8.71.615 5.43 1.332 10.041 2.971 17.521 1.128 5.533 6.456 17.01 11.374 24.591 11.066 17.112 28.792 30.945 48.158 37.81 2.869.922 6.045 2.151 7.172 2.664 3.074 1.332 18.546 4.713 25.616 5.635 3.382.41 11.579.82 18.137.82 6.557.102 11.68.41 11.27.717-.614.41-6.66 1.742-20.185 4.406-1.127.205-4.816 1.127-8.197 2.152-3.381.922-7.48 2.05-9.222 2.459-5.123 1.435-18.443 6.968-25.103 10.554-9.325 5.02-17.727 12.193-22.44 19.263-5.123 7.685-6.25 11.476-6.967 22.235-1.23 18.443 9.529 42.112 31.763 69.778 22.747 28.382 45.29 46.109 67.934 53.69 9.017 2.972 23.874 3.177 31.661.41 18.444-6.557 34.12-23.464 48.466-52.358 7.89-15.882 19.366-46.519 25.308-68.036 1.947-6.866 2.972-7.788 3.997-3.484.922 3.996 2.766 10.246 9.324 32.48 15.164 50.618 31.251 77.259 52.871 87.095 7.583 3.484 11.169 4.099 22.44 3.996 11.066-.102 20.698-2.766 33.3-9.324 9.427-4.918 27.358-16.497 30.227-19.673.308-.307 2.562-2.152 5.124-4.201 5.328-4.303 15.472-14.652 21.005-21.415 2.05-2.562 4.508-5.533 5.43-6.66 2.87-3.381 12.501-18.341 12.501-19.366 0-.512.615-1.742 1.434-2.561.82-.923 2.87-5.84 4.714-10.862 11.066-31.661-1.332-57.175-36.375-74.49-13.32-6.661-29.92-12.092-44.572-14.756-7.48-1.434-5.533-1.947 6.968-2.049 26.026-.102 47.953-5.43 67.626-16.394 24.694-13.833 43.137-40.576 45.801-66.5.41-3.893.82-7.377 1.025-7.684.205-.513.512-2.87 2.05-17.214.307-2.357.717-6.25 1.024-8.71a816.84 816.84 0 0 1 1.127-11.476c.308-3.996.717-8.811.922-10.758.205-1.947.718-7.788 1.025-12.808.41-5.123.82-10.861 1.025-12.808 2.049-20.903 2.664-49.183 1.332-57.175-2.664-15.677-8.198-25.309-17.214-29.92-20.8-10.656-46.314-4.098-83.713 21.415-13.423 9.222-16.6 11.681-25.411 19.059-32.686 27.665-69.983 70.187-99.083 113.222-9.324 13.73-22.337 35.248-22.337 36.887 0 2.357-1.845.718-3.996-3.688-2.767-5.943-13.833-23.67-21.518-34.736-6.558-9.529-21.62-30.227-23.157-31.866a242.786 242.786 0 0 1-3.586-4.508 242.855 242.855 0 0 0-3.586-4.509c-.615-.615-3.996-4.713-7.583-9.222-12.705-15.574-37.911-42.01-52.359-54.92-1.946-1.742-4.508-3.996-5.635-5.021C107.287 55.151 69.99 33.224 51.546 29.33c-5.84-1.332-19.365-1.332-23.874-.102z"/>
</svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="323" height="260">
<path d="M0 0 C2.54280617 -0.00322238 5.08561216 -0.00658715 7.62841797 -0.01008606 C12.94027204 -0.01604441 18.25210908 -0.0179728 23.56396484 -0.01733398 C29.63504045 -0.01673551 35.70602655 -0.02725539 41.77707958 -0.04307765 C47.69411481 -0.05792837 53.6111158 -0.06131667 59.52816772 -0.06072426 C62.00914881 -0.06188842 64.49013087 -0.06621985 66.97109985 -0.07405663 C93.68181546 -0.15052263 121.9429312 -0.21514162 146.6875 11.16796875 C147.5839624 11.57740723 147.5839624 11.57740723 148.49853516 11.99511719 C158.43485513 16.62677806 166.04173988 22.35671599 173.6875 30.16796875 C174.48800781 30.93625 175.28851563 31.70453125 176.11328125 32.49609375 C194.05105697 50.712695 197.15590312 74.65080731 196.98471069 99.03547668 C196.67643329 123.04695525 187.3698842 142.87862635 171.0625 160.29296875 C161.16511894 169.80791623 147.49135596 179.29180348 133.63232422 181.49462891 C131.56482236 182.00483226 131.56482236 182.00483226 130.45825195 183.83520508 C130.11753662 184.5495874 129.77682129 185.26396973 129.42578125 186 C129.03382568 186.792854 128.64187012 187.58570801 128.23803711 188.40258789 C127.82948486 189.25328857 127.42093262 190.10398926 127 190.98046875 C122.90931947 199.10803497 118.55825733 206.17501356 112.6875 213.16796875 C111.61048828 214.45380859 111.61048828 214.45380859 110.51171875 215.765625 C88.48096692 241.08338065 59.91845952 254.78769402 26.6875 258.16796875 C20.98341629 258.51073898 15.27482269 258.51009072 9.5625 258.48046875 C8.79403748 258.47798126 8.02557495 258.47549377 7.23382568 258.47293091 C-28.39281197 258.29492256 -60.17611795 248.13707604 -86 222.91796875 C-117.72300344 190.81731051 -124.68949851 146.11311077 -124.68310547 102.8034668 C-124.6875095 99.47328641 -124.72408667 96.14440378 -124.76171875 92.81445312 C-124.89908822 66.59572752 -118.49428944 43.79369285 -100.3125 24.16796875 C-72.94000538 -1.4516075 -35.04854413 0.01053577 0 0 Z " fill="#FDFDFD" transform="translate(125.3125,0.83203125)"/>
<path d="M0 0 C2.54280617 -0.00322238 5.08561216 -0.00658715 7.62841797 -0.01008606 C12.94027204 -0.01604441 18.25210908 -0.0179728 23.56396484 -0.01733398 C29.63504045 -0.01673551 35.70602655 -0.02725539 41.77707958 -0.04307765 C47.69411481 -0.05792837 53.6111158 -0.06131667 59.52816772 -0.06072426 C62.00914881 -0.06188842 64.49013087 -0.06621985 66.97109985 -0.07405663 C93.68181546 -0.15052263 121.9429312 -0.21514162 146.6875 11.16796875 C147.5839624 11.57740723 147.5839624 11.57740723 148.49853516 11.99511719 C158.43485513 16.62677806 166.04173988 22.35671599 173.6875 30.16796875 C174.48800781 30.93625 175.28851563 31.70453125 176.11328125 32.49609375 C194.05105697 50.712695 197.15590312 74.65080731 196.98471069 99.03547668 C196.67643329 123.04695525 187.3698842 142.87862635 171.0625 160.29296875 C161.16511894 169.80791623 147.49135596 179.29180348 133.63232422 181.49462891 C131.56482236 182.00483226 131.56482236 182.00483226 130.45825195 183.83520508 C130.11753662 184.5495874 129.77682129 185.26396973 129.42578125 186 C129.03382568 186.792854 128.64187012 187.58570801 128.23803711 188.40258789 C127.82948486 189.25328857 127.42093262 190.10398926 127 190.98046875 C122.90931947 199.10803497 118.55825733 206.17501356 112.6875 213.16796875 C111.61048828 214.45380859 111.61048828 214.45380859 110.51171875 215.765625 C88.48096692 241.08338065 59.91845952 254.78769402 26.6875 258.16796875 C20.98341629 258.51073898 15.27482269 258.51009072 9.5625 258.48046875 C8.79403748 258.47798126 8.02557495 258.47549377 7.23382568 258.47293091 C-28.39281197 258.29492256 -60.17611795 248.13707604 -86 222.91796875 C-117.72300344 190.81731051 -124.68949851 146.11311077 -124.68310547 102.8034668 C-124.6875095 99.47328641 -124.72408667 96.14440378 -124.76171875 92.81445312 C-124.89908822 66.59572752 -118.49428944 43.79369285 -100.3125 24.16796875 C-72.94000538 -1.4516075 -35.04854413 0.01053577 0 0 Z M-36.9140625 21.43359375 C-38.11208055 21.51490665 -38.11208055 21.51490665 -39.33430099 21.59786224 C-59.87532769 23.03702093 -75.91541819 29.0329654 -90.28125 44.25390625 C-109.07937063 66.43239067 -105.57544337 100.41897449 -103.5625 127.48046875 C-100.67806578 160.87568918 -89.45526266 193.36884095 -63.40625 215.703125 C-46.11461633 229.47966647 -24.75667842 237.18292476 -2.703125 237.40625 C-1.90239563 237.41604385 -1.10166626 237.42583771 -0.27667236 237.43592834 C31.40210244 237.74407943 58.5682937 234.42601899 83.6875 213.16796875 C84.57501953 212.49894531 84.57501953 212.49894531 85.48046875 211.81640625 C99.92688668 200.62986885 109.44195114 181.91739525 115.6875 165.16796875 C115.6875 164.50796875 115.6875 163.84796875 115.6875 163.16796875 C116.63625 163.22984375 117.585 163.29171875 118.5625 163.35546875 C132.95828384 163.24053235 147.65575489 153.81755214 157.6875 144.16796875 C172.69867383 128.52027871 177.1423516 109.69666423 176.90234375 88.73828125 C176.40533008 70.41977737 169.3070055 54.18127534 156.0625 41.48046875 C128.30854933 17.93166212 89.40490962 20.03712213 55.1015625 19.96484375 C54.1655357 19.96201637 53.2295089 19.959189 52.26511765 19.95627594 C47.29881276 19.9414396 42.3325357 19.93211582 37.36621094 19.92773438 C33.3625359 19.92338159 29.35908023 19.90959136 25.35546875 19.88671875 C4.55642016 19.77063981 -16.16158136 19.92055353 -36.9140625 21.43359375 Z " fill="#FDFDFD" transform="translate(125.3125,0.83203125)"/>
<path d="M0 0 C4.0210469 0.01922649 8.04204837 0.0231668 12.06313515 0.02671432 C16.96746392 0.03191701 21.87175453 0.0463432 26.77606201 0.06115723 C27.66865345 0.06303795 28.56124489 0.06491867 29.48088455 0.06685638 C104.8138903 0.27266545 104.8138903 0.27266545 131.51824951 25.28381348 C146.00743215 40.30240856 148.80733183 59.88073551 148.57684326 79.86193848 C148.40676974 86.00676871 147.47862433 91.48394134 145.36199951 97.26428223 C145.01008545 98.26459473 144.65817139 99.26490723 144.29559326 100.29553223 C141.58482813 107.38109653 138.02089666 113.29886827 133.36199951 119.26428223 C132.85153076 119.95135254 132.34106201 120.63842285 131.81512451 121.34631348 C122.87990418 132.55957266 108.37551958 140.69513688 94.36199951 143.26428223 C91.99868361 143.39507643 89.73161448 143.36301618 87.36199951 143.26428223 C87.19909424 143.87666748 87.03618896 144.48905273 86.86834717 145.11999512 C85.11048486 151.38021067 82.80074198 156.97474004 79.73699951 162.70178223 C79.29968506 163.52581543 78.86237061 164.34984863 78.4118042 165.19885254 C74.73551439 171.93915894 70.52328772 177.5676745 65.36199951 183.26428223 C64.89922607 183.86756348 64.43645264 184.47084473 63.95965576 185.09240723 C49.47077198 203.94116789 24.33449634 213.53715386 1.64834595 216.98568726 C-4.74743651 217.76502358 -11.1953617 217.70435182 -17.62872314 217.65539551 C-20.13627476 217.63929331 -22.64221551 217.65535698 -25.14971924 217.67443848 C-49.65501476 217.70824096 -72.66730829 211.29352564 -91.63800049 195.26428223 C-92.8406958 194.28008301 -92.8406958 194.28008301 -94.06768799 193.27600098 C-119.10785027 171.94115866 -129.00627857 139.52551634 -131.82550049 107.76428223 C-136.63221747 45.60381817 -136.63221747 45.60381817 -118.39581299 24.20959473 C-117.81573486 23.5676416 -117.23565674 22.92568848 -116.63800049 22.26428223 C-116.14042236 21.6635791 -115.64284424 21.06287598 -115.13018799 20.44396973 C-102.43285769 6.21530312 -83.29710537 2.75552416 -65.23956299 1.52990723 C-63.99376402 1.43907742 -63.99376402 1.43907742 -62.72279739 1.34641266 C-41.83021959 -0.1566744 -20.93488238 -0.11960086 0 0 Z M-60.07330322 24.16931152 C-61.09852868 24.2489832 -62.12375414 24.32865488 -63.18004704 24.41074085 C-77.00845239 25.59515547 -91.10367573 27.98067259 -101.01300049 38.57678223 C-110.24587232 50.49605462 -110.04439324 65.31049838 -110.01300049 79.70178223 C-110.01345367 80.50920868 -110.01390686 81.31663513 -110.01437378 82.14852905 C-109.97746532 104.67128976 -107.8656026 128.00449845 -98.88800049 148.88928223 C-98.53802002 149.70832031 -98.18803955 150.5273584 -97.82745361 151.37121582 C-95.09768008 157.57737817 -91.97126085 163.02383596 -87.63800049 168.26428223 C-86.78528564 169.39156738 -86.78528564 169.39156738 -85.91534424 170.54162598 C-74.84904372 184.28639414 -56.78325281 191.95760765 -39.63800049 194.26428223 C-34.06896395 194.72523809 -28.49279335 194.73905875 -22.90802002 194.71032715 C-20.4044088 194.70183786 -17.90310592 194.73066241 -15.39971924 194.7623291 C-1.4111781 194.82463695 13.39607291 193.41506302 25.86199951 186.51428223 C26.51233154 186.1706665 27.16266357 185.82705078 27.83270264 185.47302246 C45.76119889 175.70092377 59.14034743 158.33058735 65.10614014 138.83215332 C66.65815977 133.34173031 68.03768132 127.81352704 69.36199951 122.26428223 C70.5105542 122.23850098 71.65910889 122.21271973 72.84246826 122.18615723 C89.25221041 121.65612451 103.08201623 118.5830522 114.73309326 106.22912598 C124.98158848 93.86703222 126.57244625 79.77313106 125.36199951 64.26428223 C124.25712996 56.0053823 121.59738055 49.7270971 116.36199951 43.26428223 C115.90567139 42.66100098 115.44934326 42.05771973 114.97918701 41.43615723 C106.00717163 31.00795087 91.41642311 27.13140428 78.36199951 25.26428223 C77.02038002 25.01923698 77.02038002 25.01923698 75.6516571 24.76924133 C71.91333955 24.19541338 68.19525137 23.91442452 64.42279053 23.71228027 C63.64398057 23.67024066 62.86517061 23.62820105 62.06276035 23.5848875 C51.84299806 23.08287388 41.61903966 23.0999366 31.38934326 23.09631348 C29.21051513 23.0930874 27.03168721 23.0897224 24.8528595 23.08622742 C20.31040954 23.08028359 15.76797847 23.07838256 11.2255249 23.07897949 C5.47995176 23.07908079 -0.26549691 23.06544066 -6.01104069 23.04820728 C-10.50622586 23.03694452 -15.0013823 23.03506461 -19.49658012 23.03558922 C-21.61110296 23.03442998 -23.72562707 23.03012825 -25.84013557 23.02225685 C-37.29303826 22.98361158 -48.6517746 23.27581235 -60.07330322 24.16931152 Z " fill="#222222" transform="translate(153.63800048828125,20.7357177734375)"/>
<path d="M0 0 C1.35857222 0.7254263 2.69428007 1.49576426 4 2.3125 C4.65742187 2.72113281 5.31484375 3.12976563 5.9921875 3.55078125 C9.28920162 5.76019113 11.85613423 7.90753671 14 11.3125 C17.37685097 9.8446346 19.61214759 7.92270997 22.25 5.375 C29.90031292 -1.44591006 36.06662986 -2.28755463 46.31640625 -2.0234375 C56.45286385 -1.09900977 63.25727312 3.87224965 70 11.3125 C76.91029016 20.67851311 79.1616053 29.74587701 78 41.3125 C73.24255207 64.40690745 57.47949388 81.29735894 38.30078125 94.15625 C37.21152344 94.8678125 36.12226563 95.579375 35 96.3125 C33.96230469 97.0034375 32.92460937 97.694375 31.85546875 98.40625 C19.0058113 106.80067146 19.0058113 106.80067146 11 105.3125 C-10.98227742 96.73759509 -33.45456844 76.30764159 -43.4765625 55.203125 C-48.11963646 43.94561607 -49.3422345 31.41401025 -45.0625 19.8125 C-40.18731436 9.93887965 -33.243791 3.28797846 -23 -0.6875 C-16.13548782 -2.97567073 -6.68983172 -2.87037762 0 0 Z " fill="#FF5A17" transform="translate(121,74.6875)"/>
<path d="M0 0 C7.62988387 1.99349999 11.91910105 6.29924697 16.13671875 12.734375 C18.40839779 18.69624759 17.88963136 27.56784264 16.3125 33.65234375 C13.64789323 39.43676095 9.24615056 42.74733911 3.75 45.8125 C-0.81653159 47.25856834 -5.26111678 48.00810414 -10 47 C-12.38845831 45.34390665 -13.79844446 44.03102932 -14.36903381 41.11225891 C-14.51386976 38.7208417 -14.52794694 36.36048646 -14.49609375 33.96484375 C-14.49754898 33.08977676 -14.49900421 32.21470978 -14.50050354 31.31312561 C-14.49884598 29.46644759 -14.48730062 27.61975556 -14.46655273 25.77319336 C-14.43756561 22.94390362 -14.44595258 20.11648411 -14.45898438 17.28710938 C-14.45274777 15.49217838 -14.44435744 13.69725331 -14.43359375 11.90234375 C-14.43652939 11.05542465 -14.43946503 10.20850555 -14.44248962 9.33592224 C-14.34745355 3.43414071 -14.34745355 3.43414071 -12.62367249 1.2802887 C-9.12922644 -1.47513139 -4.18738864 -0.49329344 0 0 Z " fill="#212121" transform="translate(237,71)"/>
</svg>

After

Width:  |  Height:  |  Size: 12 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 14 KiB

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="904" height="904">
<path d="M0 0 C1.11288391 0.00060425 2.22576782 0.0012085 3.37237549 0.00183105 C19.19099691 0.02517285 34.84917119 0.19185902 50.5625 2.1875 C52.2007373 2.38883545 52.2007373 2.38883545 53.87207031 2.59423828 C144.11102555 13.92744782 231.51339069 51.17412862 298.98046875 112.8515625 C300.37469497 114.11290483 301.77481127 115.36842668 303.20581055 116.58789062 C309.19714778 121.71020777 314.78307669 127.22194476 320.3527832 132.79248047 C321.98825882 134.42577448 323.63157708 136.0508847 325.27539062 137.67578125 C331.09001224 143.45977566 336.53034336 149.35895875 341.6472168 155.78417969 C343.24543187 157.78963912 344.87613176 159.73578404 346.57421875 161.65625 C405.79203624 228.64193707 442.65605654 320.29719472 449.5625 409.1875 C449.64862549 410.24493408 449.73475098 411.30236816 449.82348633 412.3918457 C450.72419906 424.79729885 450.76142247 437.19135266 450.75 449.625 C450.74959213 451.29133484 450.74959213 451.29133484 450.74917603 452.99133301 C450.73133919 468.81731301 450.48400796 484.46060387 448.5625 500.1875 C448.46598145 501.05342773 448.36946289 501.91935547 448.27001953 502.81152344 C438.14431989 593.02834817 399.26877576 681.47431329 337.8984375 748.60546875 C336.63709517 749.99969497 335.38157332 751.39981127 334.16210938 752.83081055 C329.03979223 758.82214778 323.52805524 764.40807669 317.95751953 769.9777832 C316.32422552 771.61325882 314.6991153 773.25657708 313.07421875 774.90039062 C307.29022434 780.71501224 301.39104125 786.15534336 294.96582031 791.2722168 C292.96036088 792.87043187 291.01421596 794.50113176 289.09375 796.19921875 C222.23274492 855.30681276 130.17937532 892.30230102 41.5625 899.1875 C40.50506592 899.27362549 39.44763184 899.35975098 38.3581543 899.44848633 C25.95279899 900.34919196 13.55857494 900.38745456 1.125 900.375 C0.01211609 900.37439575 -1.10076782 900.3737915 -2.24737549 900.37316895 C-18.06823152 900.34982385 -33.7211673 900.17158591 -49.4375 898.1875 C-50.50838867 898.05859375 -51.57927734 897.9296875 -52.68261719 897.796875 C-144.47214559 886.52218741 -229.08903921 848.15294951 -298.4375 787.1875 C-299.34113281 786.39730469 -300.24476563 785.60710938 -301.17578125 784.79296875 C-307.85140813 778.81292094 -314.22766301 772.52473887 -320.58743286 766.21279907 C-321.59508155 765.21319029 -322.60420601 764.21506645 -323.61495972 763.21859741 C-329.60908412 757.30024829 -335.24089687 751.22111789 -340.48193359 744.61669922 C-342.37137958 742.2696346 -344.34074007 740.0343426 -346.375 737.8125 C-391.43715685 687.50642352 -420.73249017 621.85371633 -437.4375 557.1875 C-437.83966718 555.68354652 -438.24198334 554.17963287 -438.64453125 552.67578125 C-443.69584874 532.77238285 -446.83696415 511.65075455 -448.4375 491.1875 C-448.56668823 489.60352417 -448.56668823 489.60352417 -448.69848633 487.98754883 C-449.59918104 475.58073986 -449.63745601 463.18502073 -449.625 450.75 C-449.62439575 449.63711609 -449.6237915 448.52423218 -449.62316895 447.37762451 C-449.59982385 431.55676848 -449.42158591 415.9038327 -447.4375 400.1875 C-447.30859375 399.11661133 -447.1796875 398.04572266 -447.046875 396.94238281 C-440.4868699 343.53604502 -425.54073226 289.91173527 -399.33984375 242.64453125 C-397.63812667 239.55208851 -396.08334006 236.43385498 -394.5625 233.25 C-381.20876689 206.4333752 -362.4962862 181.56702106 -342.94384766 158.98095703 C-341.8152422 157.63723974 -340.71528861 156.26936853 -339.63037109 154.89013672 C-333.44070728 147.07610164 -326.61041352 140.05423723 -319.54541016 133.03466797 C-317.56568576 131.0656685 -315.59689246 129.08619273 -313.62890625 127.10546875 C-307.25451675 120.7248322 -300.85627204 114.61259775 -293.75146484 109.04223633 C-291.36709203 107.13106516 -289.15330692 105.1029816 -286.9375 103 C-279.31894602 96.05295318 -270.796479 90.19951996 -262.4375 84.1875 C-261.02597656 83.16462891 -261.02597656 83.16462891 -259.5859375 82.12109375 C-229.85439671 60.92076827 -197.38904037 43.55411722 -163.4375 30.1875 C-162.52548828 29.8260791 -161.61347656 29.4646582 -160.67382812 29.09228516 C-122.51432036 14.14110403 -81.30867967 4.38424409 -40.4375 1.1875 C-38.85352417 1.05831177 -38.85352417 1.05831177 -37.23754883 0.92651367 C-24.83073986 0.02581896 -12.43502073 -0.01245601 0 0 Z " fill="#000000" transform="translate(451.4375,1.8125)"/>
<path d="M0 0 C233.85843373 0 233.85843373 0 270 13 C271.20011719 13.42796875 272.40023438 13.8559375 273.63671875 14.296875 C289.44811188 20.27865604 304.081328 28.05350622 317 39 C318.22589844 39.99966797 318.22589844 39.99966797 319.4765625 41.01953125 C344.81574688 62.39674693 356.76928326 95.10294351 359.80371094 127.25927734 C361.0036314 144.01339073 360.22261787 160.53401268 357 177 C356.69255859 178.75957031 356.69255859 178.75957031 356.37890625 180.5546875 C350.99149974 207.92672804 332.75342874 232.71081084 309.8984375 248.17578125 C286.34475375 263 286.34475375 263 279 263 C286.9944143 277.39508684 295.1117491 291.70380211 303.4375 305.91015625 C309.04206461 315.47534172 314.56226164 325.08936946 320.09570312 334.69580078 C322.01506662 338.02614252 323.93682353 341.35509148 325.859375 344.68359375 C331.61613159 354.65143316 337.36365676 364.6239207 343.0625 374.625 C347.84252943 383.01048241 352.69381747 391.3528543 357.56518555 399.68554688 C363.8788019 410.49052519 370.13330951 421.32933469 376.37451172 432.17626953 C377.82175919 434.69036749 379.27175921 437.2028511 380.72265625 439.71484375 C381.4611125 440.99729508 382.19941203 442.27983668 382.9375 443.5625 C383.54464844 444.61566406 384.15179687 445.66882813 384.77734375 446.75390625 C386 449 386 449 386 450 C368.40636948 450.30399394 350.81356086 450.53307186 333.21790314 450.67355824 C325.04736936 450.74053018 316.87846926 450.83178743 308.70898438 450.98071289 C301.58637502 451.1104922 294.46494869 451.19420178 287.34118986 451.22315043 C283.57013155 451.24006961 279.80245662 451.27966279 276.03248596 451.37449074 C272.47889243 451.46314684 268.93005216 451.48988228 265.37545776 451.47039986 C263.45838506 451.47564986 261.54182457 451.54542453 259.62609863 451.61746216 C255.98576831 451.56115318 253.37717104 451.37603377 250 450 C246.45988364 446.00478726 244.28662185 441.83198107 242 437 C241.1754463 435.52668234 240.34184823 434.05826327 239.48828125 432.6015625 C238.76023327 431.2775707 238.03500825 429.95202298 237.3125 428.625 C236.45780129 427.07249249 235.602292 425.52043103 234.74609375 423.96875 C234.07876221 422.75832031 234.07876221 422.75832031 233.39794922 421.5234375 C230.91580094 417.04291277 228.39622559 412.58362075 225.875 408.125 C225.33456055 407.16916016 224.79412109 406.21332031 224.23730469 405.22851562 C219.53151113 396.91776268 214.78647131 388.62956921 210.04129028 380.34127808 C204.08768973 369.93861815 198.21662094 359.49109588 192.37109375 349.02734375 C184.34641457 334.66629451 176.22855735 320.35765384 168.04443359 306.08691406 C167.58633301 305.28737305 167.12823242 304.48783203 166.65625 303.6640625 C166.26244141 302.97779785 165.86863281 302.2915332 165.46289062 301.58447266 C163.2847522 297.73637964 161.14740447 293.86532805 159 290 C149.1 289.67 139.2 289.34 129 289 C129 342.13 129 395.26 129 450 C86.43 450 43.86 450 0 450 C0 301.5 0 153 0 0 Z " fill="#FEFEFE" transform="translate(283,227)"/>
<path d="M0 0 C77.16082803 0 77.16082803 0 93.5234375 14.3515625 C105.35605673 27.56152365 106.80173357 42.68365139 106.15673828 59.62207031 C105.26854826 73.09710268 100.03099568 85.35817152 90.2265625 94.6875 C65.74626402 114.51964054 28.01100936 108 0 108 C0 72.36 0 36.72 0 0 Z " fill="#000000" transform="translate(412,324)"/>
</svg>

After

Width:  |  Height:  |  Size: 7.5 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 13 KiB

View File

@@ -0,0 +1 @@
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 1000"><defs><style>.cls-1{fill:#fd4b2d;}</style></defs><rect class="cls-1" x="546.66" y="275.34" width="34.99" height="99.97"/><rect class="cls-1" x="637.66" y="271.13" width="34.99" height="78.19"/><path class="cls-1" d="M127.64,385.31a127.57,127.57,0,0,0-112.13,66.9H74.82c26.27-22.67,64.42-29.28,92,0h62.8C205.11,419.06,168.36,385.31,127.64,385.31Z"/><path class="cls-1" d="M212.39,512.53C130.55,683.65-12.89,537.81,74.82,452.21H15.51C-31,533.33,33.3,642.73,127.64,640.24c73,0,133.2-108.3,133.2-127.46,0-8.47-11.78-34.33-31.2-60.57h-62.8C187.65,471.08,205.81,498.56,212.39,512.53Zm2.17-5h0Z"/><path class="cls-1" d="M999.94,274.11V725.89c0,86.58-70.42,157.06-157.05,157.06H776.22V729.12H457.88V883H391.22c-86.64,0-157.06-70.48-157.06-157.06V583.81H738.87V312.11H495.24V464.76H234.16V274.11a151.29,151.29,0,0,1,1.06-18,154.4,154.4,0,0,1,3.88-21.15c.58-2.23,1.23-4.46,1.88-6.64a13.66,13.66,0,0,1,.52-1.64c.36-1.12.71-2.17,1.06-3.23s.76-2.17,1.18-3.23c.47-1.23.88-2.41,1.35-3.58s1-2.35,1.47-3.53a159,159,0,0,1,14.27-26.49c.06-.06.12-.17.17-.23,1.41-2.06,2.88-4.11,4.41-6.17,1.29-1.7,2.58-3.35,3.88-5,1.52-1.82,3.11-3.7,4.69-5.46s3.12-3.47,4.76-5.11l.18-.18a36.53,36.53,0,0,1,2.64-2.64,159.75,159.75,0,0,1,18.68-15.63c1.76-1.29,3.64-2.52,5.52-3.76,2.11-1.35,4.23-2.64,6.4-3.93,4.11-2.41,8.28-4.64,12.63-6.64,1.35-.64,2.76-1.29,4.11-1.88a152.81,152.81,0,0,1,18.38-6.63c2.41-.71,4.82-1.35,7.29-1.94,1.17-.3,2.35-.59,3.58-.82a158.5,158.5,0,0,1,21.26-3.12l3.12-.17c.52,0,1-.06,1.52-.06,2.35-.12,4.76-.18,7.17-.18H842.89c2.4,0,4.81.06,7.16.18.53,0,1,.06,1.53.06l3.11.17A158.26,158.26,0,0,1,876,120.58c1.24.23,2.41.52,3.59.82,2.46.59,4.87,1.23,7.28,1.94A152.81,152.81,0,0,1,905.2,130c1.35.59,2.76,1.24,4.11,1.88,4.35,2,8.52,4.23,12.63,6.64,2.18,1.29,4.29,2.58,6.4,3.93,1.88,1.24,3.76,2.47,5.52,3.76a157.53,157.53,0,0,1,21.5,18.45c1.65,1.64,3.23,3.34,4.76,5.11s3.17,3.64,4.7,5.46c1.29,1.64,2.58,3.29,3.87,5,1.53,2.06,3,4.11,4.41,6.17.06.06.12.17.18.23a159.71,159.71,0,0,1,14.27,26.49c.47,1.18,1,2.35,1.47,3.53s.88,2.35,1.35,3.58c.41,1.06.82,2.11,1.17,3.23s.71,2.11,1.06,3.23a15.74,15.74,0,0,1,.53,1.64c.64,2.18,1.29,4.41,1.88,6.64a155.92,155.92,0,0,1,3.87,21.15A151.29,151.29,0,0,1,999.94,274.11Z"/><path class="cls-1" d="M973.27,186.59H260.84A157.05,157.05,0,0,1,391.2,117.07H842.9A157.08,157.08,0,0,1,973.27,186.59Z"/><path class="cls-1" d="M998.94,256.1H235.16a155.35,155.35,0,0,1,25.68-69.51H973.27A155.34,155.34,0,0,1,998.94,256.1Z"/><path class="cls-1" d="M1000,274.11v51.51H738.87V312.11H495.24v13.51H234.1V274.11a153.41,153.41,0,0,1,1.06-18H998.94A151.29,151.29,0,0,1,1000,274.11Z"/><rect class="cls-1" x="234.1" y="325.62" width="261.13" height="69.54"/><rect class="cls-1" x="738.87" y="325.62" width="261.13" height="69.54"/><rect class="cls-1" x="234.1" y="395.16" width="261.13" height="69.48"/><rect class="cls-1" x="738.87" y="395.16" width="261.13" height="69.48"/></svg>

After

Width:  |  Height:  |  Size: 2.9 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 16 KiB

View File

@@ -0,0 +1 @@
<svg width="99" height="43" viewBox="0 0 99 43" fill="none" xmlns="http://www.w3.org/2000/svg"><g clip-path="url(#a)"><path d="M97.926 1.077H1.074v40.846h96.852V1.077Z" stroke="#000" stroke-width="3" stroke-miterlimit="10"></path><path d="M21.816 30.34a7.627 7.627 0 0 1-5.455-2.267 7.669 7.669 0 0 1-2.218-5.486c0-4.92 4.124-7.81 7.819-7.81 2.643 0 5.115.994 6.437 3.314l-2.472 1.444a4.648 4.648 0 0 0-3.916-2.09c-2.174 0-4.762 1.71-4.762 5.099 0 3.313 2.472 5.125 4.957 5.125a4.59 4.59 0 0 0 4.028-2.478l2.528 1.18c-1.424 2.587-3.978 3.969-6.946 3.969ZM37.9 27.537c2.819 0 4.758-2.12 4.758-4.97 0-2.85-1.94-4.97-4.758-4.97-2.819 0-4.825 2.094-4.825 4.923 0 2.867 1.943 5.017 4.825 5.017Zm-.298 2.803c-4.464 0-7.643-3.39-7.643-7.783 0-4.48 3.15-7.78 7.643-7.78 2.062 0 4.048.872 5 2.21v-1.825h3.053v14.764h-3.053v-1.83c-1.001 1.33-2.941 2.244-5 2.244ZM61.08 29.92V18.014h-2.35v-2.95h2.38v-4.363h3.146v4.364h3.261v2.949h-3.261v11.904H61.08ZM76.52 27.537c2.818 0 4.761-2.12 4.761-4.97 0-2.85-1.943-4.97-4.762-4.97-2.818 0-4.82 2.094-4.82 4.923 0 2.867 1.939 5.017 4.82 5.017Zm-.298 2.803c-4.468 0-7.64-3.39-7.64-7.783 0-4.48 3.146-7.78 7.64-7.78 2.062 0 4.048.872 5 2.21v-1.825h3.056v14.764h-3.056v-1.83c-1.001 1.33-2.941 2.244-5 2.244ZM48.8 29.902V15.138h2.909v2.565c.601-1.657 1.873-2.8 3.559-2.8.366-.007.731.034 1.087.12v2.855c-2.373-.275-4.379 1.389-4.379 5.189v6.835h-3.175Z" fill="#000"></path></g><defs><clipPath id="a"><path fill="#fff" d="M0 0h99v43H0z"></path></clipPath></defs></svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 242 KiB

View File

@@ -1,10 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 26.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.0" id="katman_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 800 600" style="enable-background:new 0 0 800 600;" xml:space="preserve">
<path d="M399.8,69.1L399.8,69.1c127.3,0,230.5,103.2,230.5,230.5l0,0c0,127.3-103.2,230.5-230.5,230.5l0,0
c-127.3,0-230.5-103.2-230.5-230.5l0,0C169.3,172.3,272.5,69.1,399.8,69.1z" style="fill:#0052FF;"/>
<path d="M399.9,380.6c-44.8,0-81-36.3-81-81s36.3-81,81-81c40.1,0,73.4,29.2,79.8,67.5h81.6
c-6.9-83.2-76.5-148.6-161.5-148.6c-89.5,0-162.1,72.6-162.1,162.1s72.6,162.1,162.1,162.1c85,0,154.6-65.4,161.5-148.6h-81.7
C473.2,351.4,440,380.6,399.9,380.6z" style="fill:#FFFFFF;"/>
</svg>
<?xml version="1.0" encoding="UTF-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="464" height="464">
<path d="M0 0 C0.8939447 -0.00067474 1.7878894 -0.00134949 2.70892334 -0.00204468 C16.2805355 0.01422313 29.41164925 0.55527652 42.75 3.25 C43.6260791 3.41628906 44.5021582 3.58257812 45.40478516 3.75390625 C87.03111375 11.76610281 124.10787271 31.41871187 155.75 59.25 C156.74257813 60.11882813 157.73515625 60.98765625 158.7578125 61.8828125 C164.18223795 66.71601991 169.10589996 71.67319368 173.75 77.25 C174.59304688 78.21679688 175.43609375 79.18359375 176.3046875 80.1796875 C216.05219286 125.88059445 235.22559137 186.33089501 231.54785156 246.56054688 C228.00767396 292.11528508 212.35636492 336.34978797 183.75 372.25 C183.06808594 373.12398438 182.38617188 373.99796875 181.68359375 374.8984375 C143.90732005 422.34488071 88.69851938 453.7125829 28.24511719 460.65234375 C-34.37189258 466.81196118 -95.92023521 450.38447219 -145.32373047 410.84912109 C-150.63059762 406.44354697 -155.62331058 401.69957299 -160.56298828 396.89013672 C-162.11230568 395.38386838 -163.67658294 393.8953131 -165.24609375 392.41015625 C-172.34316289 385.55468946 -178.35256425 378.1277555 -184.25 370.25 C-184.87406738 369.43305664 -184.87406738 369.43305664 -185.51074219 368.59960938 C-221.70234035 321.12863129 -236.255038 259.54945873 -229.125 200.625 C-223.65339389 160.98806158 -208.5347753 121.51559714 -183.25 90.25 C-182.6209375 89.43144531 -181.991875 88.61289063 -181.34375 87.76953125 C-175.73595711 80.54145393 -169.54040683 73.88109081 -163.25 67.25 C-162.53714844 66.49460937 -161.82429688 65.73921875 -161.08984375 64.9609375 C-155.86381746 59.57394531 -150.12911839 54.90365572 -144.25 50.25 C-143.27289063 49.4559375 -142.29578125 48.661875 -141.2890625 47.84375 C-132.4373368 40.7980439 -123.02475219 34.92815996 -113.25 29.25 C-112.63463379 28.88664551 -112.01926758 28.52329102 -111.38525391 28.14892578 C-77.7399993 8.43365597 -38.64381278 0.02618084 0 0 Z " fill="#0152FF" transform="translate(231.25,0.75)"/>
<path d="M0 0 C1.15219528 0.00323273 1.15219528 0.00323273 2.32766724 0.00653076 C46.5920503 0.20539431 86.3613979 17.15905335 117.875 48.3125 C129.3506392 59.925572 138.17221165 72.99064893 145.875 87.3125 C146.40867187 88.28574219 146.94234375 89.25898438 147.4921875 90.26171875 C153.97570121 102.57367613 157.87724071 115.31499682 160.75 128.875 C160.965354 129.88594727 161.18070801 130.89689453 161.40258789 131.93847656 C162.5567448 137.69444587 162.875 142.26232321 162.875 148.3125 C135.815 148.3125 108.755 148.3125 80.875 148.3125 C78.895 140.3925 78.895 140.3925 76.875 132.3125 C73.01912026 122.99682416 67.61430699 114.79765915 60.875 107.3125 C60.28460938 106.62929687 59.69421875 105.94609375 59.0859375 105.2421875 C45.82581396 90.8535428 26.25081675 82.81513123 6.9296875 81.94140625 C-15.82776053 81.49114274 -33.37630167 86.44103207 -51.125 101.3125 C-51.95386719 101.95058594 -52.78273438 102.58867187 -53.63671875 103.24609375 C-67.01650901 114.35741093 -76.32245113 133.7719616 -77.95727539 150.94946289 C-78.7845932 162.6053713 -79.02063903 174.17097236 -75.125 185.3125 C-74.76148438 186.38886719 -74.39796875 187.46523438 -74.0234375 188.57421875 C-66.85648891 208.47984048 -53.16199311 224.73833972 -34.125 234.3125 C-22.24116835 239.47938333 -12.28408945 241.65925979 0.625 241.625 C1.82382813 241.64111328 3.02265625 241.65722656 4.2578125 241.67382812 C15.13116783 241.67972474 24.94707086 239.60770873 34.875 235.1875 C35.88445679 234.73963135 35.88445679 234.73963135 36.91430664 234.28271484 C43.60090916 231.18170478 49.2920051 227.12007895 54.875 222.3125 C55.67421875 221.62542969 56.4734375 220.93835938 57.296875 220.23046875 C70.17339685 208.26418379 77.47881348 192.2934326 80.875 175.3125 C107.935 175.3125 134.995 175.3125 162.875 175.3125 C161.72034654 193.78695543 161.72034654 193.78695543 159.6875 200.25 C159.46682861 200.9910498 159.24615723 201.73209961 159.01879883 202.49560547 C158.32779264 204.77609494 157.60642624 207.04468382 156.875 209.3125 C156.64651367 210.03614746 156.41802734 210.75979492 156.18261719 211.50537109 C148.20098681 236.50582439 134.68330188 257.13677494 116.875 276.3125 C116.2975 276.95574219 115.72 277.59898437 115.125 278.26171875 C104.08045348 290.02120243 90.19356562 299.0741488 75.875 306.3125 C75.23820313 306.63444336 74.60140625 306.95638672 73.9453125 307.28808594 C59.11895893 314.67856932 44.1525632 319.43429789 27.875 322.3125 C26.85817139 322.49256592 26.85817139 322.49256592 25.82080078 322.67626953 C7.12014261 325.83144721 -11.58008855 324.89065948 -30.125 321.3125 C-31.21240479 321.11164795 -31.21240479 321.11164795 -32.32177734 320.90673828 C-60.31415204 315.60636896 -84.60079698 301.51463953 -106.125 283.3125 C-106.78242187 282.77882813 -107.43984375 282.24515625 -108.1171875 281.6953125 C-112.64277216 277.97427622 -116.35828242 273.78690391 -120.125 269.3125 C-120.87652344 268.47203125 -121.62804687 267.6315625 -122.40234375 266.765625 C-139.33234936 247.40176393 -151.77531886 222.450249 -157.125 197.3125 C-157.40601563 196.06210937 -157.68703125 194.81171875 -157.9765625 193.5234375 C-162.26681816 172.32844099 -162.35863192 147.32944708 -157.125 126.3125 C-156.95871094 125.59320313 -156.79242188 124.87390625 -156.62109375 124.1328125 C-153.836591 112.21101554 -149.47578439 101.30049164 -144.125 90.3125 C-143.81191895 89.65652832 -143.49883789 89.00055664 -143.17626953 88.32470703 C-136.1444676 73.7287857 -126.31185167 60.98489211 -115.125 49.3125 C-114.320625 48.44496094 -113.51625 47.57742187 -112.6875 46.68359375 C-92.86548432 25.94716961 -67.14696372 12.28214517 -39.75 4.4375 C-39.08605225 4.24623535 -38.42210449 4.0549707 -37.73803711 3.85791016 C-25.30600388 0.53525727 -12.78348897 -0.06474055 0 0 Z " fill="#FEFEFF" transform="translate(230.125,69.6875)"/>
<path d="M0 0 C0.66 0.33 1.32 0.66 2 1 C-6.91 9.91 -15.82 18.82 -25 28 C-25.66 27.67 -26.32 27.34 -27 27 C-18.40135601 17.51620148 -9.76517923 8.31079083 0 0 Z " fill="#2B6FFF" transform="translate(84,53)"/>
</svg>

Before

Width:  |  Height:  |  Size: 845 B

After

Width:  |  Height:  |  Size: 5.9 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 15 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 6.1 MiB

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="150" height="150">
<path d="M0 0 C16.51609799 13.78388103 26.78945808 30.37994064 29.9375 51.8125 C31.60365015 72.47276181 26.18347293 92.00538863 13.15234375 108.3125 C0.25256773 123.23710859 -16.37587433 132.52146526 -36 135.4375 C-55.3821639 136.72964426 -75.66936482 132.88496585 -90.95703125 120.10546875 C-94.0135961 117.41931005 -96.8854214 114.57680878 -99.75 111.6875 C-100.49121094 110.97980469 -101.23242188 110.27210937 -101.99609375 109.54296875 C-114.55469701 96.73955841 -120.03632901 78.24858455 -120.25 60.6875 C-119.99578268 39.79401367 -111.97546672 21.40455017 -97.515625 6.36328125 C-88.3053946 -2.50081304 -77.00924384 -8.73453329 -64.75 -12.3125 C-64.02425781 -12.53679688 -63.29851563 -12.76109375 -62.55078125 -12.9921875 C-41.15449729 -18.44394572 -17.53604486 -13.02151142 0 0 Z M-95.87890625 21.23046875 C-105.9647934 34.93246231 -110.2601026 50.75398996 -108.75 67.6875 C-106.05979432 85.3587089 -98.04963665 100.45413838 -83.875 111.5625 C-78.43628974 115.42267458 -72.99463992 118.36285302 -66.75 120.6875 C-65.95980469 121.00589844 -65.16960937 121.32429688 -64.35546875 121.65234375 C-49.18190749 126.83763949 -30.88575614 124.61655816 -16.625 118 C-0.57016353 109.49051748 11.30759568 95.78299417 16.75830078 78.42016602 C21.16695193 62.16443743 19.01947426 44.87222004 11.5625 29.9375 C8.18739643 24.16251123 3.96113434 19.40648623 -0.75 14.6875 C-1.81734375 13.60275391 -1.81734375 13.60275391 -2.90625 12.49609375 C-14.31425121 1.60475926 -29.68131603 -3.32033928 -45.25 -3.8125 C-65.64417655 -3.14700582 -82.8144851 5.62507762 -95.87890625 21.23046875 Z " fill="#C9C8C8" transform="translate(119.75,14.3125)"/>
<path d="M0 0 C4.875 1.875 4.875 1.875 6 3 C6.15740605 4.70563778 6.25093392 6.41727244 6.31640625 8.12890625 C6.37924805 9.68061523 6.37924805 9.68061523 6.44335938 11.26367188 C6.48267578 12.35228516 6.52199219 13.44089844 6.5625 14.5625 C6.60568359 15.65498047 6.64886719 16.74746094 6.69335938 17.87304688 C6.79982068 20.58189564 6.90183516 23.29083992 7 26 C7.73637695 25.2479126 8.47275391 24.4958252 9.23144531 23.72094727 C11.96711295 20.93095387 14.71271826 18.15092173 17.46142578 15.3737793 C18.64938098 14.17074358 19.83462895 12.96502827 21.01708984 11.7565918 C22.71787064 10.01939629 24.42817535 8.29209066 26.140625 6.56640625 C26.66682434 6.02472305 27.19302368 5.48303986 27.73516846 4.92494202 C32.53641461 0.12152095 32.53641461 0.12152095 36 0 C38.25 1.4375 38.25 1.4375 40 3 C39.55320448 7.89934398 38.49070872 10.12085452 34.96484375 13.5234375 C34.23644287 14.23935059 33.50804199 14.95526367 32.75756836 15.69287109 C31.8269458 16.57797363 30.89632324 17.46307617 29.9375 18.375 C26.988125 21.22125 24.03875 24.0675 21 27 C35.85 27.495 35.85 27.495 51 28 C50.92105982 20.61069075 50.92105982 20.61069075 50.81982422 13.22167969 C50.8148291 12.29774414 50.80983398 11.37380859 50.8046875 10.421875 C50.78897705 9.00793457 50.78897705 9.00793457 50.77294922 7.56542969 C51.01170446 4.86775222 51.54307781 3.26746794 53 1 C54.875 0.0625 54.875 0.0625 57 0 C59.10244751 1.1325531 59.10244751 1.1325531 61 3 C61.49447632 5.62513733 61.49447632 5.62513733 61.48583984 8.81665039 C61.49506973 10.6084951 61.49506973 10.6084951 61.50448608 12.4365387 C61.49011505 13.72720749 61.47574402 15.01787628 61.4609375 16.34765625 C61.45855297 17.68379031 61.45764777 19.01992776 61.4581604 20.35606384 C61.45503329 23.15466333 61.43847449 25.95275017 61.41162109 28.7512207 C61.3776079 32.34164987 61.36999344 35.93151664 61.37151146 39.52208805 C61.37096815 42.28016039 61.36000801 45.03810933 61.34550858 47.79614067 C61.33603506 49.76488111 61.33258276 51.73364752 61.32919312 53.70240784 C61.31643341 54.89381882 61.30367371 56.0852298 61.29052734 57.31274414 C61.27909195 58.89134972 61.27909195 58.89134972 61.26742554 60.50184631 C61 63 61 63 59 65 C56.5625 65.375 56.5625 65.375 54 65 C51.87779463 62.82256996 51.06212859 61.46799085 50.65942383 58.43457031 C50.6829895 57.02062988 50.6829895 57.02062988 50.70703125 55.578125 C50.71827026 54.19222168 50.71827026 54.19222168 50.72973633 52.77832031 C50.75704834 51.61397461 50.78436035 50.44962891 50.8125 49.25 C50.874375 45.5375 50.93625 41.825 51 38 C41.1 38.33 31.2 38.66 21 39 C27.27916024 45.00256903 27.27916024 45.00256903 33.59594727 50.96533203 C34.36994873 51.72185059 35.1439502 52.47836914 35.94140625 53.2578125 C36.74263916 54.0223877 37.54387207 54.78696289 38.36938477 55.57470703 C40 58 40 58 39.75366211 61.29638672 C39.50495361 62.1885791 39.25624512 63.08077148 39 64 C36.39208984 64.84936523 36.39208984 64.84936523 33 65 C30.57169741 63.20070624 28.76435891 61.58486287 26.7265625 59.41015625 C25.87365128 58.54238808 25.87365128 58.54238808 25.00350952 57.65708923 C23.19357739 55.80801392 21.4094969 53.93610166 19.625 52.0625 C18.40136749 50.803754 17.17612415 49.54657174 15.94921875 48.29101562 C12.94716212 45.21183495 9.96806408 42.1119453 7 39 C6.970271 40.02154175 6.970271 40.02154175 6.93994141 41.0637207 C6.84473017 44.14703917 6.73503534 47.22967649 6.625 50.3125 C6.5940625 51.38435547 6.563125 52.45621094 6.53125 53.56054688 C6.47324219 55.10258789 6.47324219 55.10258789 6.4140625 56.67578125 C6.3826416 57.62364502 6.3512207 58.57150879 6.31884766 59.5480957 C6 62 6 62 4 65 C1.21334312 65.42871644 -0.31123926 65.49431737 -2.63490295 63.8266449 C-4.5278853 61.29363338 -4.38725314 59.54418261 -4.40405273 56.39868164 C-4.41673691 55.25061539 -4.42942108 54.10254913 -4.44248962 52.91969299 C-4.43955399 51.67904587 -4.43661835 50.43839874 -4.43359375 49.16015625 C-4.4388356 47.88651718 -4.44407745 46.61287811 -4.44947815 45.30064392 C-4.4559079 42.60449431 -4.45598429 39.90918907 -4.44604492 37.21313477 C-4.43455932 33.76166105 -4.45475698 30.31121107 -4.48396206 26.85987186 C-4.50674367 23.56412806 -4.49985663 20.26846036 -4.49609375 16.97265625 C-4.50732773 15.73403336 -4.51856171 14.49541046 -4.53013611 13.21925354 C-4.51606468 11.49242592 -4.51606468 11.49242592 -4.50170898 9.73071289 C-4.50154282 8.71828018 -4.50137665 7.70584747 -4.50120544 6.66273499 C-3.87405472 3.33089532 -2.56098608 2.13583901 0 0 Z " fill="#E6444B" transform="translate(46,42)"/>
</svg>

After

Width:  |  Height:  |  Size: 6.1 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><defs><radialGradient id="paint0_radial_2253_2948" cx="0" cy="0" r="1" gradientTransform="matrix(-9.1078 21.447 -27.064 -11.493 10.943 5.234)" gradientUnits="userSpaceOnUse"><stop offset=".06" stop-color="#AE7FE2"/><stop offset="1" stop-color="#0078D4"/></radialGradient><radialGradient id="paint2_radial_2253_2948" cx="0" cy="0" r="1" gradientTransform="matrix(14.846 -4.9755 3.7895 11.307 6.368 19.448)" gradientUnits="userSpaceOnUse"><stop offset=".111" stop-color="#D59DFF"/><stop offset="1" stop-color="#5E438F"/></radialGradient><radialGradient id="paint4_radial_2253_2948" cx="0" cy="0" r="1" gradientTransform="matrix(-26.443 -6.4905 4.7493 -19.349 23.585 12.29)" gradientUnits="userSpaceOnUse"><stop offset=".096" stop-color="#50E6FF"/><stop offset="1" stop-color="#436DCD"/></radialGradient><linearGradient id="paint1_linear_2253_2948" x1="13.592" x2="11.378" y1="24.74" y2="19.401" gradientTransform="translate(-.468 -.468) scale(.77926)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#114A8B"/><stop offset="1" stop-color="#0078D4" stop-opacity="0"/></linearGradient><linearGradient id="paint3_linear_2253_2948" x1="27.449" x2="23.878" y1="16.963" y2="22.083" gradientTransform="translate(-.468 -.468) scale(.77926)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#493474"/><stop offset="1" stop-color="#8C66BA" stop-opacity="0"/></linearGradient><linearGradient id="paint5_linear_2253_2948" x1="11.128" x2="17.351" y1="3.486" y2="3.756" gradientTransform="translate(-.468 -.468) scale(.77926)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#2D3F80"/><stop offset="1" stop-color="#436DCD" stop-opacity="0"/></linearGradient><style>.cls-1{fill:none}.cls-2{fill:#ca64ea}.cls-3{opacity:.75}.cls-4{fill:#7719aa}.cls-5{fill:#fff}.cls-6{fill:#ae4bd5}.cls-7{fill:#9332bf}</style></defs><path fill="url(#paint0_radial_2253_2948)" d="M9.864.558 9.74.632s2.109.146 2.804.146l.546 4.13-2.727 2.727-2.728 1.896v2.186c0 1.527.798 2.943 2.104 3.733l2.872 1.738-6.067 3.539h-1.17l-2.18-1.32a4.364 4.364 0 0 1-2.105-3.733V8.323c0-1.527.799-2.943 2.106-3.734L9.74.629c.041-.024.082-.048.123-.07z"/><path fill="url(#paint1_linear_2253_2948)" d="M9.864.558 9.74.632s2.109.146 2.804.146l.546 4.13-2.727 2.727-2.728 1.896v2.186c0 1.527.798 2.943 2.104 3.733l2.872 1.738-6.067 3.539h-1.17l-2.18-1.32a4.364 4.364 0 0 1-2.105-3.733V8.323c0-1.527.799-2.943 2.106-3.734L9.74.629c.041-.024.082-.048.123-.07z"/><path fill="url(#paint2_radial_2253_2948)" d="M16.363 9.272v2.444a4.364 4.364 0 0 1-2.104 3.733l-6.546 3.962a4.364 4.364 0 0 1-4.368.088l6.394 3.87c1.39.841 3.13.841 4.52 0l6.546-3.962a4.364 4.364 0 0 0 2.104-3.733v-1.765l-.546-.819z"/><path fill="url(#paint3_linear_2253_2948)" d="M16.363 9.272v2.444a4.364 4.364 0 0 1-2.104 3.733l-6.546 3.962a4.364 4.364 0 0 1-4.368.088l6.394 3.87c1.39.841 3.13.841 4.52 0l6.546-3.962a4.364 4.364 0 0 0 2.104-3.733v-1.765l-.546-.819z"/><path fill="url(#paint4_radial_2253_2948)" d="M20.805 4.59 14.259.63A4.364 4.364 0 0 0 9.872.554l-.13.079a4.364 4.364 0 0 0-2.105 3.734V9.54l2.105-1.273a4.364 4.364 0 0 1 4.517 0l6.546 3.959a4.364 4.364 0 0 1 2.103 3.59l.002-.142v-7.35a4.364 4.364 0 0 0-2.105-3.735z"/><path fill="url(#paint5_linear_2253_2948)" d="M20.805 4.59 14.259.63A4.364 4.364 0 0 0 9.872.554l-.13.079a4.364 4.364 0 0 0-2.105 3.734V9.54l2.105-1.273a4.364 4.364 0 0 1 4.517 0l6.546 3.959a4.364 4.364 0 0 1 2.103 3.59l.002-.142v-7.35a4.364 4.364 0 0 0-2.105-3.735z"/></svg>

After

Width:  |  Height:  |  Size: 3.4 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 24 24"><defs><path id="a" d="M12 0c6.627 0 12 5.373 12 12v12H12C5.373 24 0 18.627 0 12S5.373 0 12 0z"/><path id="c" d="M0 24V12l.004-.305C.166 5.209 5.474 0 12 0c6.627 0 12 5.373 12 12s-5.373 12-12 12H0z"/></defs><g fill="none" fill-rule="evenodd"><path fill="#0b7ed0" d="M17.657 4.843a8 8 0 0 1-.32 11.616L12 21.5l-5.337-5.04A8 8 0 1 1 17.657 4.843z"/><g transform="matrix(.5 0 0 .5 0 9.5)"><mask id="b" fill="#fff"><use xlink:href="#a" width="100%" height="100%"/></mask><use xlink:href="#a" width="100%" height="100%" fill="#2cd4ed"/><path fill="#0db4e2" d="M35.314-9.314c6.248 6.249 6.248 16.38 0 22.627-.209.21-.422.411-.64.606l-10.673 10.08-10.674-10.08c-.218-.195-.43-.397-.64-.606-6.248-6.248-6.248-16.379 0-22.627 6.249-6.248 16.38-6.248 22.627 0z" mask="url(#b)"/></g><g transform="matrix(.5 0 0 .5 12 9.5)"><mask id="d" fill="#fff"><use xlink:href="#c" width="100%" height="100%"/></mask><use xlink:href="#c" width="100%" height="100%" fill="#3169ff"/><path fill="#3153ff" d="M11.314-9.314c6.248 6.249 6.248 16.38 0 22.627-.209.21-.422.411-.64.606L.002 23.999l-10.674-10.08c-.218-.195-.43-.397-.64-.606-6.248-6.248-6.248-16.379 0-22.627 6.249-6.248 16.38-6.248 22.627 0z" mask="url(#d)"/></g></g></svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -1,6 +1,5 @@
<?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="200px" height="200px" 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:1" fill="#fefefe" d="M -0.5,-0.5 C 66.1667,-0.5 132.833,-0.5 199.5,-0.5C 199.5,66.1667 199.5,132.833 199.5,199.5C 132.833,199.5 66.1667,199.5 -0.5,199.5C -0.5,132.833 -0.5,66.1667 -0.5,-0.5 Z"/></g>
<g><path style="opacity:1" fill="#0e0e0e" d="M 119.5,47.5 C 133.743,46.0344 143.909,51.701 150,64.5C 154.009,81.9852 147.509,93.4852 130.5,99C 123.167,99.3333 115.833,99.6667 108.5,100C 104.333,101.5 101.5,104.333 100,108.5C 99.5001,122.829 99.3334,137.163 99.5,151.5C 82.1667,151.5 64.8333,151.5 47.5,151.5C 47.5,132.833 47.5,114.167 47.5,95.5C 60.0736,101.213 72.4069,100.713 84.5,94C 88.6667,91.1667 92.1667,87.6667 95,83.5C 97.7515,75.0718 100.752,66.7384 104,58.5C 108.127,53.202 113.294,49.5354 119.5,47.5 Z"/></g>
<?xml version="1.0"?>
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 512 512" fill="none">
<rect width="512" height="512" fill="white"/>
<path d="M358.635 63.3162C307.498 60.9566 264.496 97.209 257.16 144.973C256.869 147.19 256.433 149.335 256.07 151.48C244.666 210.971 191.568 256.019 127.792 256.019C105.056 256.019 83.7007 250.298 65.1054 240.288C62.8536 239.072 60.166 240.645 60.166 243.148V255.947V448.793H255.997V304.212C255.997 277.613 277.934 256.019 304.955 256.019H353.913C409.336 256.019 453.935 210.757 451.756 155.699C449.795 106.147 408.973 65.6758 358.635 63.3162Z" fill="black"/>
</svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 635 B

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg class="trusty" width="72" height="72" viewBox="0 0 72 72" fill="none" xmlns="http://www.w3.org/2000/svg" role="presentation">
<g clip-path="url(#clip0_136_2653)">
<path fill-rule="evenodd" clip-rule="evenodd" d="M0 0V72H18.9547C19.6146 64.85 20.4143 61.99 24.1933 54.57C28.4921 46.13 29.8117 39.71 29.8117 31.39C29.8117 31.2927 29.8125 31.1864 29.8133 31.0731C29.8198 30.1968 29.8294 28.905 29.5018 28.17C27.8023 28.34 25.373 27.59 23.9334 25.86C22.7137 24.38 21.8839 22.49 21.8839 21.3C21.8839 21.04 21.9139 20.85 22.0739 20.69C23.6634 20.25 26.7826 20.96 28.902 21.95C29.7717 20.53 30.5315 19.61 32.421 18.57C30.7015 14.92 27.5823 12.48 22.8836 12.48C17.4552 12.48 13.8961 15.53 12.7365 18.48C12.3866 19.38 12.8664 19.57 13.4463 18.99C15.7856 16.61 18.2649 15.43 21.504 15.43C25.4829 15.43 27.8223 17.93 27.8223 18.99C27.8223 19.34 27.5623 19.34 27.2124 19.21L27.1642 19.1942C25.9042 18.7805 24.7757 18.41 22.6237 18.41C16.6254 18.41 13.8661 24.03 13.8661 28.81C13.8661 31.44 14.7959 33.37 16.6254 33.37C18.035 33.37 18.8448 32.47 19.5446 31.03C19.7645 30.58 20.1244 30.58 20.4143 31.06C20.8042 31.7 20.8942 32.79 20.8942 33.63C20.8942 37.42 18.105 39.41 14.8959 39.41C8.89753 39.41 5.23854 34.08 5.23854 27.15C5.23854 17.78 11.1469 7.92 23.1436 7.92C31.7812 7.92 36.2699 12.53 38.6593 17.1H39.9289C41.6584 12.99 44.7776 10.55 49.4263 10.55C55.6245 10.55 58.1838 15.37 58.1838 21.11C58.1838 22.6809 58.0188 24.1895 57.8605 25.6374C57.7144 26.973 57.574 28.2568 57.574 29.49C57.574 31.38 58.3738 33.5 60.5232 33.5C61.9028 33.5 63.0625 32.6 63.6323 30.45C63.7923 29.87 64.1422 29.78 64.632 30.39C64.952 30.78 65.4018 31.71 65.4018 32.8C65.4018 35.82 63.4424 39 59.5235 39.03C56.1844 39.06 54.165 37.23 53.7451 34.92C53.6851 34.53 54.035 34.34 54.2549 34.66C55.4746 36.27 57.0442 37.13 59.2635 37.13C60.5132 37.13 61.7628 36.58 62.1827 35.65C62.3127 35.36 62.2127 35.2 61.9928 35.3C61.223 35.65 60.5532 35.78 59.8134 35.78C54.6748 35.78 54.035 30.55 53.6851 25.25C53.2052 26.63 52.2755 27.82 49.8662 28.04C50.0861 27.69 50.256 27.11 50.256 26.69C50.256 26.27 50.0361 25.98 49.5162 25.98C48.7465 25.98 48.0766 26.56 48.0766 27.49C48.0766 28.4238 48.7643 29.4058 49.4753 30.4212C50.0588 31.2544 50.658 32.1101 50.9059 32.98C51.0658 33.56 51.0658 34.07 51.0658 34.71C51.0658 35.83 50.9359 36.93 50.7759 37.47C50.6459 37.89 50.356 38.02 49.5262 38.02C48.9464 38.02 48.7565 37.83 48.6265 37.35C48.5665 37.09 48.4665 36.77 48.2766 36.77C48.067 36.77 47.9936 37.0062 47.9006 37.3054L47.8867 37.35C47.6968 38.02 47.1169 38.15 45.7373 38.15C45.1996 38.15 44.8471 38.1229 44.6162 38.1051H44.6161H44.6161L44.616 38.1051C44.5035 38.0964 44.4199 38.09 44.3577 38.09C44.0078 38.09 43.8778 38.22 43.8778 38.41C43.8778 38.67 43.9078 38.92 43.9778 39.15C44.0378 39.34 44.1677 39.41 44.5576 39.34C45.8373 39.15 46.967 39.12 47.8267 39.12C50.1661 39.12 50.296 39.34 50.1061 40.15C49.9461 40.86 49.6862 41.79 49.3063 42.62C49.0464 43.17 48.8564 43.23 48.4765 43.26C47.7068 43.32 46.677 43.36 45.9072 43.32C44.5099 43.2542 43.2844 42.8113 42.119 42.3902C40.9831 41.9798 39.9043 41.59 38.7792 41.59C38.1699 41.59 37.6128 41.6732 37.0419 41.7585C36.4421 41.8481 35.8271 41.94 35.1202 41.94C33.7406 41.94 32.7609 41.65 31.8212 40.98C30.4615 46.18 29.9617 52.53 29.9617 55.45C29.9617 57.47 30.5415 59.66 31.5712 60.49C31.9211 60.78 32.241 60.78 32.501 60.3C35.0084 55.6355 37.7216 54.0276 40.2896 52.5059C42.6874 51.0849 44.9585 49.7391 46.817 46.05C47.0069 45.7 47.3968 45.76 47.4568 46.18C48.0966 49.97 47.6768 54.56 46.847 58.96C46.747 59.47 47.1069 59.67 47.4568 59.22C48.5165 57.87 49.8961 55.43 50.406 53.47C50.536 52.99 50.9159 52.96 51.1158 53.44C52.3655 56.49 53.7751 62.27 54.195 66.44C54.2249 66.89 54.6448 66.92 54.8048 66.5C55.7045 64 56.2844 59.85 55.6046 56.8C55.5446 56.45 55.7345 56.25 56.1144 56.45C61.6929 59.16 67.1214 64.14 72 71.98V0H0ZM23.1341 65.1C22.1641 67.2 21.4341 69.52 21.2541 72H24.3941C23.9041 69.53 23.8441 67.14 23.8441 65.1C23.8441 64.43 23.5241 64.23 23.1341 65.1ZM45.7273 35.31C44.9875 35.37 44.6676 35.08 44.6676 34.12H44.6776C44.6776 33.8 44.9375 33.38 45.4174 33.38C45.6454 33.38 45.912 33.4104 46.2316 33.4469C46.7107 33.5017 47.3092 33.57 48.0766 33.57C48.3261 33.57 48.5664 33.5332 48.8162 33.4948L48.8164 33.4948L48.8165 33.4948C49.0872 33.4533 49.3691 33.41 49.6862 33.41C50.0361 33.41 50.1961 33.64 50.1961 34.15C50.1961 34.86 50.1261 35.28 49.6462 35.31C48.9064 35.34 48.7465 35.47 48.5865 36.08C48.4865 36.37 48.1666 36.43 48.0067 36.11C47.6168 35.31 46.947 35.21 45.7273 35.31ZM38.4393 26C37.8895 25.2 36.3199 24.2 34.7503 24.23C33.3107 24.2 32.411 25.16 32.411 25.93C32.411 26.12 32.541 26.25 32.7309 26.12C33.0208 25.96 33.2108 25.9 33.4407 25.9C33.7006 26.73 34.4404 27.79 35.88 27.79C36.9697 27.79 37.8395 27.28 37.6795 26.12C37.9395 26.12 38.0994 26.15 38.3194 26.22C38.4493 26.25 38.5093 26.09 38.4493 26H38.4393ZM49.1963 18.45C51.3457 18.45 52.7254 20.18 53.3652 22.27C51.6257 21.98 50.6659 21.98 49.5762 23.23C48.9664 21.47 47.5568 20.09 46.3371 19.51C46.727 19.06 47.5868 18.45 49.1963 18.45Z" fill="#00CFEC"></path>
</g>
<defs>
<clipPath id="clip0_136_2653">
<rect width="72" height="72" fill="white"></rect>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 5.1 KiB

View File

@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<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: #005ed9;
}
</style>
</defs>
<g id="Layer_3" data-name="Layer 3">
<g id="Layer_3-2" data-name="Layer 3">
<g id="Layer_2" data-name="Layer 2">
<path id="Layer_3-3" data-name="Layer 3" class="cls-1" d="M0,0H150V150H0V0Z"/>
</g>
</g>
</g>
<path class="cls-2" d="M133.15,14.8h-7.69v7.69h7.69v-7.69Zm-26.9,53.84v-15.4h0s15.37,0,15.37,0v15.38h15.37c.26,14.25-.82,26.68-8.06,39.12-20.96,36.88-72.74,41.85-100.21,9.49h0c-6.41-7.45-11.02-16.51-13.18-26.18-1.1-5.25-1.58-11.92-1.58-17.55V15.76h30.75l.06,58.57c.15,7.58,1.52,15.37,6.05,21.31,13.04,17.66,40.64,16.06,51.33-3.18,3.84-6.42,4.19-16.61,4.09-23.82h0Zm3.84-42.31h11.53v11.53h15.38v15.38h-15.38v-15.37h-11.53v-11.53Z"/>
</svg>

After

Width:  |  Height:  |  Size: 968 B

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="#fcd205" d="M21 24H3c-1.65 0-3-1.35-3-3V3c0-1.65 1.35-3 3-3h18c1.65 0 3 1.35 3 3v18c0 1.65-1.35 3-3 3"/><path fill="#28292b" d="M23.259 18.159a.606.606 0 0 0-.136-.31c-.302-.414-1.72-.69-1.72-.685a26.722 26.722 0 0 0-2.448-.4c.13-.62-.006-1.762-.009-2.158.018-.71.004-2.542-.05-3.005-.04-.435-.099-.625-.337-.986-.172-.257-.224-.508-.619-.469-.359.036-.491.535-.43.837l.155.617c.065.127.239 4.125.2 4.473.003.17-.013.387-.018.57a59.89 59.89 0 0 0-3.035-.204 6.85 6.85 0 0 1 .043-.034c.52-.404.34-.941.253-1.526-.119-.938-.028-3.597-.14-3.917-.076-.25-.29-.396-.475-.587-.23-.236-.517-.308-.781-.037-.26.235.065 3.593.083 5.068.023.308-.045.696.077.994-.1-.004-2.768-.06-2.992-.055.003-.052-.032-.119-.057-.17a3.18 3.18 0 0 1-.189-.598 6.314 6.314 0 0 1-.092-.85c-.02-.61.036-2.498.105-2.992.076-.545.367-1.509-.58-1.297-.103.023-.604.085-.738.191-.156.123-.141.43-.147.6-.023.644-.094 2.675-.09 3.162.005.41.078.937.229 1.337.091.243.363.485.646.638-.521.015-1.023.031-1.201.041-.88.05-1.554.098-2.211.163l-.008-.032c-.11-.34.048-1.74.353-4.368.074-.634-.038-.659-.424-1.016-.22-.205-.408-.343-.793-.035-.244.196-.18.447-.223.73-.146.985-.359 2.533-.45 3.536-.025.277.014.91.085 1.295.007.018.004.038.013.058a65.69 65.69 0 0 0-1.2.173c-1.056.164-1.989.204-2.623.489-.39.175-.412.234-.503.376a.368.368 0 0 0-.05.167c0 .011.009.151.02.192a.517.517 0 0 0 .352.374c.047.015.341.04.372.043.709.071 1.099-.101 1.792-.374 3.431-1.369 13.25-.954 15.413-.545.939.187 2.388.383 3.287.898.147.08.284.138.41.176.062.02.123.029.179.042.137.032.284.003.309-.002a.697.697 0 0 0 .14-.042.372.372 0 0 0 .191-.156.919.919 0 0 0 .068-.21.895.895 0 0 0-.005-.18zM12.102 5.817c.203.018 1.804.066 1.896-.56.052-.356-.3-.933-.4-1.037-.133-.11-.425.847-.5-.094-.01-.153-.05-.39-.123-.536-.036-.073-.08-.126-.135-.126a.185.185 0 0 0-.089.03.537.537 0 0 0-.145.21c-.09.223-.13 1.086-.354 1.1-.244.016-.236-.552-.203-.718.005-.027-.001-.033-.012-.03-.023.006-.03.01-.049.016-.146.056-.313.226-.325.238-.23.236-.54.85-.383 1.131.163.293.65.36.822.376zM4.438 9.41c.221.082.515-.066.728-.103.212-.037 1.077-.232.914-.035-.092.111-.33.112-.542.174-.293.087-.764.135-.782.513-.043.899 1.355.301 1.764.155 1.11-.386 2.381-.452 3.504-.64 1.245-.208 2.526-.227 3.783-.275 1.323-.05 2.747-.106 4.047.077.346.05.674.087 1.026.125.305.03.948.311 1.22.183.247-.117.135-.409.262-.558.184-.214.545-.177.294-.634-.192-.348-.89-.461-1.25-.39-.037-.22.132-.123.176-.237a.75.75 0 0 0-.043-.603c-.194-.333-1.115-.45-1.116-.45-2.209-.356-6.184-.74-10.416-.246-.702.082-1.933.17-2.652.46-.318.13-.314.132-.353.341-.038.297.105.642.461.569.684-.141 1.89-.336 2.237-.424 1.706-.435 7.386-.35 8.118-.177.452.097 2.935.178 2.995.633-5.796-.24-8.009-.237-13.213.38-.435.073-.696.168-1.039.284-.422.142-.708.662-.123.878"/></svg>

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

@@ -23,7 +23,7 @@ import 'package:tray_manager/tray_manager.dart';
import 'package:window_manager/window_manager.dart';
class App extends StatefulWidget {
final Locale locale;
final Locale? locale;
const App({super.key, this.locale = const Locale("en")});
static void setLocale(BuildContext context, Locale newLocale) {

View File

@@ -13,11 +13,11 @@ import 'package:ente_auth/models/key_attributes.dart';
import 'package:ente_auth/models/key_gen_result.dart';
import 'package:ente_auth/models/private_key_attributes.dart';
import 'package:ente_auth/store/authenticator_db.dart';
import 'package:ente_auth/utils/directory_utils.dart';
import 'package:ente_auth/utils/lock_screen_settings.dart';
import 'package:ente_crypto_dart/ente_crypto_dart.dart';
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
import 'package:logging/logging.dart';
import 'package:path_provider/path_provider.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:sqflite_common_ffi/sqflite_ffi.dart';
import 'package:tuple/tuple.dart';
@@ -56,7 +56,6 @@ class Configuration {
static final _logger = Logger("Configuration");
String? _cachedToken;
late String _documentsDirectory;
late SharedPreferences _preferences;
String? _key;
String? _secretKey;
@@ -75,8 +74,7 @@ class Configuration {
_preferences = await SharedPreferences.getInstance();
sqfliteFfiInit();
_secureStorage = const FlutterSecureStorage();
_documentsDirectory = (await getApplicationDocumentsDirectory()).path;
_tempDirectory = "$_documentsDirectory/temp/";
_tempDirectory = (await DirectoryUtils.getDirectoryForInit()).path;
final tempDirectory = io.Directory(_tempDirectory);
try {
final currentTime = DateTime.now().microsecondsSinceEpoch;

View File

@@ -6,11 +6,34 @@
"@counterAppBarTitle": {
"description": "Text shown in the AppBar of the Counter Page"
},
"onBoardingBody": "Бяспечна зрабіць рэзервовую копію кодаў 2ФА",
"onBoardingGetStarted": "Пачаць",
"setupFirstAccount": "Наладзіць ваш першы ўліковы запіс",
"importScanQrCode": "Сканіраваць код QR-код",
"qrCode": "QR-код",
"importEnterSetupKey": "Увесці ключ наладжвання",
"importAccountPageTitle": "Увесці падрабязнасці ўліковага запісу",
"secretCanNotBeEmpty": "Сакрэт не можа быць пустым",
"bothIssuerAndAccountCanNotBeEmpty": "І выдавец, і ўліковы запіс не могуць быць пустымі",
"incorrectDetails": "Няправільныя падрабязнасці",
"pleaseVerifyDetails": "Праверце падрабязнасці і паспрабуйце яшчэ раз",
"codeIssuerHint": "Выдавец",
"codeSecretKeyHint": "Сакрэтны ключ",
"secret": "Сакрэт",
"all": "Усе",
"notes": "Нататкі",
"notesLengthLimit": "Максімальная колькасць сімвалаў у нататках не больш за {count}",
"@notesLengthLimit": {
"description": "Text to indicate the maximum number of characters allowed for notes",
"placeholders": {
"count": {
"description": "The maximum number of characters allowed for notes",
"type": "int",
"example": "100"
}
}
},
"codeAccountHint": "Уліковы запіс (vy@damen.com)",
"codeTagHint": "Тэг",
"accountKeyType": "Тып ключа",
"sessionExpired": "Сеанс завяршыўся",
@@ -18,8 +41,19 @@
"description": "Title of the dialog when the users current session is invalid/expired"
},
"pleaseLoginAgain": "Аўтарызуйцеся яшчэ раз",
"loggingOut": "Выхад...",
"timeBasedKeyType": "Заснаваныя на часе (TOTP)",
"counterBasedKeyType": "Заснаваныя на лічыльніку (HOTP)",
"saveAction": "Захаваць",
"nextTotpTitle": "наступны",
"deleteCodeTitle": "Выдаліць код?",
"deleteCodeMessage": "Вы сапраўды хочаце выдаліць гэты код? Гэта дзеянне з'яўляецца незваротным.",
"trashCode": "Выдаліць код?",
"trashCodeMessage": "Вы сапраўды хочаце выдаліць код для {account}?",
"trash": "Сметніца",
"viewLogsAction": "Паглядзець журнал",
"preparingLogsTitle": "Падрыхтоўка журнала...",
"emailLogsTitle": "Адправіць журнал па электроннай пошце",
"blog": "Блог",
"changePassword": "Змяніць пароль",
"data": "Даныя",

View File

@@ -6,8 +6,34 @@
"@counterAppBarTitle": {
"description": "Text shown in the AppBar of the Counter Page"
},
"onBoardingBody": "Fes una còpia de seguretat de forma segura dels teus codis 2FA",
"onBoardingGetStarted": "Primers passos",
"setupFirstAccount": "Configura el teu primer compte",
"importScanQrCode": "Escaneja un codi QR",
"qrCode": "Codi QR",
"importEnterSetupKey": "Introdueix una clau de configuració",
"importAccountPageTitle": "Introdueix les dades del compte",
"secretCanNotBeEmpty": "El secret no pot estar buit",
"bothIssuerAndAccountCanNotBeEmpty": "Ni l'emissor ni el compte poden estar buits",
"incorrectDetails": "Detalls incorrectes",
"pleaseVerifyDetails": "Verifica els detalls i torna-ho a provar",
"codeIssuerHint": "Emissor",
"codeSecretKeyHint": "Clau secreta",
"secret": "Secret",
"all": "Tots",
"notes": "Notes",
"notesLengthLimit": "Les notes poden tenir un màxim de {count} caràcters",
"@notesLengthLimit": {
"description": "Text to indicate the maximum number of characters allowed for notes",
"placeholders": {
"count": {
"description": "The maximum number of characters allowed for notes",
"type": "int",
"example": "100"
}
}
},
"codeAccountHint": "Compte (tu@domini.com)",
"codeTagHint": "Etiqueta",
"accountKeyType": "Tipus de clau",
"sessionExpired": "La sessió ha caducat",
@@ -15,12 +41,448 @@
"description": "Title of the dialog when the users current session is invalid/expired"
},
"pleaseLoginAgain": "Torna a iniciar sessió",
"loggingOut": "Tancant sessió...",
"timeBasedKeyType": "Basat en temps (TOTP)",
"counterBasedKeyType": "Basat en comptador (HOTP)",
"saveAction": "Desa",
"nextTotpTitle": "següent",
"deleteCodeTitle": "Esborrar el codi?",
"deleteCodeMessage": "Segur que vols esborrar aquest codi? Aquesta acció és irreversible.",
"trashCode": "Enviar el codi a la paperera?",
"trashCodeMessage": "Estàs segur que vols enviar a la paperera el codi per a {account}?",
"trash": "Paperera",
"viewLogsAction": "Veure registres",
"sendLogsDescription": "Això enviarà els registres per ajudar-nos a diagnosticar el problema. Tot i que prenem precaucions per assegurar que la informació sensible no es registri, et recomanem que revisis els registres abans de compartir-los.",
"preparingLogsTitle": "Preparant registres...",
"emailLogsTitle": "Enviar registres per correu electrònic",
"emailLogsMessage": "Si us plau, envia els registres a {email}",
"@emailLogsMessage": {
"placeholders": {
"email": {
"type": "String"
}
}
},
"copyEmailAction": "Copia el correu electrònic",
"exportLogsAction": "Exporta registres",
"reportABug": "Informa d'un error",
"crashAndErrorReporting": "Informes d'errors i fallades",
"reportBug": "Informar d'error",
"emailUsMessage": "Si us plau, envia'ns un correu a {email}",
"@emailUsMessage": {
"placeholders": {
"email": {
"type": "String"
}
}
},
"contactSupport": "Contacta amb suport",
"rateUsOnStore": "Valora'ns a {storeName}",
"blog": "Blog",
"merchandise": "Marxandatge",
"verifyPassword": "Verifica la contrasenya",
"pleaseWait": "Si us plau, espera...",
"generatingEncryptionKeysTitle": "Generant claus d'encriptació...",
"recreatePassword": "Recrea la contrasenya",
"recreatePasswordMessage": "Aquest dispositiu no és prou potent per verificar la contrasenya, així que hem de regenerar-la d'una manera compatible amb tots els dispositius. \n\nInicia sessió amb la teva clau de recuperació i regenera la contrasenya (pots reutilitzar la mateixa si ho desitges).",
"useRecoveryKey": "Usa la clau de recuperació",
"incorrectPasswordTitle": "Contrasenya incorrecta",
"welcomeBack": "Benvingut de nou!",
"madeWithLoveAtPrefix": "fet amb ❤️ a ",
"supportDevs": "Subscriu-te a <bold-green>ente</bold-green> per donar-nos suport",
"supportDiscount": "Usa el codi de descompte \"AUTH\" per obtenir un 10% de descompte el primer any",
"changeEmail": "Canvia el correu electrònic",
"changePassword": "Canvia la contrasenya",
"importTypePlainText": "Text pla"
"data": "Dades",
"importCodes": "Importa codis",
"importTypePlainText": "Text pla",
"importTypeEnteEncrypted": "Exportació xifrada d'Ente",
"passwordForDecryptingExport": "Contrasenya per desxifrar l'exportació",
"passwordEmptyError": "La contrasenya no pot estar buida",
"importFromApp": "Importa codis des de {appName}",
"importGoogleAuthGuide": "Exporta els teus comptes des de Google Authenticator a un codi QR usant l'opció \"Transferir Comptes\". Després, utilitza un altre dispositiu per escanejar el codi QR.\n\nConsell: Pots utilitzar la càmera del teu portàtil per fer una foto del codi QR.",
"importSelectJsonFile": "Selecciona un fitxer JSON",
"importSelectAppExport": "Selecciona el fitxer d'exportació de {appName}",
"importEnteEncGuide": "Selecciona el fitxer JSON xifrat exportat des d'Ente",
"importRaivoGuide": "Utilitza l'opció \"Exporta OTPs a un arxiu Zip\" a la configuració de Raivo.\n\nExtreu el fitxer zip i importa el fitxer JSON.",
"importBitwardenGuide": "Utilitza l'opció \"Exporta caixa forta\" a la configuració de Bitwarden i importa el fitxer JSON sense xifrar.",
"importAegisGuide": "Utilitza l'opció \"Exporta la caixa forta\" a la configuració d'Aegis.\n\nSi la teva caixa forta està xifrada, hauràs d'introduir la contrasenya per desxifrar-la.",
"import2FasGuide": "Utilitza l'opció \"Configuració->Còpia de seguretat - Exporta\" a 2FAS.\n\nSi la teva còpia de seguretat està xifrada, hauràs d'introduir la contrasenya per desxifrar-la.",
"importLastpassGuide": "Utilitza l'opció \"Transferir comptes\" a la configuració de Lastpass Authenticator i prem \"Exporta comptes a fitxer\". Importa el fitxer JSON descarregat.",
"exportCodes": "Exporta codis",
"importLabel": "Importa",
"importInstruction": "Si us plau, selecciona un fitxer que contingui una llista dels teus codis en el següent format",
"importCodeDelimiterInfo": "Els codis poden estar separats per una coma o una nova línia",
"selectFile": "Selecciona fitxer",
"emailVerificationToggle": "Verificació de correu electrònic",
"emailVerificationEnableWarning": "Per evitar quedar bloquejat fora del teu compte, assegura't de desar una còpia del teu correu electrònic 2FA fora d'Ente Auth abans d'habilitar la verificació per correu.",
"authToChangeEmailVerificationSetting": "Si us plau, autentica't per canviar la configuració de verificació per correu electrònic",
"authenticateGeneric": "Si us plau, autentica't",
"authToViewYourRecoveryKey": "Si us plau, autentica't per veure la teva clau de recuperació",
"authToChangeYourEmail": "Si us plau, autentica't per canviar el teu correu electrònic",
"authToChangeYourPassword": "Si us plau, autentica't per canviar la teva contrasenya",
"authToViewSecrets": "Si us plau, autentica't per veure els teus secrets",
"authToInitiateSignIn": "Si us plau, autentica't per iniciar la sessió per a la còpia de seguretat.",
"ok": "D'acord",
"cancel": "Cancel·la",
"yes": "Sí",
"no": "No",
"email": "Correu electrònic",
"support": "Suport",
"general": "General",
"settings": "Configuració",
"copied": "Copiat",
"pleaseTryAgain": "Si us plau, intenta-ho de nou",
"existingUser": "Usuari existent",
"newUser": "Nou a Ente",
"delete": "Elimina",
"enterYourPasswordHint": "Introdueix la teva contrasenya",
"forgotPassword": "Has oblidat la contrasenya",
"oops": "Ups",
"suggestFeatures": "Suggerir funcions",
"faq": "FAQ",
"somethingWentWrongMessage": "Alguna cosa ha anat malament, si us plau intenta-ho de nou",
"leaveFamily": "Deixa la família",
"leaveFamilyMessage": "Segur que vols deixar el pla familiar?",
"inFamilyPlanMessage": "Estàs en un pla familiar!",
"hintForMobile": "Mantingues pressionat un codi per editar o eliminar.",
"hintForDesktop": "Clic dret sobre un codi per editar o eliminar.",
"scan": "Escaneja",
"scanACode": "Escaneja un codi",
"verify": "Verifica",
"verifyEmail": "Verifica el correu electrònic",
"enterCodeHint": "Introdueix el codi de 6 dígits de\nl'aplicació d'autenticació",
"lostDeviceTitle": "Dispositiu perdut?",
"twoFactorAuthTitle": "Autenticació de dos factors",
"passkeyAuthTitle": "Verificació per passkey",
"verifyPasskey": "Verifica la passkey",
"recoverAccount": "Recupera el compte",
"enterRecoveryKeyHint": "Introdueix la teva clau de recuperació",
"recover": "Recupera",
"contactSupportViaEmailMessage": "Si us plau, envia un correu a {email} des del teu correu registrat",
"@contactSupportViaEmailMessage": {
"placeholders": {
"email": {
"type": "String"
}
}
},
"invalidQRCode": "Codi QR invàlid",
"noRecoveryKeyTitle": "No tens clau de recuperació?",
"enterEmailHint": "Introdueix la teva adreça de correu electrònic",
"invalidEmailTitle": "Adreça de correu electrònic no vàlida",
"invalidEmailMessage": "Si us plau, introdueix una adreça de correu electrònic vàlida.",
"deleteAccount": "Elimina el compte",
"deleteAccountQuery": "Ens sabrà greu veure't marxar. Tens algun problema?",
"yesSendFeedbackAction": "Sí, envia comentaris",
"noDeleteAccountAction": "No, elimina el compte",
"initiateAccountDeleteTitle": "Si us plau, autentica't per iniciar l'eliminació del compte",
"sendEmail": "Envia correu electrònic",
"createNewAccount": "Crea un nou compte",
"weakStrength": "Feble",
"strongStrength": "Forta",
"moderateStrength": "Moderada",
"confirmPassword": "Confirma la contrasenya",
"close": "Tanca",
"oopsSomethingWentWrong": "Ups, alguna cosa ha anat malament.",
"selectLanguage": "Selecciona l'idioma",
"language": "Idioma",
"social": "Social",
"security": "Seguretat",
"lockscreen": "Pantalla de bloqueig",
"authToChangeLockscreenSetting": "Si us plau, autentica't per canviar la configuració de la pantalla de bloqueig",
"deviceLockEnablePreSteps": "Per habilitar el bloqueig de dispositiu, configura un codi o bloqueig de pantalla en la configuració del sistema.",
"viewActiveSessions": "Veure sessions actives",
"authToViewYourActiveSessions": "Si us plau, autentica't per veure les teves sessions actives",
"searchHint": "Cerca...",
"search": "Cerca",
"sorryUnableToGenCode": "Ho sentim, no podem generar un codi per a {issuerName}",
"noResult": "Sense resultat",
"addCode": "Afegeix codi",
"scanAQrCode": "Escaneja un codi QR",
"enterDetailsManually": "Introdueix els detalls manualment",
"edit": "Edita",
"share": "Comparteix",
"shareCodes": "Comparteix codis",
"shareCodesDuration": "Selecciona la durada per a la qual vols compartir els codis.",
"restore": "Restaura",
"copiedToClipboard": "Copiat al porta-retalls",
"copiedNextToClipboard": "El següent codi s'ha copiat al porta-retalls",
"error": "Error",
"recoveryKeyCopiedToClipboard": "La clau de recuperació s'ha copiat al porta-retalls",
"recoveryKeyOnForgotPassword": "Si oblides la teva contrasenya, l'única manera de recuperar les teves dades és amb aquesta clau.",
"recoveryKeySaveDescription": "No guardem aquesta clau, si us plau, guarda aquesta clau de 24 paraules en un lloc segur.",
"doThisLater": "Fes-ho més tard",
"saveKey": "Guarda la clau",
"save": "Guarda",
"send": "Envia",
"saveOrSendDescription": "Vols guardar-ho al teu emmagatzematge (per defecte, a la carpeta Descàrregues) o enviar-ho a altres aplicacions?",
"saveOnlyDescription": "Vols guardar-ho al teu emmagatzematge (per defecte, a la carpeta Descàrregues)?",
"back": "Enrere",
"createAccount": "Crea un compte",
"passwordStrength": "Força de la contrasenya: {passwordStrengthValue}",
"@passwordStrength": {
"description": "Text to indicate the password strength",
"placeholders": {
"passwordStrengthValue": {
"description": "The strength of the password as a string",
"type": "String",
"example": "Weak or Moderate or Strong"
}
},
"message": "Password Strength: {passwordStrengthText}"
},
"password": "Contrasenya",
"signUpTerms": "Estic d'acord amb els <u-terms>termes del servei</u-terms> i la <u-policy>política de privacitat</u-policy>",
"privacyPolicyTitle": "Política de privacitat",
"termsOfServicesTitle": "Termes",
"encryption": "Xifratge",
"setPasswordTitle": "Configura la contrasenya",
"changePasswordTitle": "Canvia la contrasenya",
"resetPasswordTitle": "Restableix la contrasenya",
"encryptionKeys": "Claus de xifratge",
"passwordWarning": "No guardem aquesta contrasenya, per tant, si l'oblides, <underline>no podrem desxifrar les teves dades</underline>",
"enterPasswordToEncrypt": "Introdueix una contrasenya que puguem utilitzar per xifrar les teves dades",
"enterNewPasswordToEncrypt": "Introdueix una nova contrasenya que puguem utilitzar per xifrar les teves dades",
"passwordChangedSuccessfully": "La contrasenya s'ha canviat amb èxit",
"generatingEncryptionKeys": "Generant claus de xifratge...",
"continueLabel": "Continua",
"insecureDevice": "Dispositiu no segur",
"sorryWeCouldNotGenerateSecureKeysOnThisDevicennplease": "Ho sentim, no hem pogut generar claus segures en aquest dispositiu.\n\nSi us plau, registra't des d'un altre dispositiu.",
"howItWorks": "Com funciona",
"ackPasswordLostWarning": "Entenc que si perdo la meva contrasenya, puc perdre les meves dades ja que les meves dades estan <underline>xifrades d'extrem a extrem</underline>.",
"loginTerms": "En fer clic a iniciar sessió, estic d'acord amb els <u-terms>termes del servei</u-terms> i la <u-policy>política de privacitat</u-policy>",
"logInLabel": "Inicia sessió",
"logout": "Tanca la sessió",
"areYouSureYouWantToLogout": "Segur que vols tancar la sessió?",
"yesLogout": "Sí, tanca la sessió",
"exit": "Surt",
"verifyingRecoveryKey": "Verificant clau de recuperació...",
"recoveryKeyVerified": "Clau de recuperació verificada",
"recoveryKeySuccessBody": "Perfecte! La teva clau de recuperació és vàlida. Gràcies per verificar-ho.\n\nSi us plau, recorda mantenir una còpia de seguretat de la teva clau de recuperació en un lloc segur.",
"invalidRecoveryKey": "La clau de recuperació que has introduït no és vàlida. Assegura't que conté 24 paraules i verifica l'ortografia de cadascuna.\n\nSi has introduït un codi de recuperació antic, assegura't que tingui 64 caràcters i comprova cadascun.",
"recreatePasswordTitle": "Recrea la contrasenya",
"recreatePasswordBody": "El dispositiu actual no és prou potent per verificar la teva contrasenya, però podem regenerar-la d'una manera que funcioni amb tots els dispositius.\n\nSi us plau, inicia sessió utilitzant la teva clau de recuperació i regenera la teva contrasenya (pots tornar a utilitzar la mateixa si ho desitges).",
"invalidKey": "Clau no vàlida",
"tryAgain": "Intenta-ho de nou",
"viewRecoveryKey": "Veure clau de recuperació",
"confirmRecoveryKey": "Confirma la clau de recuperació",
"recoveryKeyVerifyReason": "La teva clau de recuperació és l'única manera de recuperar les teves fotos si oblides la teva contrasenya. Pots trobar la teva clau de recuperació a Configuració > Compte.\n\nIntrodueix aquí la teva clau de recuperació per verificar que l'has guardat correctament.",
"confirmYourRecoveryKey": "Confirma la teva clau de recuperació",
"confirm": "Confirma",
"emailYourLogs": "Envia els teus registres per correu",
"pleaseSendTheLogsTo": "Si us plau, envia els registres a \n{toEmail}",
"copyEmailAddress": "Copia l'adreça de correu",
"exportLogs": "Exporta els registres",
"enterYourRecoveryKey": "Introdueix la teva clau de recuperació",
"tempErrorContactSupportIfPersists": "Sembla que alguna cosa ha anat malament. Si us plau, torna-ho a intentar després d'un temps. Si l'error persisteix, contacta amb el nostre equip de suport.",
"networkHostLookUpErr": "No s'ha pogut connectar a Ente, si us plau, comprova la configuració de la xarxa i contacta amb suport si l'error persisteix.",
"networkConnectionRefusedErr": "No s'ha pogut connectar a Ente, si us plau, torna-ho a intentar després d'un temps. Si l'error persisteix, contacta amb suport.",
"itLooksLikeSomethingWentWrongPleaseRetryAfterSome": "Sembla que alguna cosa ha anat malament. Si us plau, torna-ho a intentar després d'un temps. Si l'error persisteix, contacta amb el nostre equip de suport.",
"about": "Sobre",
"weAreOpenSource": "Som de codi obert!",
"privacy": "Privacitat",
"terms": "Termes",
"checkForUpdates": "Comprova si hi ha actualitzacions",
"checkStatus": "Comprova l'estat",
"downloadUpdate": "Descarrega",
"criticalUpdateAvailable": "Actualització crítica disponible",
"updateAvailable": "Actualització disponible",
"update": "Actualitza",
"checking": "Comprovant...",
"youAreOnTheLatestVersion": "Estàs en la versió més recent",
"warning": "Advertència",
"exportWarningDesc": "El fitxer exportat conté informació sensible. Guarda-ho de manera segura.",
"iUnderStand": "Ho entenc",
"@iUnderStand": {
"description": "Text for the button to confirm the user understands the warning"
},
"authToExportCodes": "Si us plau, autentica't per exportar els teus codis",
"importSuccessTitle": "Visca!",
"importSuccessDesc": "Has importat {count} codis!",
"@importSuccessDesc": {
"placeholders": {
"count": {
"description": "The number of codes imported",
"type": "int",
"example": "1"
}
}
},
"sorry": "Ho sentim",
"importFailureDesc": "No s'ha pogut analitzar el fitxer seleccionat.\nEscriu a support@ente.io si necessites ajuda!",
"pendingSyncs": "Advertència",
"pendingSyncsWarningBody": "Alguns dels teus codis no s'han sincronitzat.\n\nSi us plau, assegura't de tenir una còpia de seguretat d'aquests codis abans de tancar la sessió.",
"checkInboxAndSpamFolder": "Comprova la teva safata d'entrada (i el correu no desitjat) per completar la verificació",
"tapToEnterCode": "Toca per introduir el codi",
"resendEmail": "Reenviar correu electrònic",
"weHaveSendEmailTo": "Hem enviat un correu a <green>{email}</green>",
"@weHaveSendEmailTo": {
"description": "Text to indicate that we have sent a mail to the user",
"placeholders": {
"email": {
"description": "The email address of the user",
"type": "String",
"example": "example@ente.io"
}
}
},
"activeSessions": "Sessions actives",
"somethingWentWrongPleaseTryAgain": "S'ha produït un error, si us plau, intenta-ho de nou",
"thisWillLogYouOutOfThisDevice": "Això tancarà la sessió en aquest dispositiu!",
"thisWillLogYouOutOfTheFollowingDevice": "Això tancarà la sessió en el següent dispositiu:",
"terminateSession": "Finalitzar sessió?",
"terminate": "Finalitzar",
"thisDevice": "Aquest dispositiu",
"toResetVerifyEmail": "Per restablir la teva contrasenya, si us plau verifica primer el teu correu electrònic.",
"thisEmailIsAlreadyInUse": "Aquest correu electrònic ja està en ús",
"verificationFailedPleaseTryAgain": "La verificació ha fallat, intenta-ho de nou",
"yourVerificationCodeHasExpired": "El teu codi de verificació ha expirat",
"incorrectCode": "Codi incorrecte",
"sorryTheCodeYouveEnteredIsIncorrect": "Ho sentim, el codi que has introduït és incorrecte",
"emailChangedTo": "Correu electrònic canviat a {newEmail}",
"authenticationFailedPleaseTryAgain": "Autenticació fallida, intenta-ho de nou",
"authenticationSuccessful": "Autenticació amb èxit!",
"twofactorAuthenticationSuccessfullyReset": "Autenticació de dos factors restablerta amb èxit",
"incorrectRecoveryKey": "Clau de recuperació incorrecta",
"theRecoveryKeyYouEnteredIsIncorrect": "La clau de recuperació que has introduït és incorrecta",
"enterPassword": "Introdueix la contrasenya",
"selectExportFormat": "Selecciona el format d'exportació",
"exportDialogDesc": "Les exportacions xifrades estaran protegides amb una contrasenya que triïs.",
"encrypted": "Xifrat",
"plainText": "Text pla",
"passwordToEncryptExport": "Contrasenya per xifrar l'exportació",
"export": "Exporta",
"useOffline": "Usa sense còpies de seguretat",
"signInToBackup": "Inicia sessió per fer una còpia de seguretat dels teus codis",
"singIn": "Inicia sessió",
"sigInBackupReminder": "Exporta els teus codis per assegurar que tens una còpia de seguretat des de la que els pots restaurar.",
"offlineModeWarning": "Has triat procedir sense còpies de seguretat. Realitza còpies manuals per garantir la seguretat dels teus codis.",
"showLargeIcons": "Mostra icones grans",
"compactMode": "Mode compacte",
"shouldHideCode": "Amaga els codis",
"doubleTapToViewHiddenCode": "Pots tocar dues vegades en una entrada per veure el codi",
"focusOnSearchBar": "Enfoca la barra de cerca en iniciar l'app",
"confirmUpdatingkey": "Estàs segur que vols actualitzar la clau secreta?",
"minimizeAppOnCopy": "Minimitza l'app en copiar",
"editCodeAuthMessage": "Autentica't per editar el codi",
"deleteCodeAuthMessage": "Autentica't per eliminar el codi",
"showQRAuthMessage": "Autentica't per mostrar el codi QR",
"confirmAccountDeleteTitle": "Confirma la supressió del compte",
"confirmAccountDeleteMessage": "Aquest compte està vinculat a altres apps d'Ente, si en fas ús.\n\nLes dades pujades, a través de totes les apps d'Ente, es programaran per a la supressió, i el teu compte s'eliminarà permanentment.",
"androidBiometricHint": "Verifica la identitat",
"@androidBiometricHint": {
"description": "Hint message advising the user how to authenticate with biometrics. It is used on Android side. Maximum 60 characters."
},
"androidBiometricNotRecognized": "No reconegut. Torna-ho a provar.",
"@androidBiometricNotRecognized": {
"description": "Message to let the user know that authentication was failed. It is used on Android side. Maximum 60 characters."
},
"androidBiometricSuccess": "Correcte",
"@androidBiometricSuccess": {
"description": "Message to let the user know that authentication was successful. It is used on Android side. Maximum 60 characters."
},
"androidCancelButton": "Cancel·la",
"@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."
},
"androidSignInTitle": "Es requereix autenticació",
"@androidSignInTitle": {
"description": "Message showed as a title in a dialog which indicates the user that they need to scan biometric to continue. It is used on Android side. Maximum 60 characters."
},
"androidBiometricRequiredTitle": "Biometria necessària",
"@androidBiometricRequiredTitle": {
"description": "Message showed as a title in a dialog which indicates the user has not set up biometric authentication on their device. It is used on Android side. Maximum 60 characters."
},
"androidDeviceCredentialsRequiredTitle": "Credencials del dispositiu requerides",
"@androidDeviceCredentialsRequiredTitle": {
"description": "Message showed as a title in a dialog which indicates the user has not set up credentials authentication on their device. It is used on Android side. Maximum 60 characters."
},
"androidDeviceCredentialsSetupDescription": "Es requereixen credencials del dispositiu",
"@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": "Ves a configuració",
"@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."
},
"androidGoToSettingsDescription": "L'autenticació biomètrica no està configurada al teu dispositiu. Ves a 'Configuració > Seguretat' per afegir autenticació biomètrica.",
"@androidGoToSettingsDescription": {
"description": "Message advising the user to go to the settings and configure biometric on their device. It shows in a dialog on Android side."
},
"iOSLockOut": "L'autenticació biomètrica està desactivada. Bloqueja i desbloqueja la pantalla per activar-la.",
"@iOSLockOut": {
"description": "Message advising the user to re-enable biometrics on their device. It shows in a dialog on iOS side."
},
"iOSGoToSettingsDescription": "L'autenticació biomètrica no està configurada al teu dispositiu. Activa Touch ID o Face ID al teu telèfon.",
"@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": "D'acord",
"@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."
},
"noInternetConnection": "Sense connexió a Internet",
"pleaseCheckYourInternetConnectionAndTryAgain": "Comprova la connexió a Internet i torna-ho a intentar.",
"signOutFromOtherDevices": "Tanca sessió en altres dispositius",
"signOutOtherBody": "Si creus que algú pot saber la teva contrasenya, pots forçar tots els altres dispositius que usen el teu compte a tancar sessió.",
"signOutOtherDevices": "Tancar sessió en altres dispositius",
"doNotSignOut": "No tancar sessió",
"hearUsWhereTitle": "Com vas conèixer Ente? (opcional)",
"hearUsExplanation": "No fem seguiment de les instal·lacions de l'app. Ens ajudaria saber on ens has trobat!",
"recoveryKeySaved": "Clau de recuperació guardada a la carpeta Descàrregues!",
"waitingForBrowserRequest": "Esperant sol·licitud del navegador...",
"waitingForVerification": "Esperant verificació...",
"passkey": "Passkey",
"passKeyPendingVerification": "La verificació encara està pendent",
"loginSessionExpired": "Sessió caducada",
"loginSessionExpiredDetails": "La teva sessió ha caducat. Torna a iniciar sessió.",
"developerSettingsWarning": "Estàs segur que vols modificar la configuració de desenvolupador?",
"developerSettings": "Configuració de desenvolupador",
"serverEndpoint": "Endpoint del servidor",
"invalidEndpoint": "Endpoint no vàlid",
"invalidEndpointMessage": "Ho sentim, l'endpoint que has introduït no és vàlid. Introdueix un endpoint vàlid i torna-ho a intentar.",
"endpointUpdatedMessage": "Extrem actualitzat correctament",
"customEndpoint": "Connectat a {endpoint}",
"pinText": "Fixa",
"unpinText": "Desfixa",
"pinnedCodeMessage": "{code} fixat",
"unpinnedCodeMessage": "{code} deixat de fixar",
"tags": "Etiquetes",
"createNewTag": "Crea una nova etiqueta",
"tag": "Etiqueta",
"create": "Crear",
"editTag": "Editar etiqueta",
"deleteTagTitle": "Eliminar etiqueta?",
"deleteTagMessage": "Estàs segur que vols eliminar aquesta etiqueta? Aquesta acció és irreversible.",
"somethingWentWrongParsingCode": "No hem pogut analitzar {x} codis.",
"updateNotAvailable": "Actualització no disponible",
"viewRawCodes": "Veure codis en brut",
"rawCodes": "Codis en brut",
"rawCodeData": "Dades del codi en brut",
"appLock": "Bloqueig de l'aplicació",
"noSystemLockFound": "No s'ha trobat cap bloqueig del sistema",
"toEnableAppLockPleaseSetupDevicePasscodeOrScreen": "Per habilitar el bloqueig de l'aplicació, configura un codi o bloqueig de pantalla en la configuració del sistema.",
"autoLock": "Bloqueig automàtic",
"immediately": "Immediatament",
"reEnterPassword": "Torna a introduir la contrasenya",
"reEnterPin": "Torna a introduir el PIN",
"next": "Següent",
"tooManyIncorrectAttempts": "Massa intents incorrectes",
"tapToUnlock": "Toca per desbloquejar",
"setNewPassword": "Estableix una nova contrasenya",
"deviceLock": "Bloqueig del dispositiu",
"hideContent": "Amaga el contingut",
"hideContentDescriptionAndroid": "Amaga el contingut d'aquesta app en el commutador d'apps del sistema i desactiva les captures de pantalla",
"hideContentDescriptioniOS": "Amaga el contingut d'aquesta app en el commutador d'apps del sistema",
"autoLockFeatureDescription": "Temps després del qual l'app es bloqueja quan es posa en segon pla",
"appLockDescription": "Tria entre el bloqueig predeterminat del dispositiu o un bloqueig personalitzat amb PIN o contrasenya.",
"pinLock": "Bloqueig amb PIN",
"enterPin": "Introdueix el PIN",
"setNewPin": "Estableix un nou PIN",
"importFailureDescNew": "No s'ha pogut analitzar el fitxer seleccionat.",
"appLockNotEnabled": "Bloqueig de l'aplicació no habilitat",
"appLockNotEnabledDescription": "Si us plau, habilita el bloqueig de l'aplicació a Seguretat > Bloqueig de l'aplicació",
"authToViewPasskey": "Autentica't per veure la passkey",
"appLockOfflineModeWarning": "Has triat procedir sense còpies de seguretat. Si oblides el bloqueig de l'aplicació, no podràs accedir a les teves dades."
}

View File

@@ -17,6 +17,8 @@
"pleaseVerifyDetails": "Vahvista tietosi ja yritä uudelleen",
"codeIssuerHint": "Myöntäjä",
"codeSecretKeyHint": "Salainen avain",
"all": "Kaikki",
"notes": "Muistiinpanot",
"codeAccountHint": "Tili (sinun@jokinosoite.com)",
"accountKeyType": "Avaimen tyyppi",
"sessionExpired": "Istunto on vanheutunut",
@@ -31,6 +33,7 @@
"nextTotpTitle": "seuraava",
"deleteCodeTitle": "Poista koodi?",
"deleteCodeMessage": "Haluatko varmasti poistaa tämän koodin? Toimintoa ei voi peruuttaa.",
"trash": "Roskakori",
"viewLogsAction": "Näytä lokikirjaukset",
"sendLogsDescription": "Tämä toiminto lähettää lokin kirjaukset eteenpäin jotta saisimme apua ongelmasi ratkaisemiseen. Vaikkakin käytäntömme on olla kirjaamatta mitään arkaluontoista tietoa, suosittelemme että tarkistat nämä tiedot ennen niiden jakamista.",
"preparingLogsTitle": "Valmistellaan lokikirjaukset...",
@@ -71,9 +74,11 @@
"supportDiscount": "Käytä kuponkikoodia \"AUTH\" saadaksesi 10% alennuksen ensimmäisestä vuodesta",
"changeEmail": "vaihda sähköpostiosoitteesi",
"changePassword": "Vaihda salasana",
"data": "Tiedot",
"importCodes": "Tuo koodit",
"importTypePlainText": "Pelkkä teksti",
"importTypeEnteEncrypted": "Ente salattu vienti",
"passwordForDecryptingExport": "Salasana salauksen purkamiseksi",
"importSelectJsonFile": "Valitse JSON-tiedosto",
"exportCodes": "Vie koodit",
"importLabel": "Tuo",
@@ -149,6 +154,8 @@
"addCode": "Lisää koodi",
"enterDetailsManually": "Syötä tiedot manuaalisesti",
"edit": "Muokkaa",
"share": "Jaa",
"restore": "Palauta",
"copiedToClipboard": "Kopioitu leikepöydälle",
"copiedNextToClipboard": "Seuraava koodi kopioitu leikepöydälle",
"error": "Virhe",

View File

@@ -99,32 +99,84 @@
"passwordForDecryptingExport": "Kata sandi untuk mendekripsi ekspor",
"passwordEmptyError": "Kata sandi tidak boleh kosong",
"importFromApp": "Impor kode dari {appName}",
"importGoogleAuthGuide": "Ekspor semua akunmu dari Google Authenticator ke kode QR menggunakan pilihan \"Transfer Akun\". Lalu, pindai kode QR tersebut menggunakan perangkat lain.\n\nKiat: Kamu juga dapat menggunakan webcam laptop untuk memindai kode QR.",
"importSelectJsonFile": "Pilih File JSON",
"importSelectAppExport": "Pilih file ekspor dari {appName}",
"importEnteEncGuide": "Pilih file enkripsi JSON yang telah diekspor dari Ente",
"importRaivoGuide": "Gunakan opsi \"Export OTPs to Zip archive\" pada pengaturan Raivo.\n\nEkstrak file zip dan impor file JSON tersebut.",
"importBitwardenGuide": "Gunakan opsi \"Export vault\" didalam fitur Bitwarden Tools dan impor file JSON yang tidak terenkripsi.",
"importAegisGuide": "Gunakan opsi \"Export vault\" didalam fitur Bitwarden Tools dan impor file JSON yang tidak terenkripsi.",
"exportCodes": "Ekspor kode",
"importLabel": "Impor",
"selectFile": "Pilih file",
"emailVerificationToggle": "Verifikasi email",
"emailVerificationEnableWarning": "Untuk menghindari akun kamu terkunci, pastikan untuk menyimpan salinan 2FA email kamu di luar Ente Auth sebelum mengaktifkan verifikasi email.",
"authToChangeEmailVerificationSetting": "Harap autentikasikan untuk mengubah verifikasi email",
"authenticateGeneric": "Harap autentikasikan",
"authToViewYourRecoveryKey": "Harap autentikasikan untuk melihat kunci pemulihan",
"authToChangeYourEmail": "Harap autentikasikan untuk mengubah surel",
"authToChangeYourPassword": "Harap autentikasikan untuk mengubah kata sandi",
"authToViewSecrets": "Harap autentikasikan untuk melihat rahasia",
"authToInitiateSignIn": "Harap autentikasikan untuk memulai proses pencadangan.",
"ok": "Oke",
"cancel": "Batal",
"yes": "Ya",
"no": "Tidak",
"email": "Email",
"support": "Dukungan",
"general": "Umum",
"settings": "Pengaturan",
"copied": "Disalin",
"pleaseTryAgain": "Harap coba lagi",
"existingUser": "Pengguna yang Sudah Ada",
"newUser": "Baru di Ente",
"delete": "Hapus",
"enterYourPasswordHint": "Masukkan sandi kamu",
"forgotPassword": "Lupa kata sandi",
"oops": "Aduh",
"suggestFeatures": "Sarankan fitur",
"faq": "Tanya Jawab Umum",
"somethingWentWrongMessage": "Terjadi kesalahan, silakan coba lagi",
"leaveFamily": "Tinggalkan keluarga",
"leaveFamilyMessage": "Apakah kamu yakin ingin meninggalkan paket keluarga ini?",
"inFamilyPlanMessage": "Kamu menggunakan paket keluarga!",
"hintForMobile": "Tekan lama kode untuk menyunting atau menghapus.",
"hintForDesktop": "Klik kanan kode untuk menyunting atau menghapus.",
"scan": "Pindai",
"scanACode": "Pindai kode",
"verify": "Verifikasi",
"verifyEmail": "Verifikasi email",
"enterCodeHint": "Masukkan kode 6 angka dari\napp autentikator kamu",
"lostDeviceTitle": "Perangkat hilang?",
"twoFactorAuthTitle": "Autentikasi dua langkah",
"passkeyAuthTitle": "Verifikasi passkey",
"verifyPasskey": "Verifikasi passkey",
"recoverAccount": "Pulihkan akun",
"enterRecoveryKeyHint": "Masukkan kunci pemulihanmu",
"recover": "Pulihkan",
"contactSupportViaEmailMessage": "Silakan kirimkan surel ke {email} dari alamat surelmu yang terdaftar",
"@contactSupportViaEmailMessage": {
"placeholders": {
"email": {
"type": "String"
}
}
},
"invalidQRCode": "Kode QR tidak sah",
"noRecoveryKeyTitle": "Tidak punya kunci pemulihan?",
"enterEmailHint": "Masukkan alamat surelmu",
"invalidEmailTitle": "Alamat surel tidak sah",
"invalidEmailMessage": "Harap masukkan alamat surel yang sah.",
"deleteAccount": "Hapus akun",
"deleteAccountQuery": "Maaf kamu harus pergi. Apakah kamu mengalami masalah?",
"yesSendFeedbackAction": "Ya, kirim umpan balik",
"noDeleteAccountAction": "Tidak, hapus akun",
"initiateAccountDeleteTitle": "Harap autentikasi untuk memulai penghapusan akun",
"sendEmail": "Kirim surel",
"createNewAccount": "Buat akun baru",
"weakStrength": "Lemah",
"strongStrength": "Kuat",
"moderateStrength": "Sedang",
"confirmPassword": "Konfirmasi sandi",
"selectLanguage": "Pilih bahasa",
"language": "Bahasa",
@@ -135,8 +187,17 @@
"createAccount": "Buat akun",
"password": "Sandi",
"signUpTerms": "Saya menyetujui <u-terms>ketentuan layanan</u-terms> dan <u-policy>kebijakan privasi</u-policy> Ente",
"sorryWeCouldNotGenerateSecureKeysOnThisDevicennplease": "Maaf, kami tidak dapat menghasilkan kunci yang aman di perangkat ini.\n\nHarap mendaftar dengan perangkat lain.",
"howItWorks": "Cara kerjanya",
"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",
"logInLabel": "Masuk akun",
"logout": "Keluar akun",
"areYouSureYouWantToLogout": "Apakah kamu yakin ingin keluar akun?",
"yesLogout": "Ya, keluar",
"exit": "Keluar",
"verifyingRecoveryKey": "Memverifikasi kunci pemulihan...",
"recoveryKeyVerified": "Kunci pemulihan terverifikasi",
"warning": "Peringatan",
"androidCancelButton": "Batal",
"@androidCancelButton": {

View File

@@ -8,17 +8,17 @@
},
"onBoardingBody": "Saugiai kurkite atsargines 2FA kodų kopijas",
"onBoardingGetStarted": "Pradėti",
"setupFirstAccount": "Nustatyti pirmąją paskyrą",
"setupFirstAccount": "Nustatykite savo pirmąją paskyrą",
"importScanQrCode": "Skenuoti QR kodą",
"qrCode": "QR kodas",
"importEnterSetupKey": "Įveskite sąrankos raktą",
"importAccountPageTitle": "Įveskite paskyros duomenis",
"importEnterSetupKey": "Įvesti sąrankos raktą",
"importAccountPageTitle": "Įvesti paskyros duomenis",
"secretCanNotBeEmpty": "Paslaptis negali būti tuščia.",
"bothIssuerAndAccountCanNotBeEmpty": "Tiek išdavėjas ir paskyra negali būti tušti.",
"incorrectDetails": "Neteisingi duomenys",
"pleaseVerifyDetails": "Patikrinkite duomenis ir bandykite dar kartą.",
"codeIssuerHint": "Išdavėjas",
"codeSecretKeyHint": "Slaptas raktas",
"codeSecretKeyHint": "Slaptasis raktas",
"secret": "Paslaptis",
"all": "Viskas",
"notes": "Pastabos",
@@ -50,7 +50,7 @@
"deleteCodeMessage": "Ar tikrai norite ištrinti šį kodą? Šis veiksmas negrįžtamas.",
"trashCode": "Ištuštinti kodą?",
"trashCodeMessage": "Ar tikrai norite ištuštinti {account} kodą?",
"trash": "Šiukšlinė",
"trash": "Ištuštinti",
"viewLogsAction": "Peržiūrėti žurnalus",
"sendLogsDescription": "Tai nusiųs žurnalo įrašus, kurie padės mums išspręsti jūsų problemą. Nors imamės atsargumo priemonių, kad slaptos informacijos nebūtų įrašoma, raginame jus peržiūrėti šiuos žurnalus prieš bendrinant juos.",
"preparingLogsTitle": "Ruošiami žurnalai...",
@@ -66,7 +66,7 @@
"copyEmailAction": "Kopijuoti el. paštą",
"exportLogsAction": "Eksportuoti žurnalus",
"reportABug": "Pranešti apie riktą",
"crashAndErrorReporting": "Strigčių ir klaidų pranešimas",
"crashAndErrorReporting": "Pranešti apie strigčius ir klaidas",
"reportBug": "Pranešti apie riktą",
"emailUsMessage": "Siųskite el. laišką mums adresu {email}",
"@emailUsMessage": {
@@ -77,18 +77,18 @@
}
},
"contactSupport": "Susisiekti su palaikymo komanda",
"rateUsOnStore": "Vertinti mus parduotuvėje {storeName}",
"rateUsOnStore": "Vertinti mus parduotuvėje {storeName}",
"blog": "Tinklaraštis",
"merchandise": "Atributika",
"verifyPassword": "Patvirtinkite slaptažodį",
"pleaseWait": "Palaukite...",
"generatingEncryptionKeysTitle": "Generuojami šifravimo raktai...",
"recreatePassword": "Iš naujo sukurti slaptažodį",
"recreatePasswordMessage": "Dabartinis įrenginys nėra pakankamai galingas, kad patvirtintų jūsų slaptažodį, todėl turime jį vieną kartą regeneruoti taip, kad jis veiktų visuose įrenginiuose. \n\nPrisijunkite naudojant atkūrimo raktą ir regeneruokite slaptažodį (jei norite, galite vėl naudoti tą patį).",
"recreatePasswordMessage": "Dabartinis įrenginys nėra pakankamai galingas, kad patvirtintų jūsų slaptažodį, todėl turime jį vieną kartą iš naujo sugeneruoti taip, kad jis veiktų visuose įrenginiuose. \n\nPrisijunkite naudodami atkūrimo raktą ir sugeneruokite iš naujo slaptažodį (jei norite, galite vėl naudoti tą patį).",
"useRecoveryKey": "Naudoti atkūrimo raktą",
"incorrectPasswordTitle": "Neteisingas slaptažodis.",
"welcomeBack": "Sveiki sugrįžę!",
"madeWithLoveAtPrefix": "sukurta su ❤️ ",
"madeWithLoveAtPrefix": "sukurta su ❤️ vietoje ",
"supportDevs": "Prenumeruokite <bold-green>„ente“</bold-green>, kad palaikytumėte mus",
"supportDiscount": "Naudokite kupono kodą „AUTH“, kad gautumėte 10 % nuolaida pirmiesiems metams",
"changeEmail": "Keisti el. paštą",
@@ -100,14 +100,14 @@
"passwordForDecryptingExport": "Slaptažodis eksportui iššifruoti",
"passwordEmptyError": "Slaptažodis negali būti tuščias.",
"importFromApp": "Importuoti kodus iš „{appName}“",
"importGoogleAuthGuide": "Eksportuokite paskyras iš „Google Authenticator“ į QR kodą naudojant parinktį Perkelti paskyras. Tada naudojant kitą įrenginį nuskenuokite QR kodą.\n\nPatarimas: QR kodą galite nufotografuoti naudojant nešiojamojo kompiuterio internetinę vaizdo kamerą.",
"importGoogleAuthGuide": "Eksportuokite paskyras iš „Google Authenticator“ į QR kodą naudodami parinktį Perkelti paskyras. Tada naudojant kitą įrenginį nuskenuokite QR kodą.\n\nPatarimas: QR kodą galite nufotografuoti naudojant nešiojamojo kompiuterio internetinę vaizdo kamerą.",
"importSelectJsonFile": "Pasirinkti JSON failą",
"importSelectAppExport": "Pasirinkti „{appName}“ eksporto failą",
"importEnteEncGuide": "Pasirinkite užšifruotą JSON failą, eksportuotą iš „Ente“",
"importRaivoGuide": "Naudokite „Raivo“ nustatymuose esančią parinktį „Export OTPs to Zip archive“ (eksportuoti OTP į ZIP archyvą).\n\nIšskleiskite ZIP failą ir importuokite JSON failą.",
"importBitwardenGuide": "Naudokite „Bitwarden“ įrankiuose esančią parinktį Eksportuoti saugyklą ir importuokite nešifruotą JSON failą.",
"importAegisGuide": "Naudokite „Aegis“ nustatymuose esančią parinktį Eksportuoti slėptuvę.\n\nJei jūsų saugykla yra užšifruota, turėsite įvesti saugyklos slaptažodį, kad iššifruotumėte saugyklą.",
"import2FasGuide": "Naudokite 2FAS parinktį „Settings->2FAS Backup->Export to file“.\n\nJei atsarginė kopija užšifruota, turėsite įvesti slaptažodį, kad iššifruotumėte atsarginę kopiją.",
"importBitwardenGuide": "Naudokite „Bitwarden“ įrankiuose esančią parinktį Eksportuoti saugyklą ir importuokite nešifruotą JSON failą.",
"importAegisGuide": "Naudokite „Aegis“ nustatymuose esančią parinktį Eksportuoti slėptuvę.\n\nJei jūsų saugykla užšifruota, turėsite įvesti saugyklos slaptažodį, kad iššifruotumėte saugyklą.",
"import2FasGuide": "Naudokite programoje 2FAS esančią parinktį „Settings->2FAS Backup->Export to file“.\n\nJei atsarginė kopija užšifruota, turėsite įvesti slaptažodį, kad iššifruotumėte atsarginę kopiją.",
"importLastpassGuide": "Naudokite „Lastpass Authenticator“ nustatymuose esančią parinktį „Transfer accounts“ (perkelti paskyras) ir paspauskite „Export accounts to file“ (eksportuoti paskyras į failą). Importuokite atsisiųstą JSON failą.",
"exportCodes": "Eksportuoti kodus",
"importLabel": "Importuoti",
@@ -122,7 +122,7 @@
"authToChangeYourEmail": "Nustatykite tapatybę, kad pakeistumėte savo el. paštą",
"authToChangeYourPassword": "Nustatykite tapatybę, kad pakeistumėte slaptažodį",
"authToViewSecrets": "Nustatykite tapatybę, kad peržiūrėtumėte savo paslaptis",
"authToInitiateSignIn": "Nustatykite tapatybę, kad pradėtumėte prisijungti prie atsarginės kopijos.",
"authToInitiateSignIn": "Nustatykite tapatybę, kad pradėtumėte prisijungti norint kurti atsargines kopijas.",
"ok": "Gerai",
"cancel": "Atšaukti",
"yes": "Taip",
@@ -134,7 +134,7 @@
"copied": "Nukopijuota",
"pleaseTryAgain": "Bandykite dar kartą.",
"existingUser": "Esamas naudotojas",
"newUser": "Naujas platformoje „Ente“",
"newUser": "Naujas sistemoje „Ente“",
"delete": "Ištrinti",
"enterYourPasswordHint": "Įveskite savo slaptažodį",
"forgotPassword": "Pamiršau slaptažodį",
@@ -148,7 +148,7 @@
"hintForMobile": "Ilgai paspauskite kodą, kad jį redaguotumėte arba pašalintumėte.",
"hintForDesktop": "Dešiniuoju pelės mygtuku spustelėkite kodą, kad jį redaguotumėte arba pašalintumėte.",
"scan": "Skenuoti",
"scanACode": "Skenuoti kodą",
"scanACode": "Skenuokite kodą",
"verify": "Patvirtinti",
"verifyEmail": "Patvirtinti el. paštą",
"enterCodeHint": "Įveskite 6 skaitmenų kodą\niš autentifikatoriaus programos",
@@ -170,17 +170,19 @@
"invalidQRCode": "Netinkamas QR kodas.",
"noRecoveryKeyTitle": "Neturite atkūrimo rakto?",
"enterEmailHint": "Įveskite savo el. pašto adresą",
"invalidEmailTitle": "Netinkamas el. pašto adresas.",
"invalidEmailTitle": "Netinkamas el. pašto adresas",
"invalidEmailMessage": "Įveskite tinkamą el. pašto adresą.",
"deleteAccount": "Ištrinti paskyrą",
"deleteAccountQuery": "Apgailestausime, kad išeinate. Ar susiduriate su kažkokiomis problemomis?",
"yesSendFeedbackAction": "Taip, siųsti atsiliepimą",
"noDeleteAccountAction": "Ne, ištrinti paskyrą",
"initiateAccountDeleteTitle": "Nustatykite tapatybę, kad pradėtumėte paskyros ištrynimą",
"sendEmail": "Siųsti el. laišką",
"createNewAccount": "Kurti naują paskyrą",
"weakStrength": "Silpna",
"strongStrength": "Stipri",
"moderateStrength": "Vidutinė",
"confirmPassword": "Patvirtinkite slaptažodį",
"close": "Uždaryti",
"oopsSomethingWentWrong": "Ups, kažkas nutiko ne taip.",
"selectLanguage": "Pasirinkite kalbą",
@@ -190,20 +192,93 @@
"lockscreen": "Ekrano užraktas",
"authToChangeLockscreenSetting": "Nustatykite tapatybę, kad pakeistumėte užrakinto ekrano nustatymą",
"deviceLockEnablePreSteps": "Kad įjungtumėte įrenginio užraktą, sistemos nustatymuose nustatykite įrenginio prieigos kodą arba ekrano užraktą.",
"viewActiveSessions": "Peržiūrėti aktyvius seansus",
"authToViewYourActiveSessions": "Nustatykite tapatybę, kad peržiūrėtumėte savo aktyvius seansus",
"searchHint": "Ieškokite...",
"search": "Paieška",
"sorryUnableToGenCode": "Atsiprašome, nepavyksta sugeneruoti {issuerName} kodo.",
"noResult": "Nėra rezultatų",
"addCode": "Pridėti kodą",
"scanAQrCode": "Skenuoti QR kodą",
"enterDetailsManually": "Įvesti duomenis rankiniu būdu",
"edit": "Redaguoti",
"share": "Bendrinti",
"shareCodes": "Bendrinti kodus",
"shareCodesDuration": "Pasirinkite trukmę, kuriai norite bendrinti kodus.",
"restore": "Atkurti",
"copiedToClipboard": "Nukopijuota į iškarpinę",
"copiedNextToClipboard": "Nukopijuotas sekantis kodas į iškarpinę",
"error": "Klaida",
"recoveryKeyCopiedToClipboard": "Nukopijuotas atkūrimo raktas į iškarpinę",
"recoveryKeyOnForgotPassword": "Jei pamiršote slaptažodį, vienintelis būdas atkurti duomenis naudoti šį raktą.",
"recoveryKeySaveDescription": "Šio rakto nesaugome, todėl išsaugokite šį 24 žodžių raktą saugioje vietoje.",
"doThisLater": "Daryti tai vėliau",
"saveKey": "Išsaugoti raktą",
"save": "Išsaugoti",
"send": "Siųsti",
"saveOrSendDescription": "Ar norite tai išsaugoti saugykloje (pagal numatytuosius nustatymus atsisiuntimų aplanke), ar siųsti į kitas programas?",
"saveOnlyDescription": "Ar norite tai išsaugoti savo saugykloje (pagal numatytuosius nustatymus atsisiuntimų aplanke)?",
"back": "Atgal",
"createAccount": "Kurti paskyrą",
"passwordStrength": "Slaptažodžio stiprumas: {passwordStrengthValue}",
"@passwordStrength": {
"description": "Text to indicate the password strength",
"placeholders": {
"passwordStrengthValue": {
"description": "The strength of the password as a string",
"type": "String",
"example": "Weak or Moderate or Strong"
}
},
"message": "Password Strength: {passwordStrengthText}"
},
"password": "Slaptažodis",
"signUpTerms": "Sutinku su <u-terms>paslaugų sąlygomis</u-terms> ir <u-policy> privatumo politika</u-policy>",
"privacyPolicyTitle": "Privatumo politika",
"termsOfServicesTitle": "Sąlygos",
"encryption": "Šifravimas",
"setPasswordTitle": "Nustatyti slaptažodį",
"changePasswordTitle": "Keisti slaptažodį",
"resetPasswordTitle": "Nustatyti slaptažodį iš naujo",
"encryptionKeys": "Šifravimo raktai",
"passwordWarning": "Šio slaptažodžio nesaugome, todėl jei jį pamiršite, <underline>negalėsime iššifruoti jūsų duomenų</underline>",
"enterPasswordToEncrypt": "Įveskite slaptažodį, kurį galime naudoti jūsų duomenims užšifruoti",
"enterNewPasswordToEncrypt": "Įveskite naują slaptažodį, kurį galime naudoti jūsų duomenims užšifruoti",
"passwordChangedSuccessfully": "Slaptažodis sėkmingai pakeistas",
"generatingEncryptionKeys": "Generuojami šifravimo raktai...",
"continueLabel": "Tęsti",
"insecureDevice": "Nesaugus įrenginys",
"sorryWeCouldNotGenerateSecureKeysOnThisDevicennplease": "Atsiprašome, šiame įrenginyje nepavyko sugeneruoti saugių raktų.\n\nRegistruokitės iš kito įrenginio.",
"howItWorks": "Kaip tai veikia",
"ackPasswordLostWarning": "Suprantu, kad jei prarasiu slaptažodį, galiu prarasti savo duomenis, kadangi duomenys yra <underline>visapusiškai užšifruota</underline>.",
"loginTerms": "Spustelėjus Prisijungti sutinku su <u-terms>paslaugų sąlygomis</u-terms> ir <u-policy> privatumo politika</u-policy>",
"logInLabel": "Prisijungti",
"logout": "Atsijungti",
"areYouSureYouWantToLogout": "Ar tikrai norite atsijungti?",
"yesLogout": "Taip, atsijungti",
"exit": "Išeiti",
"verifyingRecoveryKey": "Patvirtinima atkūrimo raktą...",
"recoveryKeyVerified": "Patvirtintas atkūrimo raktas",
"recoveryKeySuccessBody": "Puiku! Jūsų atkūrimo raktas tinkamas. Dėkojame už patvirtinimą.\n\nNepamirškite sukurti saugią atkūrimo rakto atsarginę kopiją.",
"invalidRecoveryKey": "Įvestas atkūrimo raktas yra netinkamas. Įsitikinkite, kad jame yra 24 žodžiai, ir patikrinkite kiekvieno iš jų rašybą.\n\nJei įvedėte senesnį atkūrimo kodą, įsitikinkite, kad jis yra 64 simbolių ilgio, ir patikrinkite kiekvieną iš jų.",
"recreatePasswordTitle": "Iš naujo sukurti slaptažodį",
"recreatePasswordBody": "Dabartinis įrenginys nėra pakankamai galingas, kad patvirtintų jūsų slaptažodį, bet mes galime iš naujo sugeneruoti taip, kad jis veiktų su visais įrenginiais.\n\nPrisijunkite naudodami atkūrimo raktą ir sugeneruokite iš naujo slaptažodį (jei norite, galite vėl naudoti tą patį).",
"invalidKey": "Netinkamas raktas.",
"tryAgain": "Bandyti dar kartą",
"viewRecoveryKey": "Peržiūrėti atkūrimo raktą",
"confirmRecoveryKey": "Patvirtinkite atkūrimo raktą",
"recoveryKeyVerifyReason": "Atkūrimo raktas vienintelis būdas atkurti nuotraukas, jei pamiršote slaptažodį. Atkūrimo raktą galite rasti Nustatymose > Paskyra.\n\nĮveskite savo atkūrimo raktą čia, kad patvirtintumėte, ar teisingai jį išsaugojote.",
"confirmYourRecoveryKey": "Patvirtinkite savo atkūrimo raktą",
"confirm": "Patvirtinti",
"emailYourLogs": "Atsiųskite žurnalus el. laišku",
"pleaseSendTheLogsTo": "Siųskite žurnalus adresu\n{toEmail}",
"copyEmailAddress": "Kopijuoti el. pašto adresą",
"exportLogs": "Eksportuoti žurnalus",
"enterYourRecoveryKey": "Įveskite atkūrimo raktą",
"tempErrorContactSupportIfPersists": "Atrodo, kad kažkas nutiko ne taip. Bandykite dar kartą po kurio laiko. Jei klaida tęsiasi, susisiekite su mūsų palaikymo komanda.",
"networkHostLookUpErr": "Nepavyksta prisijungti prie „Ente“. Patikrinkite tinklo nustatymus ir susisiekite su palaikymo komanda, jei klaida tęsiasi.",
"networkConnectionRefusedErr": "Nepavyksta prisijungti prie „Ente“. Bandykite dar kartą po kurio laiko. Jei klaida tęsiasi, susisiekite su palaikymo komanda.",
"itLooksLikeSomethingWentWrongPleaseRetryAfterSome": "Atrodo, kad kažkas nutiko ne taip. Bandykite dar kartą po kurio laiko. Jei klaida tęsiasi, susisiekite su mūsų palaikymo komanda.",
"about": "Apie",
"weAreOpenSource": "Esame atviro kodo!",
"privacy": "Privatumas",
@@ -224,7 +299,7 @@
},
"authToExportCodes": "Nustatykite tapatybę, kad eksportuotumėte savo kodus",
"importSuccessTitle": "Valio!",
"importSuccessDesc": "Importavote {count} kodų!",
"importSuccessDesc": "Importavote {count} kodų.",
"@importSuccessDesc": {
"placeholders": {
"count": {
@@ -241,7 +316,7 @@
"checkInboxAndSpamFolder": "Patikrinkite savo gautieją (ir šlamštą), kad užbaigtumėte patvirtinimą",
"tapToEnterCode": "Palieskite, kad įvestumėte kodą",
"resendEmail": "Iš naujo siųsti el. laišką",
"weHaveSendEmailTo": "Išsiuntėme laišką į <green>{email}</green>",
"weHaveSendEmailTo": "Išsiuntėme laišką adresu <green>{email}</green>",
"@weHaveSendEmailTo": {
"description": "Text to indicate that we have sent a mail to the user",
"placeholders": {
@@ -256,10 +331,117 @@
"somethingWentWrongPleaseTryAgain": "Kažkas nutiko ne taip. Bandykite dar kartą.",
"thisWillLogYouOutOfThisDevice": "Tai jus atjungs nuo šio įrenginio.",
"thisWillLogYouOutOfTheFollowingDevice": "Tai jus atjungs nuo toliau nurodyto įrenginio:",
"terminateSession": "Baigti seansą?",
"terminate": "Baigti",
"thisDevice": "Šis įrenginys",
"toResetVerifyEmail": "Kad iš naujo nustatytumėte slaptažodį, pirmiausia patvirtinkite savo el. paštą.",
"thisEmailIsAlreadyInUse": "Šis el. paštas jau naudojamas.",
"verificationFailedPleaseTryAgain": "Patvirtinimas nepavyko. Bandykite dar kartą.",
"yourVerificationCodeHasExpired": "Jūsų patvirtinimo kodo laikas nebegaliojantis.",
"incorrectCode": "Neteisingas kodas",
"sorryTheCodeYouveEnteredIsIncorrect": "Atsiprašome, įvestas kodas yra neteisingas.",
"emailChangedTo": "El. paštas pakeistas į {newEmail}",
"authenticationFailedPleaseTryAgain": "Tapatybės nustatymas nepavyko. Bandykite dar kartą.",
"authenticationSuccessful": "Tapatybės nustatymas sėkmingas!",
"twofactorAuthenticationSuccessfullyReset": "Dvigubas tapatybės nustatymas sėkmingai iš naujo nustatytas.",
"incorrectRecoveryKey": "Neteisingas atkūrimo raktas",
"theRecoveryKeyYouEnteredIsIncorrect": "Įvestas atkūrimo raktas yra neteisingas.",
"enterPassword": "Įveskite slaptažodį",
"selectExportFormat": "Pasirinkite eksporto formatą",
"exportDialogDesc": "Užšifruoti eksportai bus apsaugoti jūsų pasirinktu slaptažodžiu.",
"encrypted": "Užšifruota",
"plainText": "Paprastasis tekstas",
"passwordToEncryptExport": "Slaptažodis eksportui užšifruoti",
"export": "Eksportuoti",
"useOffline": "Naudoti be atsarginių kopijų",
"signInToBackup": "Prisijunkite, kad sukurtumėte atsargines kodų kopijas",
"singIn": "Prisijungti",
"sigInBackupReminder": "Eksportuokite kodus, kad turėtumėte atsarginę kopiją, kurią galėsite atkurti.",
"offlineModeWarning": "Pasirinkote tęsti be atsarginių kopijų. Kad įsitikintumėte, jog jūsų kodai yra saugūs, pasidarykite atsargines kopijas rankiniu būdu.",
"showLargeIcons": "Rodyti dideles piktogramas",
"compactMode": "Kompaktinis režimas",
"shouldHideCode": "Slėpti kodus",
"doubleTapToViewHiddenCode": "Galite dukart paliesti elementą, kad peržiūrėtumėte kodą",
"focusOnSearchBar": "Fokusuoti paiešką paleidžiant programą",
"confirmUpdatingkey": "Ar tikrai norite atnaujinti slaptąjį raktą?",
"minimizeAppOnCopy": "Sumažinti programą kopijuojant",
"editCodeAuthMessage": "Nustatykite tapatybę, kad redaguotumėte kodą",
"deleteCodeAuthMessage": "Nustatykite tapatybę, kad ištrintumėte kodą",
"showQRAuthMessage": "Nustatykite tapatybę, kad būtų rodomas QR kodas",
"confirmAccountDeleteTitle": "Patvirtinkite paskyros ištrynimą",
"confirmAccountDeleteMessage": "Ši paskyra susieta su kitomis „Ente“ programomis, jei jas naudojate.\n\nJūsų įkelti duomenys per visas „Ente“ programas bus planuojama ištrinti, o jūsų paskyra bus ištrinta negrįžtamai.",
"androidBiometricHint": "Patvirtinkite tapatybę",
"@androidBiometricHint": {
"description": "Hint message advising the user how to authenticate with biometrics. It is used on Android side. Maximum 60 characters."
},
"androidBiometricNotRecognized": "Neatpažinta. Bandykite dar kartą.",
"@androidBiometricNotRecognized": {
"description": "Message to let the user know that authentication was failed. It is used on Android side. Maximum 60 characters."
},
"androidBiometricSuccess": "Sėkmė",
"@androidBiometricSuccess": {
"description": "Message to let the user know that authentication was successful. It is used on Android side. Maximum 60 characters."
},
"androidCancelButton": "Atšaukti",
"@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."
},
"androidSignInTitle": "Privalomas tapatybės nustatymas",
"@androidSignInTitle": {
"description": "Message showed as a title in a dialog which indicates the user that they need to scan biometric to continue. It is used on Android side. Maximum 60 characters."
},
"androidBiometricRequiredTitle": "Privaloma biometrija",
"@androidBiometricRequiredTitle": {
"description": "Message showed as a title in a dialog which indicates the user has not set up biometric authentication on their device. It is used on Android side. Maximum 60 characters."
},
"androidDeviceCredentialsRequiredTitle": "Privalomi įrenginio kredencialai",
"@androidDeviceCredentialsRequiredTitle": {
"description": "Message showed as a title in a dialog which indicates the user has not set up credentials authentication on their device. It is used on Android side. Maximum 60 characters."
},
"androidDeviceCredentialsSetupDescription": "Privalomi įrenginio kredencialai",
"@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": "Eiti į nustatymus",
"@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."
},
"androidGoToSettingsDescription": "Biometrinis tapatybės nustatymas jūsų įrenginyje nenustatytas. Eikite į Nustatymai > Saugumas ir pridėkite biometrinį tapatybės nustatymą.",
"@androidGoToSettingsDescription": {
"description": "Message advising the user to go to the settings and configure biometric on their device. It shows in a dialog on Android side."
},
"iOSLockOut": "Biometrinis tapatybės nustatymas išjungtas. Kad jį įjungtumėte, užrakinkite ir atrakinkite ekraną.",
"@iOSLockOut": {
"description": "Message advising the user to re-enable biometrics on their device. It shows in a dialog on iOS side."
},
"iOSGoToSettingsDescription": "Biometrinis tapatybės nustatymas jūsų įrenginyje nenustatytas. Telefone įjunkite „Touch ID“ arba „Face ID“.",
"@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": "Gerai",
"@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."
},
"noInternetConnection": "Nėra interneto ryšio",
"pleaseCheckYourInternetConnectionAndTryAgain": "Patikrinkite savo interneto ryšį ir bandykite dar kartą.",
"signOutFromOtherDevices": "Atsijungti iš kitų įrenginių",
"signOutOtherBody": "Jei manote, kad kas nors gali žinoti jūsų slaptažodį, galite priverstinai atsijungti iš visų kitų įrenginių, naudojančių jūsų paskyrą.",
"signOutOtherDevices": "Atsijungti kitus įrenginius",
"doNotSignOut": "Neatsijungti",
"hearUsWhereTitle": "Kaip išgirdote apie „Ente“? (nebūtina)",
"hearUsExplanation": "Mes nesekame programų diegimų. Mums padėtų, jei pasakytumėte, kur mus radote.",
"recoveryKeySaved": "Atkūrimo raktas išsaugotas atsisiuntimų aplanke.",
"waitingForBrowserRequest": "Laukiama naršyklės užklausos...",
"waitingForVerification": "Laukiama patvirtinimo...",
"passkey": "Slaptaraktas",
"passKeyPendingVerification": "Vis dar laukiama patvirtinimo",
"loginSessionExpired": "Seansas baigėsi",
"loginSessionExpiredDetails": "Jūsų seansas baigėsi. Prisijunkite iš naujo.",
"developerSettingsWarning": "Ar tikrai norite modifikuoti kūrėjo nustatymus?",
"developerSettings": "Kūrėjo nustatymai",
"serverEndpoint": "Serverio galutinis taškas",
"invalidEndpoint": "Netinkamas galutinis taškas",
"invalidEndpointMessage": "Atsiprašome. Jūsų įvestas galutinis taškas yra netinkamas. Įveskite tinkamą galutinį tašką ir bandykite dar kartą.",
"invalidEndpointMessage": "Atsiprašome, įvestas galutinis taškas netinkamas. Įveskite tinkamą galutinį tašką ir bandykite dar kartą.",
"endpointUpdatedMessage": "Galutinis taškas sėkmingai atnaujintas",
"customEndpoint": "Prijungta prie {endpoint}",
"pinText": "Prisegti",
@@ -268,6 +450,14 @@
"unpinnedCodeMessage": "{code} buvo atsegtas",
"tags": "Žymės",
"createNewTag": "Kurti naują žymę",
"tag": "Žymė",
"create": "Kurti",
"editTag": "Redaguoti žymę",
"deleteTagTitle": "Ištrinti žymę?",
"deleteTagMessage": "Ar tikrai norite ištrinti šią žymę? Šis veiksmas negrįžtamas.",
"somethingWentWrongParsingCode": "Mums nepavyko išanalizuoti {x} kodų.",
"updateNotAvailable": "Nėra naujinimų",
"viewRawCodes": "Peržiūrėti neapdorotus kodus",
"rawCodes": "Neapdoroti kodai",
"rawCodeData": "Neapdoroti kodo duomenys",
"appLock": "Programos užraktas",
@@ -277,8 +467,22 @@
"immediately": "Iš karto",
"reEnterPassword": "Įveskite slaptažodį iš naujo",
"reEnterPin": "Įveskite PIN iš naujo",
"next": "Sekantis",
"next": "Toliau",
"tooManyIncorrectAttempts": "Per daug neteisingų bandymų.",
"tapToUnlock": "Palieskite, kad atrakintumėte",
"setNewPassword": "Nustatykite naują slaptažodį",
"deviceLock": "Įrenginio užraktas",
"hideContent": "Slėpti turinį",
"hideContentDescriptionAndroid": "Paslepia programų turinį programų perjungiklyje ir išjungia ekrano kopijas",
"hideContentDescriptioniOS": "Paslepia programos turinį programos perjungiklyje",
"autoLockFeatureDescription": "Laikas, po kurio programa užrakinama perkėlus ją į foną",
"appLockDescription": "Pasirinkite tarp numatytojo įrenginio užrakinimo ekrano ir pasirinktinio užrakinimo ekrano su PIN kodu arba slaptažodžiu.",
"pinLock": "PIN užraktas",
"enterPin": "Įveskite PIN",
"setNewPin": "Nustatykite naują PIN",
"importFailureDescNew": "Nepavyko išanalizuoti pasirinkto failo.",
"appLockNotEnabled": "Programos užraktas neįjungtas",
"appLockNotEnabledDescription": "Įjunkite programos užraktą iš Saugumas > Programos užraktas",
"authToViewPasskey": "Nustatykite tapatybę, kad peržiūrėtumėte slaptaraktą",
"appLockOfflineModeWarning": "Pasirinkote tęsti be atsarginių kopijų. Jei pamiršite programos užraktą, jums bus užrakinta prieiga prie duomenų."
}

View File

@@ -116,7 +116,7 @@
"selectFile": "Selecionar arquivo",
"emailVerificationToggle": "Verificação por e-mail",
"emailVerificationEnableWarning": "Para evitar ser bloqueado da sua conta, certifique-se de guardar uma cópia do seu e-mail 2FA fora do Ente Auth antes de ativar a verificação de e-mail.",
"authToChangeEmailVerificationSetting": "Autentique-se para altere o e-mail de verificação",
"authToChangeEmailVerificationSetting": "Autentique-se para alterar a verificação de e-mail",
"authenticateGeneric": "Autentique",
"authToViewYourRecoveryKey": "Autentique para ver sua chave de recuperação",
"authToChangeYourEmail": "Autentique para alterar o seu e-mail",

View File

@@ -140,7 +140,7 @@
"forgotPassword": "Нагадати пароль",
"oops": "От халепа",
"suggestFeatures": "Запропонувати нові функції",
"faq": "Часто Запитувані Питання",
"faq": "Часті питання",
"somethingWentWrongMessage": "Щось пішло не так, спробуйте, будь ласка, знову",
"leaveFamily": "Залишити сімейний план",
"leaveFamilyMessage": "Ви впевнені, що хочете залишити сімейний план?",

View File

@@ -7,6 +7,7 @@ import 'package:shared_preferences/shared_preferences.dart';
const List<Locale> appSupportedLocales = <Locale>[
Locale('ar'),
Locale('bg'),
Locale('ca'),
Locale('de'),
Locale('el'),
Locale('en'),
@@ -26,6 +27,7 @@ const List<Locale> appSupportedLocales = <Locale>[
Locale("zh", "CN"),
];
Locale? autoDetectedLocale;
Locale localResolutionCallBack(locales, supportedLocales) {
Locale? languageCodeMatch;
final Map<String, Locale> languageCodeToLocale = {
@@ -35,12 +37,14 @@ Locale localResolutionCallBack(locales, supportedLocales) {
for (Locale locale in locales) {
if (appSupportedLocales.contains(locale)) {
autoDetectedLocale = locale;
return locale;
}
if (languageCodeMatch == null &&
languageCodeToLocale.containsKey(locale.languageCode)) {
languageCodeMatch = languageCodeToLocale[locale.languageCode];
autoDetectedLocale = languageCodeMatch;
}
}
@@ -48,7 +52,9 @@ Locale localResolutionCallBack(locales, supportedLocales) {
return languageCodeMatch ?? const Locale('en');
}
Future<Locale> getLocale() async {
Future<Locale?> getLocale({
bool noFallback = false,
}) async {
final String? savedValue =
(await SharedPreferences.getInstance()).getString('locale');
// if savedLocale is not null and is supported by the app, return it
@@ -64,6 +70,12 @@ Future<Locale> getLocale() async {
return savedLocale;
}
}
if (autoDetectedLocale != null) {
return autoDetectedLocale!;
}
if (noFallback) {
return null;
}
return const Locale('en');
}

View File

@@ -22,6 +22,7 @@ import 'package:ente_auth/store/code_store.dart';
import 'package:ente_auth/ui/tools/app_lock.dart';
import 'package:ente_auth/ui/tools/lock_screen.dart';
import 'package:ente_auth/ui/utils/icon_utils.dart';
import 'package:ente_auth/utils/directory_utils.dart';
import 'package:ente_auth/utils/lock_screen_settings.dart';
import 'package:ente_auth/utils/platform_util.dart';
import 'package:ente_auth/utils/window_protocol_handler.dart';
@@ -72,6 +73,7 @@ void main() async {
size: WindowListenerService.instance.getWindowSize(),
);
await windowManager.waitUntilReadyToShow(windowOptions, () async {
await DirectoryUtils.migrateNamingChanges();
await windowManager.show();
await windowManager.focus();
initSystemTray().ignore();
@@ -102,7 +104,7 @@ Future<void> _runInForeground() async {
return await _runWithLogs(() async {
_logger.info("Starting app in foreground");
await _init(false, via: 'mainMethod');
final Locale locale = await getLocale();
final Locale? locale = await getLocale(noFallback: true);
unawaited(UpdateService.instance.showUpdateNotification());
runApp(
AppLock(

View File

@@ -11,6 +11,7 @@ class CodeDisplay {
final int tapCount;
String note;
final List<String> tags;
int position;
CodeDisplay({
this.pinned = false,
@@ -19,6 +20,7 @@ class CodeDisplay {
this.tapCount = 0,
this.tags = const [],
this.note = '',
this.position = 0,
});
// copyWith
@@ -29,6 +31,7 @@ class CodeDisplay {
int? tapCount,
List<String>? tags,
String? note,
int? position,
}) {
final bool updatedPinned = pinned ?? this.pinned;
final bool updatedTrashed = trashed ?? this.trashed;
@@ -36,6 +39,7 @@ class CodeDisplay {
final int updatedTapCount = tapCount ?? this.tapCount;
final List<String> updatedTags = tags ?? this.tags;
final String updatedNote = note ?? this.note;
final int updatedPosition = position ?? this.position;
return CodeDisplay(
pinned: updatedPinned,
@@ -44,6 +48,7 @@ class CodeDisplay {
tapCount: updatedTapCount,
tags: updatedTags,
note: updatedNote,
position: updatedPosition,
);
}
@@ -58,6 +63,7 @@ class CodeDisplay {
tapCount: json['tapCount'] ?? 0,
tags: List<String>.from(json['tags'] ?? []),
note: json['note'] ?? '',
position: json['position'] ?? 0,
);
}
@@ -99,6 +105,7 @@ class CodeDisplay {
'tapCount': tapCount,
'tags': tags,
'note': note,
'position': position,
};
}

View File

@@ -108,7 +108,7 @@ class _OnboardingPageState extends State<OnboardingPage> {
child: Text("Lang"),
),
onTap: () async {
final locale = await getLocale();
final locale = (await getLocale())!;
// ignore: unawaited_futures
routeToPage(
context,

View File

@@ -99,7 +99,7 @@ class UpdateService {
if (flavor == "playstore") {
return const Tuple2(
"Play Store",
"market://details??id=io.ente.auth",
"market://details?id=io.ente.auth",
);
}
return const Tuple2(

View File

@@ -37,8 +37,9 @@ class AuthenticatorDB {
),
);
}
final Directory documentsDirectory =
await getApplicationDocumentsDirectory();
final Directory documentsDirectory = Platform.isMacOS
? await getApplicationSupportDirectory()
: await getApplicationDocumentsDirectory();
final String path = join(documentsDirectory.path, _databaseName);
debugPrint(path);
return await openDatabase(

View File

@@ -1,3 +1,4 @@
import 'dart:async';
import 'dart:convert';
import 'package:collection/collection.dart';
@@ -16,16 +17,54 @@ class CodeStore {
CodeStore._privateConstructor();
late AuthenticatorService _authenticatorService;
final Map<int, Code> _cacheCodes = {};
final _logger = Logger("CodeStore");
Future<void> init() async {
_authenticatorService = AuthenticatorService.instance;
}
Future<bool> saveUpadedIndexes(List<Code> codes) async {
for (final code in codes) {
if (code.hasError || code.isTrashed) {
continue;
}
Code? c = _cacheCodes[code.generatedID];
if (c == null) {
continue;
}
int oldIndex = c.display.position;
int newIndex = codes.indexOf(code);
if (oldIndex != newIndex) {
Code updatedCode =
c.copyWith(display: c.display.copyWith(position: newIndex));
await addCode(updatedCode);
}
}
return true;
}
Future<void> updateCodeIndex(Code code) async {
final key = code.generatedID!;
_cacheCodes.remove(key);
int deletedIndex = code.display.position;
_cacheCodes.forEach((key, c) async {
if (c.display.position > deletedIndex) {
Code updatedCode = c.copyWith(
display: c.display.copyWith(position: c.display.position - 1),
);
await addCode(updatedCode);
}
});
}
Future<List<Code>> getAllCodes({
AccountMode? accountMode,
bool sortCodes = true,
}) async {
_cacheCodes.clear();
final mode = accountMode ?? _authenticatorService.getAccountMode();
final List<EntityResult> entities =
await _authenticatorService.getEntities(mode);
@@ -48,6 +87,7 @@ class CodeStore {
code.generatedID = entity.generatedID;
code.hasSynced = entity.hasSynced;
codes.add(code);
_cacheCodes[code.generatedID!] = code;
}
if (sortCodes) {
@@ -118,6 +158,7 @@ class CodeStore {
Future<void> removeCode(Code code, {AccountMode? accountMode}) async {
final mode = accountMode ?? _authenticatorService.getAccountMode();
await _authenticatorService.deleteEntry(code.generatedID!, mode);
await updateCodeIndex(code);
Bus.instance.fire(CodesUpdatedEvent());
}

View File

@@ -37,8 +37,9 @@ class OfflineAuthenticatorDB {
),
);
}
final Directory documentsDirectory =
await getApplicationDocumentsDirectory();
final Directory documentsDirectory = Platform.isMacOS
? await getApplicationSupportDirectory()
: await getApplicationDocumentsDirectory();
final String path = join(documentsDirectory.path, _databaseName);
debugPrint(path);
return await openDatabase(

View File

@@ -28,6 +28,7 @@ import 'package:ente_auth/ui/components/models/button_type.dart';
import 'package:ente_auth/ui/home/coach_mark_widget.dart';
import 'package:ente_auth/ui/home/home_empty_state.dart';
import 'package:ente_auth/ui/home/speed_dial_label_widget.dart';
import 'package:ente_auth/ui/reorder_codes_page.dart';
import 'package:ente_auth/ui/scanner_page.dart';
import 'package:ente_auth/ui/settings_page.dart';
import 'package:ente_auth/ui/tools/app_lock.dart';
@@ -186,6 +187,10 @@ class _HomePageState extends State<HomePage> {
.toList() ??
[];
}
_filteredCodes
.sort((a, b) => a.display.position.compareTo(b.display.position));
if (mounted) {
setState(() {});
}
@@ -255,6 +260,18 @@ class _HomePageState extends State<HomePage> {
}
}
Future<void> navigateToReorderPage(List<Code> allCodes) async {
await Navigator.of(context).push(
MaterialPageRoute(
builder: (BuildContext context) {
return ReorderCodesPage(codes: _filteredCodes);
},
),
).then((value) {
setState(() {});
});
}
@override
Widget build(BuildContext context) {
final l10n = context.l10n;
@@ -310,6 +327,13 @@ class _HomePageState extends State<HomePage> {
),
centerTitle: PlatformUtil.isDesktop() ? false : true,
actions: <Widget>[
IconButton(
icon: const Icon(Icons.edit),
tooltip: l10n.edit,
onPressed: () {
navigateToReorderPage(_allCodes!);
},
),
PlatformUtil.isDesktop()
? IconButton(
icon: const Icon(Icons.lock),

View File

@@ -0,0 +1,171 @@
import 'dart:ui';
import 'package:ente_auth/models/code.dart';
import 'package:ente_auth/services/preference_service.dart';
import 'package:ente_auth/store/code_store.dart';
import 'package:ente_auth/ui/code_widget.dart';
import 'package:flutter/material.dart';
import 'package:logging/logging.dart';
class ReorderCodesPage extends StatefulWidget {
const ReorderCodesPage({super.key, required this.codes});
final List<Code> codes;
@override
State<ReorderCodesPage> createState() => _ReorderCodesPageState();
}
class _ReorderCodesPageState extends State<ReorderCodesPage> {
int selectedSortOption = 2;
final logger = Logger('ReorderCodesPage');
@override
Widget build(BuildContext context) {
final bool isCompactMode = PreferenceService.instance.isCompactMode();
return PopScope(
canPop: false,
onPopInvokedWithResult: (didPop, result) async {
if (!didPop) {
final hasSaved = await saveUpadedIndexes();
if (hasSaved) {
Navigator.of(context).pop();
}
}
},
child: Scaffold(
appBar: AppBar(
title: const Text("Edit Codes"),
leading: IconButton(
icon: const Icon(Icons.arrow_back),
onPressed: () async {
final hasSaved = await saveUpadedIndexes();
if (hasSaved) {
Navigator.of(context).pop();
}
},
),
actions: [
PopupMenuButton(
icon: const Icon(Icons.sort),
onSelected: (int value) {
selectedSortOption = value;
switch (value) {
case 0:
sortByIssuer();
break;
case 1:
sortByAccount();
break;
case 2:
setState(() {});
break;
}
},
itemBuilder: (context) => [
PopupMenuItem(
value: 0,
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [
selectedSortOption == 0
? const Icon(Icons.check)
: const SizedBox.square(dimension: 24),
const SizedBox(width: 10),
const Text("Issuer"),
],
),
),
PopupMenuItem(
value: 1,
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [
selectedSortOption == 1
? const Icon(Icons.check)
: const SizedBox.square(dimension: 24),
const SizedBox(width: 10),
const Text("Account"),
],
),
),
PopupMenuItem(
value: 2,
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [
selectedSortOption == 2
? const Icon(Icons.check)
: const SizedBox.square(dimension: 24),
const SizedBox(width: 10),
const Text("Manual"),
],
),
),
],
),
],
),
body: ReorderableListView(
buildDefaultDragHandles: false,
proxyDecorator:
(Widget child, int index, Animation<double> animation) {
return AnimatedBuilder(
animation: animation,
builder: (BuildContext context, _) {
final animValue = Curves.easeInOut.transform(animation.value);
final scale = lerpDouble(1, 1.05, animValue)!;
return Transform.scale(scale: scale, child: child);
},
);
},
children: [
for (final code in widget.codes)
selectedSortOption == 2
? ReorderableDragStartListener(
key: ValueKey('${code.hashCode}_${code.generatedID}'),
index: widget.codes.indexOf(code),
child: CodeWidget(
key: ValueKey(code.generatedID),
code,
isCompactMode: isCompactMode,
),
)
: CodeWidget(
key: ValueKey('${code.hashCode}_${code.generatedID}'),
code,
isCompactMode: isCompactMode,
),
],
onReorder: (oldIndex, newIndex) {
if (selectedSortOption == 2) updateCodeIndex(oldIndex, newIndex);
},
),
),
);
}
Future<bool> saveUpadedIndexes() async {
final result = await CodeStore.instance.saveUpadedIndexes(widget.codes);
return result;
}
void updateCodeIndex(int oldIndex, int newIndex) {
setState(() {
// Adjust index when moving down the list
// oldIndex = 2, newIndex = 0
if (oldIndex < newIndex) newIndex -= 1;
final Code code = widget.codes.removeAt(oldIndex);
widget.codes.insert(newIndex, code);
});
}
void sortByIssuer() {
widget.codes.sort((a, b) => a.issuer.compareTo(b.issuer));
setState(() {});
}
void sortByAccount() {
widget.codes.sort((a, b) => a.account.compareTo(b.account));
setState(() {});
}
}

View File

@@ -49,7 +49,7 @@ class _AdvancedSectionWidgetState extends State<AdvancedSectionWidget> {
trailingIcon: Icons.chevron_right_outlined,
trailingIconIsMuted: true,
onTap: () async {
final locale = await getLocale();
final locale = (await getLocale())!;
// ignore: unawaited_futures
routeToPage(
context,

View File

@@ -126,6 +126,8 @@ class _ItemsWidgetState extends State<ItemsWidget> {
switch (locale.languageCode) {
case 'ar':
return 'العربية';
case 'ca':
return 'Català';
case 'en':
return 'English';
case 'bg':

View File

@@ -35,7 +35,7 @@ class AppLock extends StatefulWidget {
final ThemeData? darkTheme;
final ThemeData? lightTheme;
final ThemeMode savedThemeMode;
final Locale locale;
final Locale? locale;
const AppLock({
super.key,
@@ -43,7 +43,7 @@ class AppLock extends StatefulWidget {
required this.lockScreen,
required this.savedThemeMode,
this.enabled = true,
this.locale = const Locale('en', 'US'),
this.locale,
this.backgroundLockLatency = const Duration(seconds: 0),
this.darkTheme,
this.lightTheme,

View File

@@ -1,12 +1,137 @@
import 'dart:io';
import 'package:io/io.dart';
import 'package:logging/logging.dart';
import 'package:path/path.dart' as p;
import 'package:path_provider/path_provider.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:xdg_directories/xdg_directories.dart';
class DirectoryUtils {
static Future<String> getDatabasePath(String databaseName) async => p.joinAll(
[
static final logger = Logger('DirectoryUtils');
static Future<String> getDatabasePath(String databaseName) async {
String? directoryPath;
directoryPath ??= (await getApplicationSupportDirectory()).path;
return p.joinAll(
[
directoryPath,
".$databaseName",
],
);
}
static Future<Directory> getDirectoryForInit() async {
Directory? directory;
if (Platform.isLinux) {
try {
return cacheHome;
} catch (e) {
logger.warning("Failed to get cacheHome: $e");
}
}
directory ??= await getApplicationDocumentsDirectory();
return Directory(p.join(directory.path, "enteauthinit"));
}
static Future<Directory> getTempsDir() async {
return await getTemporaryDirectory();
}
static String migratedNamingChanges = "migrated_naming_changes.b5";
static migrateNamingChanges() async {
try {
final sharedPrefs = await SharedPreferences.getInstance();
if (sharedPrefs.containsKey(migratedNamingChanges)) {
return;
}
var databaseFile = File(
p.join(
(await getApplicationDocumentsDirectory()).path,
"ente",
".$databaseName",
],
".ente.authenticator.db",
),
);
var offlineDatabaseFile = File(
p.join(
(await getApplicationDocumentsDirectory()).path,
"ente",
".ente.offline_authenticator.db",
),
);
Directory oldDataDir;
Directory newDataDir;
Directory? tempDir;
if (Platform.isLinux) {
oldDataDir = Directory(
p.join(dataHome.path, "ente_auth"),
);
tempDir = Directory(
p.join(dataHome.path, "enteauth"),
);
} else if (Platform.isWindows) {
oldDataDir = Directory(
p.join(
(await getApplicationDocumentsDirectory()).path,
"ente",
),
);
tempDir = Directory(
p.join(
(await getApplicationDocumentsDirectory()).path,
"enteauth",
),
);
} else {
oldDataDir = await getApplicationDocumentsDirectory();
databaseFile = File(
p.join(
(await getApplicationDocumentsDirectory()).path,
"ente.authenticator.db",
),
);
offlineDatabaseFile = File(
p.join(
(await getApplicationDocumentsDirectory()).path,
"ente.offline_authenticator.db",
),
);
}
if (tempDir?.existsSync() ?? false) {
oldDataDir = tempDir!;
}
newDataDir = await getApplicationSupportDirectory();
await newDataDir.create(recursive: true);
final prefix = Platform.isMacOS ? "" : ".";
File newDatabaseFile =
File(p.join(newDataDir.path, "${prefix}ente.authenticator.db"));
if (await databaseFile.exists() && !await newDatabaseFile.exists()) {
await databaseFile.copy(newDatabaseFile.path);
}
File newOfflineDatabaseFile = File(
p.join(newDataDir.path, "${prefix}ente.offline_authenticator.db"),
);
if (await offlineDatabaseFile.exists() &&
!await newOfflineDatabaseFile.exists()) {
await offlineDatabaseFile.copy(newOfflineDatabaseFile.path);
}
if (Platform.isLinux && await oldDataDir.exists()) {
await copyPath(oldDataDir.path, newDataDir.path);
}
sharedPrefs.setBool(migratedNamingChanges, true).ignore();
} catch (e, st) {
logger.warning("Migrating Database failed!", e, st);
rethrow;
}
}
}

View File

@@ -10,6 +10,7 @@ import 'package:ente_auth/ui/components/dialog_widget.dart';
import 'package:ente_auth/ui/components/models/button_type.dart';
import 'package:ente_auth/ui/tools/debug/log_file_viewer.dart';
import 'package:ente_auth/utils/dialog_util.dart';
import 'package:ente_auth/utils/directory_utils.dart';
import 'package:ente_auth/utils/platform_util.dart';
import 'package:ente_auth/utils/share_utils.dart';
import 'package:ente_auth/utils/toast_util.dart';
@@ -146,7 +147,7 @@ Future<String> getZippedLogsFile(BuildContext context) async {
await dialog.show();
final logsPath = (await getApplicationSupportDirectory()).path;
final logsDirectory = Directory("$logsPath/logs");
final tempPath = (await getTemporaryDirectory()).path;
final tempPath = (await DirectoryUtils.getTempsDir()).path;
final zipFilePath =
"$tempPath/logs-${Configuration.instance.getUserID() ?? 0}.zip";
final encoder = ZipFileEncoder();

View File

@@ -1,6 +1,5 @@
import 'dart:io';
import 'package:desktop_webview_window/desktop_webview_window.dart';
import 'package:ente_auth/ui/common/web_page.dart';
import 'package:file_saver/file_saver.dart';
import 'package:flutter/cupertino.dart';
@@ -31,17 +30,7 @@ class PlatformUtil {
static openWebView(BuildContext context, String title, String url) async {
if (PlatformUtil.isDesktop()) {
if (!await WebviewWindow.isWebviewAvailable()) {
await launchUrlString(url);
return;
}
final webview = await WebviewWindow.create(
configuration: CreateConfiguration(
title: title,
),
);
webview.launch(url);
await launchUrlString(url);
return;
}
await Navigator.of(context).push(

View File

@@ -4,7 +4,7 @@ project(runner LANGUAGES CXX)
# The name of the executable created for the application. Change this to change
# the on-disk name of your application.
set(BINARY_NAME "ente_auth")
set(BINARY_NAME "enteauth")
# The unique GTK application identifier for this application. See:
# https://wiki.gnome.org/HowDoI/ChooseApplicationID
set(APPLICATION_ID "io.ente.auth")

View File

@@ -6,7 +6,6 @@
#include "generated_plugin_registrant.h"
#include <desktop_webview_window/desktop_webview_window_plugin.h>
#include <file_saver/file_saver_plugin.h>
#include <flutter_local_authentication/flutter_local_authentication_plugin.h>
#include <flutter_secure_storage_linux/flutter_secure_storage_linux_plugin.h>
@@ -20,9 +19,6 @@
#include <window_manager/window_manager_plugin.h>
void fl_register_plugins(FlPluginRegistry* registry) {
g_autoptr(FlPluginRegistrar) desktop_webview_window_registrar =
fl_plugin_registry_get_registrar_for_plugin(registry, "DesktopWebviewWindowPlugin");
desktop_webview_window_plugin_register_with_registrar(desktop_webview_window_registrar);
g_autoptr(FlPluginRegistrar) file_saver_registrar =
fl_plugin_registry_get_registrar_for_plugin(registry, "FileSaverPlugin");
file_saver_plugin_register_with_registrar(file_saver_registrar);

View File

@@ -3,7 +3,6 @@
#
list(APPEND FLUTTER_PLUGIN_LIST
desktop_webview_window
file_saver
flutter_local_authentication
flutter_secure_storage_linux

View File

@@ -1,7 +1,8 @@
display_name: Auth
display_name: Ente Auth
package_name: enteauth
license: GPLv3
metainfo: linux/packaging/ente_auth.appdata.xml
metainfo: linux/packaging/enteauth.appdata.xml
icon: assets/icons/auth-icon.png
@@ -25,10 +26,6 @@ startup_notify: false
#
# include:
# - libcurl.so.4
include:
- libffi.so.8
- libtiff.so.5
- libjpeg.so.8
supported_mime_type:
- x-scheme-handler/enteauth
- x-scheme-handler/enteauth

View File

@@ -1,5 +1,7 @@
display_name: Auth
package_name: auth
display_name: Ente Auth
package_name: enteauth
include_build_number: false
maintainer:
name: Ente.io Developers
email: auth@ente.io
@@ -10,10 +12,9 @@ license: GPLv3
icon: assets/icons/auth-icon.png
installed_size: 36000
metainfo: linux/packaging/ente_auth.appdata.xml
metainfo: linux/packaging/enteauth.appdata.xml
dependencies:
- libwebkit2gtk-4.0-37
- libsqlite3-0
- libsodium23
- libsecret-1-0
@@ -25,7 +26,7 @@ keywords:
- Authentication
- 2FA
generic_name: Ente Authentication
generic_name: Ente Authenticator
categories:
- Utility

View File

@@ -1,16 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<component type="desktop-application">
<id>ente_auth</id>
<id>enteauth</id>
<metadata_license>CC0-1.0</metadata_license>
<project_license>AGPL-3.0</project_license>
<name>Ente Auth</name>
<summary>Open source 2FA authenticator, with end-to-end encrypted backups</summary>
<summary>FOSS, cross-platform 2FA app</summary>
<description>
<p>Auth provides end-to-end encrypted cloud backups so you don't have to worry about losing your tokens. Our cryptography has been externally audited.</p>
<p>Auth has an app for every platform. Mobile, desktop and web. Your codes sync across all your devices, end-to-end encrypted.</p>
<p>Auth also comes with Offline mode, tags, icons, pins, import/export and more</p>
</description>
<launchable type="desktop-id">ente_auth.desktop</launchable>
<launchable type="desktop-id">enteauth.desktop</launchable>
<url type="homepage">https://ente.io/auth</url>
<screenshots>
<screenshot type="default">
@@ -18,14 +18,18 @@
</screenshot>
</screenshots>
<releases>
<release version="3.0.12" date="2024-06-17"/>
<release version="4.0.3" date="2024-10-08" />
</releases>
<provides>
<id>ente_auth.desktop</id>
<id>enteauth.desktop</id>
</provides>
<content_rating type="oars-1.0" />
<developer id="io.github.ente-io.ente">
<name>Ente.io Developers</name>
</developer>
<update_contact>auth@ente.io</update_contact>
<branding>
<color type="primary" scheme_preference="light">#ffffff</color>
<color type="primary" scheme_preference="dark">#000000</color>
</branding>
</component>

View File

@@ -1,5 +1,5 @@
display_name: Auth
package_name: auth
display_name: Ente Auth
package_name: enteauth
maintainer:
name: Ente.io Developers
email: auth@ente.io
@@ -8,29 +8,18 @@ licenses:
icon: assets/icons/auth-icon.png
installed_size: 36000
metainfo: linux/packaging/ente_auth.appdata.xml
metainfo: linux/packaging/enteauth.appdata.xml
dependencies:
- c-ares
- ffmpeg
- gtk3
- http-parser
- libevent
- libvpx
- libxslt
- libxss
- minizip
- nss
- re2
- snappy
- libnotify
- sqlite
- libsecret
- libappindicator-gtk3
keywords:
- Authentication
- 2FA
generic_name: Ente Authentication
generic_name: Ente Authenticator
categories:
- Utility
@@ -47,12 +36,12 @@ postinstall_scripts:
postupgrade_scripts:
- post_install
postremove_scripts:
- gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
- update-desktop-database -q
- if [ -e /usr/lib/libsodium.so.23 ]; then
- rm /usr/lib/libsodium.so.23
- rm /usr/lib/libsodium.so.23
- fi
startup_notify: false
startup_notify: false

View File

@@ -6,15 +6,15 @@ packager: Ente.io Developers
packagerEmail: auth@ente.io
license: GPLv3
url: https://github.com/ente-io/ente
package_name: enteauth
include_build_number: false
display_name: Auth
metainfo: linux/packaging/ente_auth.appdata.xml
metainfo: linux/packaging/enteauth.appdata.xml
requires:
- libsqlite3x
- webkit2gtk4.0
- libsodium
- libsecret
- libappindicator
@@ -22,7 +22,7 @@ keywords:
- Authentication
- 2FA
generic_name: Ente Authentication
generic_name: Ente Authenticator
categories:
- Utility

View File

@@ -7,7 +7,6 @@ import Foundation
import app_links
import connectivity_plus
import desktop_webview_window
import device_info_plus
import file_saver
import flutter_inappwebview_macos
@@ -31,7 +30,6 @@ import window_manager
func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
AppLinksMacosPlugin.register(with: registry.registrar(forPlugin: "AppLinksMacosPlugin"))
ConnectivityPlusPlugin.register(with: registry.registrar(forPlugin: "ConnectivityPlusPlugin"))
DesktopWebviewWindowPlugin.register(with: registry.registrar(forPlugin: "DesktopWebviewWindowPlugin"))
DeviceInfoPlusMacosPlugin.register(with: registry.registrar(forPlugin: "DeviceInfoPlusMacosPlugin"))
FileSaverPlugin.register(with: registry.registrar(forPlugin: "FileSaverPlugin"))
InAppWebViewFlutterPlugin.register(with: registry.registrar(forPlugin: "InAppWebViewFlutterPlugin"))

View File

@@ -326,15 +326,6 @@ packages:
url: "https://pub.dev"
source: hosted
version: "0.7.10"
desktop_webview_window:
dependency: "direct main"
description:
path: "packages/desktop_webview_window"
ref: main
resolved-ref: "3e4247ba5b71049704395b70b5a827fb113b88ea"
url: "https://github.com/MixinNetwork/flutter-plugins"
source: git
version: "0.2.4"
device_info_plus:
dependency: "direct main"
description:
@@ -879,7 +870,7 @@ packages:
source: hosted
version: "0.19.0"
io:
dependency: transitive
dependency: "direct main"
description:
name: io
sha256: "2ec25704aba361659e10e3e5f5d672068d332fc8ac516421d483a11e5cbd061e"
@@ -1821,7 +1812,7 @@ packages:
source: hosted
version: "0.4.2"
xdg_directories:
dependency: transitive
dependency: "direct main"
description:
name: xdg_directories
sha256: "7a3f37b05d989967cdddcbb571f1ea834867ae2faa29725fd085180e0883aa15"

View File

@@ -1,6 +1,6 @@
name: ente_auth
description: ente two-factor authenticator
version: 4.0.2+402
version: 4.1.1+411
publish_to: none
environment:
@@ -19,11 +19,6 @@ dependencies:
confetti: ^0.8.0
connectivity_plus: ^6.0.5
convert: ^3.1.1
desktop_webview_window:
git:
url: https://github.com/MixinNetwork/flutter-plugins
ref: main
path: packages/desktop_webview_window
device_info_plus: ^9.1.1
dio: ^5.4.0
dotted_border: ^2.0.0+2
@@ -67,6 +62,7 @@ dependencies:
gradient_borders: ^1.0.0
http: ^1.1.0
intl: ^0.19.0
io: ^1.0.4
json_annotation: ^4.5.0
local_auth: ^2.3.0
local_auth_android: ^1.0.37
@@ -105,6 +101,7 @@ dependencies:
uuid: ^4.2.2
win32: ^5.1.1
window_manager: ^0.4.2
xdg_directories: ^1.0.4
dependency_overrides:
flutter_secure_storage_linux:

View File

@@ -8,7 +8,6 @@
#include <app_links/app_links_plugin_c_api.h>
#include <connectivity_plus/connectivity_plus_windows_plugin.h>
#include <desktop_webview_window/desktop_webview_window_plugin.h>
#include <file_saver/file_saver_plugin.h>
#include <flutter_inappwebview_windows/flutter_inappwebview_windows_plugin_c_api.h>
#include <flutter_local_authentication/flutter_local_authentication_plugin_c_api.h>
@@ -27,8 +26,6 @@ void RegisterPlugins(flutter::PluginRegistry* registry) {
registry->GetRegistrarForPlugin("AppLinksPluginCApi"));
ConnectivityPlusWindowsPluginRegisterWithRegistrar(
registry->GetRegistrarForPlugin("ConnectivityPlusWindowsPlugin"));
DesktopWebviewWindowPluginRegisterWithRegistrar(
registry->GetRegistrarForPlugin("DesktopWebviewWindowPlugin"));
FileSaverPluginRegisterWithRegistrar(
registry->GetRegistrarForPlugin("FileSaverPlugin"));
FlutterInappwebviewWindowsPluginCApiRegisterWithRegistrar(

View File

@@ -5,7 +5,6 @@
list(APPEND FLUTTER_PLUGIN_LIST
app_links
connectivity_plus
desktop_webview_window
file_saver
flutter_inappwebview_windows
flutter_local_authentication

View File

@@ -1,4 +1,5 @@
app_id: 9E5F0C93-96A3-4DA9-AE52-1AA6339851FC
package_name: enteauth
publisher: ente.io
publisher_url: https://github.com/ente-io/ente
display_name: Ente Auth

View File

@@ -1,7 +1,7 @@
# You can put this configuration file in the following locations:
# - $HOME/.ente/config.yaml
# - config.yaml in the current working directory
# - $ENTE_CLI_CONFIG_PATH/config.yaml
# - $ENTE_CLI_CONFIG_DIR/config.yaml
endpoint:
api: "http://localhost:8080"

View File

@@ -1,8 +1,10 @@
## Self Hosting
If you are self-hosting the server, you can still configure CLI to export data & perform basic admin actions.
To do this, first configure the CLI to point to your server.
Define a config.yaml and put it either in the same directory as CLI binary or path defined in env variable `ENTE_CLI_CONFIG_PATH`
Define a config.yaml and put it either in the same directory as CLI binary or path defined in env variable `ENTE_CLI_CONFIG_DIR`
```yaml
endpoint:

View File

@@ -18,29 +18,29 @@ import (
var AppVersion = "0.2.2"
func main() {
cliDBPath, err := GetCLIConfigPath()
cliConfigDir, err := GetCLIConfigDir()
if secrets.IsRunningInContainer() {
cliDBPath = constants.CliDataPath
_, err := internal.ValidateDirForWrite(cliDBPath)
cliConfigDir = constants.CliDataPath
_, err := internal.ValidateDirForWrite(cliConfigDir)
if err != nil {
log.Fatalf("Please mount a volume to %s\n%v\n", cliDBPath, err)
log.Fatalf("Please mount a volume to %s\n%v\n", cliConfigDir, err)
}
}
if err != nil {
log.Fatalf("Could not create cli config path\n%v\n", err)
}
initConfig(cliDBPath)
newCliPath := fmt.Sprintf("%s/ente-cli.db", cliDBPath)
if !strings.HasPrefix(cliDBPath, "/") {
oldCliPath := fmt.Sprintf("%sente-cli.db", cliDBPath)
initConfig(cliConfigDir)
newCliDBPath := filepath.Join(cliConfigDir, "ente-cli.db")
if !strings.HasPrefix(cliConfigDir, "/") {
oldCliPath := fmt.Sprintf("%sente-cli.db", cliConfigDir)
if _, err := os.Stat(oldCliPath); err == nil {
log.Printf("migrating old cli db from %s to %s\n", oldCliPath, newCliPath)
if err := os.Rename(oldCliPath, newCliPath); err != nil {
log.Printf("migrating old cli db from %s to %s\n", oldCliPath, newCliDBPath)
if err := os.Rename(oldCliPath, newCliDBPath); err != nil {
log.Fatalf("Could not rename old cli db\n%v\n", err)
}
}
}
db, err := pkg.GetDB(newCliPath)
db, err := pkg.GetDB(newCliDBPath)
if err != nil {
if strings.Contains(err.Error(), "timeout") {
@@ -49,14 +49,28 @@ func main() {
panic(err)
}
}
// Define a set of commands that do not require KeyHolder initialisation.
skipKeyHolderCommands := map[string]struct{}{"version": {}, "docs": {}, "help": {}}
var keyHolder *secrets.KeyHolder
// Only initialise KeyHolder if the command isn't in the skip list.
if len(os.Args) > 1 {
if _, skip := skipKeyHolderCommands[os.Args[1]]; !skip {
keyHolder = secrets.NewKeyHolder(secrets.GetOrCreateClISecret())
}
}
ctrl := pkg.ClICtrl{
Client: api.NewClient(api.Params{
Debug: viper.GetBool("log.http"),
Host: viper.GetString("endpoint.api"),
}),
DB: db,
KeyHolder: secrets.NewKeyHolder(secrets.GetOrCreateClISecret()),
KeyHolder: keyHolder,
}
err = ctrl.Init()
if err != nil {
panic(err)
@@ -85,11 +99,11 @@ func main() {
cmd.Execute(&ctrl, AppVersion)
}
func initConfig(cliConfigPath string) {
viper.SetConfigName("config") // name of config file (without extension)
viper.SetConfigType("yaml") // REQUIRED if the config file does not have the extension in the name
viper.AddConfigPath(cliConfigPath + "/") // path to look for the config file in
viper.AddConfigPath(".") // optionally look for config in the working directory
func initConfig(cliConfigDir string) {
viper.SetConfigName("config") // name of config file (without extension)
viper.SetConfigType("yaml") // REQUIRED if the config file does not have the extension in the name
viper.AddConfigPath(cliConfigDir + "/") // path to look for the config file in
viper.AddConfigPath(".") // optionally look for config in the working directory
viper.SetDefault("endpoint.api", constants.EnteApiUrl)
viper.SetDefault("endpoint.accounts", constants.EnteAccountUrl)
@@ -102,11 +116,19 @@ func initConfig(cliConfigPath string) {
}
}
// GetCLIConfigPath returns the path to the .ente-cli folder and creates it if it doesn't exist.
func GetCLIConfigPath() (string, error) {
if os.Getenv("ENTE_CLI_CONFIG_PATH") != "" {
return os.Getenv("ENTE_CLI_CONFIG_PATH"), nil
// GetCLIConfigDir returns the path to the .ente-cli folder and creates it if it doesn't exist.
func GetCLIConfigDir() (string, error) {
var configDir = os.Getenv("ENTE_CLI_CONFIG_DIR")
if configDir == "" {
// for backward compatibility, check for ENTE_CLI_CONFIG_PATH
configDir = os.Getenv("ENTE_CLI_CONFIG_PATH")
}
if configDir != "" {
// remove trailing slash (for all OS)
configDir = strings.TrimSuffix(configDir, string(filepath.Separator))
return configDir, nil
}
// Get the user's home directory
homeDir, err := os.UserHomeDir()
if err != nil {

View File

@@ -88,7 +88,7 @@ jobs:
if: startsWith(matrix.os, 'ubuntu')
# See:
# https://github.com/electron-userland/electron-builder/issues/4181
run: sudo apt-get install libarchive-tools
run: sudo apt-get update && sudo apt-get install libarchive-tools
- name: Build
uses: ente-io/action-electron-builder@eff78a1d33bdab4c54ede0e5cdc71e0c2cf803e2

View File

@@ -1,11 +1,18 @@
# CHANGELOG
## v1.7.6 (Unreleased)
## v1.7.7 (Unreleased)
- Parse description from metadata JSON.
- Support Italian and Lithuanian translations.
- Retain JPEG originals even on date modifications.
- Support Portuguese translations.
- .
## v1.7.6
- Face merging and suggestions (beta).
- Parse description from metadata JSON.
- Support Italian, Ukrainian and Lithuanian translations.
- Fix an out of memory crash on uploading large libraries.
## v1.7.5
- Face grouping (beta).

View File

@@ -1,6 +1,6 @@
{
"name": "ente",
"version": "1.7.6-beta",
"version": "1.7.7-beta",
"private": true,
"description": "Desktop client for Ente Photos",
"repository": "github:ente-io/photos-desktop",
@@ -28,35 +28,35 @@
"auto-launch": "^5.0.6",
"chokidar": "^3.6.0",
"clip-bpe-js": "^0.0.6",
"comlink": "^4.4.1",
"comlink": "^4.4.2",
"compare-versions": "^6.1.1",
"electron-log": "^5.1.7",
"electron-log": "^5.2.2",
"electron-store": "^8.2.0",
"electron-updater": "^6.3.4",
"electron-updater": "^6.3.9",
"ffmpeg-static": "^5.2.0",
"lru-cache": "^11.0.0",
"lru-cache": "^11.0.2",
"next-electron-server": "^1.0.0",
"node-stream-zip": "^1.15.0",
"onnxruntime-node": "^1.19.2"
"onnxruntime-node": "^1.20.0"
},
"devDependencies": {
"@eslint/js": "^9.9.1",
"@eslint/js": "^9.15.0",
"@tsconfig/node20": "^20.1.4",
"@types/auto-launch": "^5.0.5",
"@types/eslint__js": "^8.42.3",
"@types/ffmpeg-static": "^3.0.3",
"ajv": "^8.17.1",
"concurrently": "^8.2.2",
"concurrently": "^9.1.0",
"cross-env": "^7.0.3",
"electron": "^30.4.0",
"electron-builder": "^25.0.5",
"electron": "^33.2.0",
"electron-builder": "^25.1.8",
"eslint": "^9",
"prettier": "^3.3.3",
"prettier-plugin-organize-imports": "^4.0.0",
"prettier-plugin-packagejson": "^2.5.2",
"prettier-plugin-organize-imports": "^4.1.0",
"prettier-plugin-packagejson": "^2.5.3",
"shx": "^0.3.4",
"typescript": "^5.5.4",
"typescript-eslint": "^8.4.0"
"typescript": "^5.6.3",
"typescript-eslint": "^8.14.0"
},
"packageManager": "yarn@1.22.22",
"productName": "ente"

View File

@@ -48,6 +48,7 @@ const messageWithError = (message: string, e?: unknown) => {
es = [`${e.name}: ${e.message}`, e.stack].filter((x) => x).join("\n");
} else {
// For the rest rare cases, use the default string serialization of e.
// eslint-disable-next-line @typescript-eslint/no-base-to-string
es = String(e);
}

View File

@@ -7,13 +7,6 @@
resolved "https://registry.yarnpkg.com/7zip-bin/-/7zip-bin-5.2.0.tgz#7a03314684dd6572b7dfa89e68ce31d60286854d"
integrity sha512-ukTPVhqG4jNzMro2qA9HSCSSVJN3aN7tlb+hfqYCt3ER0yWroeA2VR38MNrOHLQ/cVj+DaIMad0kFCtWWowh/A==
"@babel/runtime@^7.21.0":
version "7.25.6"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.25.6.tgz#9afc3289f7184d8d7f98b099884c26317b9264d2"
integrity sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==
dependencies:
regenerator-runtime "^0.14.0"
"@derhuerst/http-basic@^8.2.0":
version "8.2.4"
resolved "https://registry.yarnpkg.com/@derhuerst/http-basic/-/http-basic-8.2.4.tgz#d021ebb8f65d54bea681ae6f4a8733ce89e7f59b"
@@ -56,10 +49,10 @@
optionalDependencies:
global-agent "^3.0.0"
"@electron/notarize@2.3.2":
version "2.3.2"
resolved "https://registry.yarnpkg.com/@electron/notarize/-/notarize-2.3.2.tgz#20a52a961747be8542a35003380988a0d3fe15e6"
integrity sha512-zfayxCe19euNwRycCty1C7lF7snk9YwfRpB5M8GLr1a4ICH63znxaPNAubrMvj0yDvVozqfgsdYpXVUnpWBDpg==
"@electron/notarize@2.5.0":
version "2.5.0"
resolved "https://registry.yarnpkg.com/@electron/notarize/-/notarize-2.5.0.tgz#d4d25356adfa29df4a76bd64a8bd347237cd251e"
integrity sha512-jNT8nwH1f9X5GEITXaQ8IF/KdskvIkOFfB2CvwumsveVidzpSc+mvhhTMdAGSYF3O+Nq49lJ7y+ssODRXu06+A==
dependencies:
debug "^4.1.1"
fs-extra "^9.0.1"
@@ -77,10 +70,10 @@
minimist "^1.2.6"
plist "^3.0.5"
"@electron/rebuild@3.6.0":
version "3.6.0"
resolved "https://registry.yarnpkg.com/@electron/rebuild/-/rebuild-3.6.0.tgz#60211375a5f8541a71eb07dd2f97354ad0b2b96f"
integrity sha512-zF4x3QupRU3uNGaP5X1wjpmcjfw1H87kyqZ00Tc3HvriV+4gmOGuvQjGNkrJuXdsApssdNyVwLsy+TaeTGGcVw==
"@electron/rebuild@3.6.1":
version "3.6.1"
resolved "https://registry.yarnpkg.com/@electron/rebuild/-/rebuild-3.6.1.tgz#59e8e36c3f6e6b94a699425dfb61f0394c3dd4df"
integrity sha512-f6596ZHpEq/YskUd8emYvOUne89ij8mQgjYFA5ru25QwbrRO+t1SImofdDv7kKOuWCmVOuU5tvfkbgGxIl3E/w==
dependencies:
"@malept/cross-spawn-promise" "^2.0.0"
chalk "^4.0.0"
@@ -146,11 +139,16 @@
minimatch "^3.1.2"
strip-json-comments "^3.1.1"
"@eslint/js@9.9.1", "@eslint/js@^9.9.1":
"@eslint/js@9.9.1":
version "9.9.1"
resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.9.1.tgz#4a97e85e982099d6c7ee8410aacb55adaa576f06"
integrity sha512-xIDQRsfg5hNBqHz04H1R3scSVwmI+KUbqjsQKHKQ1DAUSaUjYPReZZmS/5PNiKu1fUvzDd6H7DEDKACSEhu+TQ==
"@eslint/js@^9.15.0":
version "9.15.0"
resolved "https://registry.yarnpkg.com/@eslint/js/-/js-9.15.0.tgz#df0e24fe869143b59731942128c19938fdbadfb5"
integrity sha512-tMTqrY+EzbXmKJR5ToI8lxu7jaN5EdmrBFJpQk5JmSlyLsx6o4t27r883K5xsLuCYCpfKBCGswMSWXsM+jB7lg==
"@eslint/object-schema@^2.1.4":
version "2.1.4"
resolved "https://registry.yarnpkg.com/@eslint/object-schema/-/object-schema-2.1.4.tgz#9e69f8bb4031e11df79e03db09f9dbbae1740843"
@@ -386,62 +384,62 @@
dependencies:
"@types/node" "*"
"@typescript-eslint/eslint-plugin@8.4.0":
version "8.4.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.4.0.tgz#188c65610ef875a086404b5bfe105df936b035da"
integrity sha512-rg8LGdv7ri3oAlenMACk9e+AR4wUV0yrrG+XKsGKOK0EVgeEDqurkXMPILG2836fW4ibokTB5v4b6Z9+GYQDEw==
"@typescript-eslint/eslint-plugin@8.14.0":
version "8.14.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.14.0.tgz#7dc0e419c87beadc8f554bf5a42e5009ed3748dc"
integrity sha512-tqp8H7UWFaZj0yNO6bycd5YjMwxa6wIHOLZvWPkidwbgLCsBMetQoGj7DPuAlWa2yGO3H48xmPwjhsSPPCGU5w==
dependencies:
"@eslint-community/regexpp" "^4.10.0"
"@typescript-eslint/scope-manager" "8.4.0"
"@typescript-eslint/type-utils" "8.4.0"
"@typescript-eslint/utils" "8.4.0"
"@typescript-eslint/visitor-keys" "8.4.0"
"@typescript-eslint/scope-manager" "8.14.0"
"@typescript-eslint/type-utils" "8.14.0"
"@typescript-eslint/utils" "8.14.0"
"@typescript-eslint/visitor-keys" "8.14.0"
graphemer "^1.4.0"
ignore "^5.3.1"
natural-compare "^1.4.0"
ts-api-utils "^1.3.0"
"@typescript-eslint/parser@8.4.0":
version "8.4.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.4.0.tgz#36b7cd7643a1c190d49dc0278192b2450f615a6f"
integrity sha512-NHgWmKSgJk5K9N16GIhQ4jSobBoJwrmURaLErad0qlLjrpP5bECYg+wxVTGlGZmJbU03jj/dfnb6V9bw+5icsA==
"@typescript-eslint/parser@8.14.0":
version "8.14.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-8.14.0.tgz#0a7e9dbc11bc07716ab2d7b1226217e9f6b51fc8"
integrity sha512-2p82Yn9juUJq0XynBXtFCyrBDb6/dJombnz6vbo6mgQEtWHfvHbQuEa9kAOVIt1c9YFwi7H6WxtPj1kg+80+RA==
dependencies:
"@typescript-eslint/scope-manager" "8.4.0"
"@typescript-eslint/types" "8.4.0"
"@typescript-eslint/typescript-estree" "8.4.0"
"@typescript-eslint/visitor-keys" "8.4.0"
"@typescript-eslint/scope-manager" "8.14.0"
"@typescript-eslint/types" "8.14.0"
"@typescript-eslint/typescript-estree" "8.14.0"
"@typescript-eslint/visitor-keys" "8.14.0"
debug "^4.3.4"
"@typescript-eslint/scope-manager@8.4.0":
version "8.4.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.4.0.tgz#8a13d3c0044513d7960348db6f4789d2a06fa4b4"
integrity sha512-n2jFxLeY0JmKfUqy3P70rs6vdoPjHK8P/w+zJcV3fk0b0BwRXC/zxRTEnAsgYT7MwdQDt/ZEbtdzdVC+hcpF0A==
"@typescript-eslint/scope-manager@8.14.0":
version "8.14.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-8.14.0.tgz#01f37c147a735cd78f0ff355e033b9457da1f373"
integrity sha512-aBbBrnW9ARIDn92Zbo7rguLnqQ/pOrUguVpbUwzOhkFg2npFDwTgPGqFqE0H5feXcOoJOfX3SxlJaKEVtq54dw==
dependencies:
"@typescript-eslint/types" "8.4.0"
"@typescript-eslint/visitor-keys" "8.4.0"
"@typescript-eslint/types" "8.14.0"
"@typescript-eslint/visitor-keys" "8.14.0"
"@typescript-eslint/type-utils@8.4.0":
version "8.4.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.4.0.tgz#4a91b5789f41946adb56d73e2fb4639fdcf37af7"
integrity sha512-pu2PAmNrl9KX6TtirVOrbLPLwDmASpZhK/XU7WvoKoCUkdtq9zF7qQ7gna0GBZFN0hci0vHaSusiL2WpsQk37A==
"@typescript-eslint/type-utils@8.14.0":
version "8.14.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-8.14.0.tgz#455c6af30c336b24a1af28bc4f81b8dd5d74d94d"
integrity sha512-Xcz9qOtZuGusVOH5Uk07NGs39wrKkf3AxlkK79RBK6aJC1l03CobXjJbwBPSidetAOV+5rEVuiT1VSBUOAsanQ==
dependencies:
"@typescript-eslint/typescript-estree" "8.4.0"
"@typescript-eslint/utils" "8.4.0"
"@typescript-eslint/typescript-estree" "8.14.0"
"@typescript-eslint/utils" "8.14.0"
debug "^4.3.4"
ts-api-utils "^1.3.0"
"@typescript-eslint/types@8.4.0":
version "8.4.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.4.0.tgz#b44d6a90a317a6d97a3e5fabda5196089eec6171"
integrity sha512-T1RB3KQdskh9t3v/qv7niK6P8yvn7ja1mS7QK7XfRVL6wtZ8/mFs/FHf4fKvTA0rKnqnYxl/uHFNbnEt0phgbw==
"@typescript-eslint/types@8.14.0":
version "8.14.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-8.14.0.tgz#0d33d8d0b08479c424e7d654855fddf2c71e4021"
integrity sha512-yjeB9fnO/opvLJFAsPNYlKPnEM8+z4og09Pk504dkqonT02AyL5Z9SSqlE0XqezS93v6CXn49VHvB2G7XSsl0g==
"@typescript-eslint/typescript-estree@8.4.0":
version "8.4.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.4.0.tgz#00ed79ae049e124db37315cde1531a900a048482"
integrity sha512-kJ2OIP4dQw5gdI4uXsaxUZHRwWAGpREJ9Zq6D5L0BweyOrWsL6Sz0YcAZGWhvKnH7fm1J5YFE1JrQL0c9dd53A==
"@typescript-eslint/typescript-estree@8.14.0":
version "8.14.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-8.14.0.tgz#a7a3a5a53a6c09313e12fb4531d4ff582ee3c312"
integrity sha512-OPXPLYKGZi9XS/49rdaCbR5j/S14HazviBlUQFvSKz3npr3NikF+mrgK7CFVur6XEt95DZp/cmke9d5i3vtVnQ==
dependencies:
"@typescript-eslint/types" "8.4.0"
"@typescript-eslint/visitor-keys" "8.4.0"
"@typescript-eslint/types" "8.14.0"
"@typescript-eslint/visitor-keys" "8.14.0"
debug "^4.3.4"
fast-glob "^3.3.2"
is-glob "^4.0.3"
@@ -449,22 +447,22 @@
semver "^7.6.0"
ts-api-utils "^1.3.0"
"@typescript-eslint/utils@8.4.0":
version "8.4.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.4.0.tgz#35c552a404858c853a1f62ba6df2214f1988afc3"
integrity sha512-swULW8n1IKLjRAgciCkTCafyTHHfwVQFt8DovmaF69sKbOxTSFMmIZaSHjqO9i/RV0wIblaawhzvtva8Nmm7lQ==
"@typescript-eslint/utils@8.14.0":
version "8.14.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-8.14.0.tgz#ac2506875e03aba24e602364e43b2dfa45529dbd"
integrity sha512-OGqj6uB8THhrHj0Fk27DcHPojW7zKwKkPmHXHvQ58pLYp4hy8CSUdTKykKeh+5vFqTTVmjz0zCOOPKRovdsgHA==
dependencies:
"@eslint-community/eslint-utils" "^4.4.0"
"@typescript-eslint/scope-manager" "8.4.0"
"@typescript-eslint/types" "8.4.0"
"@typescript-eslint/typescript-estree" "8.4.0"
"@typescript-eslint/scope-manager" "8.14.0"
"@typescript-eslint/types" "8.14.0"
"@typescript-eslint/typescript-estree" "8.14.0"
"@typescript-eslint/visitor-keys@8.4.0":
version "8.4.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.4.0.tgz#1e8a8b8fd3647db1e42361fdd8de3e1679dec9d2"
integrity sha512-zTQD6WLNTre1hj5wp09nBIDiOc2U5r/qmzo7wxPn4ZgAjHql09EofqhF9WF+fZHzL5aCyaIpPcT2hyxl73kr9A==
"@typescript-eslint/visitor-keys@8.14.0":
version "8.14.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-8.14.0.tgz#2418d5a54669af9658986ade4e6cfb7767d815ad"
integrity sha512-vG0XZo8AdTH9OE6VFRwAZldNc7qtJ/6NLGWak+BtENuEUXGZgFpihILPiBvKXvJ2nFu27XNGC6rKiwuaoMbYzQ==
dependencies:
"@typescript-eslint/types" "8.4.0"
"@typescript-eslint/types" "8.14.0"
eslint-visitor-keys "^3.4.3"
"@xmldom/xmldom@^0.8.8":
@@ -494,6 +492,13 @@ agent-base@6, agent-base@^6.0.2:
dependencies:
debug "4"
agent-base@^7.0.2, agent-base@^7.1.0:
version "7.1.1"
resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.1.tgz#bdbded7dfb096b751a2a087eeeb9664725b2e317"
integrity sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==
dependencies:
debug "^4.3.4"
agentkeepalive@^4.2.1:
version "4.5.0"
resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.5.0.tgz#2673ad1389b3c418c5a20c5d7364f93ca04be923"
@@ -566,40 +571,43 @@ anymatch@~3.1.2:
normalize-path "^3.0.0"
picomatch "^2.0.4"
app-builder-bin@5.0.0-alpha.7:
version "5.0.0-alpha.7"
resolved "https://registry.yarnpkg.com/app-builder-bin/-/app-builder-bin-5.0.0-alpha.7.tgz#8c835ad083b18fb5d434bc4e4d99cca1fb46c19f"
integrity sha512-ww2mK4ITUvqisnqOuUWAeHzokpPidyZ7a0ZkwW+V7sF5/Pdi2OldkRjAWqEzn6Xtmj3SLVT84as4wB59A6jJ4g==
app-builder-bin@5.0.0-alpha.10:
version "5.0.0-alpha.10"
resolved "https://registry.yarnpkg.com/app-builder-bin/-/app-builder-bin-5.0.0-alpha.10.tgz#cf12e593b6b847fb9d04027fa755c6c6610d778b"
integrity sha512-Ev4jj3D7Bo+O0GPD2NMvJl+PGiBAfS7pUGawntBNpCbxtpncfUixqFj9z9Jme7V7s3LBGqsWZZP54fxBX3JKJw==
app-builder-lib@25.0.5:
version "25.0.5"
resolved "https://registry.yarnpkg.com/app-builder-lib/-/app-builder-lib-25.0.5.tgz#4886ee77030576cbd36fab92633347d3cc554f87"
integrity sha512-rxgxMx1f7I4ZAP0jA5+5iB7X6x6MJvGF7GauRzQBnIVihwXX2HOiAE7yenyY9Ry5YAiH47MnCxdq413Wq6XOcQ==
app-builder-lib@25.1.8:
version "25.1.8"
resolved "https://registry.yarnpkg.com/app-builder-lib/-/app-builder-lib-25.1.8.tgz#ae376039c5f269c7d562af494a087e5bc6310f1b"
integrity sha512-pCqe7dfsQFBABC1jeKZXQWhGcCPF3rPCXDdfqVKjIeWBcXzyC1iOWZdfFhGl+S9MyE/k//DFmC6FzuGAUudNDg==
dependencies:
"@develar/schema-utils" "~2.6.5"
"@electron/notarize" "2.3.2"
"@electron/notarize" "2.5.0"
"@electron/osx-sign" "1.3.1"
"@electron/rebuild" "3.6.0"
"@electron/rebuild" "3.6.1"
"@electron/universal" "2.0.1"
"@malept/flatpak-bundler" "^0.4.0"
"@types/fs-extra" "9.0.13"
async-exit-hook "^2.0.1"
bluebird-lst "^1.0.9"
builder-util "25.0.3"
builder-util-runtime "9.2.5"
builder-util "25.1.7"
builder-util-runtime "9.2.10"
chromium-pickle-js "^0.2.0"
config-file-ts "0.2.8-rc1"
debug "^4.3.4"
dotenv "^16.4.5"
dotenv-expand "^11.0.6"
ejs "^3.1.8"
electron-publish "25.0.3"
electron-publish "25.1.7"
form-data "^4.0.0"
fs-extra "^10.1.0"
hosted-git-info "^4.1.0"
is-ci "^3.0.0"
isbinaryfile "^5.0.0"
js-yaml "^4.1.0"
json5 "^2.2.3"
lazy-val "^1.0.5"
minimatch "^10.0.0"
read-config-file "6.4.0"
resedit "^1.7.0"
sanitize-filename "^1.6.3"
semver "^7.3.8"
@@ -756,30 +764,30 @@ buffer@^5.1.0, buffer@^5.5.0:
base64-js "^1.3.1"
ieee754 "^1.1.13"
builder-util-runtime@9.2.5:
version "9.2.5"
resolved "https://registry.yarnpkg.com/builder-util-runtime/-/builder-util-runtime-9.2.5.tgz#0afdffa0adb5c84c14926c7dd2cf3c6e96e9be83"
integrity sha512-HjIDfhvqx/8B3TDN4GbABQcgpewTU4LMRTQPkVpKYV3lsuxEJoIfvg09GyWTNmfVNSUAYf+fbTN//JX4TH20pg==
builder-util-runtime@9.2.10:
version "9.2.10"
resolved "https://registry.yarnpkg.com/builder-util-runtime/-/builder-util-runtime-9.2.10.tgz#a0f7d9e214158402e78b74a745c8d9f870c604bc"
integrity sha512-6p/gfG1RJSQeIbz8TK5aPNkoztgY1q5TgmGFMAXcY8itsGW6Y2ld1ALsZ5UJn8rog7hKF3zHx5iQbNQ8uLcRlw==
dependencies:
debug "^4.3.4"
sax "^1.2.4"
builder-util@25.0.3:
version "25.0.3"
resolved "https://registry.yarnpkg.com/builder-util/-/builder-util-25.0.3.tgz#bd00d8e8abbe6ea56974a2adbbc39578eab0134b"
integrity sha512-eH5c1ukdY2xjtFQWQ6jlzEuXuqcuAVc3UQ6V6fdYu9Kg3CkDbCR82Mox42uaJDmee9WXSbP/88cOworFdOHPhw==
builder-util@25.1.7:
version "25.1.7"
resolved "https://registry.yarnpkg.com/builder-util/-/builder-util-25.1.7.tgz#a07b404f0cb1a635aa165902be65297d58932ff8"
integrity sha512-7jPjzBwEGRbwNcep0gGNpLXG9P94VA3CPAZQCzxkFXiV2GMQKlziMbY//rXPI7WKfhsvGgFXjTcXdBEwgXw9ww==
dependencies:
"7zip-bin" "~5.2.0"
"@types/debug" "^4.1.6"
app-builder-bin "5.0.0-alpha.7"
app-builder-bin "5.0.0-alpha.10"
bluebird-lst "^1.0.9"
builder-util-runtime "9.2.5"
builder-util-runtime "9.2.10"
chalk "^4.1.2"
cross-spawn "^7.0.3"
debug "^4.3.4"
fs-extra "^10.1.0"
http-proxy-agent "^5.0.0"
https-proxy-agent "^5.0.1"
http-proxy-agent "^7.0.0"
https-proxy-agent "^7.0.0"
is-ci "^3.0.0"
js-yaml "^4.1.0"
source-map-support "^0.5.19"
@@ -956,10 +964,10 @@ combined-stream@^1.0.8:
dependencies:
delayed-stream "~1.0.0"
comlink@^4.4.1:
version "4.4.1"
resolved "https://registry.yarnpkg.com/comlink/-/comlink-4.4.1.tgz#e568b8e86410b809e8600eb2cf40c189371ef981"
integrity sha512-+1dlx0aY5Jo1vHy/tSsIGpSkN4tS9rZSW8FIhG0JH/crs9wwweswIo/POr451r7bZww3hFbPAKnTpimzL/mm4Q==
comlink@^4.4.2:
version "4.4.2"
resolved "https://registry.yarnpkg.com/comlink/-/comlink-4.4.2.tgz#cbbcd82742fbebc06489c28a183eedc5c60a2bca"
integrity sha512-OxGdvBmJuNKSCMO4NTl1L47VRp6xn2wG4F/2hYzB6tiCb709otOxtEYCSvK80PtjODfXXZu8ds+Nw5kVCjqd2g==
commander@^5.0.0:
version "5.1.0"
@@ -991,17 +999,15 @@ concat-stream@^2.0.0:
readable-stream "^3.0.2"
typedarray "^0.0.6"
concurrently@^8.2.2:
version "8.2.2"
resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-8.2.2.tgz#353141985c198cfa5e4a3ef90082c336b5851784"
integrity sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg==
concurrently@^9.1.0:
version "9.1.0"
resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-9.1.0.tgz#8da6d609f4321752912dab9be8710232ac496aa0"
integrity sha512-VxkzwMAn4LP7WyMnJNbHN5mKV9L2IbyDjpzemKr99sXNR3GqRNMMHdm7prV1ws9wg7ETj6WUkNOigZVsptwbgg==
dependencies:
chalk "^4.1.2"
date-fns "^2.30.0"
lodash "^4.17.21"
rxjs "^7.8.1"
shell-quote "^1.8.1"
spawn-command "0.0.2"
supports-color "^8.1.1"
tree-kill "^1.2.2"
yargs "^17.7.2"
@@ -1063,13 +1069,6 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3:
shebang-command "^2.0.0"
which "^2.0.1"
date-fns@^2.30.0:
version "2.30.0"
resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.30.0.tgz#f367e644839ff57894ec6ac480de40cae4b0f4d0"
integrity sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==
dependencies:
"@babel/runtime" "^7.21.0"
debounce-fn@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/debounce-fn/-/debounce-fn-4.0.0.tgz#ed76d206d8a50e60de0dd66d494d82835ffe61c7"
@@ -1171,14 +1170,14 @@ dir-glob@^3.0.1:
dependencies:
path-type "^4.0.0"
dmg-builder@25.0.5:
version "25.0.5"
resolved "https://registry.yarnpkg.com/dmg-builder/-/dmg-builder-25.0.5.tgz#e7e2731b65cf1ed43c14f2ca672e7d9a2e0234f0"
integrity sha512-ocnZV44ZqInoSFaY54fF7BlCtw+WtbrjyPrkBhaB+Ztn7GPKjmFgRbIKytifJ8h9Cib8jdFRMgjCUtkU45Y6DA==
dmg-builder@25.1.8:
version "25.1.8"
resolved "https://registry.yarnpkg.com/dmg-builder/-/dmg-builder-25.1.8.tgz#41f3b725edd896156e891016a44129e1bd580430"
integrity sha512-NoXo6Liy2heSklTI5OIZbCgXC1RzrDQsZkeEwXhdOro3FT1VBOvbubvscdPnjVuQ4AMwwv61oaH96AbiYg9EnQ==
dependencies:
app-builder-lib "25.0.5"
builder-util "25.0.3"
builder-util-runtime "9.2.5"
app-builder-lib "25.1.8"
builder-util "25.1.7"
builder-util-runtime "9.2.10"
fs-extra "^10.1.0"
iconv-lite "^0.6.2"
js-yaml "^4.1.0"
@@ -1225,36 +1224,35 @@ ejs@^3.1.8:
dependencies:
jake "^10.8.5"
electron-builder@^25.0.5:
version "25.0.5"
resolved "https://registry.yarnpkg.com/electron-builder/-/electron-builder-25.0.5.tgz#fed2432016618fd5ff81dc9dad7ec47889ffe0f1"
integrity sha512-Uj5LFRbUqNiVajsgqcwlKe+CHtwubK3hcoJsW5C2YiWodej2mmxM+LrTqga0rrWWHVMNmrcmGcS/WHpKwy6KEw==
electron-builder@^25.1.8:
version "25.1.8"
resolved "https://registry.yarnpkg.com/electron-builder/-/electron-builder-25.1.8.tgz#b0e310f1600787610bb84c3f39bc7aadb2548486"
integrity sha512-poRgAtUHHOnlzZnc9PK4nzG53xh74wj2Jy7jkTrqZ0MWPoHGh1M2+C//hGeYdA+4K8w4yiVCNYoLXF7ySj2Wig==
dependencies:
app-builder-lib "25.0.5"
builder-util "25.0.3"
builder-util-runtime "9.2.5"
app-builder-lib "25.1.8"
builder-util "25.1.7"
builder-util-runtime "9.2.10"
chalk "^4.1.2"
dmg-builder "25.0.5"
dmg-builder "25.1.8"
fs-extra "^10.1.0"
is-ci "^3.0.0"
lazy-val "^1.0.5"
read-config-file "6.4.0"
simple-update-notifier "2.0.0"
yargs "^17.6.2"
electron-log@^5.1.7:
version "5.1.7"
resolved "https://registry.yarnpkg.com/electron-log/-/electron-log-5.1.7.tgz#73c7ddc1602b3a9ee355bc09d1dc490864add0eb"
integrity sha512-/PjrS9zGkrZCDTHt6IgNE3FeciBbi4wd7U76NG9jAoNXF99E9IJdvBkqvaUJ1NjLojYDKs0kTvn9YhKy1/Zi+Q==
electron-log@^5.2.2:
version "5.2.2"
resolved "https://registry.yarnpkg.com/electron-log/-/electron-log-5.2.2.tgz#cdb0a6dc48178a7cbacb434a268ab097ad5198dc"
integrity sha512-fgvx6srjIHDowJD8WAAjoAXmiTyOz6JnGQoxOtk1mXw7o4S+HutuPHLCsk24xTXqWZgy4uO63NbedG+oEvldLw==
electron-publish@25.0.3:
version "25.0.3"
resolved "https://registry.yarnpkg.com/electron-publish/-/electron-publish-25.0.3.tgz#63509992a5ae31bb2b0d8863b26a2f7c35e303cc"
integrity sha512-wSGm+TFK2lArswIFBPLuIRHbo945s3MCvG5y1xVC57zL/PsrElUkaGH2ERtRrcKNpaDNq77rDA9JnMJhAFJjUg==
electron-publish@25.1.7:
version "25.1.7"
resolved "https://registry.yarnpkg.com/electron-publish/-/electron-publish-25.1.7.tgz#14e50c2a3fafdc1c454eadbbc47ead89a48bb554"
integrity sha512-+jbTkR9m39eDBMP4gfbqglDd6UvBC7RLh5Y0MhFSsc6UkGHj9Vj9TWobxevHYMMqmoujL11ZLjfPpMX+Pt6YEg==
dependencies:
"@types/fs-extra" "^9.0.11"
builder-util "25.0.3"
builder-util-runtime "9.2.5"
builder-util "25.1.7"
builder-util-runtime "9.2.10"
chalk "^4.1.2"
fs-extra "^10.1.0"
lazy-val "^1.0.5"
@@ -1268,12 +1266,12 @@ electron-store@^8.2.0:
conf "^10.2.0"
type-fest "^2.17.0"
electron-updater@^6.3.4:
version "6.3.4"
resolved "https://registry.yarnpkg.com/electron-updater/-/electron-updater-6.3.4.tgz#3934bc89875bb524c2cbbd11041114e97c0c2496"
integrity sha512-uZUo7p1Y53G4tl6Cgw07X1yF8Jlz6zhaL7CQJDZ1fVVkOaBfE2cWtx80avwDVi8jHp+I/FWawrMgTAeCCNIfAg==
electron-updater@^6.3.9:
version "6.3.9"
resolved "https://registry.yarnpkg.com/electron-updater/-/electron-updater-6.3.9.tgz#e1e7f155624c58e6f3760f376c3a584028165ec4"
integrity sha512-2PJNONi+iBidkoC5D1nzT9XqsE8Q1X28Fn6xRQhO3YX8qRRyJ3mkV4F1aQsuRnYPqq6Hw+E51y27W75WgDoofw==
dependencies:
builder-util-runtime "9.2.5"
builder-util-runtime "9.2.10"
fs-extra "^10.1.0"
js-yaml "^4.1.0"
lazy-val "^1.0.5"
@@ -1282,10 +1280,10 @@ electron-updater@^6.3.4:
semver "^7.6.3"
tiny-typed-emitter "^2.1.0"
electron@^30.4.0:
version "30.4.0"
resolved "https://registry.yarnpkg.com/electron/-/electron-30.4.0.tgz#66641a644059147f0e597e49999599e23dcdbfe3"
integrity sha512-ric3KLPQ9anXYjtTDkj5NbEcXZqRUwqxrxTviIjLdMdHqd5O+hkSHEzXgbSJUOt+7uw+zZuybn9+IM9y7iEpqg==
electron@^33.2.0:
version "33.2.0"
resolved "https://registry.yarnpkg.com/electron/-/electron-33.2.0.tgz#2a7098653eaf1a53c7311a01d5636783019f2354"
integrity sha512-PVw1ICAQDPsnnsmpNFX/b1i/49h67pbSPxuIENd9K9WpGO1tsRaQt+K2bmXqTuoMJsbzIc75Ce8zqtuwBPqawA==
dependencies:
"@electron/get" "^2.0.0"
"@types/node" "^20.9.0"
@@ -1860,6 +1858,14 @@ http-proxy-agent@^5.0.0:
agent-base "6"
debug "4"
http-proxy-agent@^7.0.0:
version "7.0.2"
resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz#9a8b1f246866c028509486585f62b8f2c18c270e"
integrity sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==
dependencies:
agent-base "^7.1.0"
debug "^4.3.4"
http-response-object@^3.0.1:
version "3.0.2"
resolved "https://registry.yarnpkg.com/http-response-object/-/http-response-object-3.0.2.tgz#7f435bb210454e4360d074ef1f989d5ea8aa9810"
@@ -1875,7 +1881,7 @@ http2-wrapper@^1.0.0-beta.5.2:
quick-lru "^5.1.1"
resolve-alpn "^1.0.0"
https-proxy-agent@^5.0.0, https-proxy-agent@^5.0.1:
https-proxy-agent@^5.0.0:
version "5.0.1"
resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6"
integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==
@@ -1883,6 +1889,14 @@ https-proxy-agent@^5.0.0, https-proxy-agent@^5.0.1:
agent-base "6"
debug "4"
https-proxy-agent@^7.0.0:
version "7.0.5"
resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz#9e8b5013873299e11fab6fd548405da2d6c602b2"
integrity sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==
dependencies:
agent-base "^7.0.2"
debug "4"
humanize-ms@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed"
@@ -2207,10 +2221,10 @@ lru-cache@^10.2.0:
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119"
integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==
lru-cache@^11.0.0:
version "11.0.0"
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-11.0.0.tgz#15d93a196f189034d7166caf9fe55e7384c98a21"
integrity sha512-Qv32eSV1RSCfhY3fpPE2GNZ8jgM9X7rdAfemLWqTUxwiyIC4jJ6Sy0fZ8H+oLWevO6i4/bizg7c8d8i6bxrzbA==
lru-cache@^11.0.2:
version "11.0.2"
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-11.0.2.tgz#fbd8e7cf8211f5e7e5d91905c415a3f55755ca39"
integrity sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==
lru-cache@^6.0.0:
version "6.0.0"
@@ -2537,17 +2551,17 @@ onetime@^5.1.0, onetime@^5.1.2:
dependencies:
mimic-fn "^2.1.0"
onnxruntime-common@1.19.2:
version "1.19.2"
resolved "https://registry.yarnpkg.com/onnxruntime-common/-/onnxruntime-common-1.19.2.tgz#39447d703aef6499f71487cb8970f58752234523"
integrity sha512-a4R7wYEVFbZBlp0BfhpbFWqe4opCor3KM+5Wm22Az3NGDcQMiU2hfG/0MfnBs+1ZrlSGmlgWeMcXQkDk1UFb8Q==
onnxruntime-common@1.20.0:
version "1.20.0"
resolved "https://registry.yarnpkg.com/onnxruntime-common/-/onnxruntime-common-1.20.0.tgz#e1774cf76ede788838ff7bd4debc8df6feca91f1"
integrity sha512-9ehS4ul5fBszIcHhfxuDgk45lO+Fqrxmrgwk1Pxb1JRvbQiCB/v9Royv95SRCWHktLMviqNjBsEd/biJhd39cg==
onnxruntime-node@^1.19.2:
version "1.19.2"
resolved "https://registry.yarnpkg.com/onnxruntime-node/-/onnxruntime-node-1.19.2.tgz#2f2e1c9286c97291030770c085fb403647538ad7"
integrity sha512-9eHMP/HKbbeUcqte1JYzaaRC8JPn7ojWeCeoyShO86TOR97OCyIyAIOGX3V95ErjslVhJRXY8Em/caIUc0hm1Q==
onnxruntime-node@^1.20.0:
version "1.20.0"
resolved "https://registry.yarnpkg.com/onnxruntime-node/-/onnxruntime-node-1.20.0.tgz#16dcbe06e7683eee37ccbd3f39ad2beac36c1a24"
integrity sha512-mjLge++8WHfyCZ4IqZ1FbUbtFAfGht7BLCkOeBL1L9PFV27YHwluXkNt7m0Pgf6TR2P5pqVZsD3zqFbFP6QTMw==
dependencies:
onnxruntime-common "1.19.2"
onnxruntime-common "1.20.0"
tar "^7.0.1"
optionator@^0.9.3:
@@ -2713,18 +2727,18 @@ prelude-ls@^1.2.1:
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
prettier-plugin-organize-imports@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/prettier-plugin-organize-imports/-/prettier-plugin-organize-imports-4.0.0.tgz#a69acf024ea3c8eb650c81f664693826ca853534"
integrity sha512-vnKSdgv9aOlqKeEFGhf9SCBsTyzDSyScy1k7E0R1Uo4L0cTcOV7c1XQaT7jfXIOc/p08WLBfN2QUQA9zDSZMxA==
prettier-plugin-organize-imports@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/prettier-plugin-organize-imports/-/prettier-plugin-organize-imports-4.1.0.tgz#f3d3764046a8e7ba6491431158b9be6ffd83b90f"
integrity sha512-5aWRdCgv645xaa58X8lOxzZoiHAldAPChljr/MT0crXVOWTZ+Svl4hIWlz+niYSlO6ikE5UXkN1JrRvIP2ut0A==
prettier-plugin-packagejson@^2.5.2:
version "2.5.2"
resolved "https://registry.yarnpkg.com/prettier-plugin-packagejson/-/prettier-plugin-packagejson-2.5.2.tgz#25e8531e15b04e1f68ee7ee4a4b111bd5bea6fcc"
integrity sha512-w+TmoLv2pIa+siplW1cCj2ujEXQQS6z7wmWLOiLQK/2QVl7Wy6xh/ZUpqQw8tbKMXDodmSW4GONxlA33xpdNOg==
prettier-plugin-packagejson@^2.5.3:
version "2.5.3"
resolved "https://registry.yarnpkg.com/prettier-plugin-packagejson/-/prettier-plugin-packagejson-2.5.3.tgz#a3f9eb02ece197db6b7696be5df43ddc2397ad81"
integrity sha512-ATMEEXr+ywls1kgrZEWl4SBPEm0uDdyDAjyNzUC0/Z8WZTD3RqbJcQDR+Dau+wYkW9KHK6zqQIsFyfn+9aduWg==
dependencies:
sort-package-json "2.10.1"
synckit "0.9.1"
synckit "0.9.2"
prettier@^3.3.3:
version "3.3.3"
@@ -2779,18 +2793,6 @@ read-binary-file-arch@^1.0.6:
dependencies:
debug "^4.3.4"
read-config-file@6.4.0:
version "6.4.0"
resolved "https://registry.yarnpkg.com/read-config-file/-/read-config-file-6.4.0.tgz#970542833216cccff6b1d83320495003dcf85a45"
integrity sha512-uB5QOBeF84PT61GlV11OTV4jUGHAO3iDEOP6v9ygxhG6Bs9PLg7WsjNT6mtIX2G+x8lJTr4ZWNeG6LDTKkNf2Q==
dependencies:
config-file-ts "0.2.8-rc1"
dotenv "^16.4.5"
dotenv-expand "^11.0.6"
js-yaml "^4.1.0"
json5 "^2.2.3"
lazy-val "^1.0.5"
readable-stream@^3.0.2, readable-stream@^3.4.0, readable-stream@^3.6.0:
version "3.6.2"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967"
@@ -2814,11 +2816,6 @@ rechoir@^0.6.2:
dependencies:
resolve "^1.1.6"
regenerator-runtime@^0.14.0:
version "0.14.1"
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f"
integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==
require-directory@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
@@ -3088,11 +3085,6 @@ source-map@^0.6.0:
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
spawn-command@0.0.2:
version "0.0.2"
resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2.tgz#9544e1a43ca045f8531aac1a48cb29bdae62338e"
integrity sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==
sprintf-js@^1.1.2, sprintf-js@^1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.3.tgz#4914b903a2f8b685d17fdf78a70e917e872e444a"
@@ -3164,10 +3156,10 @@ supports-preserve-symlinks-flag@^1.0.0:
resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
synckit@0.9.1:
version "0.9.1"
resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.9.1.tgz#febbfbb6649979450131f64735aa3f6c14575c88"
integrity sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==
synckit@0.9.2:
version "0.9.2"
resolved "https://registry.yarnpkg.com/synckit/-/synckit-0.9.2.tgz#a3a935eca7922d48b9e7d6c61822ee6c3ae4ec62"
integrity sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==
dependencies:
"@pkgr/core" "^0.1.0"
tslib "^2.6.2"
@@ -3277,20 +3269,25 @@ typedarray@^0.0.6:
resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==
typescript-eslint@^8.4.0:
version "8.4.0"
resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-8.4.0.tgz#3fa38bd279994cdb40ba9264ef5262a17cf4cfa0"
integrity sha512-67qoc3zQZe3CAkO0ua17+7aCLI0dU+sSQd1eKPGq06QE4rfQjstVXR6woHO5qQvGUa550NfGckT4tzh3b3c8Pw==
typescript-eslint@^8.14.0:
version "8.14.0"
resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-8.14.0.tgz#2435c0628e90303544fdd63ae311e9bf6d149a5d"
integrity sha512-K8fBJHxVL3kxMmwByvz8hNdBJ8a0YqKzKDX6jRlrjMuNXyd5T2V02HIq37+OiWXvUUOXgOOGiSSOh26Mh8pC3w==
dependencies:
"@typescript-eslint/eslint-plugin" "8.4.0"
"@typescript-eslint/parser" "8.4.0"
"@typescript-eslint/utils" "8.4.0"
"@typescript-eslint/eslint-plugin" "8.14.0"
"@typescript-eslint/parser" "8.14.0"
"@typescript-eslint/utils" "8.14.0"
typescript@^5.4.3, typescript@^5.5.4:
typescript@^5.4.3:
version "5.5.4"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.5.4.tgz#d9852d6c82bad2d2eda4fd74a5762a8f5909e9ba"
integrity sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==
typescript@^5.6.3:
version "5.6.3"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.6.3.tgz#5f3449e31c9d94febb17de03cc081dd56d81db5b"
integrity sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==
undici-types@~6.19.2:
version "6.19.8"
resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02"

View File

@@ -227,10 +227,11 @@ export const sidebar = [
collapsed: true,
items: [
{ text: "Getting started", link: "/self-hosting/" },
{ text: "System requirements", link: "/self-hosting/guides/system-requirements", },
{
text: "Guides",
items: [
{ text: "Introduction", link: "/self-hosting/guides/" },
{ text: "Introduction", link: "/self-hosting/guides/" },
{
text: "Connect to custom server",
link: "/self-hosting/guides/custom-server/",
@@ -248,10 +249,6 @@ export const sidebar = [
text: "Mobile build",
link: "/self-hosting/guides/mobile-build",
},
{
text: "System requirements",
link: "/self-hosting/guides/system-requirements",
},
{
text: "Configuring S3",
link: "/self-hosting/guides/configuring-s3",
@@ -264,6 +261,10 @@ export const sidebar = [
text: "DB migration",
link: "/self-hosting/guides/db-migration",
},
{
text: "Hosting Ente without Docker",
link: "/self-hosting/guides/standalone-ente",
},
],
},
{
@@ -295,6 +296,10 @@ export const sidebar = [
text: "Yarn",
link: "/self-hosting/troubleshooting/yarn",
},
{
text: "Ente CLI Secrets",
link: "/self-hosting/troubleshooting/keyring",
},
],
},
],

View File

@@ -25,6 +25,11 @@ at [ente.io](https://ente.io).
You can enable FaceID lock under Settings → Security → Lockscreen.
### How secure is the lock screen provided by Ente Auth?
Auth's lock screen acts as a barrier to prevent an attacker from accessing the
contents of the app. It does not introduce a layer of cryptographic security.
### Why do the desktop and mobile apps display different codes?
Please verify that the time on both your mobile and desktop is the same.

View File

@@ -24,8 +24,10 @@ De-merging a certain grouping can be done by going to the person, pressing
### Desktop
Note that while desktop supports naming a person, it currently does not yet
support merging persons. This will be added soon.
Similarly, on desktop you can use the "Add a name" button to merge people by
selecting an existing person, and use the "Review suggestions" sheet to de-merge
previously merged persons (click the top right history icon on the suggestion
sheet to see the previous merges, and if necessary, undo them).
## How do I change the cover for a recognized person?
@@ -56,7 +58,10 @@ person**. This will take you to the grouping of this person. Here you can press
### Desktop
This is currently not yet supported on desktop, but will be added soon.
Similarly, on desktop, you use the "Ignore" option from the top right menu to
ignore a particular face group (If you already give them a name, "Reset person"
first). And to undo this action, open that person (via the file info of a photo
containing that person), and select "Show person".
## How well does the app handle photos of babies?
@@ -70,4 +75,4 @@ If you find a mixed grouping of several different babies, you can use the
option will make the model re-evaluate the grouping with stricter settings,
hopefully separating the different babies in different new groupings.
Please note this functionality is currently only available on mobile.
Please note this functionality is currently only available on mobile.

View File

@@ -64,12 +64,14 @@ videos that you imported. The modifications (e.g. date changes) you make within
Ente will be written into a separate metadata JSON file during export so as to
not modify the original.
> There is one exception to this. For JPEG files, the Exif DateTimeOriginal is
> changed during export from web or desktop apps. This was done on a customer
> request, but in hindsight this has been an incorrect move. We are going to
> deprecate this behavior, and will instead provide separate tools (or
> functionality within the app itself) for customers who intentionally wish to
> modify their originals to reflect the associated metadata JSON.
> [!WARNING]
>
> There used to be one exception to this - for JPEG files, the Exif
> DateTimeOriginal was changed during export from web or desktop apps. This was
> done on a customer request, but in hindsight this was an incorrect change.
>
> We have deprecated this behaviour, and the desktop version 1.7.6 is going to
> be the last version with this exception.
As an example: suppose you have `flower.png`. When you export your library, you
will end up with:
@@ -81,13 +83,36 @@ metadata/flower.png.json
Ente writes this JSON in the same format as Google Takeout so that if a tool
supports Google Takeout import, it should be able to read the JSON written by
Ente too
Ente too.
> One small difference is that, to avoid clutter, Ente puts the JSON in the
> `metadata/` subfolder, while Google puts it next to the file.<br>
>
> <br>Ente itself will read it from either place.
Here is a sample of how the JSON would look:
```json
{
"description": "This will be imported as the caption",
"creationTime": {
"timestamp": "1613532136",
"formatted": "17 Feb 2021, 03:22:16 UTC"
},
"modificationTime": {
"timestamp": "1640225957",
"formatted": "23 Dec 2021, 02:19:17 UTC"
},
"geoData": {
"latitude": 12.004170700000001,
"longitude": 79.8013945
}
}
```
`photoTakenTime` will be considered as an alias for `creationTime`, and
`geoDataExif` will be considered as a fallback for `geoData`.
### File creation time.
The photo's data will be preserved verbatim, however when it is written out to

View File

@@ -48,6 +48,10 @@ albums**.
result in the creation of a new album  empty folders (or folders that only
contain other folders) will be ignored.
- In separate album mode, only the leafmost folder name is considered. For
example, both `A/B/C/D/x.png` and `1/2/3/D/y.png` will get uploaded into the
same Ente album named "D".
> [!NOTE]
>
> Ente albums cannot be nested currently. That is, in the **separate album**

View File

@@ -40,8 +40,8 @@ explicit whitelist of admins.
> [!NOTE]
>
> The first user is only treated as the admin if there are the list of admins in
> the configuration is empty.
> The first user is only treated as the admin if the list of admins in the
> configuration is empty.
>
> Also, if at some point you delete the first user, then you will need to define
> a whitelist to make some other user as the admin if you wish (since the first

View File

@@ -0,0 +1,104 @@
---
title: Installing Ente Standalone (without Docker)
description: Installing and setting up Ente standalone without docker.
---
# Installing and Deploying Ente Standalone (without Docker)
## Running Museum (Ente's server) without Docker
First, start by installing all the dependencies to get your machine ready for development.
```sh
# For MacOS
brew tap homebrew/core
brew update
brew install go
# For Ubuntu based distros
sudo apt update && sudo apt upgrade
sudo apt install golang-go
```
Alternatively, you can also download the latest binaries from ['All Release'](https://go.dev/dl/) page from the official website.
```sh
brew install postgres@15
# Link the postgres keg
brew link postgresql@15
brew install libsodium
# For Ubuntu based distros
sudo apt install postgresql
sudo apt install libsodium23 libsodium-dev
```
The package `libsodium23` might be installed already in some cases.
Installing pkg-config
```sh
brew install pkg-config
# For Ubuntu based distros
sudo apt install pkg-config
```
## Starting Postgres
### With pg_ctl
```sh
pg_ctl -D /usr/local/var/postgres -l logfile start
```
Dependeing on the Operating System type the path for postgres binary or configuration file might be different, please check if the command keeps failing for you.
Ideally, if you are on a Linux system with systemd as the init. You can also start postgres as a systemd service. After Installation execute the following commands:
```sh
sudo systemctl enable postgresql
sudo systemctl daemon-reload && sudo systemctl start postgresql
```
### Create user
```sh
createuser -s postgres
```
## Start Museum
Start by cloning ente to your system.
```sh
git clone https://github.com/ente-io/ente
```
```sh
export ENTE_DB_USER=postgres
cd ente/server
go run cmd/museum/main.go
```
You can also add the export line to your shell's RC file, to avoid exporting the environment variable every time.
For live reloads, install [air](https://github.com/air-verse/air#installation). Then you can just call air after declaring the required environment variables. For example,
```sh
ENTE_DB_USER=postgres
air
```
## Museum as a background service
Please check the below links if you want to run Museum as a service, both of them are battle tested.
1. [How to run museum as a systemd service](https://gist.github.com/mngshm/a0edb097c91d1dc45aeed755af310323)
2. [Museum.service](https://github.com/ente-io/ente/blob/23e678889189157ecc389c258267685934b83631/server/scripts/deploy/museum.service#L4)
Once you are done with setting and running Museum, all you are left to do is run the web app and reverse_proxy it with a webserver. You can check the following resources for Deploying your web app.
1. [Hosting the Web App](https://help.ente.io/self-hosting/guides/web-app).
2. [Running Ente Web app as a systemd Service](https://gist.github.com/mngshm/72e32bd483c2129621ed0d74412492fd)

View File

@@ -0,0 +1,35 @@
---
title: Ente CLI Secrets
description: A quick hotfix for keyring errors while running Ente CLI.
---
# Ente CLI Secrets
Ente CLI makes use of keyring for storing sensitive information
like your passwords. And running the cli straight out of the
box might give you some errors related to keyrings in some case.
Follow the below steps to run Ente CLI and also avoid keyrings errors.
Run:
```sh
# export the secrets path
export ENTE_CLI_SECRETS_PATH=./<path-to-secrets.txt>
./ente-cli
```
You can also add the above line to your shell's rc file, to prevent the need to export manually every time.
Then one of the following:
1. If the file doesn't exist, Ente CLI will create it and fill it with a random 32 character encryption key.
2. If you do create the file, please fill it with a cryptographically generated 32 byte string.
And you are good to go.
## Ref
- [Ente CLI Secrets Path](https://www.reddit.com/r/selfhosted/comments/1gc09il/comment/lu2hox2/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button)
- [Keyrings](https://man7.org/linux/man-pages/man7/keyrings.7.html)

View File

@@ -0,0 +1,32 @@
## Setting up a remote desktop
This is handy, e.g., when creating test environments with large disks, where we
still need a graphical session to run the desktop app.
Create a normal Ubuntu instance (tweak the exact commands if using a different
distro).
Install
- **Xfce4** - The desktop environment
- **xorg** - An X server
- **xrdp** - A remote desktop protocol (RDP) server.
```sh
sudo apt install xfce4 xorg xrdp
```
Configure xrdp to use Xfce
```sh
echo xfce4-session > ~/.xsession
```
Start the xrdp service, and also enable it so that it starts on boot
```sh
sudo systemctl enable xrdp
sudo systemctl start xrdp
```
On macOS, install a RDP client, e.g. [Microsoft Remote Desktop](https://apps.apple.com/us/app/microsoft-remote-desktop/id1295203466).

View File

@@ -119,10 +119,14 @@ const App: React.FC = () => {
const startTime = Date.now();
try {
const encodedEmail = encodeURIComponent(email);
const encodedToken = encodeURIComponent(token);
const url = `${apiOrigin}/admin/user?email=${encodedEmail}&token=${encodedToken}`;
console.log(`Fetching data from URL: ${url}`);
const response = await fetch(url);
const url = `${apiOrigin}/admin/user?email=${encodedEmail}`;
const response = await fetch(url, {
headers: {
"Content-Type": "application/json",
"X-AUTH-TOKEN": token,
},
});
if (!response.ok) {
throw new Error("Network response was not ok");
}

View File

@@ -31,20 +31,18 @@ const ChangeEmail: React.FC<ChangeEmailProps> = ({ open, onClose }) => {
useEffect(() => {
const fetchUserID = async () => {
const token = getToken();
const email = getEmail();
setNewEmail(email); // Set initial email state
const encodedEmail = encodeURIComponent(email);
const encodedToken = encodeURIComponent(token);
const url = `${apiOrigin}/admin/user?email=${encodedEmail}&token=${encodedToken}`;
const url = `${apiOrigin}/admin/user?email=${encodedEmail}`;
try {
const response = await fetch(url, {
method: "GET",
headers: {
"Content-Type": "application/json",
"X-AUTH-TOKEN": token,
"X-AUTH-TOKEN": getToken(),
},
});
@@ -78,7 +76,7 @@ const ChangeEmail: React.FC<ChangeEmailProps> = ({ open, onClose }) => {
event.preventDefault();
const token = getToken();
const url = `${apiOrigin}/admin/user/change-email?token=${token}`;
const url = `${apiOrigin}/admin/user/change-email`;
const body = {
userID,

View File

@@ -47,11 +47,16 @@ const CloseFamily: React.FC<CloseFamilyProps> = ({
}
const encodedEmail = encodeURIComponent(email);
const encodedToken = encodeURIComponent(token);
// Fetch user data
const userUrl = `${apiOrigin}/admin/user?email=${encodedEmail}&token=${encodedToken}`;
const userResponse = await fetch(userUrl);
const userUrl = `${apiOrigin}/admin/user?email=${encodedEmail}`;
const userResponse = await fetch(userUrl, {
method: "GET",
headers: {
"Content-Type": "application/json",
"X-Auth-Token": token,
},
});
if (!userResponse.ok) {
throw new Error("Failed to fetch user data");
}
@@ -63,11 +68,14 @@ const CloseFamily: React.FC<CloseFamilyProps> = ({
}
// Close family action
const closeFamilyUrl = `${apiOrigin}/admin/user/close-family?token=${encodedToken}`;
const closeFamilyUrl = `${apiOrigin}/admin/user/close-family`;
const body = JSON.stringify({ userId });
const closeFamilyResponse = await fetch(closeFamilyUrl, {
method: "POST",
headers: { "Content-Type": "application/json" },
headers: {
"Content-Type": "application/json",
"X-Auth-Token": token,
},
body: body,
});
@@ -78,9 +86,12 @@ const CloseFamily: React.FC<CloseFamilyProps> = ({
handleCloseFamily(); // Notify parent component of successful action
handleClose(); // Close dialog on successful action
console.log("Family closed successfully");
} catch (error) {
console.error("Error closing family:", error);
if (error instanceof Error) {
alert(error.message);
} else {
alert("Failed to close family");
}
} finally {
setLoading(false);
}

View File

@@ -21,17 +21,24 @@ const DeleteAccount: React.FC<DeleteAccountProps> = ({ open, handleClose }) => {
try {
const encodedEmail = encodeURIComponent(getEmail());
console.log(encodedEmail);
const encodedToken = encodeURIComponent(getToken());
console.log(encodedToken);
const deleteUrl = `${apiOrigin}/admin/user/delete?email=${encodedEmail}&token=${encodedToken}`;
const response = await fetch(deleteUrl, { method: "DELETE" });
const token = getToken();
const deleteUrl = `${apiOrigin}/admin/user/delete?email=${encodedEmail}`;
const response = await fetch(deleteUrl, {
method: "DELETE",
headers: { "X-Auth-Token": token },
});
if (!response.ok) {
throw new Error("Failed to delete user account");
}
handleClose(); // Close dialog on successful delete
console.log("Account deleted successfully");
} catch (error) {
console.error("Error deleting user account:", error);
if (error instanceof Error) {
alert("Failed to delete the account: " + error.message);
} else {
alert("An error occurred while deleting the account");
}
}
};

View File

@@ -47,27 +47,35 @@ const Disable2FA: React.FC<Disable2FAProps> = ({
}
const encodedEmail = encodeURIComponent(email);
const encodedToken = encodeURIComponent(token);
// Fetch user data
const userUrl = `${apiOrigin}/admin/user?email=${encodedEmail}&token=${encodedToken}`;
const userResponse = await fetch(userUrl);
const userUrl = `${apiOrigin}/admin/user?email=${encodedEmail}`;
const userResponse = await fetch(userUrl, {
method: "GET",
headers: {
"Content-Type": "application/json",
"X-Auth-Token": token,
},
});
if (!userResponse.ok) {
throw new Error("Failed to fetch user data");
}
const userData = (await userResponse.json()) as UserData;
const userId = userData.subscription?.userID;
const userID = userData.subscription?.userID;
if (!userId) {
if (!userID) {
throw new Error("User ID not found");
}
// Disable 2FA
const disableUrl = `${apiOrigin}/admin/user/disable-2fa?token=${encodedToken}`;
const body = JSON.stringify({ userId });
const disableUrl = `${apiOrigin}/admin/user/disable-2fa`;
const body = JSON.stringify({ userID });
const disableResponse = await fetch(disableUrl, {
method: "POST",
headers: { "Content-Type": "application/json" },
headers: {
"Content-Type": "application/json",
"X-Auth-Token": token,
},
body: body,
});
@@ -75,12 +83,15 @@ const Disable2FA: React.FC<Disable2FAProps> = ({
const errorResponse = await disableResponse.text();
throw new Error(`Failed to disable 2FA: ${errorResponse}`);
}
handleDisable2FA(); // Notify parent component of successful disable
handleClose(); // Close dialog on successful disable
console.log("2FA disabled successfully");
} catch (error) {
console.error("Error disabling 2FA:", error);
if (error instanceof Error) {
alert(error.message);
} else {
alert("Failed to disable 2FA");
}
} finally {
setLoading(false);
}

View File

@@ -47,11 +47,16 @@ const DisablePasskeys: React.FC<DisablePasskeysProps> = ({
}
const encodedEmail = encodeURIComponent(email);
const encodedToken = encodeURIComponent(token);
// Fetch user data
const userUrl = `${apiOrigin}/admin/user?email=${encodedEmail}&token=${encodedToken}`;
const userResponse = await fetch(userUrl);
const userUrl = `${apiOrigin}/admin/user?email=${encodedEmail}`;
const userResponse = await fetch(userUrl, {
method: "GET",
headers: {
"Content-Type": "application/json",
"X-Auth-Token": token,
},
});
if (!userResponse.ok) {
throw new Error("Failed to fetch user data");
}
@@ -63,11 +68,14 @@ const DisablePasskeys: React.FC<DisablePasskeysProps> = ({
}
// Disable passkeys action
const disablePasskeysUrl = `${apiOrigin}/admin/user/disable-passkeys?token=${encodedToken}`;
const disablePasskeysUrl = `${apiOrigin}/admin/user/disable-passkeys`;
const body = JSON.stringify({ userId });
const disablePasskeysResponse = await fetch(disablePasskeysUrl, {
method: "POST",
headers: { "Content-Type": "application/json" },
headers: {
"Content-Type": "application/json",
"X-Auth-Token": token,
},
body: body,
});
@@ -80,7 +88,11 @@ const DisablePasskeys: React.FC<DisablePasskeysProps> = ({
handleClose(); // Close dialog on successful action
console.log("Passkeys disabled successfully");
} catch (error) {
console.error("Error disabling passkeys:", error);
if (error instanceof Error) {
alert(error.message);
} else {
alert("Failed to disable passkeys");
}
} finally {
setLoading(false);
}

View File

@@ -40,9 +40,15 @@ const FamilyTableComponent: React.FC = () => {
const fetchData = async () => {
try {
const encodedEmail = encodeURIComponent(getEmail());
const encodedToken = encodeURIComponent(getToken());
const url = `${apiOrigin}/admin/user?email=${encodedEmail}&token=${encodedToken}`;
const response = await fetch(url);
const token = getToken();
const url = `${apiOrigin}/admin/user?email=${encodedEmail}`;
const response = await fetch(url, {
method: "GET",
headers: {
"Content-Type": "application/json",
"X-Auth-Token": token,
},
});
if (!response.ok) {
throw new Error("Network response was not ok");
}

View File

@@ -37,9 +37,15 @@ const StorageBonusTableComponent: React.FC = () => {
const fetchData = async () => {
try {
const encodedEmail = encodeURIComponent(getEmail());
const encodedToken = encodeURIComponent(getToken());
const url = `${apiOrigin}/admin/user?email=${encodedEmail}&token=${encodedToken}`;
const response = await fetch(url);
const token = getToken();
const url = `${apiOrigin}/admin/user?email=${encodedEmail}`;
const response = await fetch(url, {
method: "GET",
headers: {
"Content-Type": "application/json",
"X-Auth-Token": token,
},
});
if (!response.ok) {
throw new Error("Failed to fetch bonus data");
}

View File

@@ -63,10 +63,12 @@ const UpdateSubscription: React.FC<UpdateSubscriptionProps> = ({
const email = getEmail();
const token = getToken();
const encodedEmail = encodeURIComponent(email);
const encodedToken = encodeURIComponent(token);
const url = `${apiOrigin}/admin/user?email=${encodedEmail}&token=${encodedToken}`;
const response = await fetch(url);
const url = `${apiOrigin}/admin/user?email=${encodedEmail}`;
const response = await fetch(url, {
headers: {
"X-AUTH-TOKEN": token,
},
});
if (!response.ok) {
throw new Error("Network response was not ok");
}
@@ -172,7 +174,11 @@ const UpdateSubscription: React.FC<UpdateSubscriptionProps> = ({
console.log("Subscription updated successfully");
onClose();
} catch (error) {
console.error("Error updating subscription:", error);
if (error instanceof Error) {
alert(`Failed to update subscription: ${error.message}`);
} else {
alert("Failed to update subscription");
}
}
})().catch((error: unknown) => {
console.error("Unhandled promise rejection:", error);

View File

@@ -10,6 +10,15 @@
"@jridgewell/gen-mapping" "^0.3.5"
"@jridgewell/trace-mapping" "^0.3.24"
"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.25.9":
version "7.26.2"
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.26.2.tgz#4b5fab97d33338eff916235055f0ebc21e573a85"
integrity sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==
dependencies:
"@babel/helper-validator-identifier" "^7.25.9"
js-tokens "^4.0.0"
picocolors "^1.0.0"
"@babel/code-frame@^7.24.6":
version "7.24.6"
resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.6.tgz"
@@ -54,6 +63,17 @@
"@jridgewell/trace-mapping" "^0.3.25"
jsesc "^2.5.1"
"@babel/generator@^7.25.9":
version "7.26.2"
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.26.2.tgz#87b75813bec87916210e5e01939a4c823d6bb74f"
integrity sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==
dependencies:
"@babel/parser" "^7.26.2"
"@babel/types" "^7.26.0"
"@jridgewell/gen-mapping" "^0.3.5"
"@jridgewell/trace-mapping" "^0.3.25"
jsesc "^3.0.2"
"@babel/helper-compilation-targets@^7.24.6":
version "7.24.6"
resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.6.tgz"
@@ -85,6 +105,14 @@
dependencies:
"@babel/types" "^7.24.6"
"@babel/helper-module-imports@^7.16.7":
version "7.25.9"
resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz#e7f8d20602ebdbf9ebbea0a0751fb0f2a4141715"
integrity sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==
dependencies:
"@babel/traverse" "^7.25.9"
"@babel/types" "^7.25.9"
"@babel/helper-module-imports@^7.24.6":
version "7.24.6"
resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.6.tgz"
@@ -127,11 +155,21 @@
resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.6.tgz"
integrity sha512-WdJjwMEkmBicq5T9fm/cHND3+UlFa2Yj8ALLgmoSQAJZysYbBjw+azChSGPN4DSPLXOcooGRvDwZWMcF/mLO2Q==
"@babel/helper-string-parser@^7.25.9":
version "7.25.9"
resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz#1aabb72ee72ed35789b4bbcad3ca2862ce614e8c"
integrity sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==
"@babel/helper-validator-identifier@^7.24.6":
version "7.24.6"
resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.6.tgz"
integrity sha512-4yA7s865JHaqUdRbnaxarZREuPTHrjpDT+pXoAZ1yhyo6uFnIEpS8VMu16siFOHDpZNKYv5BObhsB//ycbICyw==
"@babel/helper-validator-identifier@^7.25.9":
version "7.25.9"
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz#24b64e2c3ec7cd3b3c547729b8d16871f22cbdc7"
integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==
"@babel/helper-validator-option@^7.24.6":
version "7.24.6"
resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.6.tgz"
@@ -160,6 +198,13 @@
resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.24.6.tgz"
integrity sha512-eNZXdfU35nJC2h24RznROuOpO94h6x8sg9ju0tT9biNtLZ2vuP8SduLqqV+/8+cebSLV9SJEAN5Z3zQbJG/M+Q==
"@babel/parser@^7.25.9", "@babel/parser@^7.26.2":
version "7.26.2"
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.26.2.tgz#fd7b6f487cfea09889557ef5d4eeb9ff9a5abd11"
integrity sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==
dependencies:
"@babel/types" "^7.26.0"
"@babel/plugin-transform-react-jsx-self@^7.24.5":
version "7.24.6"
resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.24.6.tgz"
@@ -174,6 +219,13 @@
dependencies:
"@babel/helper-plugin-utils" "^7.24.6"
"@babel/runtime@^7.12.5", "@babel/runtime@^7.18.3", "@babel/runtime@^7.23.9", "@babel/runtime@^7.25.7", "@babel/runtime@^7.26.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.7":
version "7.26.0"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.26.0.tgz#8600c2f595f277c60815256418b85356a65173c1"
integrity sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==
dependencies:
regenerator-runtime "^0.14.0"
"@babel/template@^7.24.6":
version "7.24.6"
resolved "https://registry.npmjs.org/@babel/template/-/template-7.24.6.tgz"
@@ -183,6 +235,15 @@
"@babel/parser" "^7.24.6"
"@babel/types" "^7.24.6"
"@babel/template@^7.25.9":
version "7.25.9"
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.25.9.tgz#ecb62d81a8a6f5dc5fe8abfc3901fc52ddf15016"
integrity sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==
dependencies:
"@babel/code-frame" "^7.25.9"
"@babel/parser" "^7.25.9"
"@babel/types" "^7.25.9"
"@babel/traverse@^7.24.6":
version "7.24.6"
resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.6.tgz"
@@ -199,6 +260,19 @@
debug "^4.3.1"
globals "^11.1.0"
"@babel/traverse@^7.25.9":
version "7.25.9"
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.25.9.tgz#a50f8fe49e7f69f53de5bea7e413cd35c5e13c84"
integrity sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==
dependencies:
"@babel/code-frame" "^7.25.9"
"@babel/generator" "^7.25.9"
"@babel/parser" "^7.25.9"
"@babel/template" "^7.25.9"
"@babel/types" "^7.25.9"
debug "^4.3.1"
globals "^11.1.0"
"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.24.6":
version "7.24.6"
resolved "https://registry.npmjs.org/@babel/types/-/types-7.24.6.tgz"
@@ -208,6 +282,133 @@
"@babel/helper-validator-identifier" "^7.24.6"
to-fast-properties "^2.0.0"
"@babel/types@^7.25.9", "@babel/types@^7.26.0":
version "7.26.0"
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.26.0.tgz#deabd08d6b753bc8e0f198f8709fb575e31774ff"
integrity sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==
dependencies:
"@babel/helper-string-parser" "^7.25.9"
"@babel/helper-validator-identifier" "^7.25.9"
"@date-io/core@^3.0.0":
version "3.0.0"
resolved "https://registry.yarnpkg.com/@date-io/core/-/core-3.0.0.tgz#9fd2375383b5791b7211dfce3e576211f9ddce5e"
integrity sha512-S3j+IAQVBYNkQzchVVhX40eBkGDreBpScy9RXwTS5j2+k07+62pMVPisQ44Gq76Rqy5AOG/EZXCwBpY/jbemvA==
"@date-io/date-fns@^3.0.0":
version "3.0.0"
resolved "https://registry.yarnpkg.com/@date-io/date-fns/-/date-fns-3.0.0.tgz#b082daa73ab9f1f8be55fe99a529653f69a7275b"
integrity sha512-hsLAbsdP8LKfi7OQ729cXMWfmHQEq0hn3ysXfAAoc92j6j6sBq0s0tplnkWu6O4iBUpVCYRPGuNjQQhTaOu2AA==
dependencies:
"@date-io/core" "^3.0.0"
"@emotion/babel-plugin@^11.12.0":
version "11.12.0"
resolved "https://registry.yarnpkg.com/@emotion/babel-plugin/-/babel-plugin-11.12.0.tgz#7b43debb250c313101b3f885eba634f1d723fcc2"
integrity sha512-y2WQb+oP8Jqvvclh8Q55gLUyb7UFvgv7eJfsj7td5TToBrIUtPay2kMrZi4xjq9qw2vD0ZR5fSho0yqoFgX7Rw==
dependencies:
"@babel/helper-module-imports" "^7.16.7"
"@babel/runtime" "^7.18.3"
"@emotion/hash" "^0.9.2"
"@emotion/memoize" "^0.9.0"
"@emotion/serialize" "^1.2.0"
babel-plugin-macros "^3.1.0"
convert-source-map "^1.5.0"
escape-string-regexp "^4.0.0"
find-root "^1.1.0"
source-map "^0.5.7"
stylis "4.2.0"
"@emotion/cache@^11.11.0", "@emotion/cache@^11.13.0":
version "11.13.1"
resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-11.13.1.tgz#fecfc54d51810beebf05bf2a161271a1a91895d7"
integrity sha512-iqouYkuEblRcXmylXIwwOodiEK5Ifl7JcX7o6V4jI3iW4mLXX3dmt5xwBtIkJiQEXFAI+pC8X0i67yiPkH9Ucw==
dependencies:
"@emotion/memoize" "^0.9.0"
"@emotion/sheet" "^1.4.0"
"@emotion/utils" "^1.4.0"
"@emotion/weak-memoize" "^0.4.0"
stylis "4.2.0"
"@emotion/hash@^0.9.2":
version "0.9.2"
resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.9.2.tgz#ff9221b9f58b4dfe61e619a7788734bd63f6898b"
integrity sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==
"@emotion/is-prop-valid@^1.3.0":
version "1.3.1"
resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.3.1.tgz#8d5cf1132f836d7adbe42cf0b49df7816fc88240"
integrity sha512-/ACwoqx7XQi9knQs/G0qKvv5teDMhD7bXYns9N/wM8ah8iNb8jZ2uNO0YOgiq2o2poIvVtJS2YALasQuMSQ7Kw==
dependencies:
"@emotion/memoize" "^0.9.0"
"@emotion/memoize@^0.9.0":
version "0.9.0"
resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.9.0.tgz#745969d649977776b43fc7648c556aaa462b4102"
integrity sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==
"@emotion/react@^11.11.4":
version "11.13.3"
resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.13.3.tgz#a69d0de2a23f5b48e0acf210416638010e4bd2e4"
integrity sha512-lIsdU6JNrmYfJ5EbUCf4xW1ovy5wKQ2CkPRM4xogziOxH1nXxBSjpC9YqbFAP7circxMfYp+6x676BqWcEiixg==
dependencies:
"@babel/runtime" "^7.18.3"
"@emotion/babel-plugin" "^11.12.0"
"@emotion/cache" "^11.13.0"
"@emotion/serialize" "^1.3.1"
"@emotion/use-insertion-effect-with-fallbacks" "^1.1.0"
"@emotion/utils" "^1.4.0"
"@emotion/weak-memoize" "^0.4.0"
hoist-non-react-statics "^3.3.1"
"@emotion/serialize@^1.2.0", "@emotion/serialize@^1.3.0", "@emotion/serialize@^1.3.1":
version "1.3.2"
resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-1.3.2.tgz#e1c1a2e90708d5d85d81ccaee2dfeb3cc0cccf7a"
integrity sha512-grVnMvVPK9yUVE6rkKfAJlYZgo0cu3l9iMC77V7DW6E1DUIrU68pSEXRmFZFOFB1QFo57TncmOcvcbMDWsL4yA==
dependencies:
"@emotion/hash" "^0.9.2"
"@emotion/memoize" "^0.9.0"
"@emotion/unitless" "^0.10.0"
"@emotion/utils" "^1.4.1"
csstype "^3.0.2"
"@emotion/sheet@^1.4.0":
version "1.4.0"
resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-1.4.0.tgz#c9299c34d248bc26e82563735f78953d2efca83c"
integrity sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==
"@emotion/styled@^11.11.5":
version "11.13.0"
resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-11.13.0.tgz#633fd700db701472c7a5dbef54d6f9834e9fb190"
integrity sha512-tkzkY7nQhW/zC4hztlwucpT8QEZ6eUzpXDRhww/Eej4tFfO0FxQYWRyg/c5CCXa4d/f174kqeXYjuQRnhzf6dA==
dependencies:
"@babel/runtime" "^7.18.3"
"@emotion/babel-plugin" "^11.12.0"
"@emotion/is-prop-valid" "^1.3.0"
"@emotion/serialize" "^1.3.0"
"@emotion/use-insertion-effect-with-fallbacks" "^1.1.0"
"@emotion/utils" "^1.4.0"
"@emotion/unitless@^0.10.0":
version "0.10.0"
resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.10.0.tgz#2af2f7c7e5150f497bdabd848ce7b218a27cf745"
integrity sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==
"@emotion/use-insertion-effect-with-fallbacks@^1.1.0":
version "1.1.0"
resolved "https://registry.yarnpkg.com/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.1.0.tgz#1a818a0b2c481efba0cf34e5ab1e0cb2dcb9dfaf"
integrity sha512-+wBOcIV5snwGgI2ya3u99D7/FJquOIniQT1IKyDsBmEgwvpxMNeS65Oib7OnE2d2aY+3BU4OiH+0Wchf8yk3Hw==
"@emotion/utils@^1.4.0", "@emotion/utils@^1.4.1":
version "1.4.1"
resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-1.4.1.tgz#b3adbb43de12ee2149541c4f1337d2eb7774f0ad"
integrity sha512-BymCXzCG3r72VKJxaYVwOXATqXIZ85cuvg0YOUDxMGNrKc1DJRZk8MgV5wyXRyEayIMd4FuXJIUgTBXvDNW5cA==
"@emotion/weak-memoize@^0.4.0":
version "0.4.0"
resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz#5e13fac887f08c44f76b0ccaf3370eb00fec9bb6"
integrity sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==
"@esbuild/aix-ppc64@0.20.2":
version "0.20.2"
resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz#a70f4ac11c6a1dfc18b8bbb13284155d933b9537"
@@ -370,6 +571,13 @@
"@floating-ui/core" "^1.0.0"
"@floating-ui/utils" "^0.2.0"
"@floating-ui/react-dom@^2.0.8", "@floating-ui/react-dom@^2.1.2":
version "2.1.2"
resolved "https://registry.yarnpkg.com/@floating-ui/react-dom/-/react-dom-2.1.2.tgz#a1349bbf6a0e5cb5ded55d023766f20a4d439a31"
integrity sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==
dependencies:
"@floating-ui/dom" "^1.0.0"
"@floating-ui/react-dom@^2.1.0":
version "2.1.0"
resolved "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.0.tgz"
@@ -386,11 +594,25 @@
"@floating-ui/utils" "^0.2.0"
tabbable "^6.0.0"
"@floating-ui/react@^0.26.23":
version "0.26.27"
resolved "https://registry.yarnpkg.com/@floating-ui/react/-/react-0.26.27.tgz#402f7b4b2702650662705fe9cbe0f1d5607846a1"
integrity sha512-jLP72x0Kr2CgY6eTYi/ra3VA9LOkTo4C+DUTrbFgFOExKy3omYVmwMjNKqxAHdsnyLS96BIDLcO2SlnsNf8KUQ==
dependencies:
"@floating-ui/react-dom" "^2.1.2"
"@floating-ui/utils" "^0.2.8"
tabbable "^6.0.0"
"@floating-ui/utils@^0.2.0":
version "0.2.2"
resolved "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.2.tgz"
integrity sha512-J4yDIIthosAsRZ5CPYP/jQvUAQtlZTTD/4suA08/FEnlxqW3sKS9iAhgsa9VYLZ6vDHn/ixJgIqRQPotoBjxIw==
"@floating-ui/utils@^0.2.8":
version "0.2.8"
resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.8.tgz#21a907684723bbbaa5f0974cf7730bd797eb8e62"
integrity sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==
"@humanwhocodes/config-array@^0.11.14":
version "0.11.14"
resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz"
@@ -442,6 +664,145 @@
"@jridgewell/resolve-uri" "^3.1.0"
"@jridgewell/sourcemap-codec" "^1.4.14"
"@mui/base@5.0.0-beta.40":
version "5.0.0-beta.40"
resolved "https://registry.yarnpkg.com/@mui/base/-/base-5.0.0-beta.40.tgz#1f8a782f1fbf3f84a961e954c8176b187de3dae2"
integrity sha512-I/lGHztkCzvwlXpjD2+SNmvNQvB4227xBXhISPjEaJUXGImOQ9f3D2Yj/T3KasSI/h0MLWy74X0J6clhPmsRbQ==
dependencies:
"@babel/runtime" "^7.23.9"
"@floating-ui/react-dom" "^2.0.8"
"@mui/types" "^7.2.14"
"@mui/utils" "^5.15.14"
"@popperjs/core" "^2.11.8"
clsx "^2.1.0"
prop-types "^15.8.1"
"@mui/core-downloads-tracker@^5.16.7":
version "5.16.7"
resolved "https://registry.yarnpkg.com/@mui/core-downloads-tracker/-/core-downloads-tracker-5.16.7.tgz#182a325a520f7ebd75de051fceabfc0314cfd004"
integrity sha512-RtsCt4Geed2/v74sbihWzzRs+HsIQCfclHeORh5Ynu2fS4icIKozcSubwuG7vtzq2uW3fOR1zITSP84TNt2GoQ==
"@mui/icons-material@^5.16.0":
version "5.16.7"
resolved "https://registry.yarnpkg.com/@mui/icons-material/-/icons-material-5.16.7.tgz#e27f901af792065efc9f3d75d74a66af7529a10a"
integrity sha512-UrGwDJCXEszbDI7yV047BYU5A28eGJ79keTCP4cc74WyncuVrnurlmIRxaHL8YK+LI1Kzq+/JM52IAkNnv4u+Q==
dependencies:
"@babel/runtime" "^7.23.9"
"@mui/lab@^5.0.0-alpha.171":
version "5.0.0-alpha.173"
resolved "https://registry.yarnpkg.com/@mui/lab/-/lab-5.0.0-alpha.173.tgz#a0f9696d93a765b48d69a7da5aaca0affa510ae8"
integrity sha512-Gt5zopIWwxDgGy/MXcp6GueD84xFFugFai4hYiXY0zowJpTVnIrTQCQXV004Q7rejJ7aaCntX9hpPJqCrioshA==
dependencies:
"@babel/runtime" "^7.23.9"
"@mui/base" "5.0.0-beta.40"
"@mui/system" "^5.16.5"
"@mui/types" "^7.2.15"
"@mui/utils" "^5.16.5"
clsx "^2.1.0"
prop-types "^15.8.1"
"@mui/material@^5.16.0":
version "5.16.7"
resolved "https://registry.yarnpkg.com/@mui/material/-/material-5.16.7.tgz#6e814e2eefdaf065a769cecf549c3569e107a50b"
integrity sha512-cwwVQxBhK60OIOqZOVLFt55t01zmarKJiJUWbk0+8s/Ix5IaUzAShqlJchxsIQ4mSrWqgcKCCXKtIlG5H+/Jmg==
dependencies:
"@babel/runtime" "^7.23.9"
"@mui/core-downloads-tracker" "^5.16.7"
"@mui/system" "^5.16.7"
"@mui/types" "^7.2.15"
"@mui/utils" "^5.16.6"
"@popperjs/core" "^2.11.8"
"@types/react-transition-group" "^4.4.10"
clsx "^2.1.0"
csstype "^3.1.3"
prop-types "^15.8.1"
react-is "^18.3.1"
react-transition-group "^4.4.5"
"@mui/private-theming@^5.16.6":
version "5.16.6"
resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-5.16.6.tgz#547671e7ae3f86b68d1289a0b90af04dfcc1c8c9"
integrity sha512-rAk+Rh8Clg7Cd7shZhyt2HGTTE5wYKNSJ5sspf28Fqm/PZ69Er9o6KX25g03/FG2dfpg5GCwZh/xOojiTfm3hw==
dependencies:
"@babel/runtime" "^7.23.9"
"@mui/utils" "^5.16.6"
prop-types "^15.8.1"
"@mui/styled-engine@^5.16.6":
version "5.16.6"
resolved "https://registry.yarnpkg.com/@mui/styled-engine/-/styled-engine-5.16.6.tgz#60110c106dd482dfdb7e2aa94fd6490a0a3f8852"
integrity sha512-zaThmS67ZmtHSWToTiHslbI8jwrmITcN93LQaR2lKArbvS7Z3iLkwRoiikNWutx9MBs8Q6okKvbZq1RQYB3v7g==
dependencies:
"@babel/runtime" "^7.23.9"
"@emotion/cache" "^11.11.0"
csstype "^3.1.3"
prop-types "^15.8.1"
"@mui/system@^5.16.5", "@mui/system@^5.16.7":
version "5.16.7"
resolved "https://registry.yarnpkg.com/@mui/system/-/system-5.16.7.tgz#4583ca5bf3b38942e02c15a1e622ba869ac51393"
integrity sha512-Jncvs/r/d/itkxh7O7opOunTqbbSSzMTHzZkNLM+FjAOg+cYAZHrPDlYe1ZGKUYORwwb2XexlWnpZp0kZ4AHuA==
dependencies:
"@babel/runtime" "^7.23.9"
"@mui/private-theming" "^5.16.6"
"@mui/styled-engine" "^5.16.6"
"@mui/types" "^7.2.15"
"@mui/utils" "^5.16.6"
clsx "^2.1.0"
csstype "^3.1.3"
prop-types "^15.8.1"
"@mui/types@^7.2.14", "@mui/types@^7.2.15", "@mui/types@^7.2.19":
version "7.2.19"
resolved "https://registry.yarnpkg.com/@mui/types/-/types-7.2.19.tgz#c941954dd24393fdce5f07830d44440cf4ab6c80"
integrity sha512-6XpZEM/Q3epK9RN8ENoXuygnqUQxE+siN/6rGRi2iwJPgBUR25mphYQ9ZI87plGh58YoZ5pp40bFvKYOCDJ3tA==
"@mui/utils@^5.15.14", "@mui/utils@^5.16.5", "@mui/utils@^5.16.6":
version "5.16.6"
resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-5.16.6.tgz#905875bbc58d3dcc24531c3314a6807aba22a711"
integrity sha512-tWiQqlhxAt3KENNiSRL+DIn9H5xNVK6Jjf70x3PnfQPz1MPBdh7yyIcAyVBT9xiw7hP3SomRhPR7hzBMBCjqEA==
dependencies:
"@babel/runtime" "^7.23.9"
"@mui/types" "^7.2.15"
"@types/prop-types" "^15.7.12"
clsx "^2.1.1"
prop-types "^15.8.1"
react-is "^18.3.1"
"@mui/utils@^5.16.6 || ^6.0.0":
version "6.1.7"
resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-6.1.7.tgz#0959d9772ae13c6ceac984a493e06aebb9087e71"
integrity sha512-Gr7cRZxBoZ0BIa3Xqf/2YaUrBLyNPJvXPQH3OsD9WMZukI/TutibbQBVqLYpgqJn8pKSjbD50Yq2auG0wI1xOw==
dependencies:
"@babel/runtime" "^7.26.0"
"@mui/types" "^7.2.19"
"@types/prop-types" "^15.7.13"
clsx "^2.1.1"
prop-types "^15.8.1"
react-is "^18.3.1"
"@mui/x-date-pickers@^7.9.0":
version "7.22.2"
resolved "https://registry.yarnpkg.com/@mui/x-date-pickers/-/x-date-pickers-7.22.2.tgz#99ebf6ff3d5f926c8bceb43324c9d91022d79852"
integrity sha512-1KHSlIlnSoY3oHm820By8X344pIdGYqPvCCvfVHrEeeIQ/pHdxDD8tjZFWkFl4Jgm9oVFK90fMcqNZAzc+WaCw==
dependencies:
"@babel/runtime" "^7.25.7"
"@mui/utils" "^5.16.6 || ^6.0.0"
"@mui/x-internals" "7.21.0"
"@types/react-transition-group" "^4.4.11"
clsx "^2.1.1"
prop-types "^15.8.1"
react-transition-group "^4.4.5"
"@mui/x-internals@7.21.0":
version "7.21.0"
resolved "https://registry.yarnpkg.com/@mui/x-internals/-/x-internals-7.21.0.tgz#daca984059015b27efdb47bb44dc7ff4a6816673"
integrity sha512-94YNyZ0BhK5Z+Tkr90RKf47IVCW8R/1MvdUhh6MCQg6sZa74jsX+x+gEZ4kzuCqOsuyTyxikeQ8vVuCIQiP7UQ==
dependencies:
"@babel/runtime" "^7.25.7"
"@mui/utils" "^5.16.6 || ^6.0.0"
"@nodelib/fs.scandir@2.1.5":
version "2.1.5"
resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz"
@@ -468,6 +829,11 @@
resolved "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz"
integrity sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==
"@popperjs/core@^2.11.8":
version "2.11.8"
resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.8.tgz#6b79032e760a0899cd4204710beede972a3a185f"
integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==
"@rollup/plugin-node-resolve@^15.2.3":
version "15.2.3"
resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.3.tgz#e5e0b059bd85ca57489492f295ce88c2d4b0daf9"
@@ -607,11 +973,30 @@
resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz"
integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==
"@types/parse-json@^4.0.0":
version "4.0.2"
resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.2.tgz#5950e50960793055845e956c427fc2b0d70c5239"
integrity sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==
"@types/prop-types@*":
version "15.7.12"
resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz"
integrity sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==
"@types/prop-types@^15.7.12", "@types/prop-types@^15.7.13":
version "15.7.13"
resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.13.tgz#2af91918ee12d9d32914feb13f5326658461b451"
integrity sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==
"@types/react-datepicker@^6.2.0":
version "6.2.0"
resolved "https://registry.yarnpkg.com/@types/react-datepicker/-/react-datepicker-6.2.0.tgz#1c93c10d12d1d683eacf46a82e35b953cd0da117"
integrity sha512-+JtO4Fm97WLkJTH8j8/v3Ldh7JCNRwjMYjRaKh4KHH0M3jJoXtwiD3JBCsdlg3tsFIw9eQSqyAPeVDN2H2oM9Q==
dependencies:
"@floating-ui/react" "^0.26.2"
"@types/react" "*"
date-fns "^3.3.1"
"@types/react-dom@^18":
version "18.3.0"
resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz"
@@ -619,6 +1004,13 @@
dependencies:
"@types/react" "*"
"@types/react-transition-group@^4.4.10", "@types/react-transition-group@^4.4.11":
version "4.4.11"
resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.11.tgz#d963253a611d757de01ebb241143b1017d5d63d5"
integrity sha512-RM05tAniPZ5DZPzzNFP+DmrcOdD0efDUxMy3145oljWSl3x9ZV5vhme98gTxFrj2lhXvmGNnUiuDyJgY9IKkNA==
dependencies:
"@types/react" "*"
"@types/react@*", "@types/react@^18":
version "18.3.3"
resolved "https://registry.npmjs.org/@types/react/-/react-18.3.3.tgz"
@@ -872,6 +1264,15 @@ available-typed-arrays@^1.0.7:
dependencies:
possible-typed-array-names "^1.0.0"
babel-plugin-macros@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz#9ef6dc74deb934b4db344dc973ee851d148c50c1"
integrity sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==
dependencies:
"@babel/runtime" "^7.12.5"
cosmiconfig "^7.0.0"
resolve "^1.19.0"
balanced-match@^1.0.0:
version "1.0.2"
resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz"
@@ -952,7 +1353,7 @@ chalk@^4.0.0:
ansi-styles "^4.1.0"
supports-color "^7.1.0"
clsx@^2.1.0:
clsx@^2.1.0, clsx@^2.1.1:
version "2.1.1"
resolved "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz"
integrity sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==
@@ -986,11 +1387,27 @@ concat-map@0.0.1:
resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
convert-source-map@^1.5.0:
version "1.9.0"
resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f"
integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==
convert-source-map@^2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz"
integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==
cosmiconfig@^7.0.0:
version "7.1.0"
resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6"
integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==
dependencies:
"@types/parse-json" "^4.0.0"
import-fresh "^3.2.1"
parse-json "^5.0.0"
path-type "^4.0.0"
yaml "^1.10.0"
cross-spawn@^7.0.2:
version "7.0.3"
resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz"
@@ -1000,7 +1417,7 @@ cross-spawn@^7.0.2:
shebang-command "^2.0.0"
which "^2.0.1"
csstype@^3.0.2:
csstype@^3.0.2, csstype@^3.1.3:
version "3.1.3"
resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz"
integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==
@@ -1103,11 +1520,26 @@ doctrine@^3.0.0:
dependencies:
esutils "^2.0.2"
dom-helpers@^5.0.1:
version "5.2.1"
resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.2.1.tgz#d9400536b2bf8225ad98fe052e029451ac40e902"
integrity sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==
dependencies:
"@babel/runtime" "^7.8.7"
csstype "^3.0.2"
electron-to-chromium@^1.4.668:
version "1.4.788"
resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.788.tgz"
integrity sha512-ubp5+Ev/VV8KuRoWnfP2QF2Bg+O2ZFdb49DiiNbz2VmgkIqrnyYaqIOqj8A6K/3p1xV0QcU5hBQ1+BmB6ot1OA==
error-ex@^1.3.1:
version "1.3.2"
resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
dependencies:
is-arrayish "^0.2.1"
es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23.1, es-abstract@^1.23.2, es-abstract@^1.23.3:
version "1.23.3"
resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz"
@@ -1444,6 +1876,11 @@ fill-range@^7.1.1:
dependencies:
to-regex-range "^5.0.1"
find-root@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4"
integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==
find-up@^5.0.0:
version "5.0.0"
resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz"
@@ -1665,6 +2102,13 @@ hasown@^2.0.0, hasown@^2.0.1, hasown@^2.0.2:
dependencies:
function-bind "^1.1.2"
hoist-non-react-statics@^3.3.1:
version "3.3.2"
resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45"
integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==
dependencies:
react-is "^16.7.0"
ignore@^5.2.0, ignore@^5.2.4, ignore@^5.3.1:
version "5.3.1"
resolved "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz"
@@ -1713,6 +2157,11 @@ is-array-buffer@^3.0.4:
call-bind "^1.0.2"
get-intrinsic "^1.2.1"
is-arrayish@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==
is-async-function@^2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz"
@@ -1930,11 +2379,21 @@ jsesc@^2.5.1:
resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz"
integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==
jsesc@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.0.2.tgz#bb8b09a6597ba426425f2e4a07245c3d00b9343e"
integrity sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==
json-buffer@3.0.1:
version "3.0.1"
resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz"
integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==
json-parse-even-better-errors@^2.3.0:
version "2.3.1"
resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d"
integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==
json-schema-traverse@^0.4.1:
version "0.4.1"
resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz"
@@ -1975,6 +2434,11 @@ levn@^0.4.1:
prelude-ls "^1.2.1"
type-check "~0.4.0"
lines-and-columns@^1.1.6:
version "1.2.4"
resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632"
integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==
locate-path@^6.0.0:
version "6.0.0"
resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz"
@@ -2150,6 +2614,16 @@ parent-module@^1.0.0:
dependencies:
callsites "^3.0.0"
parse-json@^5.0.0:
version "5.2.0"
resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd"
integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==
dependencies:
"@babel/code-frame" "^7.0.0"
error-ex "^1.3.1"
json-parse-even-better-errors "^2.3.0"
lines-and-columns "^1.1.6"
path-exists@^4.0.0:
version "4.0.0"
resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz"
@@ -2222,7 +2696,7 @@ prettier@^3:
resolved "https://registry.npmjs.org/prettier/-/prettier-3.3.0.tgz"
integrity sha512-J9odKxERhCQ10OC2yb93583f6UnYutOeiV5i0zEDS7UGTdUt0u+y8erxl3lBKvwo/JHyyoEdXjwp4dke9oyZ/g==
prop-types@^15.7.2, prop-types@^15.8.1:
prop-types@^15.6.2, prop-types@^15.8.1:
version "15.8.1"
resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz"
integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==
@@ -2241,16 +2715,15 @@ queue-microtask@^1.2.2:
resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz"
integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
react-datepicker@^7.1.0:
version "7.1.0"
resolved "https://registry.npmjs.org/react-datepicker/-/react-datepicker-7.1.0.tgz"
integrity sha512-Z91n5ybhmzI+YChj1ZG7ntPPOmHR2Dh4jbIl+mNgKXKoxyzUQBh7M3eQaFOwrBCVdKy5vsj370/ocQlGu1qsGA==
react-datepicker@^7.3.0:
version "7.5.0"
resolved "https://registry.yarnpkg.com/react-datepicker/-/react-datepicker-7.5.0.tgz#e7b1014a6dbd3b314839a5c57a6dacfbb16074e4"
integrity sha512-6MzeamV8cWSOcduwePHfGqY40acuGlS1cG//ePHT6bVbLxWyqngaStenfH03n1wbzOibFggF66kWaBTb1SbTtQ==
dependencies:
"@floating-ui/react" "^0.26.2"
clsx "^2.1.0"
date-fns "^3.3.1"
prop-types "^15.7.2"
react-onclickoutside "^6.13.0"
"@floating-ui/react" "^0.26.23"
clsx "^2.1.1"
date-fns "^3.6.0"
prop-types "^15.8.1"
react-dom@^18:
version "18.3.1"
@@ -2260,15 +2733,15 @@ react-dom@^18:
loose-envify "^1.1.0"
scheduler "^0.23.2"
react-is@^16.13.1:
react-is@^16.13.1, react-is@^16.7.0:
version "16.13.1"
resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz"
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
react-onclickoutside@^6.13.0:
version "6.13.1"
resolved "https://registry.npmjs.org/react-onclickoutside/-/react-onclickoutside-6.13.1.tgz"
integrity sha512-LdrrxK/Yh9zbBQdFbMTXPp3dTSN9B+9YJQucdDu3JNKRrbdU+H+/TVONJoWtOwy4II8Sqf1y/DTI6w/vGPYW0w==
react-is@^18.3.1:
version "18.3.1"
resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e"
integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==
react-refresh@^0.14.2:
version "0.14.2"
@@ -2282,6 +2755,16 @@ react-toastify@^10.0.5:
dependencies:
clsx "^2.1.0"
react-transition-group@^4.4.5:
version "4.4.5"
resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.5.tgz#e53d4e3f3344da8521489fbef8f2581d42becdd1"
integrity sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==
dependencies:
"@babel/runtime" "^7.5.5"
dom-helpers "^5.0.1"
loose-envify "^1.4.0"
prop-types "^15.6.2"
react@^18:
version "18.3.1"
resolved "https://registry.npmjs.org/react/-/react-18.3.1.tgz"
@@ -2302,6 +2785,11 @@ reflect.getprototypeof@^1.0.4:
globalthis "^1.0.3"
which-builtin-type "^1.1.3"
regenerator-runtime@^0.14.0:
version "0.14.1"
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f"
integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==
regexp.prototype.flags@^1.5.2:
version "1.5.2"
resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz"
@@ -2317,7 +2805,7 @@ resolve-from@^4.0.0:
resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz"
integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
resolve@^1.22.1:
resolve@^1.19.0, resolve@^1.22.1:
version "1.22.8"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d"
integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==
@@ -2493,6 +2981,11 @@ source-map-js@^1.2.0:
resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz"
integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==
source-map@^0.5.7:
version "0.5.7"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==
string.prototype.matchall@^4.0.11:
version "4.0.11"
resolved "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz"
@@ -2551,6 +3044,11 @@ strip-json-comments@^3.1.1:
resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz"
integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
stylis@4.2.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.2.0.tgz#79daee0208964c8fe695a42fcffcac633a211a51"
integrity sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==
supports-color@^5.3.0:
version "5.5.0"
resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz"
@@ -2779,6 +3277,11 @@ yallist@^3.0.2:
resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz"
integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
yaml@^1.10.0:
version "1.10.2"
resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b"
integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==
yocto-queue@^0.1.0:
version "0.1.0"
resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz"

View File

@@ -0,0 +1,5 @@
{
"name": "data-puller",
"version": "0.0.0",
"private": true
}

View File

@@ -0,0 +1,30 @@
/**
* Proxy requests for downloading files from object storage.
*
* Used by museum when replicating.
*/
export default {
async fetch(request: Request) {
switch (request.method) {
case "GET":
return handleGET(request);
default:
console.log(`Unsupported HTTP method ${request.method}`);
return new Response(null, { status: 405 });
}
},
} satisfies ExportedHandler;
const handleGET = async (request: Request) => {
const url = new URL(request.url);
// Random bots keep trying to pentest causing noise in the logs. If the
// request doesn't have a src, we can just safely ignore it.
const src = url.searchParams.get("src");
if (!src) return new Response(null, { status: 400 });
const source = atob(src);
return fetch(source);
};

View File

@@ -0,0 +1 @@
{ "extends": "../tsconfig.base.json", "include": ["src"] }

View File

@@ -0,0 +1,5 @@
name = "data-puller"
main = "src/index.ts"
compatibility_date = "2024-06-14"
tail_consumers = [{ service = "tail" }]

View File

@@ -0,0 +1 @@
ente és una aplicació d'emmagatzematge de fotos xifrada d'extrem a extrem

View File

@@ -0,0 +1 @@
ente - emmagatzematge de fotos xifrat

View File

@@ -0,0 +1 @@
ente - fotode krüpteeritud säilitamine

View File

@@ -0,0 +1,36 @@
„ente“ tai paprasta programa, skirta kurti atsargines kopijas ir bendrinti nuotraukas bei vaizdo įrašus.
Jei ieškojote privatumą užtikrinančios alternatyvos „Google“ nuotraukoms, atsidūrėte tinkamoje vietoje. Su „ente“ jie saugomi visapusiu šifravimu (e2ee). Tai reiškia, kad tik jūs galite juos peržiūrėti.
Turime atvirojo kodo „Android“, „iOS“, interneto ir darbalaukio programų, o jūsų nuotraukos bus sklandžiai sinchronizuojamos tarp visų įrenginių visapusiu šifravimo būdu (e2ee).
„ente“ taip pat leidžia lengvai bendrinti albumus su artimaisiais, net jei jie nesinaudoja „ente“. Galite bendrinti viešai matomas nuorodas, kad jie galėtų peržiūrėti jūsų albumą ir bendradarbiauti pridėdami į jį nuotraukų, net ir neturėdami paskyros ar programos.
Jūsų užšifruoti duomenys replikuojami į 3 skirtingas vietas, įskaitant slėptuvę nuo kritulių Paryžiuje. Mes rimtai žiūrime į palikimą ir pasirūpiname, kad jūsų prisiminimai išliktų gyvi.
Esame čia tam, kad sukurtume saugiausią nuotraukų programą, prisijunkite prie mūsų kelionės!
FUNKCIJOS
Originalios kokybės atsarginės kopijos, nes kiekvienas taškelis yra svarbus
Šeimos planai, kad galėtumėte dalytis saugykla su šeima
Bendradarbiavimo albumai, kad po kelionės galėtumėte sujungti nuotraukas
Bendrinami aplankai, jei norite, kad partneris galėtų mėgautis jūsų „fotoaparato“ paspaudimais
Albumo nuorodos, kurias galima apsaugoti slaptažodžiu
Galimybė atlaisvinti vietą, pašalinant saugiai atsargines kopijas sukūrusius failus
Žmonių palaikymas, nes esate to verti
Aprašymai, kad galėtumėte žymėti savo prisiminimus ir lengvai juos surasti
Vaizdų rengyklė, kad būtų galima pridėti baigiamuosius akcentus
Mėgkite, slėpkite ir išgyvenkite savo prisiminimus, juk jie brangūs
Vienu spustelėjimu importuokite iš „Google“, „Apple“, kietojo disko ir kitų
Tamsi tema, nes jūsų nuotraukos joje atrodo gerai
2FA, 3FA, biometrinis tapatybės nustatymas
ir DAR daugiau!
LEIDIMAI
„ente“ prašo tam tikrų leidimų, kad galėtų atlikti nuotraukų saugyklos paslaugų teikėjo funkcijas, kurias galima peržiūrėti čia: https://github.com/ente-io/ente/blob/f-droid/mobile/android/permissions.md
KAINODARA
Nesiūlome amžinai nemokamų planų, nes mums svarbu, kad išliktume tvarūs ir atlaikytume laiko išbandymą. Vietoj to siūlome nebrangius planus, kuriais galite laisvai dalytis su savo šeima. Daugiau informacijos galima rasti svetainėje ente.io.
PALAIKYMAS
Didžiuojamės galėdami pasiūlyti žmogiškąją pagalbą. Jei esate mūsų mokamas klientas, galite susisiekti adresu team@ente.io ir tikėtis mūsų komandos atsakymo per 24 valandas.

View File

@@ -0,0 +1 @@
„ente“ tai visapusiškai užšifruota nuotraukų saugyklos programa

View File

@@ -0,0 +1 @@
„ente“: užšifruota nuotraukų saugykla

View File

@@ -0,0 +1 @@
fotos,fotografia,família,privadesa,núvol,backup,vídeos,foto,xifratge,emmagatzematge,àlbum,alternativa

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